Source: util/Observer.es.js

/**
 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
 */

export default class Observer {
	constructor() {
		this.handlers = [];
	}

	subscribe(fn) {
		this.handlers.push(fn);
	}

	unsubscribe(fn) {
		this.handlers = this.handlers.filter((handler) => handler !== fn);
	}

	dispatch(value) {
		this.handlers.forEach((handler) => handler(value));
	}
}