WME-Base

Base class for Greasy Fork plugins for Waze Map Editor

Este script não deve ser instalado diretamente. Este script é uma biblioteca de outros scripts para incluir com o diretório meta // @require https://update.greatest.deepsurf.us/scripts/450221/1804989/WME-Base.js

Você precisará instalar uma extensão como Tampermonkey, Greasemonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Userscripts para instalar este script.

Você precisará instalar uma extensão como o Tampermonkey para instalar este script.

Você precisará instalar um gerenciador de scripts de usuário para instalar este script.

(Eu já tenho um gerenciador de scripts de usuário, me deixe instalá-lo!)

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

(Eu já possuo um gerenciador de estilos de usuário, me deixar fazer a instalação!)

Autor
Anton Shevchuk
Versão
0.6.1
Criado
26/08/2022
Atualizado
21/04/2026
Tamanho
10,1 KB
Licença
MIT

WME Base

Base class for Greasy Fork plugins for Waze Map Editor.

What is it?

WME Base class is the parent class for your scripts, it works with events from the WME Bootstrap library.

Requirements

⚠️ WME Bootstrap Library - is required for correct working of this class

Methods

Core & Utility

Methods for initialization, logging, and lifecycle management.

Method Returns Description
constructor(name, settings?) void Initializes plugin instance, binds listeners, and attaches to WME SDK.
log(message, ...args) void Logs a formatted message with the plugin prefix.
group(message, ...args) void Starts a collapsed console log group.
groupEnd() void Ends the current console group.
onBeforeUnload(event) void Browser lifecycle hook; useful for saving settings.

Event Handlers

Override these methods to handle user interactions. All handlers return void.

Method Description
onNone(event) Triggered when the selection is cleared.
onSegment(event, element, model) Triggered when a single segment is selected.
onSegments(event, element, models) Triggered when multiple segments are selected.
onNode(event, element, model) Triggered when a single node is selected.
onNodes(event, element, models) Triggered when multiple nodes are selected.
onVenue(event, element, model) Triggered when a single venue (POI) is selected.
onVenues(event, element, models) Triggered when multiple venues are selected.
onPlace(event, element, model) Triggered when a place is selected.
onPoint(event, element, model) Triggered when a point POI is selected.
onResidential(event, element, model) Triggered when a residential POI is selected.

Data Helpers

Helper methods to retrieve WME objects.

Method Returns Description
getAllSegments(except?) Segment[] All segments (excluding specified road types).
getSelectedSegment() `Segment \ null`
getSelectedSegments() Segment[] All selected segments.
getAllNodes() Node[] All available nodes.
getSelectedNode() `Node \ null`
getSelectedNodes() Node[] All selected nodes.
getAllVenues(except?) Venue[] All venues (excluding specified categories).
getSelectedVenue() `Venue \ null`
getSelectedVenues() Venue[] All selected venues.
getSelectedVenueAddress() `Address \ null`

Example

class MySuperScript extends WMEBase {
  /**
   * Example of the constructor
   * @param {String} name
   * @param {Settings} settings
   */
  constructor (name, settings = null) {
    super(name, settings)
  }

  /**
   * Handler for `none.wme` event
   * @param {jQuery.Event} event
   * @return {void}
   */
  onNone (event) {
    this.log('No select')
  }

  /**
   * Handler for `segment.wme` event
   * @param {jQuery.Event} event
   * @param {HTMLElement} element
   * @param {Segment} model
   * @return {void}
   */
  onSegment (event, element, model) {
    this.log('Selected one segment')
  }

  /**
   * Handler for `segments.wme` event
   * @param {jQuery.Event} event
   * @param {HTMLElement} element
   * @param {Segment[]} models
   * @return {void}
   */
  onSegments (event, element, models) {
    this.log('Selected some segments')
  }

  /**
   * Handler for `node.wme` event
   * @param {jQuery.Event} event
   * @param {HTMLElement} element
   * @param {Node$1} model
   * @return {void}
   */
  onNode (event, element, model) {
    this.log('Selected one node')
  }

  /**
   * Handler for `nodes.wme` event
   * @param {jQuery.Event} event
   * @param {HTMLElement} element
   * @param {Node$1[]} models
   * @return {void}
   */
  onNodes (event, element, models) {
    this.log('Selected some nodes, doesn\'t work')
  }

  /**
   * Handler for `venue.wme` event
   * @param {jQuery.Event} event
   * @param {HTMLElement} element
   * @param {Venue} model
   * @return {void}
   */
  onVenue (event, element, model) {
    this.log('Selected one venue')
  }

  /**
   * Handler for `venues.wme` event
   * @param {jQuery.Event} event
   * @param {HTMLElement} element
   * @param {Venue[]} models
   * @return {void}
   */
  onVenues (event, element, models) {
    this.log('Selected some venues')
  }

  /**
   * Handler for `point.wme` event
   * @param {jQuery.Event} event
   * @param {HTMLElement} element
   * @param {Venue} model
   * @return {void}
   */
  onPoint (event, element, model) {
    this.log('Selected a point')
  }

  /**
   * Handler for `place.wme` event
   * @param {jQuery.Event} event
   * @param {HTMLElement} element
   * @param {Venue} model
   * @return {void}
   */
  onPlace (event, element, model) {
    this.log('Selected a place')
  }

  /**
   * Handler for `residential.wme` event
   * @param {jQuery.Event} event
   * @param {HTMLElement} element
   * @param {Venue} model
   * @return {void}
   */
  onResidential (event, element, model) {
    this.log('Selected a residential')
  }

  /**
   * Handler for window `beforeunload` event
   * @param {jQuery.Event} event
   * @return {Null}
   */
  onBeforeUnload (event) {
    this.log('Can be use for save or check settings')
    if (this.settings) {
      this.settings.save()
    }
  }
}

Development

npm install        # install dependencies
npm run build      # build dist/WME-Base.user.js
npm run watch      # rebuild on changes
npm test           # run tests
npm run test:watch # run tests in watch mode

Source is written in TypeScript under src/, built with Rollup into dist/WME-Base.user.js.

src/
├── meta.ts          # userscript header
├── globals.d.ts     # getWmeSdk, Settings declarations
├── wme-base.ts      # WMEBase class
└── index.ts         # exposes WMEBase to global scope

Links

Author homepage: https://anton.shevchuk.name/
Author pet projects: https://hohli.com/
Support author: https://donate.hohli.com/
Script homepage: https://github.com/AntonShevchuk/wme-base
GreasyFork: https://greatest.deepsurf.us/en/scripts/450221-wme-base