@mrpelz/observable 3.0.2 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/timer.d.ts CHANGED
@@ -1,11 +1,11 @@
1
- import { AnyReadOnlyObservable, ReadOnlyProxyObservable } from './main.js';
1
+ import { AnyReadOnlyObservable, Observable, ReadOnlyProxyObservable } from './main.js';
2
2
  import { BooleanState, NullState } from './state.js';
3
3
  export declare class Timer extends NullState {
4
- private readonly _time;
5
4
  private _timeout;
6
5
  private readonly _triggerTime;
7
6
  readonly isEnabled: BooleanState;
8
7
  readonly runoutTime: ReadOnlyProxyObservable<number | null>;
8
+ readonly time: Observable<number>;
9
9
  constructor(time?: number, enableFromStart?: boolean);
10
10
  get isActive(): AnyReadOnlyObservable<boolean>;
11
11
  get triggerTime(): AnyReadOnlyObservable<number | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"timer.d.ts","sourceRoot":"","sources":["../src/timer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAGrB,uBAAuB,EACxB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAErD,qBAAa,KAAM,SAAQ,SAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuC;IAEpE,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,uBAAuB,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;gBAEhD,IAAI,SAAI,EAAE,eAAe,UAAO;IAoB5C,IAAI,QAAQ,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAE7C;IAED,IAAI,WAAW,IAAI,qBAAqB,CAAC,MAAM,GAAG,IAAI,CAAC,CAEtD;IAED,OAAO,CAAC,WAAW;IAKnB,OAAO,IAAI,IAAI;IAIf,MAAM,IAAI,IAAI;IAId,KAAK,CAAC,OAAO,UAAO,GAAG,IAAI;IAU3B,IAAI,IAAI,IAAI;CAOb"}
1
+ {"version":3,"file":"timer.d.ts","sourceRoot":"","sources":["../src/timer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,UAAU,EAEV,uBAAuB,EACxB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAErD,qBAAa,KAAM,SAAQ,SAAS;IAClC,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuC;IAEpE,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,uBAAuB,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5D,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;gBAEtB,IAAI,SAAI,EAAE,eAAe,UAAO;IAyB5C,IAAI,QAAQ,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAE7C;IAED,IAAI,WAAW,IAAI,qBAAqB,CAAC,MAAM,GAAG,IAAI,CAAC,CAEtD;IAED,OAAO,CAAC,WAAW;IAKnB,OAAO,IAAI,IAAI;IAIf,MAAM,IAAI,IAAI;IAId,KAAK,CAAC,OAAO,UAAO,GAAG,IAAI;IAW3B,IAAI,IAAI,IAAI;CAOb"}
package/dist/timer.js CHANGED
@@ -1,23 +1,29 @@
1
1
  import { Observable, ReadOnlyObservable, ReadOnlyProxyObservable, } from './main.js';
2
2
  import { BooleanState, NullState } from './state.js';
3
3
  export class Timer extends NullState {
4
- _time;
5
4
  _timeout;
6
5
  _triggerTime = new Observable(null);
7
6
  isEnabled;
8
7
  runoutTime;
8
+ time;
9
9
  constructor(time = 0, enableFromStart = true) {
10
10
  super();
11
- this._time = time;
12
11
  this.isEnabled = new BooleanState(enableFromStart, (enabled) => {
13
12
  if (enabled)
14
13
  return;
15
14
  this.stop();
16
15
  });
16
+ this.time = new Observable(time, (_, changed) => {
17
+ if (!changed)
18
+ return;
19
+ if (!this.isActive.value)
20
+ return;
21
+ this.start();
22
+ });
17
23
  this.runoutTime = new ReadOnlyProxyObservable(this._triggerTime, (value) => {
18
24
  if (value === null)
19
25
  return null;
20
- return value + this._time;
26
+ return value + this.time.value;
21
27
  });
22
28
  }
23
29
  get isActive() {
@@ -37,12 +43,14 @@ export class Timer extends NullState {
37
43
  this.isEnabled.value = true;
38
44
  }
39
45
  start(restart = true) {
46
+ if (!this.time.value)
47
+ return;
40
48
  if (!this.isEnabled.value)
41
49
  return;
42
50
  if (this._timeout && !restart)
43
51
  return;
44
52
  this.stop();
45
- this._timeout = setTimeout(() => this._handleFire(), this._time);
53
+ this._timeout = setTimeout(() => this._handleFire(), this.time.value);
46
54
  this._triggerTime.value = Date.now();
47
55
  }
48
56
  stop() {
package/dist/timer.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"timer.js","sourceRoot":"","sources":["../src/timer.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EACV,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,OAAO,KAAM,SAAQ,SAAS;IACjB,KAAK,CAAS;IACvB,QAAQ,CAAwB;IACvB,YAAY,GAAG,IAAI,UAAU,CAAgB,IAAI,CAAC,CAAC;IAE3D,SAAS,CAAe;IACxB,UAAU,CAAyC;IAE5D,YAAY,IAAI,GAAG,CAAC,EAAE,eAAe,GAAG,IAAI;QAC1C,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,SAAS,GAAG,IAAI,YAAY,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE;YAC7D,IAAI,OAAO;gBAAE,OAAO;YAEpB,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,IAAI,uBAAuB,CAC3C,IAAI,CAAC,YAAY,EACjB,CAAC,KAAK,EAAE,EAAE;YACR,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YAChC,OAAO,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5B,CAAC,CACF,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,uBAAuB,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACnD,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;IAC/B,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,OAAO,GAAG,IAAI;QAClB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK;YAAE,OAAO;QAClC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO;YAAE,OAAO;QAEtC,IAAI,CAAC,IAAI,EAAE,CAAC;QAEZ,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvC,CAAC;IAED,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE3B,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC;IACjC,CAAC;CACF"}
1
+ {"version":3,"file":"timer.js","sourceRoot":"","sources":["../src/timer.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EACV,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,OAAO,KAAM,SAAQ,SAAS;IAC1B,QAAQ,CAAwB;IACvB,YAAY,GAAG,IAAI,UAAU,CAAgB,IAAI,CAAC,CAAC;IAE3D,SAAS,CAAe;IACxB,UAAU,CAAyC;IACnD,IAAI,CAAqB;IAElC,YAAY,IAAI,GAAG,CAAC,EAAE,eAAe,GAAG,IAAI;QAC1C,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,SAAS,GAAG,IAAI,YAAY,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE;YAC7D,IAAI,OAAO;gBAAE,OAAO;YAEpB,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE;YAC9C,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK;gBAAE,OAAO;YAEjC,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,IAAI,uBAAuB,CAC3C,IAAI,CAAC,YAAY,EACjB,CAAC,KAAK,EAAE,EAAE;YACR,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YAChC,OAAO,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QACjC,CAAC,CACF,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,uBAAuB,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACnD,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;IAC/B,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,OAAO,GAAG,IAAI;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QAC7B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK;YAAE,OAAO;QAClC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO;YAAE,OAAO;QAEtC,IAAI,CAAC,IAAI,EAAE,CAAC;QAEZ,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtE,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvC,CAAC;IAED,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE3B,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC;IACjC,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mrpelz/observable",
3
- "version": "3.0.2",
3
+ "version": "3.1.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/mrpelz/utils.git",