{"version":3,"file":"image-service-De99ftU7.d.cts","names":["FixedSizeImage","FixedSizeImageService","VariableSizeImage","UnknownSizeImage","ImageCandidate","ImageCandidateRequest","ContentResource","ImageProfile","ImageSize","ImageTile","ImageService","ImageCandidate","ImageCandidateRequest","ImageServer","ImageServiceRequest","LoadedImageService","ImageServiceLoaderConfig","ImageServiceLoader","Partial","Promise","RequestInfo","RequestInit","Response","getImageServerFromId","ImageTile","sampledTilesToTiles","ImageCandidate","ImageCandidateRequest","pickBestFromCandidates","Array","FixedSizeImage","ImageCandidateRequest","isBestMatch","Required","ImageServiceLoader","Emitter","ImageService","LoadImageServiceDetail","ImageServiceStore","Record","Promise","ImageServiceStoreOptions","ImageServiceStoreEvents","Error","createImageServiceStore","zustand_vanilla1","StoreApi","imageServices","FixedSizeImage","FixedSizeImageService","getImageFromTileSource","ContentResource","ImageServiceLoader","ImageCandidate","getImageCandidates","ImageService","ImageCandidate","getImageCandidatesFromService","Service","FixedSizeImageService","getFixedSizesFromService","isImage3","ImageCandidate","ImageService","getCustomSizeFromService","ContentResource","ImageCandidate","getFixedSizeFromImage","ImageCandidate","inferImageSizeFromUrl","ImageSize","imageSizesMatch","ImageService","FixedSizeImageService","getSmallestScaleFactorAsSingleImage"],"sources":["../src/image-service/types.d.ts","../src/image-service/image-service-loader.d.ts","../src/image-service/get-image-server-from-id.d.ts","../src/image-service/sampled-tiles-to-tiles.d.ts","../src/image-service/pick-best-from-candidates.d.ts","../src/image-service/is-best-match.d.ts","../src/image-service/image-service-store.d.ts","../src/image-service/get-image-from-tile-source.d.ts","../src/image-service/get-image-candidates.d.ts","../src/image-service/get-image-candidates-from-service.d.ts","../src/image-service/get-fixed-sizes-from-service.d.ts","../src/image-service/is-image-3.d.ts","../src/image-service/get-custom-size-from-service.d.ts","../src/image-service/get-fixed-size-from-image.d.ts","../src/image-service/infer-size-from-url.d.ts","../src/image-service/image-sizes-match.d.ts","../src/image-service/get-smallest-scale-factor-as-single-image.d.ts"],"sourcesContent":["export type FixedSizeImage = {\n    id: string;\n    type: 'fixed';\n    width: number;\n    height: number;\n    unsafe?: boolean;\n};\nexport type FixedSizeImageService = {\n    id: string;\n    type: 'fixed-service';\n    width: number;\n    height: number;\n    level?: number | null;\n    version?: number;\n};\nexport type VariableSizeImage = {\n    id: string;\n    type: 'variable';\n    minWidth: number;\n    maxWidth: number;\n    minHeight: number;\n    maxHeight: number;\n    level?: number | null;\n    version?: number;\n};\nexport type UnknownSizeImage = {\n    id: string;\n    type: 'unknown';\n};\nexport type ImageCandidate = FixedSizeImage | VariableSizeImage | UnknownSizeImage | FixedSizeImageService;\nexport type ImageCandidateRequest = {\n    width?: number;\n    height?: number;\n    maxWidth?: number;\n    maxHeight?: number;\n    minWidth?: number;\n    minHeight?: number;\n    fallback?: boolean;\n    atAnyCost?: boolean;\n    unsafeImageService?: boolean;\n    returnAllOptions?: boolean;\n    allowUnsafe?: boolean;\n    preferFixedSize?: boolean;\n    explain?: boolean;\n};\n","import { ContentResource, ImageProfile, ImageSize, ImageTile, ImageService } from '@iiif/presentation-3';\nimport { ImageCandidate, ImageCandidateRequest } from './types';\nexport type ImageServer = {\n    root: string;\n    server: string | null;\n    sampledId: string;\n    verifications: number;\n    verified: boolean;\n    preLoaded: boolean;\n    malformed: boolean;\n    result: {\n        context: string | string[];\n        resourceServiceRatio: number;\n        sampledSizes: ImageSize[];\n        sizeRatios: number[];\n        sampledTiles: ImageTile[];\n        sampledProfile: ImageProfile | ImageProfile[];\n    };\n};\nexport type ImageServiceRequest = {\n    id: string;\n    width: number;\n    height: number;\n    source?: ImageService;\n};\ntype LoadedImageService = ImageService & {\n    real: boolean;\n};\nexport type ImageServiceLoaderConfig = {\n    verificationsRequired: number;\n    approximateServices: boolean;\n    enableFetching: boolean;\n    disableThrottling: boolean;\n};\nexport declare class ImageServiceLoader {\n    constructor(options?: Partial<ImageServiceLoaderConfig>);\n    config: ImageServiceLoaderConfig;\n    fetchingCount: number;\n    imageServices: {\n        [k: string]: LoadedImageService;\n    };\n    knownImageServers: {\n        [k: string]: ImageServer;\n    };\n    /**\n     * Preload image service\n     *\n     * This will preload an image service, fetching details and recording the image server that served\n     * the request. Based on this it will make a template for predicting other image sources from this\n     * server. You can optionally pass in other ids to verify that the prediction is accurate.\n     *\n     */\n    setConfig(config: Partial<ImageServiceLoaderConfig>): void;\n    /**\n     * Sample pre-fetched service\n     *\n     * If you have already fetched an image service, or are creating a viewer that only talks to a single\n     * image server and want to avoid calls, you can sample a service up-front. This will allow you to make\n     * completely synchronous calls to `loadServiceSync` and avoid any network calls for image services.\n     *\n     * @param service\n     * @param preLoaded Mark this as being pre-loaded (default: true)\n     */\n    sample(service: ImageService, imageServiceRequest?: ImageServiceRequest, preLoaded?: boolean): true | Promise<boolean>;\n    /**\n     * Preload an image server\n     *\n     * Similar to sample, but faster. This will bypass any checks and the logic contained in this implementation\n     * allowing you to correct mistakes this implementation might have made.\n     *\n     * @param server\n     * @param forceVerify\n     */\n    preLoad(server: ImageServer, forceVerify?: boolean): void;\n    /**\n     * Predict\n     *\n     * Predicts what the image service will be for a content resource.\n     *\n     * @param resource\n     * @param verify\n     * @param force\n     */\n    predict(resource: ImageServiceRequest, verify?: boolean, force?: boolean): ImageService | null;\n    getThumbnailFromResource(unknownResource: ContentResource | undefined, request: ImageCandidateRequest, dereference?: boolean, otherCandidates?: ImageCandidate[]): Promise<{\n        best: ImageCandidate | null;\n        fallback: ImageCandidate[];\n        log: string[];\n    }>;\n    getImageCandidates(unknownResource: ContentResource, dereference?: boolean): Promise<ImageCandidate[]>;\n    /**\n     * Verify approximation\n     *\n     * Given an image service, it will dereference that image service and compare the result with what\n     * would have been generated if we used internal guessing.\n     *\n     * @param resource\n     * @return Promise<boolean>\n     */\n    verify(resource: ImageServiceRequest): Promise<boolean>;\n    canLoadSync(service: ImageServiceRequest | ImageService | string): boolean;\n    /**\n     * Mark image service as malformed\n     *\n     * If you run into issues requesting images, you can mark an image service as malformed, and it will\n     * return you a new one. Future image services will also be requested fresh, and the system will have\n     * failed. Report a bug if this happens.\n     *\n     * @param resource\n     */\n    markAsMalformed(resource: ImageServiceRequest): Promise<ImageService>;\n    /**\n     * Fetch an image service (use loadService instead)\n     *\n     * @param serviceId\n     * @param forceFresh\n     */\n    fetchService(serviceId: string, forceFresh?: boolean): Promise<ImageService & {\n        real: boolean;\n    }>;\n    fetch(input: RequestInfo, init?: RequestInit): Promise<Response>;\n    /**\n     * Load an image service\n     *\n     * @param resource\n     * @param forceFresh\n     *\n     * @todo make this batched, so only the maximum required can be done at once, to allow\n     *       for the prediction engine to kick in.\n     */\n    loadService(resource: ImageServiceRequest, forceFresh?: boolean): Promise<ImageService>;\n    /**\n     * Load service synchronously\n     *\n     * If you know that the image service you are\n     * @param resource\n     */\n    loadServiceSync(resource: ImageServiceRequest): ImageService | null;\n}\nexport {};\n","/**\n * Get image server from ID.\n *\n * Normalises image service URLs to extract identity of the image server.\n *\n * @param url\n */\nexport declare function getImageServerFromId(url: string): string;\n","import { ImageTile } from '@iiif/presentation-3';\nexport declare function sampledTilesToTiles(width: number, height: number, sampledTiles: ImageTile[]): ImageTile[];\n","import { ImageCandidate, ImageCandidateRequest } from './types';\n/**\n * Pick best from candidates\n *\n * Takes in a list of candidate lists. The order should be in preference. This algorithm will try to pick\n * from the first list, with a best fit size. If not it will fallback to the other lists. It may come back\n * around to the first list and provide a fallback.\n *\n * @param inputRequest\n * @param candidates\n */\nexport declare function pickBestFromCandidates(inputRequest: ImageCandidateRequest, candidates: Array<() => ImageCandidate[]>): {\n    best: ImageCandidate | null;\n    fallback: ImageCandidate[];\n    log: string[];\n};\n","import { FixedSizeImage, ImageCandidateRequest } from './types';\nexport declare function isBestMatch(request: Required<ImageCandidateRequest>, current: FixedSizeImage | null, candidate: FixedSizeImage): boolean;\n","import { ImageServiceLoader } from './image-service-loader';\nimport { Emitter } from 'mitt';\nimport { ImageService } from '@iiif/presentation-3';\nexport type LoadImageServiceDetail = {\n    width: number;\n    height: number;\n    force?: boolean;\n};\nexport interface ImageServiceStore {\n    loaded: Record<string, {\n        status: 'loading' | 'done' | 'error';\n        service: ImageService | null;\n        error?: boolean;\n        errorMesage?: string;\n        real?: boolean;\n    }>;\n    loadServiceSync: (service: ImageService, detail?: LoadImageServiceDetail, backgroundRequest?: boolean) => ImageService | null;\n    loadService: (service: ImageService, detail?: LoadImageServiceDetail) => Promise<ImageService | null>;\n}\nexport interface ImageServiceStoreOptions {\n    loader?: ImageServiceLoader;\n    events?: Emitter<ImageServiceStoreEvents>;\n}\nexport type ImageServiceStoreEvents = {\n    'image-service.loaded': {\n        id: string;\n        service: ImageService | null;\n    };\n    'image-service.loading': {\n        id: string;\n    };\n    'image-service.error': {\n        id: string;\n        error: Error;\n    };\n};\nexport declare function createImageServiceStore(options?: ImageServiceStoreOptions): {\n    store: import(\"zustand/vanilla\").StoreApi<ImageServiceStore>;\n    events: Emitter<ImageServiceStoreEvents>;\n};\nexport declare const imageServices: {\n    store: import(\"zustand/vanilla\").StoreApi<ImageServiceStore>;\n    events: Emitter<ImageServiceStoreEvents>;\n};\n","import { FixedSizeImage, FixedSizeImageService } from './types';\nexport declare function getImageFromTileSource(image: FixedSizeImageService, targetWidth: number, targetHeight?: number): FixedSizeImage;\n","import { ContentResource } from '@iiif/presentation-3';\nimport { ImageServiceLoader } from './image-service-loader';\nimport { ImageCandidate } from './types';\n/**\n * Get image candidates\n *\n * Given an unknown resource, and optionally an image service loader, it will\n * try to get all of the possible options for images at a specific size.\n *\n * Note: if you are wanting to depend on external web resources, then you have\n * to either preload these, or prepare the image loader for predicting them.\n *\n * @param unknownResource\n * @param dereference\n * @param loader\n */\nexport declare function getImageCandidates(unknownResource: ContentResource, dereference: boolean | undefined, loader: ImageServiceLoader): ImageCandidate[];\n","import { ImageService } from '@iiif/presentation-3';\nimport { ImageCandidate } from './types';\nexport declare function getImageCandidatesFromService(service: ImageService[]): ImageCandidate[];\n","import { Service } from '@iiif/presentation-3';\nimport { FixedSizeImageService } from './types';\n/**\n * Get fixed sizes from service.\n *\n * Given an image service, this will extract the images from the sizes field of\n * the service. These are usually cached and great options for thumbnails.\n *\n * @param service\n */\nexport declare function getFixedSizesFromService(service: Service): FixedSizeImageService[];\n","export declare function isImage3(service: any): boolean;\n","import { ImageCandidate } from './types';\nimport { ImageService } from '@iiif/presentation-3';\n/**\n * Get custom size from service\n *\n * Given an image service – usually a full one, de-referenced or embedded – this\n * will return a list of available image sizes (min and max width and height) that\n * can be used to construct a IIIF query to get an image at any size within those\n * bounds. This is only supported by some image services. If unsupported, this will\n * return an empty list.\n *\n * @param service\n */\nexport declare function getCustomSizeFromService(service: ImageService): ImageCandidate[];\n","import { ContentResource } from '@iiif/presentation-3';\nimport { ImageCandidate } from './types';\n/**\n * Get fixed size from image\n *\n * Given a content resource, usually the body of a painting annotation, this will\n * return the URL to the image, and the height and width. The resource may also\n * be a string / direct link to the image. The height and width may be inferred from\n * a IIIF Image API endpoint, otherwise the return image candidate will have a type\n * of unknown.\n *\n * @param contentResource\n */\nexport declare function getFixedSizeFromImage(contentResource: ContentResource | string): ImageCandidate | null;\n","import { ImageCandidate } from './types';\n/**\n * Extracts the height and width from an image URL\n *\n * @param image\n */\nexport declare function inferImageSizeFromUrl(image: string): ImageCandidate;\n","import { ImageSize } from '@iiif/presentation-3';\nexport declare function imageSizesMatch(sizesA: ImageSize[], sizesB: ImageSize[]): boolean;\n","import { ImageService } from '@iiif/presentation-3';\nimport { FixedSizeImageService } from './types';\n/**\n * Returns a fixed size image using the tile using the largest available size,\n * or the smallest scale factor.\n *\n * @param service\n */\nexport declare function getSmallestScaleFactorAsSingleImage(service: ImageService): FixedSizeImageService | null;\n"],"mappings":"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"}