WME Clear Geometry

Temporary script to hook "1" for clearing geometry until Toolbox is fixed

// ==UserScript==
// @name         WME Clear Geometry
// @namespace    https://greasyfork.org/users/30701-justins83-waze
// @version      0.8
// @description  Temporary script to hook "1" for clearing geometry until Toolbox is fixed
// @include      https://www.waze.com/editor*
// @include      https://www.waze.com/*/editor*
// @include      https://beta.waze.com/*
// @exclude      https://www.waze.com/user/editor*
// @author       JustinS83
// @grant        none
// @require      https://greasyfork.org/scripts/24851-wazewrap/code/WazeWrap.js
// @license      GPLv3
// ==/UserScript==

/* global W */
/* global WazeWrap */

(function() {

var UpdateSegmentGeometry;

    function bootstrap(tries = 1) {

        if (W &&
            W.map &&
            W.model &&
            require &&
            WazeWrap.Interface &&
            $) {
            init();
        } else if (tries < 1000) {
            setTimeout(function () {bootstrap(tries++);}, 200);
        }
    }

    bootstrap();

    function init(){
        UpdateSegmentGeometry = require('Waze/Action/UpdateSegmentGeometry');

        new WazeWrap.Interface.Shortcut('clearGeomShortcut', 'Clears road geometry', 'editing', 'Editing', '1', ClearGeometry, this).add();

    }

    function ClearGeometry(){
        if (W.selectionManager.getSelectedFeatures().length !== 0) {
            for (i = 0; i < W.selectionManager.getSelectedFeatures().length; i++) {
                var seg = W.selectionManager.getSelectedFeatures()[i].model;
                if (seg.type == "segment") {
                    var newGeo = seg.geometry.clone();
                    newGeo.components.splice(1, newGeo.components.length - 2);
                    newGeo.components[0].calculateBounds();
                    newGeo.components[1].calculateBounds();
                    W.model.actionManager.add(new UpdateSegmentGeometry(seg, seg.geometry, newGeo));
                }
            }
        }
    }
})();