export class CustomControl { _map = undefined; _container = undefined; _data = undefined; constructor(data) { if (Object.hasOwn(data, "label") && Object.hasOwn(data, "icon") && Object.hasOwn(data, "onclick")) { this._data = data; } else { throw new Error("missing required property"); } } onAdd(map) { this._map = map; this._container = document.createElement('div'); this._container.className = 'maplibregl-ctrl maplibregl-ctrl-group'; const button = document.createElement('button'); button.type = 'button'; button.title = this._data.label; button.textContent = this._data.icon; button.onclick = () => { this._data.onclick(); } this._container.appendChild(button); // this._map.on('mousedown', () => { }); return this._container; } onRemove() { this._container.parentNode.removeChild(this._container); // this._map.off('mousedown', () => { }); this._map = undefined; } }