UNPKG

siegel

Version:

Web application development ecosystem

1 lines 1.31 kB
import{useState as e,useLayoutEffect as t}from"react";import o from"../../../common/get_uniq_id/index.js";import n from"../../../common/date/parse/index.js";import s from"../../../common/date/constants/index.js";import i from"../../intervals__worker.js";import r from"../../hooks/did_update.js";import m from"../_internals/component.js";let a=i(),d="-ui-clocks";function l(e,t,o,n){let s,[i,r]=t;if(n){let{date:t}=i,n=t.getMilliseconds();s=new Date(t.setMilliseconds(o?n-e:n+e))}else s=new Date;i.date=s,r({...i})}let c=m(d,{speedCoef:1,tickEveryMinute:!0,zeroing:!0},i=>{let{builder:m,initDate:c,zeroing:p,tickEveryMinute:f,speedCoef:u,backward:g}=i,_=e({date:c?new Date(c):new Date}),[v,j]=_,{date:M}=v;return r(()=>{v.date=c,j({...v})},[c]),t(()=>{let e,t,n,i,{date:r}=v;f?(e=s.minute,t=r.getSeconds()*s.second,g||(t*=-1)):e=s.second;let m=r.getMilliseconds(),c=g?m:e-m;t&&(c+=t);let p=c,j=1!=u,M=e;j&&(c/=u,M/=u);let k=j||g;function w({data:t}){k&&t!=n||l(e,_,g,k)}k&&(n=`${d}_tick_${o()}`,a.addEventListener("message",w));let x=setTimeout(()=>{l(p,_,g,k),k?a.postMessage({id:n,ms:M}):i=setInterval(()=>{w({data:""})},M)},c);return()=>{k?(a.postMessage({id:n}),a.removeEventListener("message",w)):clearInterval(i),clearTimeout(x)}},[c]),m?m(n(M,p)):M.toISOString()});export default c;export{d as componentID};