/// /// Copyright © 2016-2024 The Thingsboard Authors /// /// Licensed under the Apache License, Version 2.0 (the "License"); /// you may not use this file except in compliance with the License. /// You may obtain a copy of the License at /// /// http://www.apache.org/licenses/LICENSE-2.0 /// /// Unless required by applicable law or agreed to in writing, software /// distributed under the License is distributed on an "AS IS" BASIS, /// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. /// See the License for the specific language governing permissions and /// limitations under the License. /// import { FormattedData } from '@shared/models/widget.models'; // redeclare module, maintains compatibility with @types/leaflet declare module 'leaflet' { interface MarkerOptions { tbMarkerData?: FormattedData; } namespace TB { interface SidebarControlOptions extends ControlOptions { container: JQuery; paneWidth?: number; } class SidebarControl extends Control { constructor(options: SidebarControlOptions); addPane(pane: JQuery): this; togglePane(pane: JQuery, button: JQuery): void; } interface SidebarPaneControlOptions extends ControlOptions { sidebar: SidebarControl; uiClass: string; buttonTitle?: string; paneTitle: string; } class SidebarPaneControl extends Control { constructor(options: O); onAddPane(map: Map, button: JQuery, $ui: JQuery, toggle: (e: JQuery.MouseEventBase) => void); } interface LayerData { title: string; layer: Layer; mini: Layer; } interface LayersControlOptions extends SidebarPaneControlOptions { layers: LayerData[]; } class LayersControl extends SidebarPaneControl { constructor(options: LayersControlOptions); } function sidebar(options: SidebarControlOptions): SidebarControl; function sidebarPane(options: O): SidebarPaneControl; function layers(options: LayersControlOptions): LayersControl; } }