Socket
Socket
Sign inDemoInstall

@reatom/timer

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@reatom/timer - npm Package Compare versions

Comparing version 3.5.6 to 3.6.0

7

build/index.d.ts
import { Action, Atom, AtomMut } from '@reatom/core';
export interface TimerAtom extends AtomMut<number> {
/** (delay - remains) / delay */
/** contains the ms remaining to the end of the timer. */
export interface TimerAtom extends Atom<number> {
/** from 0 to 1, `(delay - remains) / delay` */
progressAtom: Atom<number>;

@@ -11,3 +12,3 @@ /** interval in ms */

/** start timer by passed interval. Seconds expected with default `delayMultiplier` */
startTimer: Action<[delay: number], Promise<void>>;
startTimer: Action<[delay: number, passed?: number], Promise<void>>;
/** stop timer manually */

@@ -14,0 +15,0 @@ stopTimer: Action<[], void>;

@@ -1,2 +0,2 @@

var core=require("@reatom/core"),primitives=require("@reatom/primitives"),utils=require("@reatom/utils"),hooks=require("@reatom/hooks");function _settle(pact,state,value){if(!pact.s){if(value instanceof _Pact){if(!value.s)return void(value.o=_settle.bind(null,pact,state));1&state&&(state=value.s),value=value.v}if(value&&value.then)return void value.then(_settle.bind(null,pact,state),_settle.bind(null,pact,2));pact.s=state,pact.v=value;const observer=pact.o;observer&&observer(pact)}}const _Pact=/*#__PURE__*/function(){function _Pact(){}return _Pact.prototype.then=function(onFulfilled,onRejected){const result=new _Pact,state=this.s;if(state){const callback=1&state?onFulfilled:onRejected;if(callback){try{_settle(result,1,callback(this.v))}catch(e){_settle(result,2,e)}return result}return this}return this.o=function(_this){try{const value=_this.v;1&_this.s?_settle(result,1,onFulfilled?onFulfilled(value):value):onRejected?_settle(result,1,onRejected(value)):_settle(result,2,value)}catch(e){_settle(result,2,e)}},result},_Pact}();function _isSettledPact(thenable){return thenable instanceof _Pact&&1&thenable.s}exports.reatomTimer=function(options){void 0===options&&(options={});const{name:name=core.__count("timerAtom"),interval:interval=1e3,delayMultiplier:delayMultiplier=1e3,progressPrecision:progressPrecision=2,resetProgress:resetProgress=!0}="string"==typeof options?{name:options}:options,timerAtom=core.atom(0,`${name}Atom`),progressAtom=core.atom(0,`${name}.progressAtom`),pauseAtom=core.atom(!1,`${name}.pauseAtom`),intervalAtom=core.atom(interval,`${name}.intervalAtom`).pipe(primitives.withReducers({setSeconds:(state,seconds)=>1e3*seconds})),_versionAtom=core.atom(0,`${name}._versionAtom`),startTimer=core.action((ctx,delay)=>{delay*=delayMultiplier,delay=Math.min(utils.MAX_SAFE_TIMEOUT,delay),core.throwReatomError(delay<ctx.get(intervalAtom),"delay less than interval");const version=_versionAtom(ctx,s=>s+1),start=Date.now();let target=delay+start,remains=delay,resolvePause=utils.noop,pauseFrom=0;timerAtom(ctx,remains),progressAtom(ctx,0),pauseAtom(ctx,!1);const cleanupPause=hooks.onUpdate(pauseAtom,(pauseCtx,pause)=>{if(hooks.getRootCause(ctx.cause)===hooks.getRootCause(pauseCtx.cause)){const now=Date.now();ctx.schedule(()=>{pause?pauseFrom=now:(target+=now-pauseFrom,resolvePause(),resolvePause=utils.noop,pauseFrom=0)})}});return ctx.schedule(function(){try{let _exit,_interrupt;return Promise.resolve(function(test,update,body){for(var stage;;){var shouldContinue=test();if(_isSettledPact(shouldContinue)&&(shouldContinue=shouldContinue.v),!shouldContinue)return result;if(shouldContinue.then){stage=0;break}var result=body();if(result&&result.then){if(!_isSettledPact(result)){stage=1;break}result=result.s}if(update){var updateValue=update();if(updateValue&&updateValue.then&&!_isSettledPact(updateValue)){stage=2;break}}}var pact=new _Pact,reject=_settle.bind(null,pact,2);return(0===stage?shouldContinue.then(_resumeAfterTest):1===stage?result.then(_resumeAfterBody):updateValue.then(_resumeAfterUpdate)).then(void 0,reject),pact;function _resumeAfterBody(value){result=value;do{if(update&&(updateValue=update())&&updateValue.then&&!_isSettledPact(updateValue))return void updateValue.then(_resumeAfterUpdate).then(void 0,reject);if(!(shouldContinue=test())||_isSettledPact(shouldContinue)&&!shouldContinue.v)return void _settle(pact,1,result);if(shouldContinue.then)return void shouldContinue.then(_resumeAfterTest).then(void 0,reject);_isSettledPact(result=body())&&(result=result.v)}while(!result||!result.then);result.then(_resumeAfterBody).then(void 0,reject)}function _resumeAfterTest(shouldContinue){shouldContinue?(result=body())&&result.then?result.then(_resumeAfterBody).then(void 0,reject):_resumeAfterBody(result):_settle(pact,1,result)}function _resumeAfterUpdate(){(shouldContinue=test())?shouldContinue.then?shouldContinue.then(_resumeAfterTest).then(void 0,reject):_resumeAfterTest(shouldContinue):_settle(pact,1,result)}}(function(){return!(_interrupt||_exit)&&1},void 0,function(){if(remains=target-Date.now(),remains<=0)return void(_interrupt=1);const interval=ctx.get(intervalAtom),tickDelay=remains<interval?remains:remains%interval||interval;return Promise.resolve(ctx.schedule(()=>utils.sleep(tickDelay))).then(function(){function _temp2(){version===ctx.get(_versionAtom)?ctx.get(()=>{remains=timerAtom(ctx,Math.max(0,target-Date.now()));const interval=ctx.get(intervalAtom),steps=Math.ceil(delay/interval),stepsRemains=Math.ceil(remains/interval);progressAtom(ctx,+(1-stepsRemains/steps).toFixed(progressPrecision))}):_exit=1}const _temp=function(){if(pauseFrom)return Promise.resolve(new Promise(r=>resolvePause=r)).then(function(){})}();return _temp&&_temp.then?_temp.then(_temp2):_temp2()})}))}catch(e){return Promise.reject(e)}}).finally(()=>{cleanupPause(),version===ctx.get(_versionAtom)&&endTimer(ctx)})},`${name}.startTimer`),stopTimer=core.action(ctx=>{_versionAtom(ctx,s=>s+1),endTimer(ctx),resetProgress&&progressAtom(ctx,0)},`${name}.stopTimer`),endTimer=core.action(ctx=>{timerAtom(ctx,0)},`${name}.endTimer`),pause=core.action(ctx=>pauseAtom(ctx,s=>!s),`${name}.pause`);return Object.assign(timerAtom,{progressAtom:progressAtom,endTimer:endTimer,intervalAtom:intervalAtom,startTimer:startTimer,stopTimer:stopTimer,pauseAtom:pauseAtom,pause:pause})};
var core=require("@reatom/core"),primitives=require("@reatom/primitives"),utils=require("@reatom/utils"),hooks=require("@reatom/hooks");function _settle(pact,state,value){if(!pact.s){if(value instanceof _Pact){if(!value.s)return void(value.o=_settle.bind(null,pact,state));1&state&&(state=value.s),value=value.v}if(value&&value.then)return void value.then(_settle.bind(null,pact,state),_settle.bind(null,pact,2));pact.s=state,pact.v=value;const observer=pact.o;observer&&observer(pact)}}const _Pact=/*#__PURE__*/function(){function _Pact(){}return _Pact.prototype.then=function(onFulfilled,onRejected){const result=new _Pact,state=this.s;if(state){const callback=1&state?onFulfilled:onRejected;if(callback){try{_settle(result,1,callback(this.v))}catch(e){_settle(result,2,e)}return result}return this}return this.o=function(_this){try{const value=_this.v;1&_this.s?_settle(result,1,onFulfilled?onFulfilled(value):value):onRejected?_settle(result,1,onRejected(value)):_settle(result,2,value)}catch(e){_settle(result,2,e)}},result},_Pact}();function _isSettledPact(thenable){return thenable instanceof _Pact&&1&thenable.s}exports.reatomTimer=(options={})=>{const{name:name=core.__count("timerAtom"),interval:interval=1e3,delayMultiplier:delayMultiplier=1e3,progressPrecision:progressPrecision=2,resetProgress:resetProgress=!0}="string"==typeof options?{name:options}:options,timerAtom=core.atom(0,`${name}Atom`),progressAtom=core.atom(0,`${name}.progressAtom`),pauseAtom=core.atom(!1,`${name}.pauseAtom`),intervalAtom=core.atom(interval,`${name}.intervalAtom`).pipe(primitives.withReducers({setSeconds:(state,seconds)=>1e3*seconds})),_versionAtom=core.atom(0,`${name}._versionAtom`),startTimer=core.action((ctx,delay,passed=0)=>{delay*=delayMultiplier,delay=Math.min(utils.MAX_SAFE_TIMEOUT,delay),core.throwReatomError(delay<ctx.get(intervalAtom),"delay less than interval"),core.throwReatomError(delay<passed,"passed more than delay");const version=_versionAtom(ctx,s=>s+1),start=Date.now();let target=delay+start-passed,remains=delay-passed,resolvePause=utils.noop,pauseFrom=0;timerAtom(ctx,remains),progressAtom(ctx,passed/delay),pauseAtom(ctx,!1);const cleanupPause=hooks.onUpdate(pauseAtom,(pauseCtx,pause)=>{if(hooks.getRootCause(ctx.cause)===hooks.getRootCause(pauseCtx.cause)){const now=Date.now();ctx.schedule(()=>{pause?pauseFrom=now:(target+=now-pauseFrom,resolvePause(),resolvePause=utils.noop,pauseFrom=0)})}});return ctx.schedule(function(){try{let _exit,_interrupt;return Promise.resolve(function(test,update,body){for(var stage;;){var shouldContinue=test();if(_isSettledPact(shouldContinue)&&(shouldContinue=shouldContinue.v),!shouldContinue)return result;if(shouldContinue.then){stage=0;break}var result=body();if(result&&result.then){if(!_isSettledPact(result)){stage=1;break}result=result.s}if(update){var updateValue=update();if(updateValue&&updateValue.then&&!_isSettledPact(updateValue)){stage=2;break}}}var pact=new _Pact,reject=_settle.bind(null,pact,2);return(0===stage?shouldContinue.then(_resumeAfterTest):1===stage?result.then(_resumeAfterBody):updateValue.then(_resumeAfterUpdate)).then(void 0,reject),pact;function _resumeAfterBody(value){result=value;do{if(update&&(updateValue=update())&&updateValue.then&&!_isSettledPact(updateValue))return void updateValue.then(_resumeAfterUpdate).then(void 0,reject);if(!(shouldContinue=test())||_isSettledPact(shouldContinue)&&!shouldContinue.v)return void _settle(pact,1,result);if(shouldContinue.then)return void shouldContinue.then(_resumeAfterTest).then(void 0,reject);_isSettledPact(result=body())&&(result=result.v)}while(!result||!result.then);result.then(_resumeAfterBody).then(void 0,reject)}function _resumeAfterTest(shouldContinue){shouldContinue?(result=body())&&result.then?result.then(_resumeAfterBody).then(void 0,reject):_resumeAfterBody(result):_settle(pact,1,result)}function _resumeAfterUpdate(){(shouldContinue=test())?shouldContinue.then?shouldContinue.then(_resumeAfterTest).then(void 0,reject):_resumeAfterTest(shouldContinue):_settle(pact,1,result)}}(function(){return!(_interrupt||_exit)&&1},void 0,function(){if(remains=target-Date.now(),remains<=0)return void(_interrupt=1);const interval=ctx.get(intervalAtom),tickDelay=remains<interval?remains:remains%interval||interval;return Promise.resolve(ctx.schedule(()=>utils.sleep(tickDelay))).then(function(){function _temp2(){version===ctx.get(_versionAtom)?ctx.get(()=>{remains=timerAtom(ctx,Math.max(0,target-Date.now()));const interval=ctx.get(intervalAtom),steps=Math.ceil(delay/interval),stepsRemains=Math.ceil(remains/interval);progressAtom(ctx,+(1-stepsRemains/steps).toFixed(progressPrecision))}):_exit=1}const _temp=function(){if(pauseFrom)return Promise.resolve(new Promise(r=>resolvePause=r)).then(function(){})}();return _temp&&_temp.then?_temp.then(_temp2):_temp2()})}))}catch(e){return Promise.reject(e)}}).finally(()=>{cleanupPause(),version===ctx.get(_versionAtom)&&endTimer(ctx)})},`${name}.startTimer`),stopTimer=core.action(ctx=>{_versionAtom(ctx,s=>s+1),endTimer(ctx),resetProgress&&progressAtom(ctx,0)},`${name}.stopTimer`),endTimer=core.action(ctx=>{timerAtom(ctx,0)},`${name}.endTimer`),pause=core.action(ctx=>pauseAtom(ctx,s=>!s),`${name}.pause`);return Object.assign({},timerAtom,{progressAtom:progressAtom,endTimer:endTimer,intervalAtom:intervalAtom,startTimer:startTimer,stopTimer:stopTimer,pauseAtom:pauseAtom,pause:pause})};
//# sourceMappingURL=index.js.map

@@ -1,2 +0,2 @@

import{__count,atom,action,throwReatomError}from"@reatom/core";import{withReducers}from"@reatom/primitives";import{noop,sleep,MAX_SAFE_TIMEOUT}from"@reatom/utils";import{onUpdate,getRootCause}from"@reatom/hooks";function _settle(pact,state,value){if(!pact.s){if(value instanceof _Pact){if(!value.s)return void(value.o=_settle.bind(null,pact,state));1&state&&(state=value.s),value=value.v}if(value&&value.then)return void value.then(_settle.bind(null,pact,state),_settle.bind(null,pact,2));pact.s=state,pact.v=value;const observer=pact.o;observer&&observer(pact)}}const _Pact=/*#__PURE__*/function(){function _Pact(){}return _Pact.prototype.then=function(onFulfilled,onRejected){const result=new _Pact,state=this.s;if(state){const callback=1&state?onFulfilled:onRejected;if(callback){try{_settle(result,1,callback(this.v))}catch(e){_settle(result,2,e)}return result}return this}return this.o=function(_this){try{const value=_this.v;1&_this.s?_settle(result,1,onFulfilled?onFulfilled(value):value):onRejected?_settle(result,1,onRejected(value)):_settle(result,2,value)}catch(e){_settle(result,2,e)}},result},_Pact}();function _isSettledPact(thenable){return thenable instanceof _Pact&&1&thenable.s}const reatomTimer=function(options){void 0===options&&(options={});const{name:name=__count("timerAtom"),interval:interval=1e3,delayMultiplier:delayMultiplier=1e3,progressPrecision:progressPrecision=2,resetProgress:resetProgress=!0}="string"==typeof options?{name:options}:options,timerAtom=atom(0,`${name}Atom`),progressAtom=atom(0,`${name}.progressAtom`),pauseAtom=atom(!1,`${name}.pauseAtom`),intervalAtom=atom(interval,`${name}.intervalAtom`).pipe(withReducers({setSeconds:(state,seconds)=>1e3*seconds})),_versionAtom=atom(0,`${name}._versionAtom`),startTimer=action((ctx,delay)=>{delay*=delayMultiplier,delay=Math.min(MAX_SAFE_TIMEOUT,delay),throwReatomError(delay<ctx.get(intervalAtom),"delay less than interval");const version=_versionAtom(ctx,s=>s+1),start=Date.now();let target=delay+start,remains=delay,resolvePause=noop,pauseFrom=0;timerAtom(ctx,remains),progressAtom(ctx,0),pauseAtom(ctx,!1);const cleanupPause=onUpdate(pauseAtom,(pauseCtx,pause)=>{if(getRootCause(ctx.cause)===getRootCause(pauseCtx.cause)){const now=Date.now();ctx.schedule(()=>{pause?pauseFrom=now:(target+=now-pauseFrom,resolvePause(),resolvePause=noop,pauseFrom=0)})}});return ctx.schedule(function(){try{let _exit,_interrupt;return Promise.resolve(function(test,update,body){for(var stage;;){var shouldContinue=test();if(_isSettledPact(shouldContinue)&&(shouldContinue=shouldContinue.v),!shouldContinue)return result;if(shouldContinue.then){stage=0;break}var result=body();if(result&&result.then){if(!_isSettledPact(result)){stage=1;break}result=result.s}if(update){var updateValue=update();if(updateValue&&updateValue.then&&!_isSettledPact(updateValue)){stage=2;break}}}var pact=new _Pact,reject=_settle.bind(null,pact,2);return(0===stage?shouldContinue.then(_resumeAfterTest):1===stage?result.then(_resumeAfterBody):updateValue.then(_resumeAfterUpdate)).then(void 0,reject),pact;function _resumeAfterBody(value){result=value;do{if(update&&(updateValue=update())&&updateValue.then&&!_isSettledPact(updateValue))return void updateValue.then(_resumeAfterUpdate).then(void 0,reject);if(!(shouldContinue=test())||_isSettledPact(shouldContinue)&&!shouldContinue.v)return void _settle(pact,1,result);if(shouldContinue.then)return void shouldContinue.then(_resumeAfterTest).then(void 0,reject);_isSettledPact(result=body())&&(result=result.v)}while(!result||!result.then);result.then(_resumeAfterBody).then(void 0,reject)}function _resumeAfterTest(shouldContinue){shouldContinue?(result=body())&&result.then?result.then(_resumeAfterBody).then(void 0,reject):_resumeAfterBody(result):_settle(pact,1,result)}function _resumeAfterUpdate(){(shouldContinue=test())?shouldContinue.then?shouldContinue.then(_resumeAfterTest).then(void 0,reject):_resumeAfterTest(shouldContinue):_settle(pact,1,result)}}(function(){return!(_interrupt||_exit)&&1},void 0,function(){if(remains=target-Date.now(),remains<=0)return void(_interrupt=1);const interval=ctx.get(intervalAtom),tickDelay=remains<interval?remains:remains%interval||interval;return Promise.resolve(ctx.schedule(()=>sleep(tickDelay))).then(function(){function _temp2(){version===ctx.get(_versionAtom)?ctx.get(()=>{remains=timerAtom(ctx,Math.max(0,target-Date.now()));const interval=ctx.get(intervalAtom),steps=Math.ceil(delay/interval),stepsRemains=Math.ceil(remains/interval);progressAtom(ctx,+(1-stepsRemains/steps).toFixed(progressPrecision))}):_exit=1}const _temp=function(){if(pauseFrom)return Promise.resolve(new Promise(r=>resolvePause=r)).then(function(){})}();return _temp&&_temp.then?_temp.then(_temp2):_temp2()})}))}catch(e){return Promise.reject(e)}}).finally(()=>{cleanupPause(),version===ctx.get(_versionAtom)&&endTimer(ctx)})},`${name}.startTimer`),stopTimer=action(ctx=>{_versionAtom(ctx,s=>s+1),endTimer(ctx),resetProgress&&progressAtom(ctx,0)},`${name}.stopTimer`),endTimer=action(ctx=>{timerAtom(ctx,0)},`${name}.endTimer`),pause=action(ctx=>pauseAtom(ctx,s=>!s),`${name}.pause`);return Object.assign(timerAtom,{progressAtom:progressAtom,endTimer:endTimer,intervalAtom:intervalAtom,startTimer:startTimer,stopTimer:stopTimer,pauseAtom:pauseAtom,pause:pause})};export{reatomTimer};
import{__count,atom,action,throwReatomError}from"@reatom/core";import{withReducers}from"@reatom/primitives";import{noop,sleep,MAX_SAFE_TIMEOUT}from"@reatom/utils";import{onUpdate,getRootCause}from"@reatom/hooks";function _settle(pact,state,value){if(!pact.s){if(value instanceof _Pact){if(!value.s)return void(value.o=_settle.bind(null,pact,state));1&state&&(state=value.s),value=value.v}if(value&&value.then)return void value.then(_settle.bind(null,pact,state),_settle.bind(null,pact,2));pact.s=state,pact.v=value;const observer=pact.o;observer&&observer(pact)}}const _Pact=/*#__PURE__*/function(){function _Pact(){}return _Pact.prototype.then=function(onFulfilled,onRejected){const result=new _Pact,state=this.s;if(state){const callback=1&state?onFulfilled:onRejected;if(callback){try{_settle(result,1,callback(this.v))}catch(e){_settle(result,2,e)}return result}return this}return this.o=function(_this){try{const value=_this.v;1&_this.s?_settle(result,1,onFulfilled?onFulfilled(value):value):onRejected?_settle(result,1,onRejected(value)):_settle(result,2,value)}catch(e){_settle(result,2,e)}},result},_Pact}();function _isSettledPact(thenable){return thenable instanceof _Pact&&1&thenable.s}const reatomTimer=(options={})=>{const{name:name=__count("timerAtom"),interval:interval=1e3,delayMultiplier:delayMultiplier=1e3,progressPrecision:progressPrecision=2,resetProgress:resetProgress=!0}="string"==typeof options?{name:options}:options,timerAtom=atom(0,`${name}Atom`),progressAtom=atom(0,`${name}.progressAtom`),pauseAtom=atom(!1,`${name}.pauseAtom`),intervalAtom=atom(interval,`${name}.intervalAtom`).pipe(withReducers({setSeconds:(state,seconds)=>1e3*seconds})),_versionAtom=atom(0,`${name}._versionAtom`),startTimer=action((ctx,delay,passed=0)=>{delay*=delayMultiplier,delay=Math.min(MAX_SAFE_TIMEOUT,delay),throwReatomError(delay<ctx.get(intervalAtom),"delay less than interval"),throwReatomError(delay<passed,"passed more than delay");const version=_versionAtom(ctx,s=>s+1),start=Date.now();let target=delay+start-passed,remains=delay-passed,resolvePause=noop,pauseFrom=0;timerAtom(ctx,remains),progressAtom(ctx,passed/delay),pauseAtom(ctx,!1);const cleanupPause=onUpdate(pauseAtom,(pauseCtx,pause)=>{if(getRootCause(ctx.cause)===getRootCause(pauseCtx.cause)){const now=Date.now();ctx.schedule(()=>{pause?pauseFrom=now:(target+=now-pauseFrom,resolvePause(),resolvePause=noop,pauseFrom=0)})}});return ctx.schedule(function(){try{let _exit,_interrupt;return Promise.resolve(function(test,update,body){for(var stage;;){var shouldContinue=test();if(_isSettledPact(shouldContinue)&&(shouldContinue=shouldContinue.v),!shouldContinue)return result;if(shouldContinue.then){stage=0;break}var result=body();if(result&&result.then){if(!_isSettledPact(result)){stage=1;break}result=result.s}if(update){var updateValue=update();if(updateValue&&updateValue.then&&!_isSettledPact(updateValue)){stage=2;break}}}var pact=new _Pact,reject=_settle.bind(null,pact,2);return(0===stage?shouldContinue.then(_resumeAfterTest):1===stage?result.then(_resumeAfterBody):updateValue.then(_resumeAfterUpdate)).then(void 0,reject),pact;function _resumeAfterBody(value){result=value;do{if(update&&(updateValue=update())&&updateValue.then&&!_isSettledPact(updateValue))return void updateValue.then(_resumeAfterUpdate).then(void 0,reject);if(!(shouldContinue=test())||_isSettledPact(shouldContinue)&&!shouldContinue.v)return void _settle(pact,1,result);if(shouldContinue.then)return void shouldContinue.then(_resumeAfterTest).then(void 0,reject);_isSettledPact(result=body())&&(result=result.v)}while(!result||!result.then);result.then(_resumeAfterBody).then(void 0,reject)}function _resumeAfterTest(shouldContinue){shouldContinue?(result=body())&&result.then?result.then(_resumeAfterBody).then(void 0,reject):_resumeAfterBody(result):_settle(pact,1,result)}function _resumeAfterUpdate(){(shouldContinue=test())?shouldContinue.then?shouldContinue.then(_resumeAfterTest).then(void 0,reject):_resumeAfterTest(shouldContinue):_settle(pact,1,result)}}(function(){return!(_interrupt||_exit)&&1},void 0,function(){if(remains=target-Date.now(),remains<=0)return void(_interrupt=1);const interval=ctx.get(intervalAtom),tickDelay=remains<interval?remains:remains%interval||interval;return Promise.resolve(ctx.schedule(()=>sleep(tickDelay))).then(function(){function _temp2(){version===ctx.get(_versionAtom)?ctx.get(()=>{remains=timerAtom(ctx,Math.max(0,target-Date.now()));const interval=ctx.get(intervalAtom),steps=Math.ceil(delay/interval),stepsRemains=Math.ceil(remains/interval);progressAtom(ctx,+(1-stepsRemains/steps).toFixed(progressPrecision))}):_exit=1}const _temp=function(){if(pauseFrom)return Promise.resolve(new Promise(r=>resolvePause=r)).then(function(){})}();return _temp&&_temp.then?_temp.then(_temp2):_temp2()})}))}catch(e){return Promise.reject(e)}}).finally(()=>{cleanupPause(),version===ctx.get(_versionAtom)&&endTimer(ctx)})},`${name}.startTimer`),stopTimer=action(ctx=>{_versionAtom(ctx,s=>s+1),endTimer(ctx),resetProgress&&progressAtom(ctx,0)},`${name}.stopTimer`),endTimer=action(ctx=>{timerAtom(ctx,0)},`${name}.endTimer`),pause=action(ctx=>pauseAtom(ctx,s=>!s),`${name}.pause`);return Object.assign({},timerAtom,{progressAtom:progressAtom,endTimer:endTimer,intervalAtom:intervalAtom,startTimer:startTimer,stopTimer:stopTimer,pauseAtom:pauseAtom,pause:pause})};export{reatomTimer};
//# sourceMappingURL=index.module.js.map
{
"name": "@reatom/timer",
"version": "3.5.6",
"version": "3.6.0",
"private": false,

@@ -5,0 +5,0 @@ "sideEffects": false,

@@ -1,2 +0,2 @@

Simple timer model to manage some countdown.
Timer model to manage some countdown. Useful for [classic pomodoro](https://github.com/artalar/reatom/tree/v3/examples/react-pomodoro) or any time-progress states, like [notifications](https://github.com/artalar/reatom/tree/v3/examples/react-notifications).

@@ -16,21 +16,15 @@ ```ts

Example: https://codesandbox.io/s/reatom-react-pomodoro-f219zu?file=/src/App.tsx
The timer itself contains the ms remaining to the end of the timer (`0` before start). Here is the list of available states and methods:
```ts
export interface TimerAtom extends AtomMut<number> {
/** (delay - remains) / delay */
progressAtom: Atom<number>
/** interval in ms */
intervalAtom: AtomMut<number>
/** start timer by passed interval */
startTimer: Action<[delay: number], Promise<void>>
/** stop timer manually */
stopTimer: Action<[], void>
/** allow to pause timer */
pauseAtom: AtomMut<boolean>
/** switch pause state */
pause: Action<[], boolean>
/** track end of timer. Do not call manually! */
endTimer: Action<[], void>
}
```
- **progressAtom** (`Atom<number>`) - from 0 to 1, `(delay - remains) / delay`
- **intervalAtom** (`AtomMut<number>`) - interval of ticks in ms
- **startTimer** (`Action<[delay: number, passed?: number], Promise<void>>`) - start timer with the delay and optional start point
- **stopTimer** (`Action<[], void>`) - stop timer manually
- **pauseAtom** (`AtomMut<boolean>`) - allow to pause timer
- **pause** (`Action<[], boolean>`) - switch pause state
- **endTimer** (`Action<[], void>`) - track end of timer. Do not call manually!
## Examples
- [classic pomodoro](https://github.com/artalar/reatom/tree/v3/examples/react-pomodoro)
- [notifications progress](https://github.com/artalar/reatom/tree/v3/examples/react-notifications)

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc