UNPKG

atriusmaps-node-sdk

Version:

This project provides an API to Atrius Personal Wayfinder maps within a Node environment. See the README.md for more information

59 lines (56 loc) 1.21 kB
'use strict'; function fire(...args) { const observers = this._observers; if (!observers) { return void 0; } for (let x = 0; x < observers.length; x++) { try { observers[x].apply(this, args); } catch (err) { console.error(err); } } return this; } function observe(cb) { if (!this._observers) { this._observers = []; } this._observers.push(cb); return { detach: detach.bind(this, cb), ob: this }; } function detach(cb) { this._observers?.splice(this._observers.indexOf(cb), 1); } function filter(fn) { const filteredObserver = create(); this.observe(function(...args) { if (fn.apply(this, args)) { filteredObserver.fire(...args); } }); return filteredObserver; } function filterByName(eventName) { return filter.call(this, function(name) { return eventName === name; }); } function on(value, cb) { return filterByName.call(this, value).observe(cb); } const observable = { detach, filter, fire, observe, on }; function extend(to, from) { return Object.assign(to, from); } function create(ob) { if (ob) { return extend(ob, observable); } return Object.create(observable); } module.exports = create;