@arcgis/map-components
Version:
ArcGIS Map Components
186 lines (184 loc) • 9.34 kB
TypeScript
/// <reference types="@arcgis/core/interfaces.d.ts" />
/// <reference types="../../index.d.ts" />
import { Use } from '@arcgis/lumina/controllers';
import { PublicLitElement as LitElement, JsxNode, TargetedEvent } from '@arcgis/lumina';
import { ArcgisReferenceElement } from '../../utils/component-utils';
import { default as SliceViewModel, SliceableLayer } from './SliceViewModel';
import { HeadingLevel } from '../../support/heading';
declare const useSliceViewModel: (component: LitElement & Pick<SliceViewModel, never> & import('../../controllers/useViewModel').ViewModelControllerUses<SliceViewModel>) => SliceViewModel;
/**
* The Slice component is a 3D analysis tool that can be used to reveal occluded content in a
* [Scene](https://developers.arcgis.com/javascript/latest/references/map-components/arcgis-scene/). It applies
* [slice analysis](https://developers.arcgis.com/javascript/latest/api-reference/esri-analysis-SliceAnalysis.html)
* to any layer type, making it possible to see inside buildings or to explore geological surfaces.
*
* [](https://developers.arcgis.com/javascript/latest/sample-code/building-scene-layer-slice/index.html)
*
* The slicing [shape](#shape)
* is always a [plane](https://developers.arcgis.com/javascript/latest/api-reference/esri-analysis-SlicePlane.html).
* By default, the plane is either horizontal or vertical. To allow a tilt angle for the plane, set
* [tiltEnabled](#tiltEnabled)
* to `true`. The slice hides any content in front of the surface. The handles on the sides of the plane can be used to adjust
* the size, heading, tilt, and position of the slice plane.
* The [SlicePlane](https://developers.arcgis.com/javascript/latest/api-reference/esri-analysis-SlicePlane.html)
* can be set or retrieved using the [shape](#shape) property.
*
* Once the slice plane is applied, layers can be excluded from the slicing. For example, by excluding the sublayers which include
* columns and floor slabs, the inner structure of a building can investigated.
*
* [](https://developers.arcgis.com/javascript/latest/sample-code/building-scene-layer-slice/index.html)
*
* Holding the `Shift` key while creating a new slice applies it vertically.
*
* **Known limitation**
*
* Slice is only supported in a 3D [Scene](https://developers.arcgis.com/javascript/latest/references/map-components/arcgis-scene/) component.
*
* **See also**
*
* - [SliceAnalysis](https://developers.arcgis.com/javascript/latest/api-reference/esri-analysis-SliceAnalysis.html)
* - [Sample - BuildingSceneLayer with Slice component](https://developers.arcgis.com/javascript/latest/sample-code/building-scene-layer-slice/)
* - [Sample - Analysis objects](https://developers.arcgis.com/javascript/latest/sample-code/analysis-objects/)
*
* [Read more...](https://developers.arcgis.com/javascript/latest/references/map-components/arcgis-slice/)
*/
export declare class ArcgisSlice extends LitElement {
/**
* The [SliceAnalysis](https://developers.arcgis.com/javascript/latest/api-reference/esri-analysis-SliceAnalysis.html)
* created or modified by the component.
*
* When connecting the Slice component to the [Scene](https://developers.arcgis.com/javascript/latest/references/map-components/arcgis-scene/)
* component, it automatically creates an empty analysis and adds it to the Scene's
* [analyses](https://developers.arcgis.com/javascript/latest/references/map-components/arcgis-scene/#analyses) collection.
* Whenever the component is destroyed, the analysis is automatically removed from the collection.
*
* Alternatively, a programmatically created analysis can be provided to the component.
* Then, the application itself needs to add it to and later remove it from the Scene's analyses collection.
*
* ```js
* // Create the analysis.
* const sliceAnalysis = new SliceAnalysis({
* shape: new SlicePlane({
* position: new Point({
* spatialReference: { latestWkid: 3857, wkid: 102100 },
* x: -13624925.727820931,
* y: 4550341.695170021,
* z: 56
* }),
* tilt: 270,
* width: 310,
* height: 190,
* heading: 45
* })
* });
* // Get the Scene and Slice component and wait until they are ready.
* const viewElement = document.querySelector("arcgis-scene");
* await viewElement.viewOnReady();
* const slice = document.querySelector("arcgis-slice");
* await slice.componentOnReady();
* // Add the analysis to the Scene component.
* viewElement.analyses.add(sliceAnalysis);
* // Connect the analysis to the slice component:
* slice.analysis = sliceAnalysis;
* ```
*/
analysis: __esri.SliceAnalysis;
/**
* If true, the component will not be destroyed automatically when it is
* disconnected from the document. This is useful when you want to move the
* component to a different place on the page, or temporarily hide it. If this
* is set, make sure to call the [destroy](https://developers.arcgis.com/javascript/latest/references/map-components/arcgis-slice/#destroy) method when you are done to
* prevent memory leaks.
*
* @default false
*/
autoDestroyDisabled: boolean;
/**
* Indicates whether the [Ground](https://developers.arcgis.com/javascript/latest/api-reference/esri-Ground.html) and layers that
* are draped on the ground surface are excluded from the slice.
*
* @default false
*/
excludeGroundSurface: boolean;
/**
* Add layers to this collection to exclude them from the slice. Layers that
* are draped on the ground surface are not affected by this property
*/
excludedLayers: __esri.Collection<SliceableLayer>;
/** @default 3 */
headingLevel: HeadingLevel;
/**
* Icon which represents the component.
* Typically used when the component is controlled by another component (e.g. by the Expand component).
*
* @see [Calcite Icons](https://developers.arcgis.com/calcite-design-system/icons/)
* @default "slice"
*/
icon?: HTMLCalciteIconElement["icon"];
/** The component's default label. */
label?: string;
/**
* Replace localized message strings with your own strings.
*
* _**Note**: Individual message keys may change between releases._
*/
messageOverrides?: typeof this._messages._overrides;
/** @default "bottom-left" */
position: __esri.UIPosition;
/**
* By assigning the `id` attribute of the Map or Scene component to this property, you can position a child component anywhere in the DOM while still maintaining a connection to the Map or Scene.
*
* @see [Associate components with a Map or Scene component](https://developers.arcgis.com/javascript/latest/programming-patterns/#associate-components-with-a-map-or-scene-component)
*/
referenceElement?: ArcgisReferenceElement | string;
/**
* The shape used to slice elements in a 3D scene. Currently the only supported shape is a
* [plane](https://developers.arcgis.com/javascript/latest/api-reference/esri-analysis-SlicePlane.html).
*
* @example
* ```js
* // Clone the shape to modify its properties
* const shape = slice.shape.clone();
* // Set new values for heading and tilt
* shape.heading = 180;
* shape.tilt = 45;
* // Apply the new shape to the slice component's shape
* slice.shape = shape;
* ```
*/
shape: nullish | __esri.SlicePlane;
/**
* The component's state. The values mean the following:
*
* * `disabled` - not ready yet
* * `ready` - ready for slicing
* * `slicing` - currently slicing
* * `sliced` - finished slicing
*/
readonly state: "ready" | "disabled" | "excludingLayer" | "sliced" | "slicing";
/**
* Enable tilting the slice shape. If set to true, the slice shape will orient itself as best as
* possible to the surface under the cursor when first placing the shape. If set to false, the slice shape is
* restricted to be either horizontal or vertical.
*
* @default false
*/
tiltEnabled: boolean;
/**
* Clear the [shape](#shape) of the slice, effectively removing it from the view. Other properties like [excludedLayers](#excludedLayers)
* and [excludeGroundSurface](#excludeGroundSurface) are not modified.
*/
clear(): Promise<void>;
/** Permanently destroy the component. */
destroy(): Promise<void>;
/** Start the interactive creation of a new slice, clearing the previous [shape](#shape). */
start(): Promise<void>;
/** Emitted when the value of a property is changed. Use this to listen to changes to properties. */
readonly arcgisPropertyChange: TargetedEvent<this, {
name: "state" | "analysis";
}>;
/** Emitted when the component associated with a map or scene view is is ready to be interacted with. */
readonly arcgisReady: TargetedEvent<this, void>;
private _messages;
}
export {};