UNPKG

core-resource-app-test

Version:

App that contains assets and scripts for the core apps

87 lines (65 loc) 1.93 kB
L.Mixin.ContextMenu = { bindContextMenu: function (options) { L.setOptions(this, options); this._initContextMenu(); return this; }, unbindContextMenu: function (){ this.off('contextmenu', this._showContextMenu, this); return this; }, _initContextMenu: function () { this._items = []; this.on('contextmenu', this._showContextMenu, this); }, _showContextMenu: function (e) { var itemOptions, data, pt, i, l; if (this._map.contextmenu) { data = L.extend({relatedTarget: this}, e) pt = this._map.mouseEventToContainerPoint(e.originalEvent); if (!this.options.contextmenuInheritItems) { this._map.contextmenu.hideAllItems(); } for (i = 0, l = this.options.contextmenuItems.length; i < l; i++) { itemOptions = this.options.contextmenuItems[i]; this._items.push(this._map.contextmenu.insertItem(itemOptions, itemOptions.index)); } this._map.once('contextmenu.hide', this._hideContextMenu, this); this._map.contextmenu.showAt(pt, data); } }, _hideContextMenu: function () { var i, l; for (i = 0, l = this._items.length; i < l; i++) { this._map.contextmenu.removeItem(this._items[i]); } this._items.length = 0; if (!this.options.contextmenuInheritItems) { this._map.contextmenu.showAllItems(); } } }; var classes = [L.Marker, L.Path], defaultOptions = { contextmenu: false, contextmenuItems: [], contextmenuInheritItems: true }, cls, i, l; for (i = 0, l = classes.length; i < l; i++) { cls = classes[i]; // L.Class should probably provide an empty options hash, as it does not test // for it here and add if needed if (!cls.prototype.options) { cls.prototype.options = defaultOptions; } else { cls.mergeOptions(defaultOptions); } cls.addInitHook(function () { if (this.options.contextmenu) { this._initContextMenu(); } }); cls.include(L.Mixin.ContextMenu); }