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 { + +}