From 60a2022f663ca5dbd49f821300ddbb935bd3ef85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 24 Jan 2023 13:01:40 +0100 Subject: [PATCH] new subjects --- .../libs/observable-api/basic-state.ts | 19 +++++++++++++++++++ .../libs/observable-api/number-state.ts | 11 +++++++++++ .../libs/observable-api/string-state.ts | 11 +++++++++++ 3 files changed, 41 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/libs/observable-api/basic-state.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/observable-api/number-state.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/observable-api/string-state.ts diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/basic-state.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/basic-state.ts new file mode 100644 index 0000000000..da449ed38c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/basic-state.ts @@ -0,0 +1,19 @@ +import { BehaviorSubject } from "rxjs"; + +/** + * @export + * @class BasicState + * @extends {BehaviorSubject} + * @description - A RxJS BehaviorSubject this Subject ensures the data is unique, not updating any Observes unless there is an actual change of the value. + */ +export class BasicState extends BehaviorSubject { + constructor(initialData: T) { + super(initialData); + } + + next(newData: T): void { + if(newData !== this.getValue()) { + super.next(newData); + } + } +} diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/number-state.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/number-state.ts new file mode 100644 index 0000000000..8a2b775351 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/number-state.ts @@ -0,0 +1,11 @@ +import { BasicState } from "./basic-state"; + +/** + * @export + * @class NumberState + * @extends {BehaviorSubject} + * @description - A RxJS BehaviorSubject this Subject ensures the data is unique, not updating any Observes unless there is an actual change of the value. + */ +export class NumberState extends BasicState { + +} diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/string-state.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/string-state.ts new file mode 100644 index 0000000000..4ec129fe84 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/string-state.ts @@ -0,0 +1,11 @@ +import { BasicState } from "./basic-state"; + +/** + * @export + * @class StringState + * @extends {BehaviorSubject} + * @description - A RxJS BehaviorSubject this Subject ensures the data is unique, not updating any Observes unless there is an actual change of the value. + */ +export class StringState extends BasicState { + +}