@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
383 lines (377 loc) • 19.6 kB
TypeScript
import type Basemap from "../Basemap.js";
import type Viewpoint from "../Viewpoint.js";
import type Collection from "../core/Collection.js";
import type TimeExtent from "../time/TimeExtent.js";
import type SceneView from "../views/SceneView.js";
import type SlideThumbnail from "../webdoc/support/SlideThumbnail.js";
import type Description from "./support/Description.js";
import type SlideElements from "./support/SlideElements.js";
import type SlideEnvironment from "./support/SlideEnvironment.js";
import type SlideGround from "./support/SlideGround.js";
import type SlideVisibleLayer from "./support/SlideVisibleLayer.js";
import type Title from "./support/Title.js";
import type { BasemapProperties } from "../Basemap.js";
import type { ClonableMixin } from "../core/Clonable.js";
import type { EventedMixin } from "../core/Evented.js";
import type { JSONSupport } from "../core/JSONSupport.js";
import type { GoToOptions3D, UserSettings as ScreenshotUserSettings } from "../views/types.js";
import type { SlideThumbnailProperties } from "../webdoc/support/SlideThumbnail.js";
import type { DescriptionProperties } from "./support/Description.js";
import type { SlideVisibleLayerProperties } from "./support/SlideVisibleLayer.js";
import type { TitleProperties } from "./support/Title.js";
import type { ViewpointProperties } from "../Viewpoint.js";
import type { SlideGroundProperties } from "./support/SlideGround.js";
import type { ReadonlyArrayOrCollection } from "../core/Collection.js";
import type { SlideEnvironmentProperties } from "./support/SlideEnvironment.js";
import type { TimeExtentProperties } from "../time/TimeExtent.js";
import type { SlideElementsProperties } from "./support/SlideElements.js";
export interface SlideProperties extends Partial<Pick<Slide, "hidden" | "id" | "layout">> {
/**
* The basemap of the scene. Only the [base](https://developers.arcgis.com/javascript/latest/references/core/Basemap/#baseLayers)
* and [reference](https://developers.arcgis.com/javascript/latest/references/core/Basemap/#referenceLayers) layers of the basemap
* are stored in a slide.
*
* This value can be an instance of [Basemap](https://developers.arcgis.com/javascript/latest/references/core/Basemap/) or a value listed in these [basemap id tables](https://developers.arcgis.com/javascript/latest/references/core/Map/#basemap-id).
*/
basemap?: BasemapProperties | string | null;
/** The description of the slide. */
description?: DescriptionProperties | DescriptionProperties | string;
/**
* The elements object contains configurations for components set in a slide.
*
* @since 4.32
*/
elements?: SlideElementsProperties;
/**
* The enabled focus areas of the scene.
*
* This is a collection of strings, storing references (by ID) to the [focus areas](https://developers.arcgis.com/javascript/latest/references/core/Map/#focusAreas)
* that are enabled when the slide is applied to a [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/).
*
* @example
* // Update the slide to only enable the first focus area in the map.
* slide.enabledFocusAreas = [ view.map.focusAreas.areas.at(0).id ];
*/
enabledFocusAreas?: ReadonlyArrayOrCollection<string> | null;
/** Represents settings that affect the environment in which the WebScene is displayed (such as lighting). */
environment?: SlideEnvironmentProperties;
/** Ground properties for this slide. */
ground?: SlideGroundProperties | null;
/** A data URI encoded thumbnail. */
thumbnail?: SlideThumbnailProperties | SlideThumbnailProperties | string;
/**
* The time extent of the scene.
*
* @since 4.30
*/
timeExtent?: TimeExtentProperties | null;
/** The title of the slide. */
title?: TitleProperties | TitleProperties | string;
/**
* The viewpoint of the slide. This acts like a bookmark, saving a predefined
* location or point of view from which to view the scene.
*/
viewpoint?: ViewpointProperties;
/**
* The visible layers of the scene.
*
* This is a collection of objects that stores references (by ID) to the
* [scene layers](https://developers.arcgis.com/javascript/latest/references/core/WebScene/#layers) and [ground layers](https://developers.arcgis.com/javascript/latest/references/core/Ground/#layers) that are set
* as `visible` when a slide is applied to a [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/).
*
* When assigning visible layers, the following types of values will be automatically casted:
*
* - Array (or [Collection](https://developers.arcgis.com/javascript/latest/references/core/core/Collection/)) of [Layer instances](https://developers.arcgis.com/javascript/latest/references/core/layers/Layer/): `[layerInstance, layerInstance]`
* - Array (or [Collection](https://developers.arcgis.com/javascript/latest/references/core/core/Collection/)) of [Layer IDs](https://developers.arcgis.com/javascript/latest/references/core/layers/Layer/#id): `["layer-1", "layer-2"]`
*
* The specification for each object in the collection is outlined in the table below.
*
* @example
* // Update the visible layers to the second layer in the scene, and the
* // first elevation layer in the ground.
* slide.visibleLayers = [
* { id: scene.layers.at(1).id }
* { id: scene.ground.layers.at(0).id }
* ];
*
* // Equivalent using convenience autocasting
* slide.visibleLayers = [scene.layers.at(0), scene.ground.layers.at(0)];
*/
visibleLayers?: ReadonlyArrayOrCollection<SlideVisibleLayerProperties>;
}
export type SlideLayout = "caption" | "cover" | "none";
export interface SlideEvents {
/**
* Emitted just before starting to apply the slide to the view.
*
* @see [applyTo()](https://developers.arcgis.com/javascript/latest/references/core/webscene/Slide/#applyTo)
* @since 5.0
*/
"apply-slide-start": void;
/**
* Emitted just after applying the slide has successfully completed. If applying the slide is interrupted then the
* [apply-slide-cancel](https://developers.arcgis.com/javascript/latest/references/core/webscene/Slide/#event-apply-slide-cancel) event is emitted instead.
*
* @see [applyTo()](https://developers.arcgis.com/javascript/latest/references/core/webscene/Slide/#applyTo)
* @since 5.0
*/
"apply-slide-complete": void;
/**
* Emitted just after applying the slide was interrupted. In this case the
* [apply-slide-complete](https://developers.arcgis.com/javascript/latest/references/core/webscene/Slide/#event-apply-slide-complete) event is not emitted.
*
* @see [applyTo()](https://developers.arcgis.com/javascript/latest/references/core/webscene/Slide/#applyTo)
* @since 5.0
*/
"apply-slide-cancel": void;
}
/**
* A slide stores a snapshot of several pre-set properties of the
* [WebScene](https://developers.arcgis.com/javascript/latest/references/core/WebScene/) and [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/), such as
* the [basemap](https://developers.arcgis.com/javascript/latest/references/core/webscene/Slide/#basemap), [viewpoint](https://developers.arcgis.com/javascript/latest/references/core/webscene/Slide/#viewpoint) and [visible layers](https://developers.arcgis.com/javascript/latest/references/core/webscene/Slide/#visibleLayers).
* The [visible layers](https://developers.arcgis.com/javascript/latest/references/core/webscene/Slide/#visibleLayers) may contain references
* (by [Layer.id](https://developers.arcgis.com/javascript/latest/references/core/layers/Layer/#id)) to both operational layers from the
* [scene](https://developers.arcgis.com/javascript/latest/references/core/WebScene/#layers) as well as elevation layers
* from the [Ground.layers](https://developers.arcgis.com/javascript/latest/references/core/Ground/#layers), which affect the surface
* elevation.
*
* Slides contain additional metadata such as a [title](https://developers.arcgis.com/javascript/latest/references/core/webscene/Slide/#title),
* [description](https://developers.arcgis.com/javascript/latest/references/core/webscene/Slide/#description) and [thumbnail](https://developers.arcgis.com/javascript/latest/references/core/webscene/Slide/#thumbnail) which may be used
* to present the slide to the user in a user interface. Slides can be
* [created](https://developers.arcgis.com/javascript/latest/references/core/webscene/Slide/#createFrom), [updated](https://developers.arcgis.com/javascript/latest/references/core/webscene/Slide/#updateFrom)
* and [applied](https://developers.arcgis.com/javascript/latest/references/core/webscene/Slide/#applyTo) to a [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/). Additionally,
* slides can be stored as part of the
* [WebScene.presentation](https://developers.arcgis.com/javascript/latest/references/core/webscene/Presentation/).
*
* @since 4.0
* @see [Presentation](https://developers.arcgis.com/javascript/latest/references/core/webscene/Presentation/)
* @see [Sample - WebScene slides](https://developers.arcgis.com/javascript/latest/sample-code/webscene-slides/)
* @example
* // Create a slide from a view and apply it at a later time
* Slide.createFrom(view).then(function(slide) {
* // Add slide to the scene presentation
* scene.presentation.slides.add(slide);
* });
*
* // At a later time
* let firstSlide = scene.presentation.slides.at(0);
*
* firstSlide.applyTo(view).then(function() {
* // Slide has been successfully applied to the view
* });
*/
export default class Slide extends SlideSuperclass {
/**
* @deprecated
* Do not directly reference this property.
* Use EventNames and EventTypes helpers from \@arcgis/core/Evented
*/
"@eventTypes": SlideEvents;
/**
* Creates a slide from a [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/), which may be added to the
* [Presentation.slides](https://developers.arcgis.com/javascript/latest/references/core/webscene/Presentation/#slides) in the WebScene's
* [WebScene.presentation](https://developers.arcgis.com/javascript/latest/references/core/WebScene/#presentation). Updating the slide
* is asynchronous and a snapshot of the view is only complete once the
* returned promise has resolved.
*
*
* Default screenshot settings are { quality: 80, width: 120, height: 75, format: "png" }
*
* @param view - The SceneView from which the slide should be created.
* @param options - Creation options. See properties below for object specifications.
* @returns When resolved, returns the created slide.
* @example
* // Creates a slide from the view and
* // adds it to the webscene
* Slide.createFrom(view).then(function(slide){
* webscene.presentation.slides.add(slide);
* });
* @example
* // Create multiple slides from multiple viewpoints.
* view.goTo({ heading: 0 }, { animate: false })
* .then(function() {
* // Create first slide at heading 0 (looking north)
* return Slide.createFrom(view);
* })
* .then(function(slide){
* // Slide has been captured, add to presentation
* webscene.presentation.slides.add(slide);
*
* // Change viewpoint to look east
* return view.goTo({ heading: 90 }, { animate: false });
* })
* .then(function() {
* // Capture second slide
* return Slide.createFrom(view);
* })
* .then(function(slide) {
* // Add second slide to presentation
* webscene.presentation.slides.add(slide);
* });
*/
static createFrom(view: SceneView, options?: SlideCreateFromOptions): Promise<Slide>;
/**
* Create a new slide instance. Usually [createFrom()](https://developers.arcgis.com/javascript/latest/references/core/webscene/Slide/#createFrom) is
* used instead to create a new slide which stores a snapshot of the view.
*/
constructor(properties?: SlideProperties);
/**
* The basemap of the scene. Only the [base](https://developers.arcgis.com/javascript/latest/references/core/Basemap/#baseLayers)
* and [reference](https://developers.arcgis.com/javascript/latest/references/core/Basemap/#referenceLayers) layers of the basemap
* are stored in a slide.
*
* This value can be an instance of [Basemap](https://developers.arcgis.com/javascript/latest/references/core/Basemap/) or a value listed in these [basemap id tables](https://developers.arcgis.com/javascript/latest/references/core/Map/#basemap-id).
*/
get basemap(): Basemap | null | undefined;
set basemap(value: BasemapProperties | string | null | undefined);
/** The description of the slide. */
get description(): Description;
set description(value: DescriptionProperties | DescriptionProperties | string);
/**
* The elements object contains configurations for components set in a slide.
*
* @since 4.32
*/
get elements(): SlideElements;
set elements(value: SlideElementsProperties);
/**
* The enabled focus areas of the scene.
*
* This is a collection of strings, storing references (by ID) to the [focus areas](https://developers.arcgis.com/javascript/latest/references/core/Map/#focusAreas)
* that are enabled when the slide is applied to a [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/).
*
* @example
* // Update the slide to only enable the first focus area in the map.
* slide.enabledFocusAreas = [ view.map.focusAreas.areas.at(0).id ];
*/
get enabledFocusAreas(): Collection<string> | null | undefined;
set enabledFocusAreas(value: ReadonlyArrayOrCollection<string> | null | undefined);
/** Represents settings that affect the environment in which the WebScene is displayed (such as lighting). */
get environment(): SlideEnvironment;
set environment(value: SlideEnvironmentProperties);
/** Ground properties for this slide. */
get ground(): SlideGround | null | undefined;
set ground(value: SlideGroundProperties | null | undefined);
/**
* The visibility of a slide in a presentation. A hidden slide should not show up when an application goes
* into presentation mode.
*
* @default false
* @since 4.28
*/
accessor hidden: boolean;
/**
* The unique id of a slide within the
* [slides property](https://developers.arcgis.com/javascript/latest/references/core/webscene/Presentation/#slides) of a
* [Presentation](https://developers.arcgis.com/javascript/latest/references/core/webscene/Presentation/).
*/
accessor id: string;
/**
* Layout of the slide.
*
* @default "caption"
* @since 4.31
*/
accessor layout: SlideLayout;
/** A data URI encoded thumbnail. */
get thumbnail(): SlideThumbnail;
set thumbnail(value: SlideThumbnailProperties | SlideThumbnailProperties | string);
/**
* The time extent of the scene.
*
* @since 4.30
*/
get timeExtent(): TimeExtent | null | undefined;
set timeExtent(value: TimeExtentProperties | null | undefined);
/** The title of the slide. */
get title(): Title;
set title(value: TitleProperties | TitleProperties | string);
/**
* The viewpoint of the slide. This acts like a bookmark, saving a predefined
* location or point of view from which to view the scene.
*/
get viewpoint(): Viewpoint;
set viewpoint(value: ViewpointProperties);
/**
* The visible layers of the scene.
*
* This is a collection of objects that stores references (by ID) to the
* [scene layers](https://developers.arcgis.com/javascript/latest/references/core/WebScene/#layers) and [ground layers](https://developers.arcgis.com/javascript/latest/references/core/Ground/#layers) that are set
* as `visible` when a slide is applied to a [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/).
*
* When assigning visible layers, the following types of values will be automatically casted:
*
* - Array (or [Collection](https://developers.arcgis.com/javascript/latest/references/core/core/Collection/)) of [Layer instances](https://developers.arcgis.com/javascript/latest/references/core/layers/Layer/): `[layerInstance, layerInstance]`
* - Array (or [Collection](https://developers.arcgis.com/javascript/latest/references/core/core/Collection/)) of [Layer IDs](https://developers.arcgis.com/javascript/latest/references/core/layers/Layer/#id): `["layer-1", "layer-2"]`
*
* The specification for each object in the collection is outlined in the table below.
*
* @example
* // Update the visible layers to the second layer in the scene, and the
* // first elevation layer in the ground.
* slide.visibleLayers = [
* { id: scene.layers.at(1).id }
* { id: scene.ground.layers.at(0).id }
* ];
*
* // Equivalent using convenience autocasting
* slide.visibleLayers = [scene.layers.at(0), scene.ground.layers.at(0)];
*/
get visibleLayers(): Collection<SlideVisibleLayer>;
set visibleLayers(value: ReadonlyArrayOrCollection<SlideVisibleLayerProperties>);
/**
* Applies a slide's settings to a [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/).
*
* @param view - The SceneView the slide should be applied to.
* @param options - Animation options. See properties below for object specifications.
* @returns When resolved, returns the updated slide.
* @example
* // Applies the slide's settings to the view, but does
* // not use animation when updating the viewpoint
* slide.applyTo(view, {
* animate: false
* });
* @example
* // Applies the slide's settings to the view, animates with a maximum
* // duration of 2 seconds.
* slide.applyTo(view, {
* maxDuration: 2000
* });
* @example
* slide.applyTo(view, {
* maxDuration: 2000
* }).then(function(){
* //do something after applying the slide's settings to the view
* });
*/
applyTo(view: SceneView, options?: GoToOptions3D): Promise<Slide>;
/**
* Creates a deep clone of this object. Note that the basemap instance is cloned, but the
* layers within the basemap are copied.
*
* @returns A new [Slide](https://developers.arcgis.com/javascript/latest/references/core/webscene/Slide/) instance.
*/
clone(): this;
/**
* Updates a slide from a [WebScene's slides](https://developers.arcgis.com/javascript/latest/references/core/webscene/Presentation/#slides).
* Updating the slide is asynchronous and a snapshot of the view is only complete once the
* returned promise has resolved.
*
*
* Default screenshot settings are { quality: 80, width: 120, height: 75, format: "png" }
*
* @param view - The SceneView from which the slide should update.
* @param options - Update options. See properties below for object specifications.
* @returns When resolved, returns the updated slide.
*/
updateFrom(view: SceneView, options?: SlideUpdateFromOptions): Promise<Slide>;
}
declare const SlideSuperclass: typeof JSONSupport & typeof EventedMixin & typeof ClonableMixin
export interface SlideUpdateFromOptions {
/** Screenshot options to use. See properties below for object specifications. */
screenshot: Partial<ScreenshotUserSettings>;
}
export interface SlideCreateFromOptions {
/** Screenshot options to use. See properties below for object specifications. */
screenshot: Partial<ScreenshotUserSettings>;
}