Member Junction
    Preparing search index...

    Inline preview for image artifacts. Renders a single contained <img> (max 140px tall) inside the conversation message card. Read-only — no toolbar, no zoom, no download. Clicking it bubbles up through the card's clickable wrapper to open the full-size image viewer.

    Height note: this is a thumbnail, not the full view — kept deliberately compact (140px) so a message with an image artifact doesn't dominate the conversation. max-width: 100% (rather than a fixed width) is the only width constraint, so the aspect ratio is preserved and portrait images aren't distorted; the height cap is the single lever for overall size. Kept in sync with the video preview's cap so both visual media previews stay visually consistent.

    Loading: the component has THREE states, not two. resolveContentUrl() is async, and an inline data: URI — what MJ stores whenever no file storage account is configured — can be several MB that the browser still has to decode after the src is assigned. With only error and loaded branches the element rendered nothing at all through both windows, so a generated image read as "never arrived" and then appeared unannounced seconds later.

    Hierarchy (View Summary)

    Implements

    • OnInit
    Index

    Constructors

    Properties

    artifactVersion: MJArtifactVersionEntity

    The artifact version to preview. Set by the resolver before the component renders.

    errorMessage: string = ''

    Non-empty hides the image and shows a compact error line.

    fileService: ArtifactFileService = ...

    Shared service used by both previews and full viewers to fetch file-mode download URLs.

    imagePainted: boolean = false

    Has the browser painted the image? Distinct from the base class's isLoading, which covers URL resolution: for a multi-megabyte inline data: URI the decode after src is assigned is what the user actually waits on, so the indicator holds until the load event.

    imageUrl: string = ''

    Resolved URL bound to <img src> — data URI (inline) or pre-auth URL (file).

    isLoading: boolean = true

    True until resolveContentUrl has settled, one way or the other.

    Owned here, not per subclass, so that every media preview has a loading state by construction. Each preview used to carry its own copy of this flag — or, before that, no loading branch at all, which rendered nothing while the URL resolved and made a generated image read as "never arrived". resolveContentUrl is async even for inline content, and for ContentMode === 'File' it is a network round trip before the media fetch even starts.

    Provider: IMetadataProvider | null

    If specified, this provider will be used for communication and for all metadata purposes. By default, if not provided, the Metadata and RunView classes are used for this and the default GraphQLDataProvider is used which is connected to the same back-end MJAPI instance as the Metadata and RunView classes. If you want to have this component connect to a different MJAPI back-end, create an instance of a ProviderBase sub-class like GraphQLDataProvider/etc, and configure it as appropriate to connect to the MJAPI back-end you want to use, and then pass it in here.

    "ɵdir": unknown
    "ɵfac": ɵɵFactoryDeclaration<BaseAngularComponent, never>

    Accessors

    • get ProviderToUse(): IMetadataProvider

      Returns either the default Metadata provider or the one specified in the Provider property, if it was specified

      Returns IMetadataProvider

    • get RunQueryToUse(): IRunQueryProvider

      Returns either the default RunQuery provider or the one specified in the Provider property, if it was specified

      Returns IRunQueryProvider

    • get RunViewToUse(): IRunViewProvider

      Returns either the default RunView provider or the one specified in the Provider property, if it was specified

      Returns IRunViewProvider

    Methods

    • A callback method that is invoked immediately after the default change detector has checked the directive's data-bound properties for the first time, and before any of the view or content children have been checked. It is invoked only once when the directive is instantiated.

      Returns Promise<void>

    • Resolve a URL to bind to a media element (<img>, <video>, <audio>):

      • ContentMode === 'File' → fetch a pre-authenticated download URL from MJStorage.
      • otherwise ('Text') → Content is already a data:<mime>;base64,… URI; bind directly.

      Returns null when there is no usable content (caller should show its own empty/error state). Clears isLoading on every exit, including a throw, so a subclass cannot leave the indicator spinning beside an error.

      Returns Promise<string | null>