import { AfterViewInit, EventEmitter, OnDestroy, OnInit } from '@angular/core'; import { Observable } from 'rxjs'; import { HttpClient } from '@angular/common/http'; import '../viewers/krpano.js'; import { Asset } from "../asset.interface"; export declare enum viewState { loading = 0, openSeaReady = 1, kalturaReady = 2, krpanoReady = 3, thumbnailFallback = 4, audioFallback = 5, } export declare class ArtstorViewer implements OnInit, OnDestroy, AfterViewInit { private _http; groupId: string; index: number; assetCompareCount: number; assetGroupCount: number; assetNumber: number; assets: Asset[]; prevAssetResults: any; isFullscreen: boolean; showCaption: boolean; quizMode: boolean; testEnv: boolean; thumbnailMode: boolean; encrypted: boolean; private _assetId; assetId: string; asset: Asset; legacyFlag: boolean; openLibraryFlag: boolean; fullscreenChange: EventEmitter<{}>; nextPage: EventEmitter<{}>; prevPage: EventEmitter<{}>; removeAsset: EventEmitter<{}>; assetDrawer: EventEmitter<{}>; multiViewHelp: EventEmitter<{}>; assetMetadata: EventEmitter<{}>; multiViewPageViaArrow: EventEmitter<{}>; multiViewPageViaThumbnail: EventEmitter<{}>; private multiViewArrowPressed; private initialized; private _asset; private assetSub; state: viewState; private removableAsset; private subscriptions; private tileSource; lastZoomValue: number; kalturaUrl: string; osdViewer: any; osdViewerId: string; isMultiView: boolean; multiViewPage: number; multiViewCount: number; constructor(_http: HttpClient); ngOnInit(): void; ngOnDestroy(): void; ngAfterViewInit(): void; private loadAssetById(assetId, groupId); private loadViewer(asset); /** * Gets information needed to load IIIF viewers, such as OpenSeaDragon */ private loadIIIF(); /** * Loads the OpenSeaDragon on element at 'viewer-' + id * - Requires this.asset to have an id */ private loadOpenSea(); private loadKrpanoViewer(); private embedKrpano(); private requestFullScreen(el); private exitFullScreen(); private changeHandler(); togglePresentationMode(): void; /** * Setter for isFullscreen * - Ensures event is sent out to the Asset Page! */ private setFullscreen(isFullscreen); /** * Setup the embedded Kaltura player */ private loadKaltura(); /** * disableContextMenu * - Disable browser context menu / right click on the image viewer */ disableContextMenu(event: Event): boolean; /** * Is Multi View help output defined */ hasMultiViewHelp(): boolean; getUrl(): string; buildAsset(assetId: string, {groupId, legacyFlag, openlib}?: { groupId?: string; legacyFlag?: boolean; openlib?: boolean; }): Observable; /** * Gets the metadata for an asset and cleans it into an object with which an Asset can be constructed * @param assetId The id of the asset for which to obtain the metadata * @param groupId The group from which the asset was accessed, if it exists (helps with authorization) */ private getMetadata(assetId, {groupId, legacyFlag, openlib}); /** * Call to API which returns an asset, given an encrypted_id * @param token The encrypted token that you want to know the asset id for */ getEncryptedMetadata(secretId: string, legacyFlag?: boolean, openlib?: boolean): Observable; /** * Convenience Mapper * although this seems repetitive/wordy, it gives us insulation from server name changes because we * have a single place to update the naming of any property, resolve types and make changes to data shape * defaults which should otherwise be default values returned by the service can also be assigned here */ private mapMetadata(data); /** * Gets the relevant Kaltura info for an asset - should only be used when necessary * @param assetId The artstor id for the relevant asset * @param objectTypeId The number corresponding to the asset's type - a map to English names can be found in the Asset class */ private getFpxInfo(assetId); } export interface MetadataResponse { metadata: AssetDataResponse[]; success: boolean; total: 1; } export interface AssetData { groupId?: string; SSID?: string; category_id: string; category_name: string; collections: CollectionValue[]; collection_id: string; collection_name: string; collection_type: number; contributinginstitutionid: number; personalCollectionOwner: number; download_size: string; fileProperties: FileProperty[]; height: number; image_url: string; image_compound_urls?: string[]; metadata_json: MetadataField[]; object_id: string; object_type_id: number; resolution_x: number; resolution_y: number; thumbnail_url: string; tileSourceHostname: string; title: string; updated_on: string; viewer_data?: { base_asset_url?: string; panorama_xml?: string; }; width: number; baseUrl: string; fpxInfo?: ImageFPXResponse; } export interface AssetDataResponse { SSID?: string; category_id: string; category_name: string; collection_id: string; collection_name: string; collection_type: number; contributinginstitutionid: number; personalCollectionOwner: number; downloadSize?: string; download_size?: string; fileProperties: { [key: string]: string; }[]; height: number; image_url: string; metadata_json: MetadataField[]; object_id: string; object_type_id: number; resolution_x: number; resolution_y: number; thumbnail_url: string; title: string; updated_on: string; viewer_data: { base_asset_url?: string; panorama_xml?: string; }; width: number; } export interface MetadataField { count: number; fieldName: string; fieldValue: string; index: number; link?: string; } export interface CollectionValue { type: string; name: string; id: string; } export interface ImageFPXResponse { height: number; id: { fileName: string; resolution: number; }; imageId: string; imageUrl: string; resolutionX: number; resolutionY: number; width: number; } export interface FileProperty { [key: string]: string; }