import ActionButton from '@arcgis/core/support/actions/ActionButton'; import ActionToggle from '@arcgis/core/support/actions/ActionToggle'; import { Action } from './api.js'; import '@arcgis/core/geometry/Point'; import '@arcgis/core/Graphic'; import '@arcgis/core/layers/Layer'; import '@arcgis/core/layers/support/Sublayer'; import 'map-widget/api'; import 'store-api/api'; /** * Base class for actions. * @module */ type ActionButtonConstructor = new (props: __esri.ActionButtonProperties) => ActionButton; type ActionToggleConstructor = new (props: __esri.ActionToggleProperties) => ActionToggle; interface EsriActions { button: [ActionButton, __esri.ActionButtonProperties, ActionButtonConstructor]; toggle: [ActionToggle, __esri.ActionToggleProperties, ActionToggleConstructor]; } type EsriActionClazz = EsriActions[Type][0]; type EsriActionProps = EsriActions[Type][1]; /** * Either `"button"` or `"toggle"`. */ type EsriActionType = "button" | "toggle"; /** * Either [@arcgis/core/support/actions/ActionButton](https://developers.arcgis.com/javascript/latest/api-reference/esri-support-actions-ActionButton.html) * or [@arcgis/core/support/actions/ActionButton](https://developers.arcgis.com/javascript/latest/api-reference/esri-support-actions-ActionToggle.html) */ type EsriAction = ActionButton | ActionToggle; /** * Action extended by methods defined in {@link Action}. */ type ExtendedEsriAction = T & Action; /** * Constructor to create Actions. */ type BaseActionConstructor = new (properties?: EsriActionProps) => ExtendedEsriAction>; /** * Creates a BaseAction clazz for extension. * @param type allowed values are 'button' and 'toggle' * @example * import BaseAction from "popups/BaseAction"; * new BaseAction("button")({ * id: "tweetablePopups.action.tweet", * title: "Tweet Feature", * className: "esri-icon-share2", * image: "tweeter.png", * isVisibleForFeature(feature){ * // only show feature if attribute exists * return feature.attributes["attribute"] === true; * }, * trigger(context){ * // do something * } * }); */ declare function BaseAction(type: Type): BaseActionConstructor; export { BaseAction as default }; export type { BaseActionConstructor, EsriAction, EsriActionType, ExtendedEsriAction };