import { combineLatest, Subject, map } from 'rxjs';
var price = 31.99;
/** Declare an Observable
* Data we can observe
* over time
*/
const qty$ = new Subject<number>();
/** Emit when the action occurs
* Hey Observable,
* here is a new value
*/
const onQuantityChanged = (quantity) => qty$.next(quantity);
/** React to emissions
* Whenever you
* change, I`II change
*/
const exPreice$ = qty$.pipe(map((q) => q * price));
const tax$ = exPreice$.pipe(map((t) => Math.round(t * 10.75) / 100));
const deliveryFree$ = exPreice$.pipe(map((q) => (q < 35 ? 5.99 : 0)));
const totalPrice$ = combineLatest([exPreice$, deliveryFree$, tax$]).pipe(
map(([p, d, t]) => p + d + t)
);
totalPrice$.subscribe(console.log);
onQuantityChanged(2); // 70.86