WME Utils - NavigationPoint

NavigationPoint class necessary for creating an entryExitPoint in code. Instantiate the class and pass the OL.Geometry.Point in the constructor then add the NavigationPoint object to the entryExitPoints array.

This script should not be not be installed directly. It is a library for other scripts to include with the meta directive // @require https://update.greasyfork.org/scripts/38421/1291464/WME%20Utils%20-%20NavigationPoint.js

// ==UserScript==
// @name            WME Utils - NavigationPoint
// @namespace       WazeDev
// @version         2023.12.05.01
// @description     NavigationPoint class necessary for creating an entryExitPoint in code.  Instantiate the class and pass the OL.Geometry.Point in the constructor then add the NavigationPoint object to the entryExitPoints array.
// @author          JustinS83
// @license         GNU GPLv3
// ==/UserScript==

class NavigationPoint
    {
        constructor(point){
            this._point = structuredClone(point);
            this._entry = true;
            this._exit = true;
            this._isPrimary = true;
            this._name = "";
        }

        with(){
            var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
            if(e.point == null)
                e.point = this.toJSON().point;
            return new this.constructor((this.toJSON().point, e.point));
        }

        getPoint(){
            return structuredClone(this._point);
        }

        getEntry(){
            return this._entry;
        }

        getExit(){
            return this._exit;
        }

        getName(){
            return this._name;
        }

        isPrimary(){
            return this._isPrimary;
        }

        toJSON(){
            return  {
                point: this._point,
                entry: this._entry,
                exit: this._exit,
                primary: this._isPrimary,
                name: this._name
            };
        }

        clone(){
            return this.with();
        }
    }