ngx-ui-scroll
Version:
Infinite/virtual scroll for Angular
1 lines • 144 kB
JavaScript
((global,factory)=>{"object"==typeof exports&&"undefined"!=typeof module?factory(exports,require("@angular/core"),require("@angular/common"),require("rxjs")):"function"==typeof define&&define.amd?define("ngx-ui-scroll",["exports","@angular/core","@angular/common","rxjs"],factory):factory(((global="undefined"!=typeof globalThis?globalThis:global||self).ng=global.ng||{},global.ng.ngxUiScroll={}),global.ng.core,global.ng.common,global.rxjs)})(this,function(exports,core$1,common,rxjs){var extendStatics=function(d,b){return(extendStatics=Object.setPrototypeOf||({__proto__:[]}instanceof Array?function(d,b){d.__proto__=b}:function(d,b){for(var p in b)Object.prototype.hasOwnProperty.call(b,p)&&(d[p]=b[p])}))(d,b)};function __extends(d,b){if("function"!=typeof b&&null!==b)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");function __(){this.constructor=d}extendStatics(d,b),d.prototype=null===b?Object.create(b):(__.prototype=b.prototype,new __)}var __assign=function(){return(__assign=Object.assign||function(t){for(var s,i=1,n=arguments.length;i<n;i++)for(var p in s=arguments[i])Object.prototype.hasOwnProperty.call(s,p)&&(t[p]=s[p]);return t}).apply(this,arguments)};function __values(o){var s="function"==typeof Symbol&&Symbol.iterator,m=s&&o[s],i=0;if(m)return m.call(o);if(o&&"number"==typeof o.length)return{next:function(){return{value:(o=o&&i>=o.length?void 0:o)&&o[i++],done:!o}}};throw new TypeError(s?"Object is not iterable.":"Symbol.iterator is not defined.")}function __read(o,n){var m="function"==typeof Symbol&&o[Symbol.iterator];if(!m)return o;var r,e,i=m.call(o),ar=[];try{for(;(void 0===n||0<n--)&&!(r=i.next()).done;)ar.push(r.value)}catch(error){e={error:error}}finally{try{r&&!r.done&&(m=i.return)&&m.call(i)}finally{if(e)throw e.error}}return ar}function __spreadArray(to,from,pack){if(pack||2===arguments.length)for(var ar,i=0,l=from.length;i<l;i++)!ar&&i in from||((ar=ar||Array.prototype.slice.call(from,0,i))[i]=from[i]);return to.concat(ar||Array.prototype.slice.call(from))}function getDefaultAdapterProps(){return[{type:Type.Scalar,name:Name.id,value:0,permanent:!0},{type:Type.Scalar,name:Name.mock,value:!0,permanent:!0},{type:Type.Scalar,name:Name.augmented,value:!1,permanent:!0},{type:Type.Scalar,name:Name.version,value:"",permanent:!0},{type:Type.Scalar,name:Name.init,value:!1,reactive:Name.init$},{type:Type.Scalar,name:Name.packageInfo,value:emptyPackageInfo,onDemand:!0},{type:Type.Scalar,name:Name.itemsCount,value:0,onDemand:!0},{type:Type.Scalar,name:Name.bufferInfo,value:bufferInfoDefault,onDemand:!0},{type:Type.Scalar,name:Name.isLoading,value:!1,reactive:Name.isLoading$},{type:Type.Scalar,name:Name.loopPending,value:!1,reactive:Name.loopPending$},{type:Type.Scalar,name:Name.firstVisible,value:EMPTY_ITEM,reactive:Name.firstVisible$,wanted:!0},{type:Type.Scalar,name:Name.lastVisible,value:EMPTY_ITEM,reactive:Name.lastVisible$,wanted:!0},{type:Type.Scalar,name:Name.bof,value:!1,reactive:Name.bof$},{type:Type.Scalar,name:Name.eof,value:!1,reactive:Name.eof$},{type:Type.Scalar,name:Name.paused,value:!1,reactive:Name.paused$},{type:Type.WorkflowRunner,name:Name.reset,value:noopWF,allowedWhenPaused:!0},{type:Type.WorkflowRunner,name:Name.reload,value:noopWF},{type:Type.WorkflowRunner,name:Name.append,value:noopWF},{type:Type.WorkflowRunner,name:Name.prepend,value:noopWF},{type:Type.WorkflowRunner,name:Name.check,value:noopWF},{type:Type.WorkflowRunner,name:Name.remove,value:noopWF},{type:Type.WorkflowRunner,name:Name.clip,value:noopWF},{type:Type.WorkflowRunner,name:Name.insert,value:noopWF},{type:Type.WorkflowRunner,name:Name.replace,value:noopWF},{type:Type.WorkflowRunner,name:Name.update,value:noopWF},{type:Type.WorkflowRunner,name:Name.pause,value:noopWF},{type:Type.WorkflowRunner,name:Name.resume,value:noopWF,allowedWhenPaused:!0},{type:Type.WorkflowRunner,name:Name.fix,value:noopWF},{type:Type.Function,name:Name.relax,value:noop},{type:Type.Function,name:Name.showLog,value:noop},{type:Type.Reactive,name:Name.init$,value:new Reactive},{type:Type.Reactive,name:Name.isLoading$,value:new Reactive},{type:Type.Reactive,name:Name.loopPending$,value:new Reactive},{type:Type.Reactive,name:Name.firstVisible$,value:new Reactive(EMPTY_ITEM,{emitOnSubscribe:!0}),wanted:!0},{type:Type.Reactive,name:Name.lastVisible$,value:new Reactive(EMPTY_ITEM,{emitOnSubscribe:!0}),wanted:!0},{type:Type.Reactive,name:Name.bof$,value:new Reactive},{type:Type.Reactive,name:Name.eof$,value:new Reactive},{type:Type.Reactive,name:Name.paused$,value:new Reactive}]}function makeDatasource(getConfig){return __extends(class_1,_super=DatasourceGeneric),class_1;function class_1(datasource){var config="function"==typeof getConfig?getConfig():void 0;return _super.call(this,datasource,config)||this}var _super}function getError(msg,args){return(args||[""]).reduce(function(acc,arg,index){return acc.replace("{arg".concat(index+1,"}"),arg)},msg)}function getNumber(value){return"number"==typeof value||"string"==typeof value&&""!==value?Number(value):NaN}function onNumber(value){var value=getNumber(value),errors=[];return Number.isNaN(value)&&errors.push(ValidatorType.number),{value:value,isSet:!0,isValid:!errors.length,errors:errors}}function onFunction(value){var errors=[];return"function"!=typeof value&&errors.push(ValidatorType.function),{value:value,isSet:!0,isValid:!errors.length,errors:errors}}function onOneOf(tokens,must){return function(value,context){var errors=[],isSet=void 0!==value,noOneIsPresent=!isSet,err=must?ValidatorType.oneOfMust:ValidatorType.oneOfCan;if(Array.isArray(tokens)&&tokens.length){for(var i=tokens.length-1;0<=i;i--){var token=tokens[i];if("string"!=typeof token){errors.push(getError(err,[tokens.join('", "')])+" (non-string token)");break}var isAnotherPresent=context&&Object.prototype.hasOwnProperty.call(context,token);if(isSet&&isAnotherPresent){errors.push(getError(err,[tokens.join('", "')])+" (".concat(token," is present)"));break}noOneIsPresent&&isAnotherPresent&&(noOneIsPresent=!1)}must&&noOneIsPresent&&errors.push(getError(err,[tokens.join('", "')]))}else errors.push(getError(err,["undefined"]));return{value:value,isSet:isSet,isValid:!errors.length,errors:errors}}}function validateOne(context,name,prop){var e_1,_a,result=getDefault(context[name],prop);if(result.isSet)try{for(var _b=__values(Object.values(prop.validators)),_c=_b.next();!_c.done;_c=_b.next()){var validator=_c.value,current=runValidator(result,validator,context);if(!current.isValid&&void 0!==prop.defaultValue)return{value:prop.defaultValue,isSet:!0,isValid:!0,errors:[]};Object.assign(result,current)}}catch(e_1_1){e_1={error:e_1_1}}finally{try{_c&&!_c.done&&(_a=_b.return)&&_a.call(_b)}finally{if(e_1)throw e_1.error}}else{name=prop.validators.find(function(v){return v.type===ValidatorType.oneOfMust});if(name)return runValidator(result,name,context)}return result}function validate(context,params){var data=new ValidatedData(context);return Object.entries(params).forEach(function(_a){var _a=__read(_a,2),key=_a[0],_a=_a[1];return data.setParam(key,data.isValidContext?validateOne(data.context,key,_a):getDefault(void 0,_a))}),data}function BaseProcessFactory(process){var _a=function(){};return _a.process=process,_a}function BaseAdapterProcessFactory(process){var _a,_super;return __extends(BaseAdapterProcess,_super=BaseProcessFactory(process)),BaseAdapterProcess.parseInput=function(scroller,options,ignoreErrors,_process){void 0===ignoreErrors&&(ignoreErrors=!1);var result={data:validate(options,ADAPTER_METHODS[_process||process])};return result.data.isValid?result.params=Object.entries(result.data.params).reduce(function(acc,_a){var _a=__read(_a,2),key=_a[0],_a=_a[1].value;return __assign(__assign({},acc),((acc={})[key]=_a,acc))},{}):(scroller.logger.log(function(){return result.data.showErrors()}),ignoreErrors||scroller.workflow.call({process:process,status:ProcessStatus.error,payload:{error:'Wrong argument of the "'.concat(process,'" method call')}})),result},(_a=BaseAdapterProcess).process=process,_a;function BaseAdapterProcess(){return null!==_super&&_super.apply(this,arguments)||this}}function _has(obj,prop){return!!obj&&"object"==typeof obj&&Object.prototype.hasOwnProperty.call(obj,prop)}function convertAppendArgs(prepend,options,eof){var result=options;return _has(options,"items")||(options=Array.isArray(options)?options:[options],result=prepend?{items:options,bof:eof}:{items:options,eof:eof}),result}function getBooleanSubjectPropConfig(){return{source:new rxjs.Subject,emit:function(source,value){return source.next(value)}}}function getItemBehaviorSubjectPropConfig(){return{source:new rxjs.BehaviorSubject(EMPTY_ITEM),emit:function(source,value){return source.next(value)}}}var AdapterPropName,AdapterPropType,Direction,ValidatorType,DatasourceProps,CommonProcess,AdapterProcess,ProcessStatus,AdapterClipParams,AdapterInsertParams,AdapterReplaceParams,AdapterUpdateParams,AdapterFixParams,AdapterPrependParams,WorkflowProps,_c,_d,_e,Reactive=(()=>{function Reactive(value,options){void(this.id=0)!==value&&(this.value=value,this.initialValue=value),this.options=options||{},this.subscriptions=new Map}return Reactive.prototype.set=function(value){var e_1,_a;if(this.value!==value||this.options.emitEqual){this.value=value;try{for(var _b=__values(this.subscriptions),_c=_b.next();!_c.done;_c=_b.next())if(__read(_c.value,2)[1].emit(value),this.value!==value)break}catch(e_1_1){e_1={error:e_1_1}}finally{try{_c&&!_c.done&&(_a=_b.return)&&_a.call(_b)}finally{if(e_1)throw e_1.error}}}},Reactive.prototype.get=function(){return this.value},Reactive.prototype.on=function(func){var _this=this,id=this.id++,subscription={emit:func,off:function(){subscription.emit=function(){return null},_this.subscriptions.delete(id)}};return this.subscriptions.set(id,subscription),this.options.emitOnSubscribe&&subscription.emit(this.value),function(){return subscription.off()}},Reactive.prototype.once=function(func){var off=this.on(function(v){off(),func(v)});return off},Reactive.prototype.reset=function(){this.set(this.initialValue)},Reactive.prototype.dispose=function(){this.subscriptions.forEach(function(sub){return sub.off()})},Reactive})(),Name=((AdapterPropName=>{AdapterPropName.id="id",AdapterPropName.mock="mock",AdapterPropName.augmented="augmented",AdapterPropName.version="version",AdapterPropName.init="init",AdapterPropName.init$="init$",AdapterPropName.packageInfo="packageInfo",AdapterPropName.itemsCount="itemsCount",AdapterPropName.bufferInfo="bufferInfo",AdapterPropName.isLoading="isLoading",AdapterPropName.isLoading$="isLoading$",AdapterPropName.loopPending="loopPending",AdapterPropName.loopPending$="loopPending$",AdapterPropName.firstVisible="firstVisible",AdapterPropName.firstVisible$="firstVisible$",AdapterPropName.lastVisible="lastVisible",AdapterPropName.lastVisible$="lastVisible$",AdapterPropName.bof="bof",AdapterPropName.bof$="bof$",AdapterPropName.eof="eof",AdapterPropName.eof$="eof$",AdapterPropName.paused="paused",AdapterPropName.paused$="paused$",AdapterPropName.reset="reset",AdapterPropName.reload="reload",AdapterPropName.append="append",AdapterPropName.prepend="prepend",AdapterPropName.check="check",AdapterPropName.remove="remove",AdapterPropName.clip="clip",AdapterPropName.insert="insert",AdapterPropName.replace="replace",AdapterPropName.update="update",AdapterPropName.pause="pause",AdapterPropName.resume="resume",AdapterPropName.fix="fix",AdapterPropName.relax="relax",AdapterPropName.showLog="showLog"})(AdapterPropName=AdapterPropName||{}),(AdapterPropType=>{AdapterPropType[AdapterPropType.Scalar=0]="Scalar",AdapterPropType[AdapterPropType.Reactive=1]="Reactive",AdapterPropType[AdapterPropType.WorkflowRunner=2]="WorkflowRunner",AdapterPropType[AdapterPropType.Function=3]="Function"})(AdapterPropType=AdapterPropType||{}),AdapterPropName),Type=AdapterPropType,noop=function(){return null},methodPreResult={immediate:!0,success:!0,details:"Adapter is not initialized"},methodPausedResult={immediate:!0,success:!0,details:"Scroller is paused"},noopWF=function(){return Promise.resolve(methodPreResult)},emptyPackageInfo={core:{name:"",version:""},consumer:{name:"",version:""}},bufferInfoDefault={firstIndex:NaN,lastIndex:NaN,minIndex:NaN,maxIndex:NaN,absMinIndex:-1/0,absMaxIndex:1/0,defaultSize:NaN},EMPTY_ITEM={data:{},element:{}},reactiveConfigStorage=new Map,core={name:"vscroll",version:"1.6.3"},wantedUtils_getBox=function(id){return null==(id=wantedStorage.get(id||-1))?void 0:id.box},wantedUtils_setBox=function(_a,id){var a$,b,b$,name=_a.name,_a=_a.wanted,id=wantedStorage.get(id||-1);return!(!_a||!id||id.box[name]||id.block||(_a=AdapterPropName.firstVisible,a$=AdapterPropName.firstVisible$,b=AdapterPropName.lastVisible,b$=AdapterPropName.lastVisible$,id.box[_a]=id.box[a$]=[_a,a$].some(function(n){return n===name})||id.box[_a],id.box[b]=id.box[b$]=[b,b$].some(function(n){return n===name})||id.box[b],0))},wantedUtils_setBlock=function(value,id){id=wantedStorage.get(id||-1);id&&(id.block=value)},wantedStorage=new Map,instanceCount$1=0,AdapterContext=function(config){var _this=this,mock=config.mock,reactive=config.reactive,id=++instanceCount$1,conf={configurable:!0},reactivePropsStore={};wantedStorage.set(id,{box:{},block:!1}),Object.defineProperty(this,AdapterPropName.id,__assign({get:function(){return id}},conf)),Object.defineProperty(this,AdapterPropName.mock,__assign({get:function(){return mock}},conf)),Object.defineProperty(this,AdapterPropName.augmented,__assign({get:function(){return!1}},conf)),Object.defineProperty(this,AdapterPropName.version,__assign({get:function(){return core.version}},conf)),getDefaultAdapterProps().filter(function(_a){return!_a.permanent}).forEach(function(prop){var react,value=prop.value;reactive&&prop.type===AdapterPropType.Reactive&&(react=reactive[prop.name])&&(reactivePropsStore[prop.name]=__assign(__assign({},react),{default:value}),value=react.source),Object.defineProperty(_this,prop.name,__assign({get:function(){return wantedUtils_setBox(prop,id),value}},conf))}),reactive&&reactiveConfigStorage.set(id,reactivePropsStore)},DatasourceGeneric=(()=>{function DatasourceGeneric(datasource,config){this.get=datasource.get,this.settings=datasource.settings,this.devSettings=datasource.devSettings;datasource=new AdapterContext(config||{mock:!1});this.adapter=datasource}return DatasourceGeneric.prototype.dispose=function(){reactiveConfigStorage.delete(this.adapter.id),wantedStorage.delete(this.adapter.id)},DatasourceGeneric})(),Datasource=makeDatasource(),VALIDATORS=((Direction=>{Direction.forward="forward",Direction.backward="backward"})(Direction=Direction||{}),exports.SizeStrategy=void 0,(SizeStrategy=exports.SizeStrategy||(exports.SizeStrategy={})).Average="average",SizeStrategy.Constant="constant",SizeStrategy.Frequent="frequent",(ValidatorType=>{ValidatorType.number="must be a number",ValidatorType.integer="must be an integer",ValidatorType.integerUnlimited="must be an integer or infinity",ValidatorType.moreOrEqual="must be a number greater than (or equal to) {arg1}",ValidatorType.itemList="must be an array of items {arg1}",ValidatorType.boolean="must be a boolean",ValidatorType.object="must be an object",ValidatorType.element="must be an html element",ValidatorType.function="must be a function",ValidatorType.funcOfxArguments="must have {arg1} argument(s)",ValidatorType.funcOfxAndMoreArguments="must have at least {arg1} argument(s)",ValidatorType.funcOfXToYArguments="must have {arg1} to {arg2} arguments",ValidatorType.oneOfCan="can be present as only one item of {arg1} list",ValidatorType.oneOfMust="must be present as only one item of {arg1} list",ValidatorType.or="must satisfy at least 1 validator from {arg1} list",ValidatorType.enum="must belong to {arg1} list"})(ValidatorType=ValidatorType||{}),{NUMBER:{type:ValidatorType.number,method:onNumber},INTEGER:{type:ValidatorType.integer,method:function(value){var errors=[],parsedValue=(value=getNumber(value),parseInt(String(value),10));return value!==parsedValue&&errors.push(ValidatorType.integer),{value:parsedValue,isSet:!0,isValid:!errors.length,errors:errors}}},INTEGER_UNLIMITED:{type:ValidatorType.integerUnlimited,method:function(value){var parsedValue=value,errors=[];return(value=getNumber(value))!==(parsedValue=Number.isFinite(value)?parseInt(String(value),10):value)&&errors.push(ValidatorType.integerUnlimited),{value:parsedValue,isSet:!0,isValid:!errors.length,errors:errors}}},MORE_OR_EQUAL:function(limit,fallback){return{type:ValidatorType.moreOrEqual,method:((limit,fallback)=>function(value){var parsedValue,errors,value=onNumber(value);return value.isValid?(errors=[],(parsedValue=value.value)<limit&&(fallback?parsedValue=limit:errors.push(getError(ValidatorType.moreOrEqual,[String(limit)]))),{value:parsedValue,isSet:!0,isValid:!errors.length,errors:errors}):value})(limit,fallback)}},BOOLEAN:{type:ValidatorType.boolean,method:function(value){var errors=[],parsedValue=value;return"true"===value?parsedValue=!0:"false"===value&&(parsedValue=!1),"boolean"!=typeof parsedValue&&errors.push(ValidatorType.boolean),{value:parsedValue,isSet:!0,isValid:!errors.length,errors:errors}}},OBJECT:{type:ValidatorType.object,method:function(value){var errors=[];return value&&"[object Object]"===Object.prototype.toString.call(value)||errors.push(ValidatorType.object),{value:value,isSet:!0,isValid:!errors.length,errors:errors}}},ITEM_LIST:{type:ValidatorType.itemList,method:function(value){var parsedValue=value,errors=[];if(Array.isArray(value))if(value.length){if(1<value.length)for(var type=typeof value[0],i=value.length-1;0<=i;i--)if(typeof value[i]!=type){errors.push(getError(ValidatorType.itemList,["of items of the same type"]));break}}else errors.push(getError(ValidatorType.itemList,["with at least 1 item"]));else errors.push(ValidatorType.itemList),parsedValue=[];return{value:parsedValue,isSet:!0,isValid:!errors.length,errors:errors}}},ELEMENT:{type:ValidatorType.element,method:function(value){var errors=[];return value instanceof Element||value instanceof Document||errors.push(ValidatorType.element),{value:value,isSet:!0,isValid:!errors.length,errors:errors}}},FUNC:{type:ValidatorType.function,method:onFunction},FUNC_WITH_X_ARGUMENTS:function(count){return{type:ValidatorType.funcOfxArguments,method:(argsCount=count,function(value){var errors,result=onFunction(value);return result.isValid?(errors=[],(value=result.value).length!==argsCount&&errors.push(getError(ValidatorType.funcOfxArguments,[String(argsCount)])),{value:value,isSet:!0,isValid:!errors.length,errors:errors}):result})};var argsCount},FUNC_WITH_X_AND_MORE_ARGUMENTS:function(count){return{type:ValidatorType.funcOfxAndMoreArguments,method:(argsCount=count,function(value){var errors,result=onFunction(value);return result.isValid?(errors=[],(value=result.value).length<argsCount&&errors.push(getError(ValidatorType.funcOfxArguments,[String(argsCount)])),{value:value,isSet:!0,isValid:!errors.length,errors:errors}):result})};var argsCount},FUNC_WITH_X_TO_Y_ARGUMENTS:function(from,to){return{type:ValidatorType.funcOfXToYArguments,method:((from,to)=>function(value){var errors,result=onFunction(value);return result.isValid?(errors=[],((value=result.value).length<from||value.length>to)&&errors.push(getError(ValidatorType.funcOfXToYArguments,[String(from),String(to)])),{value:value,isSet:!0,isValid:!errors.length,errors:errors}):result})(from,to)}},ONE_OF_CAN:function(list){return{type:ValidatorType.oneOfCan,method:onOneOf(list,!1)}},ONE_OF_MUST:function(list){return{type:ValidatorType.oneOfMust,method:onOneOf(list,!0)}},OR:function(list){return{type:ValidatorType.or,method:(validators=list,function(value){var errors=[];return validators.every(function(validator){return!validator.method(value).isValid})&&errors.push(validators.map(function(v){return v.type}).join(" OR ")),{value:value,isSet:!0,isValid:!errors.length,errors:errors}})};var validators},ENUM:function(list){return{type:ValidatorType.enum,method:(list=>function(value){var errors=[],values=Object.keys(list).filter(function(k){return isNaN(Number(k))}).map(function(k){return list[k]});return values.some(function(item){return item===value})||errors.push(getError(ValidatorType.enum,["["+values.join(",")+"]"])),{value:value,isSet:!0,isValid:!errors.length,errors:errors}})(list)}}}),ValidatedData=(()=>{function ValidatedData(context){this.params={},this.contextErrors=[],this.errors=[],this.isValid=!0,this.setContext(context)}return ValidatedData.prototype.setContext=function(context){context&&"[object Object]"===Object.prototype.toString.call(context)?this.isValidContext=!0:(this.setCommonError("context is not an object"),this.isValidContext=!1),this.context=context},ValidatedData.prototype.setValidity=function(){var _this=this;this.errors=Object.keys(this.params).reduce(function(acc,key){return __spreadArray(__spreadArray([],__read(acc),!1),__read(_this.params[key].errors),!1)},[]),this.isValid=!this.errors.length},ValidatedData.prototype.setCommonError=function(error){this.contextErrors.push(error),this.errors.push(error),this.isValid=!1},ValidatedData.prototype.setParam=function(token,value){value.isValid||(value.errors=value.isSet?value.errors.map(function(err){return'"'.concat(token,'" ').concat(err)}):['"'.concat(token,'" must be set')]),this.params[token]=value,this.setValidity()},ValidatedData.prototype.showErrors=function(){return this.errors.length?"validation failed: "+this.errors.join(", "):""},ValidatedData})(),runValidator=function(current,validator,context){var value=current.value,current=current.errors,validator=validator.method(value,context),value=__spreadArray(__spreadArray([],__read(current),!1),__read(validator.errors),!1);return{value:validator.value,isSet:validator.isSet,isValid:!value.length,errors:value}},getDefault=function(value,prop){var empty=void 0===value,auto=!prop.mandatory&&void 0!==prop.defaultValue;return{value:empty?auto?prop.defaultValue:void 0:value,isSet:!empty||auto,isValid:!empty||!prop.mandatory,errors:[]}},SizeStrategy=VALIDATORS.OBJECT,FUNC_WITH_X_AND_MORE_ARGUMENTS$1=VALIDATORS.FUNC_WITH_X_AND_MORE_ARGUMENTS,DATASOURCE=((DatasourceProps=>{DatasourceProps.get="get",DatasourceProps.settings="settings",DatasourceProps.devSettings="devSettings"})(DatasourceProps=DatasourceProps||{}),(_a$4={})[DatasourceProps.get]={validators:[FUNC_WITH_X_AND_MORE_ARGUMENTS$1(2)],mandatory:!0},_a$4[DatasourceProps.settings]={validators:[SizeStrategy]},_a$4[DatasourceProps.devSettings]={validators:[SizeStrategy]},_a$4),FUNC_WITH_X_AND_MORE_ARGUMENTS$1=VALIDATORS.NUMBER,SizeStrategy=VALIDATORS.INTEGER,_a$4=VALIDATORS.INTEGER_UNLIMITED,MORE_OR_EQUAL=VALIDATORS.MORE_OR_EQUAL,BOOLEAN$1=VALIDATORS.BOOLEAN,ELEMENT$1=VALIDATORS.ELEMENT,FUNC$1=VALIDATORS.FUNC,OR$1=VALIDATORS.OR,ENUM=VALIDATORS.ENUM,SETTINGS=((Settings=>{Settings.adapter="adapter",Settings.startIndex="startIndex",Settings.minIndex="minIndex",Settings.maxIndex="maxIndex",Settings.itemSize="itemSize",Settings.bufferSize="bufferSize",Settings.padding="padding",Settings.infinite="infinite",Settings.horizontal="horizontal",Settings.windowViewport="windowViewport",Settings.viewportElement="viewportElement",Settings.inverse="inverse",Settings.onBeforeClip="onBeforeClip",Settings.sizeStrategy="sizeStrategy"})(Settings$1=Settings$1||{}),(DevSettings=>{DevSettings.debug="debug",DevSettings.immediateLog="immediateLog",DevSettings.logProcessRun="logProcessRun",DevSettings.logTime="logTime",DevSettings.throttle="throttle",DevSettings.initDelay="initDelay",DevSettings.initWindowDelay="initWindowDelay",DevSettings.cacheData="cacheData",DevSettings.cacheOnReload="cacheOnReload",DevSettings.dismissOverflowAnchor="dismissOverflowAnchor",DevSettings.directionPriority="directionPriority"})(DevSettings=DevSettings||{}),(_a$3={})[Settings$1.itemSize]=1,_a$3[Settings$1.bufferSize]=1,_a$3[Settings$1.padding]=.01,_a$3[DevSettings.throttle]=0,_a$3[DevSettings.initDelay]=0,_a$3[DevSettings.initWindowDelay]=0,(_b$2={})[Settings$1.adapter]={validators:[BOOLEAN$1],defaultValue:!1},_b$2[Settings$1.startIndex]={validators:[SizeStrategy],defaultValue:1},_b$2[Settings$1.minIndex]={validators:[_a$4],defaultValue:-1/0},_b$2[Settings$1.maxIndex]={validators:[_a$4],defaultValue:1/0},_b$2[Settings$1.itemSize]={validators:[SizeStrategy,MORE_OR_EQUAL(_a$3[Settings$1.itemSize],!0)],defaultValue:NaN},_b$2[Settings$1.bufferSize]={validators:[SizeStrategy,MORE_OR_EQUAL(_a$3[Settings$1.bufferSize],!0)],defaultValue:5},_b$2[Settings$1.padding]={validators:[FUNC_WITH_X_AND_MORE_ARGUMENTS$1,MORE_OR_EQUAL(_a$3[Settings$1.padding],!0)],defaultValue:.5},_b$2[Settings$1.infinite]={validators:[BOOLEAN$1],defaultValue:!1},_b$2[Settings$1.horizontal]={validators:[BOOLEAN$1],defaultValue:!1},_b$2[Settings$1.windowViewport]={validators:[BOOLEAN$1],defaultValue:!1},_b$2[Settings$1.viewportElement]={validators:[OR$1([ELEMENT$1,FUNC$1])],defaultValue:null},_b$2[Settings$1.inverse]={validators:[BOOLEAN$1],defaultValue:!1},_b$2[Settings$1.onBeforeClip]={validators:[FUNC$1],defaultValue:null},_b$2[Settings$1.sizeStrategy]={validators:[ENUM(exports.SizeStrategy)],defaultValue:exports.SizeStrategy.Average},_b$2),DEV_SETTINGS=((_a$4={})[DevSettings.debug]={validators:[BOOLEAN$1],defaultValue:!1},_a$4[DevSettings.immediateLog]={validators:[BOOLEAN$1],defaultValue:!0},_a$4[DevSettings.logProcessRun]={validators:[BOOLEAN$1],defaultValue:!1},_a$4[DevSettings.logTime]={validators:[BOOLEAN$1],defaultValue:!1},_a$4[DevSettings.throttle]={validators:[SizeStrategy,MORE_OR_EQUAL(_a$3[DevSettings.throttle],!0)],defaultValue:40},_a$4[DevSettings.initDelay]={validators:[SizeStrategy,MORE_OR_EQUAL(_a$3[DevSettings.initDelay],!0)],defaultValue:1},_a$4[DevSettings.initWindowDelay]={validators:[SizeStrategy,MORE_OR_EQUAL(_a$3[DevSettings.initWindowDelay],!0)],defaultValue:40},_a$4[DevSettings.cacheData]={validators:[BOOLEAN$1],defaultValue:!1},_a$4[DevSettings.cacheOnReload]={validators:[BOOLEAN$1],defaultValue:!1},_a$4[DevSettings.dismissOverflowAnchor]={validators:[BOOLEAN$1],defaultValue:!0},_a$4[DevSettings.directionPriority]={validators:[ENUM(Direction)],defaultValue:Direction.backward},_a$4),FUNC_WITH_X_AND_MORE_ARGUMENTS$1=((CommonProcess=>{CommonProcess.init="init",CommonProcess.scroll="scroll",CommonProcess.start="start",CommonProcess.preFetch="preFetch",CommonProcess.fetch="fetch",CommonProcess.postFetch="postFetch",CommonProcess.render="render",CommonProcess.preClip="preClip",CommonProcess.clip="clip",CommonProcess.adjust="adjust",CommonProcess.end="end"})(CommonProcess=CommonProcess||{}),(AdapterProcess=>{AdapterProcess.reset="adapter.reset",AdapterProcess.reload="adapter.reload",AdapterProcess.append="adapter.append",AdapterProcess.prepend="adapter.prepend",AdapterProcess.check="adapter.check",AdapterProcess.remove="adapter.remove",AdapterProcess.replace="adapter.replace",AdapterProcess.update="adapter.update",AdapterProcess.clip="adapter.clip",AdapterProcess.insert="adapter.insert",AdapterProcess.pause="adapter.pause",AdapterProcess.fix="adapter.fix"})(AdapterProcess=AdapterProcess||{}),(ProcessStatus=>{ProcessStatus.start="start",ProcessStatus.next="next",ProcessStatus.done="done",ProcessStatus.error="error"})(ProcessStatus=ProcessStatus||{}),VALIDATORS.INTEGER),OR$1=VALIDATORS.INTEGER_UNLIMITED,ELEMENT$1=VALIDATORS.BOOLEAN,FUNC$1=VALIDATORS.OBJECT,Settings$1=VALIDATORS.ITEM_LIST,_b$2=VALIDATORS.FUNC_WITH_X_ARGUMENTS,SizeStrategy=VALIDATORS.FUNC_WITH_X_AND_MORE_ARGUMENTS,MORE_OR_EQUAL=VALIDATORS.FUNC_WITH_X_TO_Y_ARGUMENTS,_a$3=VALIDATORS.ONE_OF_MUST,BOOLEAN$1=VALIDATORS.ONE_OF_CAN,DevSettings=VALIDATORS.OR,AdapterNoParams=AdapterNoParams||{},ENUM={},SizeStrategy=((_a$4={})[DatasourceProps.get]={validators:[SizeStrategy(2)]},_a$4[DatasourceProps.settings]={validators:[FUNC$1]},_a$4[DatasourceProps.devSettings]={validators:[FUNC$1]},_a$4),BOOLEAN$1=((AdapterReloadParams=AdapterReloadParams||{}).reloadIndex="reloadIndex",(_a$4={})[AdapterReloadParams.reloadIndex]={validators:[FUNC_WITH_X_AND_MORE_ARGUMENTS$1]},(AdapterPrependParams=>{AdapterPrependParams.items="items",AdapterPrependParams.bof="bof",AdapterPrependParams.increase="increase",AdapterPrependParams.virtualize="virtualize"})(AdapterPrependParams=AdapterPrependParams||{}),(_c={})[AdapterPrependParams.items]={validators:[Settings$1],mandatory:!0},_c[AdapterPrependParams.bof]={validators:[ELEMENT$1,BOOLEAN$1([AdapterPrependParams.virtualize])],defaultValue:!1},_c[AdapterPrependParams.increase]={validators:[ELEMENT$1],defaultValue:!1},_c[AdapterPrependParams.virtualize]={validators:[ELEMENT$1,BOOLEAN$1([AdapterPrependParams.bof])],defaultValue:!1},(AdapterAppendParams=>{AdapterAppendParams.items="items",AdapterAppendParams.eof="eof",AdapterAppendParams.decrease="decrease",AdapterAppendParams.virtualize="virtualize"})(AdapterAppendParams=AdapterAppendParams||{}),(_d={})[AdapterAppendParams.items]={validators:[Settings$1],mandatory:!0},_d[AdapterAppendParams.eof]={validators:[ELEMENT$1,BOOLEAN$1([AdapterAppendParams.virtualize])],defaultValue:!1},_d[AdapterAppendParams.decrease]={validators:[ELEMENT$1],defaultValue:!1},_d[AdapterPrependParams.virtualize]={validators:[ELEMENT$1,BOOLEAN$1([AdapterAppendParams.eof])],defaultValue:!1},(AdapterRemoveParams=>{AdapterRemoveParams.predicate="predicate",AdapterRemoveParams.indexes="indexes",AdapterRemoveParams.increase="increase"})(AdapterRemoveParams=AdapterRemoveParams||{}),(_e={})[AdapterRemoveParams.predicate]={validators:[_b$2(1),_a$3([AdapterRemoveParams.indexes])]},_e[AdapterRemoveParams.indexes]={validators:[Settings$1,_a$3([AdapterRemoveParams.predicate])]},_e[AdapterRemoveParams.increase]={validators:[ELEMENT$1],defaultValue:!1},(AdapterClipParams=>{AdapterClipParams.backwardOnly="backwardOnly",AdapterClipParams.forwardOnly="forwardOnly"})(AdapterClipParams=AdapterClipParams||{}),(_f={})[AdapterClipParams.backwardOnly]={validators:[ELEMENT$1,BOOLEAN$1([AdapterClipParams.forwardOnly])],defaultValue:!1},_f[AdapterClipParams.forwardOnly]={validators:[ELEMENT$1,BOOLEAN$1([AdapterClipParams.backwardOnly])],defaultValue:!1},_f),FUNC_WITH_X_AND_MORE_ARGUMENTS$1=((AdapterInsertParams=>{AdapterInsertParams.items="items",AdapterInsertParams.before="before",AdapterInsertParams.after="after",AdapterInsertParams.beforeIndex="beforeIndex",AdapterInsertParams.afterIndex="afterIndex",AdapterInsertParams.decrease="decrease"})(AdapterInsertParams=AdapterInsertParams||{}),(_f={})[AdapterInsertParams.items]={validators:[Settings$1],mandatory:!0},_f[AdapterInsertParams.before]={validators:[_b$2(1),_a$3([AdapterInsertParams.after,AdapterInsertParams.beforeIndex,AdapterInsertParams.afterIndex])]},_f[AdapterInsertParams.after]={validators:[_b$2(1),_a$3([AdapterInsertParams.before,AdapterInsertParams.beforeIndex,AdapterInsertParams.afterIndex])]},_f[AdapterInsertParams.beforeIndex]={validators:[FUNC_WITH_X_AND_MORE_ARGUMENTS$1,_a$3([AdapterInsertParams.before,AdapterInsertParams.after,AdapterInsertParams.afterIndex])]},_f[AdapterInsertParams.afterIndex]={validators:[FUNC_WITH_X_AND_MORE_ARGUMENTS$1,_a$3([AdapterInsertParams.before,AdapterInsertParams.after,AdapterInsertParams.beforeIndex])]},_f[AdapterInsertParams.decrease]={validators:[ELEMENT$1],defaultValue:!1},_f),_f=((AdapterReplaceParams=>{AdapterReplaceParams.items="items",AdapterReplaceParams.predicate="predicate",AdapterReplaceParams.fixRight="fixRight"})(AdapterReplaceParams=AdapterReplaceParams||{}),(_a$3={})[AdapterInsertParams.items]={validators:[Settings$1],mandatory:!0},_a$3[AdapterReplaceParams.predicate]={validators:[_b$2(1)],mandatory:!0},_a$3[AdapterReplaceParams.fixRight]={validators:[ELEMENT$1],defaultValue:!1},_a$3),_a$3=((AdapterUpdateParams=>{AdapterUpdateParams.predicate="predicate",AdapterUpdateParams.fixRight="fixRight"})(AdapterUpdateParams=AdapterUpdateParams||{}),(Settings$1={})[AdapterUpdateParams.predicate]={validators:[_b$2(1)],mandatory:!0},Settings$1[AdapterUpdateParams.fixRight]={validators:[ELEMENT$1],defaultValue:!1},Settings$1),OR$1=((AdapterFixParams=>{AdapterFixParams.scrollPosition="scrollPosition",AdapterFixParams.minIndex="minIndex",AdapterFixParams.maxIndex="maxIndex",AdapterFixParams.updater="updater",AdapterFixParams.scrollToItem="scrollToItem",AdapterFixParams.scrollToItemOpt="scrollToItemOpt"})(AdapterFixParams=AdapterFixParams||{}),(Settings$1={})[AdapterFixParams.scrollPosition]={validators:[OR$1]},Settings$1[AdapterFixParams.minIndex]={validators:[OR$1]},Settings$1[AdapterFixParams.maxIndex]={validators:[OR$1]},Settings$1[AdapterFixParams.updater]={validators:[MORE_OR_EQUAL(1,2)]},Settings$1[AdapterFixParams.scrollToItem]={validators:[_b$2(1)]},Settings$1[AdapterFixParams.scrollToItemOpt]={validators:[DevSettings([ELEMENT$1,FUNC$1])]},Settings$1),_b$2=((MORE_OR_EQUAL={})[AdapterProcess.reset]=DatasourceProps,MORE_OR_EQUAL[AdapterProcess.reload]=AdapterReloadParams,MORE_OR_EQUAL[AdapterProcess.prepend]=AdapterPrependParams,MORE_OR_EQUAL[AdapterProcess.append]=AdapterAppendParams,MORE_OR_EQUAL[AdapterProcess.check]=AdapterNoParams,MORE_OR_EQUAL[AdapterProcess.remove]=AdapterRemoveParams,MORE_OR_EQUAL[AdapterProcess.clip]=AdapterClipParams,MORE_OR_EQUAL[AdapterProcess.insert]=AdapterInsertParams,MORE_OR_EQUAL[AdapterProcess.replace]=AdapterReplaceParams,MORE_OR_EQUAL[AdapterProcess.update]=AdapterUpdateParams,MORE_OR_EQUAL[AdapterProcess.pause]=AdapterNoParams,MORE_OR_EQUAL[AdapterProcess.fix]=AdapterFixParams,MORE_OR_EQUAL),ADAPTER_METHODS=((DevSettings={})[AdapterProcess.reset]=SizeStrategy,DevSettings[AdapterProcess.reload]=_a$4,DevSettings[AdapterProcess.prepend]=_c,DevSettings[AdapterProcess.append]=_d,DevSettings[AdapterProcess.check]=ENUM,DevSettings[AdapterProcess.remove]=_e,DevSettings[AdapterProcess.clip]=BOOLEAN$1,DevSettings[AdapterProcess.insert]=FUNC_WITH_X_AND_MORE_ARGUMENTS$1,DevSettings[AdapterProcess.replace]=_f,DevSettings[AdapterProcess.update]=_a$3,DevSettings[AdapterProcess.pause]=ENUM,DevSettings[AdapterProcess.fix]=OR$1,DevSettings),ELEMENT$1=VALIDATORS.ELEMENT,FUNC$1=VALIDATORS.OBJECT,Settings$1=VALIDATORS.FUNC,AdapterReloadParams=VALIDATORS.FUNC_WITH_X_ARGUMENTS,WORKFLOW=((WorkflowProps=>{WorkflowProps.consumer="consumer",WorkflowProps.element="element",WorkflowProps.datasource="datasource",WorkflowProps.run="run",WorkflowProps.Routines="Routines"})(WorkflowProps=WorkflowProps||{}),(AdapterPrependParams={})[WorkflowProps.consumer]={validators:[FUNC$1]},AdapterPrependParams[WorkflowProps.element]={validators:[ELEMENT$1],mandatory:!0},AdapterPrependParams[WorkflowProps.datasource]={validators:[FUNC$1],mandatory:!0},AdapterPrependParams[WorkflowProps.run]={validators:[AdapterReloadParams(1)],mandatory:!0},AdapterPrependParams[WorkflowProps.Routines]={validators:[Settings$1]},AdapterPrependParams),Settings=(()=>{function Settings(settings,devSettings,instanceIndex){this.parseInput(settings,SETTINGS),this.parseInput(devSettings,DEV_SETTINGS),this.instanceIndex=instanceIndex,this.initializeDelay=this.getInitializeDelay(),this.viewport=this.getViewport()}return Settings.prototype.parseInput=function(input,props){var _this=this,input=validate(input,props);if(!input.isValid)throw new Error("Invalid settings");Object.entries(input.params).forEach(function(_a){var _b,_a=__read(_a,2),key=_a[0];return Object.assign(_this,((_b={})[key]=_a[1].value,_b))})},Settings.prototype.getInitializeDelay=function(){var result=0;return!this.windowViewport||!this.initWindowDelay||"scrollRestoration"in history||(result=this.initWindowDelay),result=0<this.initDelay?Math.max(result,this.initDelay):result},Settings.prototype.getViewport=function(){var value;return"function"!=typeof this.viewportElement?this.viewportElement:(value=this.viewportElement(),(value=validateOne({value:value},"value",{validators:[VALIDATORS.ELEMENT]})).isValid?value.value:null)},Settings})(),initProcesses=[CommonProcess.init,AdapterProcess.reset,AdapterProcess.reload],Init=(_super=>{function Init(){return null!==_super&&_super.apply(this,arguments)||this}return __extends(Init,_super),Init.run=function(scroller,process){var state=scroller.state,workflow=scroller.workflow,isInitial=initProcesses.includes(process);scroller.logger.logCycle(!0),state.startWorkflowCycle(isInitial,process),workflow.call({process:Init.process,status:ProcessStatus.next})},Init})(BaseProcessFactory(CommonProcess.init)),Scroll=(_super=>{function Scroll(){return null!==_super&&_super.apply(this,arguments)||this}return __extends(Scroll,_super),Scroll.run=function(scroller,payload){var workflow=scroller.workflow,position=scroller.viewport.scrollPosition;Scroll.onSynthetic(scroller,position)||Scroll.onThrottle(scroller,position,function(){return Scroll.onScroll(scroller,workflow)})},Scroll.onSynthetic=function(scroller,position){var scroll=scroller.state.scroll,synthPos=scroll.syntheticPosition;if(null!==synthPos){if(scroll.syntheticFulfill&&(scroll.syntheticPosition=null),!scroll.syntheticFulfill||synthPos===position)return scroller.logger.log(function(){return["skipping scroll",position,"[".concat(scroll.syntheticFulfill?"":"pre-","synthetic]")]}),!0;scroller.logger.log(function(){return["synthetic scroll has been fulfilled:",position,position<synthPos?"<":">",synthPos]})}return!1},Scroll.onThrottle=function(scroller,position,done){var scroll=scroller.state.scroll,throttle=scroller.settings.throttle,logger=scroller.logger,_a=(scroll.current=Scroll.getScrollEvent(position,scroll.previous),scroll.current),direction=_a.direction,time=_a.time,timeDiff=scroll.previous?time-scroll.previous.time:1/0,delta=throttle-timeDiff,shouldDelay=isFinite(delta)&&0<delta,alreadyDelayed=!!scroll.scrollTimer;logger.log(function(){return[direction===Direction.backward?"⤴":"⤵",position,shouldDelay?timeDiff+"ms":"0ms",shouldDelay?alreadyDelayed?"delayed":"/ ".concat(delta,"ms delay"):""]}),shouldDelay?alreadyDelayed||(scroll.scrollTimer=setTimeout(function(){logger.log(function(){var curr=Scroll.getScrollEvent(scroller.viewport.scrollPosition,scroll.current);return[curr.direction===Direction.backward?"⤴":"⤵",curr.position,curr.time-time+"ms","triggered by timer set on",position]}),scroll.scrollTimer=null,done()},delta)):(scroll.scrollTimer&&(clearTimeout(scroll.scrollTimer),scroll.scrollTimer=null),done())},Scroll.getScrollEvent=function(position,previous){var time=Number(new Date),direction=Direction.forward;return previous&&(position===previous.position?direction=previous.direction:position<previous.position&&(direction=Direction.backward)),{position:position,direction:direction,time:time}},Scroll.onScroll=function(scroller,workflow){var _a=scroller.state,scroll=_a.scroll,_a=_a.cycle;scroll.previous=__assign({},scroll.current),scroll.current=null,_a.busy.get()?scroller.logger.log(function(){return["skipping scroll",scroll.previous.position,"[pending]"]}):workflow.call({process:Scroll.process,status:ProcessStatus.next})},Scroll})(BaseProcessFactory(CommonProcess.scroll)),Reset=(_super=>{function Reset(){return null!==_super&&_super.apply(this,arguments)||this}return __extends(Reset,_super),Reset.run=function(scroller,options){var datasource=scroller.datasource,buffer=scroller.buffer,paddings=scroller.viewport.paddings,cycle=scroller.state.cycle;if(options){var data_1=Reset.parseInput(scroller,options).data;if(!data_1.isValid)return;var constructed_1=options instanceof Datasource;Object.keys(DatasourceProps).forEach(function(key){var param=data_1.params[key],ds=datasource;(param.isSet||constructed_1&&ds[key])&&(ds[key]=param.value)})}buffer.reset(!0),paddings.backward.reset(),paddings.forward.reset();options={datasource:datasource};cycle.busy.get()&&(options.finalize=!0,cycle.interrupter=Reset.process),scroller.workflow.call({process:Reset.process,status:ProcessStatus.next,payload:options})},Reset})(BaseAdapterProcessFactory(AdapterProcess.reset)),Reload=(_super=>{function Reload(){return null!==_super&&_super.apply(this,arguments)||this}return __extends(Reload,_super),Reload.run=function(scroller,reloadIndex){var viewport=scroller.viewport,state=scroller.state,buffer=scroller.buffer,reloadIndex=Reload.parseInput(scroller,{reloadIndex:reloadIndex},!0).params,reloadIndex=(buffer.reset(!1,reloadIndex?reloadIndex.reloadIndex:void 0),viewport.reset(buffer.startIndex),{});state.cycle.busy.get()&&(reloadIndex.finalize=!0,state.cycle.interrupter=Reload.process),scroller.workflow.call({process:Reload.process,status:ProcessStatus.next,payload:reloadIndex})},Reload})(BaseAdapterProcessFactory(AdapterProcess.reload)),Item=(()=>{function Item($index,data,routines){this.container={$index:$index,data:data},this.nodeId=String($index),this.routines=routines,this.invisible=!0,this.toRemove=!1,this.toInsert=!1}return Object.defineProperty(Item.prototype,"$index",{get:function(){return this.container.$index},set:function(value){this.container.$index=value},enumerable:!1,configurable:!0}),Object.defineProperty(Item.prototype,"data",{get:function(){return this.container.data},set:function(value){this.container.data=value},enumerable:!1,configurable:!0}),Object.defineProperty(Item.prototype,"element",{get:function(){return this.container.element},set:function(value){this.container.element=value},enumerable:!1,configurable:!0}),Item.prototype.dispose=function(){delete this.container.element},Item.prototype.setSize=function(preSize){this.preSize=preSize=void 0===preSize?0:preSize,this.element&&(this.size=this.routines.getSize(this.element))},Item.prototype.makeVisible=function(){this.routines.makeElementVisible(this.element),this.invisible=!1},Item.prototype.hide=function(){this.element&&this.routines.hideElement(this.element)},Item.prototype.scrollTo=function(argument){this.element&&this.routines.scrollTo(this.element,argument)},Item.prototype.updateIndex=function(index){this.$index=index,this.nodeId=String(index)},Item.prototype.get=function(){return this.container},Item})(),Update=(_super=>{function Update(){return null!==_super&&_super.apply(this,arguments)||this}return __extends(Update,_super),Update.run=function(scroller,options){var options=Update.parseInput(scroller,options).params;options&&(options=Update.doUpdate(scroller,options),scroller.workflow.call({process:Update.process,status:options?ProcessStatus.next:ProcessStatus.done}))},Update.doUpdate=function(scroller,params){var firstItem,firstItemDiff,toRemove,trackedItem,toRender,buffer=scroller.buffer,viewport=scroller.viewport,fetch=scroller.state.fetch,routines=scroller.routines,scroller=scroller.logger;return buffer.items?(firstItem=(viewport=viewport.getEdgeVisibleItem(buffer.items,Direction.backward)).item,firstItemDiff=viewport.diff,params=(viewport=buffer.updateItems(params.predicate,function(index,data){return new Item(index,data,routines)},viewport.index,!!params.fixRight)).trackedIndex,toRemove=viewport.toRemove,viewport=0,trackedItem=buffer.get(params),firstItem&&firstItem===trackedItem&&(viewport=-buffer.getSizeByIndex(params)+firstItemDiff),toRemove.forEach(function(item){return item.hide()}),scroller.log(function(){return toRemove.length?"items to remove: ["+toRemove.map(function(_a){return _a.$index}).join(",")+"]":"no items to remove"}),toRemove.length&&buffer.checkDefaultSize(),toRender=buffer.items.filter(function(_a){return _a.toInsert}),scroller.log(function(){return toRender.length?"items to render: ["+toRender.map(function(_a){return _a.$index}).join(",")+"]":"no items to render"}),fetch.update(params,viewport,toRender,toRemove),!!toRemove.length||!!toRender.length):(scroller.log(function(){return"no items in Buffer"}),!1)},Update})(BaseAdapterProcessFactory(AdapterProcess.update)),Insert=(_super=>{function Insert(){return null!==_super&&_super.apply(this,arguments)||this}return __extends(Insert,_super),Insert.run=function(scroller,options){var options=Insert.parseInput(scroller,options).params;options&&(options=Insert.doInsert(scroller,options),scroller.workflow.call({process:Insert.process,status:options?ProcessStatus.next:ProcessStatus.done}))},Insert.doInsert=function(scroller,params){return!!(Insert.insertEmpty(scroller,params)||Insert.insertInBuffer(scroller,params)||Insert.insertVirtually(scroller,params))},Insert.insertEmpty=function(scroller,params){var beforeIndex,buffer=scroller.buffer,routines=scroller.routines,scroller=scroller.state.fetch;return!buffer.size&&(beforeIndex=params.beforeIndex,!!buffer.fillEmpty(params.items,beforeIndex,params.afterIndex,!!params.decrease,function(index,data){return new Item(index,data,routines)}))&&(scroller.fill(buffer.items,buffer.startIndex),!0)},Insert.insertInBuffer=function(scroller,params){var isBackward,before=params.before,beforeIndex=params.beforeIndex,items=params.items,decrease=params.decrease,indexToInsert=scroller.buffer.getIndexToInsert(before||params.after,beforeIndex,params.afterIndex);return!params.virtualize&&!isNaN(indexToInsert)&&(isBackward=Number.isInteger(beforeIndex)||before,Update.doUpdate(scroller,{predicate:function(_a){var $index=_a.$index,_a=_a.data;return indexToInsert!==$index||(isBackward?__spreadArray(__spreadArray([],__read(items),!1),[_a],!1):__spreadArray([_a],__read(items),!1))},fixRight:decrease}))},Insert.insertVirtually=function(scroller,params){var beforeIndex=params.beforeIndex,afterIndex=params.afterIndex,items=params.items,params=params.decrease,buffer=scroller.buffer,fetch=scroller.state.fetch,scroller=scroller.viewport,direction=Number.isInteger(beforeIndex)?Direction.backward:Direction.forward,beforeIndex=direction===Direction.backward?beforeIndex:afterIndex;return!!buffer.insertVirtually(items,beforeIndex,direction,!!params)&&(items=(afterIndex=scroller.getEdgeVisibleItem(buffer.items,Direction.backward)).index,beforeIndex=afterIndex.diff,fetch.firstVisible.index=items,isNaN(items)||(fetch.simulate=!0,fetch.firstVisible.delta=-buffer.getSizeByIndex(items)+beforeIndex),!0)},Insert})(BaseAdapterProcessFactory(AdapterProcess.insert)),Append=(_super=>{function Append(){return null!==_super&&_super.apply(this,arguments)||this}return __extends(Append,_super),Append.run=function(scroller,_a){var process=_a.process,_a=Append.parseInput(scroller,_a.options,!1,process).params;_a&&(process=Append.doAppend(scroller,process,_a),scroller.workflow.call({process:Append.process,status:process?ProcessStatus.next:ProcessStatus.done}))},Append.doAppend=function(scroller,process,params){var beforeIndex,afterIndex,bof=params.bof,eof=params.eof,buffer=scroller.buffer,process=process===AdapterProcess.prepend,opposite=process?!params.increase:params.decrease,items=params.items;return process?(beforeIndex=(bof?buffer.absMinIndex:buffer.minIndex)+(buffer.size?0:1),items=__spreadArray([],__read(items),!1).reverse()):afterIndex=(eof?buffer.absMaxIndex:buffer.maxIndex)-(buffer.size||opposite?0:1),Insert.doInsert(scroller,{items:items,beforeIndex:beforeIndex,afterIndex:afterIndex,decrease:opposite,virtualize:params.virtualize})},Append})(BaseAdapterProcessFactory(AdapterProcess.append)),Check=(_super=>{function Check(){return null!==_super&&_super.apply(this,arguments)||this}return __extends(Check,_super),Check.run=function(scroller){var firstIndex,workflow=scroller.workflow,buffer=scroller.buffer,fetch=scroller.state.fetch,viewport=scroller.viewport,min=1/0,max=-1/0;buffer.items.forEach(function(item){var size=item.size;item.setSize(),item.size!==size&&(buffer.cacheItem(item),min=Math.min(min,item.$index),max=Math.max(max,item.$index))}),Number.isFinite(min)&&(fetch.first.indexBuffer=buffer.firstIndex,fetch.last.indexBuffer=buffer.lastIndex,firstIndex=(viewport=viewport.getEdgeVisibleItem(buffer.items,Direction.backward)).index,viewport=viewport.diff,fetch.firstVisible.index=firstIndex,isNaN(firstIndex)||(fetch.firstVisible.delta=-buffer.getSizeByIndex(firstIndex)+viewport),fetch.check(buffer.items.filter(function(item){return item.$index>=min&&item.$index<=max}))),scroller.logger.stat("check"),workflow.call({process:Check.process,status:Number.isFinite(min)?ProcessStatus.next:ProcessStatus.done})},Check})(BaseAdapterProcessFactory(AdapterProcess.check)),Remove=(_super=>{function Remove(){return null!==_super&&_super.apply(this,arguments)||this}return __extends(Remove,_super),Remove.run=function(scroller,options){var options=Remove.parseInput(scroller,options).params;options&&(options=Remove.doRemove(scroller,options),scroller.workflow.call({process:Remove.process,status:options?ProcessStatus.next:ProcessStatus.done}))},Remove.doRemove=function(scroller,params){scroller.state.fetch.firstVisible.index=NaN;var diffLeft_1,diffRight_1,removed=Remove.removeBufferedItems(scroller,params),shouldBuffered=0<removed.length,params=(shouldBuffered&&(params.indexes&¶ms.indexes.length&&(params.indexes=params.indexes.filter(function(i){return!removed.includes(i)})),params.indexes)&¶ms.indexes.length&&(diffLeft_1=(params.increase?1:0)*removed.length,diffRight_1=(params.increase?0:-1)*removed.length,params.indexes=params.indexes.map(function(index){return index+(index<removed[0]?diffLeft_1:diffRight_1)})),Remove.removeVirtualItems(scroller,params));return!(!shouldBuffered&&!params||(scroller.logger.stat("after remove"),0))},Remove.removeBufferedItems=function(scroller,options){var newPredicate,indexesToRemove,predicate=options.predicate,indexes=options.indexes,options=options.increase;return predicate||indexes?(newPredicate=function(item){return predicate&&predicate(item)||!!indexes&&indexes.includes(item.$index)},indexesToRemove=scroller.buffer.items.reduce(function(acc,item){return newPredicate(item)?__spreadArray(__spreadArray([],__read(acc),!1),[item.$index],!1):acc},[]),Update.doUpdate(scroller,{predicate:function(item){return!newPredicate(item)},fixRight:options}),indexesToRemove):[]},Remove.removeVirtualItems=function(scroller,params){var indexes=params.indexes,params=params.increase;if(!indexes||!indexes.length)return!1;for(var index,buffer=scroller.buffer,viewport=scroller.viewport,fetch=scroller.state.fetch,finiteAbsMinIndex=buffer.finiteAbsMinIndex,firstIndex=buffer.firstIndex,finiteAbsMaxIndex=buffer.finiteAbsMaxIndex,lastIndex=buffer.lastIndex,toRemove