/**
 * @fileoverview Knowledge Hub Tag Cloud (Visualize > Tag Cloud mode)
 *
 * Renders a weighted tag cloud via `@memberjunction/ng-word-cloud`'s
 * `MJWordCloudComponent`, driven by `TagCloudEngine.Instance.GetTagCloud(...)`.
 *
 * Provides a scope picker (Content Source / Content Type / Tag root) plus a
 * sizing control. Loads on init and whenever the scope changes. Emits a
 * `TagSelected` intent up to the host so the shared record-drilldown panel can
 * be populated by the host (this component never touches NavigationService).
 */
import { EventEmitter, OnInit } from '@angular/core';
import { IMetadataProvider } from '@memberjunction/core';
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
import { TagCloudScope } from '@memberjunction/tag-engine-base';
import { WordCloudItem, WordCloudItemEvent } from '@memberjunction/ng-word-cloud';
import * as i0 from "@angular/core";
/** A selectable scope option (content source / content type / tag root). */
interface ScopeOption {
    ID: string;
    Name: string;
}
/**
 * Emitted when the user clicks a tag word. The host resolves this into the
 * shared drilldown panel (records carrying the tag).
 */
export interface TagCloudSelection {
    /** The clicked tag's text. */
    Tag: string;
    /** Raw frequency count carried from TagCloudItem. */
    Count: number;
    /** The scope currently applied (so the host can scope the drilldown query). */
    Scope: TagCloudScope;
}
export declare class TagCloudComponent extends BaseAngularComponent implements OnInit {
    private cdr;
    /** Re-declared so the host can bind `[Provider]` and we thread it through. */
    Provider: IMetadataProvider | null;
    /** Emitted when a tag word is clicked. */
    TagSelected: EventEmitter<TagCloudSelection>;
    IsLoading: boolean;
    Items: WordCloudItem[];
    /** Scope picker options. */
    ContentSourceOptions: ScopeOption[];
    ContentTypeOptions: ScopeOption[];
    TagRootOptions: ScopeOption[];
    /** Current scope selections (empty string = "All"). */
    SelectedContentSourceID: string;
    SelectedContentTypeID: string;
    SelectedTagRootID: string;
    /** Sizing: maximum font size driven by weight. */
    MaxFontSize: number;
    MinFontSize: number;
    /** Color mode passed to the word cloud. */
    ColorMode: 'brand' | 'categorical' | 'weight-gradient';
    ngOnInit(): Promise<void>;
    /** Re-load the cloud for the current scope. Called on init + scope change. */
    LoadCloud(): Promise<void>;
    /** Reload after any scope dropdown change. */
    OnScopeChanged(): void;
    /** Apply a new max font size (sizing-by-weight control). */
    OnSizeChanged(value: number): void;
    /** Clear all scope filters and reload. */
    ClearScope(): void;
    get HasActiveScope(): boolean;
    get HasItems(): boolean;
    /** Word-cloud click handler — emits a selection up to the host. */
    OnWordClicked(event: WordCloudItemEvent): void;
    /** Build the current TagCloudScope from the picker selections. */
    BuildScope(): TagCloudScope;
    /** Map an engine TagCloudItem to a word-cloud WordCloudItem (Count → Metadata). */
    private toWordCloudItem;
    /** Populate scope-picker options from the KH + Tag engines. */
    private loadScopeOptions;
    static ɵfac: i0.ɵɵFactoryDeclaration<TagCloudComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TagCloudComponent, "app-kh-tag-cloud", never, { "Provider": { "alias": "Provider"; "required": false; }; }, { "TagSelected": "TagSelected"; }, never, never, false, never>;
}
/** Tree-shaking prevention */
export declare function LoadTagCloudComponent(): void;
export {};
//# sourceMappingURL=tag-cloud.component.d.ts.map