/**
 * @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 { Component, Input, Output, EventEmitter, ChangeDetectorRef, inject, } from '@angular/core';
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
import { TagCloudEngine, } from '@memberjunction/tag-engine-base';
import { TagEngineBase } from '@memberjunction/tag-engine-base';
import { KnowledgeHubMetadataEngine } from '@memberjunction/core-entities';
import * as i0 from "@angular/core";
import * as i1 from "@angular/forms";
import * as i2 from "@memberjunction/ng-shared-generic";
import * as i3 from "@memberjunction/ng-ui-components";
import * as i4 from "@memberjunction/ng-word-cloud";
const _forTrack0 = ($index, $item) => $item.ID;
function TagCloudComponent_For_9_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "option", 5);
    i0.ɵɵtext(1);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const opt_r1 = ctx.$implicit;
    i0.ɵɵproperty("value", opt_r1.ID);
    i0.ɵɵadvance();
    i0.ɵɵtextInterpolate(opt_r1.Name);
} }
function TagCloudComponent_For_17_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "option", 5);
    i0.ɵɵtext(1);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const opt_r2 = ctx.$implicit;
    i0.ɵɵproperty("value", opt_r2.ID);
    i0.ɵɵadvance();
    i0.ɵɵtextInterpolate(opt_r2.Name);
} }
function TagCloudComponent_For_25_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "option", 5);
    i0.ɵɵtext(1);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const opt_r3 = ctx.$implicit;
    i0.ɵɵproperty("value", opt_r3.ID);
    i0.ɵɵadvance();
    i0.ɵɵtextInterpolate(opt_r3.Name);
} }
function TagCloudComponent_Conditional_30_Template(rf, ctx) { if (rf & 1) {
    const _r4 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "button", 13);
    i0.ɵɵlistener("click", function TagCloudComponent_Conditional_30_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.ClearScope()); });
    i0.ɵɵelement(1, "i", 14);
    i0.ɵɵtext(2, " Clear ");
    i0.ɵɵelementEnd();
} }
function TagCloudComponent_Conditional_32_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelement(0, "mj-loading", 10);
} }
function TagCloudComponent_Conditional_33_Template(rf, ctx) { if (rf & 1) {
    const _r6 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "mj-empty-state", 15);
    i0.ɵɵlistener("Action", function TagCloudComponent_Conditional_33_Template_mj_empty_state_Action_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.ClearScope()); });
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const ctx_r4 = i0.ɵɵnextContext();
    i0.ɵɵproperty("Variant", ctx_r4.HasActiveScope ? "no-results" : "empty")("ActionText", ctx_r4.HasActiveScope ? "Clear filters" : "");
} }
function TagCloudComponent_Conditional_34_Template(rf, ctx) { if (rf & 1) {
    const _r7 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "mj-word-cloud", 16);
    i0.ɵɵlistener("ItemClick", function TagCloudComponent_Conditional_34_Template_mj_word_cloud_ItemClick_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.OnWordClicked($event)); });
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const ctx_r4 = i0.ɵɵnextContext();
    i0.ɵɵproperty("Items", ctx_r4.Items)("MinFontSize", ctx_r4.MinFontSize)("MaxFontSize", ctx_r4.MaxFontSize)("ColorMode", ctx_r4.ColorMode)("Interactive", true);
} }
export class TagCloudComponent extends BaseAngularComponent {
    cdr = inject(ChangeDetectorRef);
    /** Re-declared so the host can bind `[Provider]` and we thread it through. */
    Provider = null;
    /** Emitted when a tag word is clicked. */
    TagSelected = new EventEmitter();
    // ================================================================
    // State
    // ================================================================
    IsLoading = true;
    Items = [];
    /** Scope picker options. */
    ContentSourceOptions = [];
    ContentTypeOptions = [];
    TagRootOptions = [];
    /** Current scope selections (empty string = "All"). */
    SelectedContentSourceID = '';
    SelectedContentTypeID = '';
    SelectedTagRootID = '';
    /** Sizing: maximum font size driven by weight. */
    MaxFontSize = 56;
    MinFontSize = 14;
    /** Color mode passed to the word cloud. */
    ColorMode = 'weight-gradient';
    // ================================================================
    // Lifecycle
    // ================================================================
    async ngOnInit() {
        await this.loadScopeOptions();
        await this.LoadCloud();
    }
    // ================================================================
    // Public Methods
    // ================================================================
    /** Re-load the cloud for the current scope. Called on init + scope change. */
    async LoadCloud() {
        this.IsLoading = true;
        this.cdr.detectChanges();
        try {
            const scope = this.BuildScope();
            const provider = this.ProviderToUse;
            const items = await TagCloudEngine.Instance.GetTagCloud(scope, { Limit: 150, MinWeight: 0 }, provider.CurrentUser, provider);
            this.Items = items.map(item => this.toWordCloudItem(item));
        }
        catch (error) {
            console.error('[TagCloud] Error loading tag cloud:', error);
            this.Items = [];
        }
        finally {
            this.IsLoading = false;
            this.cdr.detectChanges();
        }
    }
    /** Reload after any scope dropdown change. */
    OnScopeChanged() {
        void this.LoadCloud();
    }
    /** Apply a new max font size (sizing-by-weight control). */
    OnSizeChanged(value) {
        this.MaxFontSize = value;
        this.cdr.detectChanges();
    }
    /** Clear all scope filters and reload. */
    ClearScope() {
        this.SelectedContentSourceID = '';
        this.SelectedContentTypeID = '';
        this.SelectedTagRootID = '';
        void this.LoadCloud();
    }
    get HasActiveScope() {
        return !!(this.SelectedContentSourceID || this.SelectedContentTypeID || this.SelectedTagRootID);
    }
    get HasItems() {
        return this.Items.length > 0;
    }
    /** Word-cloud click handler — emits a selection up to the host. */
    OnWordClicked(event) {
        const count = Number(event.Item.Metadata?.['Count'] ?? 0);
        this.TagSelected.emit({
            Tag: event.Item.Text,
            Count: count,
            Scope: this.BuildScope(),
        });
    }
    /** Build the current TagCloudScope from the picker selections. */
    BuildScope() {
        const scope = {};
        if (this.SelectedContentSourceID) {
            scope.ContentSourceIDs = [this.SelectedContentSourceID];
        }
        if (this.SelectedContentTypeID) {
            scope.ContentTypeIDs = [this.SelectedContentTypeID];
        }
        if (this.SelectedTagRootID) {
            scope.TagRootIDs = [this.SelectedTagRootID];
        }
        return scope;
    }
    // ================================================================
    // Private Methods
    // ================================================================
    /** Map an engine TagCloudItem to a word-cloud WordCloudItem (Count → Metadata). */
    toWordCloudItem(item) {
        return {
            Text: item.Text,
            Weight: item.Weight,
            Metadata: { Count: item.Count },
        };
    }
    /** Populate scope-picker options from the KH + Tag engines. */
    async loadScopeOptions() {
        try {
            const provider = this.ProviderToUse;
            const khEngine = KnowledgeHubMetadataEngine.Instance;
            await khEngine.Config(false, provider.CurrentUser, provider);
            this.ContentSourceOptions = khEngine.ContentSources
                .map(s => ({ ID: s.ID, Name: s.Name ?? 'Untitled' }))
                .sort((a, b) => a.Name.localeCompare(b.Name));
            this.ContentTypeOptions = khEngine.ContentTypes
                .map(t => ({ ID: t.ID, Name: t.Name ?? 'Untitled' }))
                .sort((a, b) => a.Name.localeCompare(b.Name));
            const tagEngine = TagEngineBase.Instance;
            await tagEngine.Config(false, provider.CurrentUser, provider);
            this.TagRootOptions = tagEngine.Tags
                .filter(t => !t.ParentID)
                .map(t => ({ ID: t.ID, Name: t.DisplayName || t.Name }))
                .sort((a, b) => a.Name.localeCompare(b.Name));
        }
        catch (error) {
            console.warn('[TagCloud] Error loading scope options:', error);
        }
        this.cdr.detectChanges();
    }
    static ɵfac = /*@__PURE__*/ (() => { let ɵTagCloudComponent_BaseFactory; return function TagCloudComponent_Factory(__ngFactoryType__) { return (ɵTagCloudComponent_BaseFactory || (ɵTagCloudComponent_BaseFactory = i0.ɵɵgetInheritedFactory(TagCloudComponent)))(__ngFactoryType__ || TagCloudComponent); }; })();
    static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TagCloudComponent, selectors: [["app-kh-tag-cloud"]], inputs: { Provider: "Provider" }, outputs: { TagSelected: "TagSelected" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 35, vars: 7, consts: [[1, "tag-cloud-container"], [1, "tag-cloud-toolbar"], [1, "scope-field"], [1, "mj-input", 3, "ngModelChange", "ngModel"], ["value", ""], [3, "value"], [1, "scope-field", "size-field"], ["type", "range", "min", "28", "max", "96", "step", "4", 3, "input", "value"], ["mjButton", "", "variant", "flat", "size", "sm"], [1, "tag-cloud-area"], ["text", "Building tag cloud..."], ["Icon", "fa-solid fa-tags", "Title", "No tags found for the current scope", "ActionIcon", "fa-solid fa-rotate-left", "ActionVariant", "outline", 1, "tag-cloud-empty", 3, "Variant", "ActionText"], [3, "Items", "MinFontSize", "MaxFontSize", "ColorMode", "Interactive"], ["mjButton", "", "variant", "flat", "size", "sm", 3, "click"], [1, "fa-solid", "fa-filter-circle-xmark"], ["Icon", "fa-solid fa-tags", "Title", "No tags found for the current scope", "ActionIcon", "fa-solid fa-rotate-left", "ActionVariant", "outline", 1, "tag-cloud-empty", 3, "Action", "Variant", "ActionText"], [3, "ItemClick", "Items", "MinFontSize", "MaxFontSize", "ColorMode", "Interactive"]], template: function TagCloudComponent_Template(rf, ctx) { if (rf & 1) {
            i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "label");
            i0.ɵɵtext(4, "Content Source");
            i0.ɵɵelementEnd();
            i0.ɵɵelementStart(5, "select", 3);
            i0.ɵɵtwoWayListener("ngModelChange", function TagCloudComponent_Template_select_ngModelChange_5_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.SelectedContentSourceID, $event) || (ctx.SelectedContentSourceID = $event); return $event; });
            i0.ɵɵlistener("ngModelChange", function TagCloudComponent_Template_select_ngModelChange_5_listener() { return ctx.OnScopeChanged(); });
            i0.ɵɵelementStart(6, "option", 4);
            i0.ɵɵtext(7, "All Sources");
            i0.ɵɵelementEnd();
            i0.ɵɵrepeaterCreate(8, TagCloudComponent_For_9_Template, 2, 2, "option", 5, _forTrack0);
            i0.ɵɵelementEnd()();
            i0.ɵɵelementStart(10, "div", 2)(11, "label");
            i0.ɵɵtext(12, "Content Type");
            i0.ɵɵelementEnd();
            i0.ɵɵelementStart(13, "select", 3);
            i0.ɵɵtwoWayListener("ngModelChange", function TagCloudComponent_Template_select_ngModelChange_13_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.SelectedContentTypeID, $event) || (ctx.SelectedContentTypeID = $event); return $event; });
            i0.ɵɵlistener("ngModelChange", function TagCloudComponent_Template_select_ngModelChange_13_listener() { return ctx.OnScopeChanged(); });
            i0.ɵɵelementStart(14, "option", 4);
            i0.ɵɵtext(15, "All Types");
            i0.ɵɵelementEnd();
            i0.ɵɵrepeaterCreate(16, TagCloudComponent_For_17_Template, 2, 2, "option", 5, _forTrack0);
            i0.ɵɵelementEnd()();
            i0.ɵɵelementStart(18, "div", 2)(19, "label");
            i0.ɵɵtext(20, "Tag Root");
            i0.ɵɵelementEnd();
            i0.ɵɵelementStart(21, "select", 3);
            i0.ɵɵtwoWayListener("ngModelChange", function TagCloudComponent_Template_select_ngModelChange_21_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.SelectedTagRootID, $event) || (ctx.SelectedTagRootID = $event); return $event; });
            i0.ɵɵlistener("ngModelChange", function TagCloudComponent_Template_select_ngModelChange_21_listener() { return ctx.OnScopeChanged(); });
            i0.ɵɵelementStart(22, "option", 4);
            i0.ɵɵtext(23, "All Tags");
            i0.ɵɵelementEnd();
            i0.ɵɵrepeaterCreate(24, TagCloudComponent_For_25_Template, 2, 2, "option", 5, _forTrack0);
            i0.ɵɵelementEnd()();
            i0.ɵɵelementStart(26, "div", 6)(27, "label");
            i0.ɵɵtext(28);
            i0.ɵɵelementEnd();
            i0.ɵɵelementStart(29, "input", 7);
            i0.ɵɵlistener("input", function TagCloudComponent_Template_input_input_29_listener($event) { return ctx.OnSizeChanged($event.target.valueAsNumber); });
            i0.ɵɵelementEnd()();
            i0.ɵɵconditionalCreate(30, TagCloudComponent_Conditional_30_Template, 3, 0, "button", 8);
            i0.ɵɵelementEnd();
            i0.ɵɵelementStart(31, "div", 9);
            i0.ɵɵconditionalCreate(32, TagCloudComponent_Conditional_32_Template, 1, 0, "mj-loading", 10)(33, TagCloudComponent_Conditional_33_Template, 1, 2, "mj-empty-state", 11)(34, TagCloudComponent_Conditional_34_Template, 1, 5, "mj-word-cloud", 12);
            i0.ɵɵelementEnd()();
        } if (rf & 2) {
            i0.ɵɵadvance(5);
            i0.ɵɵtwoWayProperty("ngModel", ctx.SelectedContentSourceID);
            i0.ɵɵadvance(3);
            i0.ɵɵrepeater(ctx.ContentSourceOptions);
            i0.ɵɵadvance(5);
            i0.ɵɵtwoWayProperty("ngModel", ctx.SelectedContentTypeID);
            i0.ɵɵadvance(3);
            i0.ɵɵrepeater(ctx.ContentTypeOptions);
            i0.ɵɵadvance(5);
            i0.ɵɵtwoWayProperty("ngModel", ctx.SelectedTagRootID);
            i0.ɵɵadvance(3);
            i0.ɵɵrepeater(ctx.TagRootOptions);
            i0.ɵɵadvance(4);
            i0.ɵɵtextInterpolate1("Max Size: ", ctx.MaxFontSize, "px");
            i0.ɵɵadvance();
            i0.ɵɵproperty("value", ctx.MaxFontSize);
            i0.ɵɵadvance();
            i0.ɵɵconditional(ctx.HasActiveScope ? 30 : -1);
            i0.ɵɵadvance(2);
            i0.ɵɵconditional(ctx.IsLoading ? 32 : !ctx.HasItems ? 33 : 34);
        } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.LoadingComponent, i3.MJButtonDirective, i3.MJEmptyStateComponent, i4.MJWordCloudComponent], styles: ["[_nghost-%COMP%] {\n  display: block;\n  height: 100%;\n}\n\n.tag-cloud-container[_ngcontent-%COMP%] {\n  display: flex;\n  flex-direction: column;\n  height: 100%;\n  min-height: 0;\n}\n\n.tag-cloud-toolbar[_ngcontent-%COMP%] {\n  display: flex;\n  align-items: flex-end;\n  flex-wrap: wrap;\n  gap: 16px;\n  padding: 12px 16px;\n  border-bottom: 1px solid var(--mj-border-default);\n  background: var(--mj-bg-surface-card);\n}\n\n.scope-field[_ngcontent-%COMP%] {\n  display: flex;\n  flex-direction: column;\n  gap: 4px;\n  min-width: 160px;\n}\n\n.scope-field[_ngcontent-%COMP%]   label[_ngcontent-%COMP%] {\n  font-size: 12px;\n  font-weight: 600;\n  color: var(--mj-text-secondary);\n}\n\n.scope-field[_ngcontent-%COMP%]   select[_ngcontent-%COMP%] {\n  min-width: 160px;\n}\n\n.size-field[_ngcontent-%COMP%] {\n  min-width: 180px;\n}\n\n.size-field[_ngcontent-%COMP%]   input[type=\"range\"][_ngcontent-%COMP%] {\n  width: 100%;\n  accent-color: var(--mj-brand-primary);\n}\n\n.tag-cloud-area[_ngcontent-%COMP%] {\n  flex: 1;\n  min-height: 0;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  padding: 24px;\n  overflow: hidden;\n}\n\n.tag-cloud-area[_ngcontent-%COMP%]   mj-word-cloud[_ngcontent-%COMP%] {\n  width: 100%;\n  height: 100%;\n}\n\n.tag-cloud-empty[_ngcontent-%COMP%] {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  gap: 12px;\n  color: var(--mj-text-muted);\n  text-align: center;\n}\n\n.tag-cloud-empty[_ngcontent-%COMP%]    > i[_ngcontent-%COMP%] {\n  font-size: 40px;\n  opacity: 0.5;\n}"] });
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TagCloudComponent, [{
        type: Component,
        args: [{ standalone: false, selector: 'app-kh-tag-cloud', template: "<div class=\"tag-cloud-container\">\n  <!-- Scope picker / sizing toolbar -->\n  <div class=\"tag-cloud-toolbar\">\n    <div class=\"scope-field\">\n      <label>Content Source</label>\n      <select class=\"mj-input\" [(ngModel)]=\"SelectedContentSourceID\" (ngModelChange)=\"OnScopeChanged()\">\n        <option value=\"\">All Sources</option>\n        @for (opt of ContentSourceOptions; track opt.ID) {\n          <option [value]=\"opt.ID\">{{ opt.Name }}</option>\n        }\n      </select>\n    </div>\n\n    <div class=\"scope-field\">\n      <label>Content Type</label>\n      <select class=\"mj-input\" [(ngModel)]=\"SelectedContentTypeID\" (ngModelChange)=\"OnScopeChanged()\">\n        <option value=\"\">All Types</option>\n        @for (opt of ContentTypeOptions; track opt.ID) {\n          <option [value]=\"opt.ID\">{{ opt.Name }}</option>\n        }\n      </select>\n    </div>\n\n    <div class=\"scope-field\">\n      <label>Tag Root</label>\n      <select class=\"mj-input\" [(ngModel)]=\"SelectedTagRootID\" (ngModelChange)=\"OnScopeChanged()\">\n        <option value=\"\">All Tags</option>\n        @for (opt of TagRootOptions; track opt.ID) {\n          <option [value]=\"opt.ID\">{{ opt.Name }}</option>\n        }\n      </select>\n    </div>\n\n    <div class=\"scope-field size-field\">\n      <label>Max Size: {{ MaxFontSize }}px</label>\n      <input type=\"range\" min=\"28\" max=\"96\" step=\"4\"\n             [value]=\"MaxFontSize\"\n             (input)=\"OnSizeChanged($any($event.target).valueAsNumber)\" />\n    </div>\n\n    @if (HasActiveScope) {\n      <button mjButton variant=\"flat\" size=\"sm\" (click)=\"ClearScope()\">\n        <i class=\"fa-solid fa-filter-circle-xmark\"></i> Clear\n      </button>\n    }\n  </div>\n\n  <!-- Cloud area -->\n  <div class=\"tag-cloud-area\">\n    @if (IsLoading) {\n      <mj-loading text=\"Building tag cloud...\"></mj-loading>\n    } @else if (!HasItems) {\n      <mj-empty-state class=\"tag-cloud-empty\"\n        [Variant]=\"HasActiveScope ? 'no-results' : 'empty'\"\n        Icon=\"fa-solid fa-tags\"\n        Title=\"No tags found for the current scope\"\n        [ActionText]=\"HasActiveScope ? 'Clear filters' : ''\"\n        ActionIcon=\"fa-solid fa-rotate-left\"\n        ActionVariant=\"outline\"\n        (Action)=\"ClearScope()\" />\n    } @else {\n      <mj-word-cloud\n        [Items]=\"Items\"\n        [MinFontSize]=\"MinFontSize\"\n        [MaxFontSize]=\"MaxFontSize\"\n        [ColorMode]=\"ColorMode\"\n        [Interactive]=\"true\"\n        (ItemClick)=\"OnWordClicked($event)\">\n      </mj-word-cloud>\n    }\n  </div>\n</div>\n", styles: [":host {\n  display: block;\n  height: 100%;\n}\n\n.tag-cloud-container {\n  display: flex;\n  flex-direction: column;\n  height: 100%;\n  min-height: 0;\n}\n\n.tag-cloud-toolbar {\n  display: flex;\n  align-items: flex-end;\n  flex-wrap: wrap;\n  gap: 16px;\n  padding: 12px 16px;\n  border-bottom: 1px solid var(--mj-border-default);\n  background: var(--mj-bg-surface-card);\n}\n\n.scope-field {\n  display: flex;\n  flex-direction: column;\n  gap: 4px;\n  min-width: 160px;\n}\n\n.scope-field label {\n  font-size: 12px;\n  font-weight: 600;\n  color: var(--mj-text-secondary);\n}\n\n.scope-field select {\n  min-width: 160px;\n}\n\n.size-field {\n  min-width: 180px;\n}\n\n.size-field input[type=\"range\"] {\n  width: 100%;\n  accent-color: var(--mj-brand-primary);\n}\n\n.tag-cloud-area {\n  flex: 1;\n  min-height: 0;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  padding: 24px;\n  overflow: hidden;\n}\n\n.tag-cloud-area mj-word-cloud {\n  width: 100%;\n  height: 100%;\n}\n\n.tag-cloud-empty {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  gap: 12px;\n  color: var(--mj-text-muted);\n  text-align: center;\n}\n\n.tag-cloud-empty > i {\n  font-size: 40px;\n  opacity: 0.5;\n}\n"] }]
    }], null, { Provider: [{
            type: Input
        }], TagSelected: [{
            type: Output
        }] }); })();
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TagCloudComponent, { className: "TagCloudComponent", filePath: "src/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.ts", lineNumber: 58 }); })();
/** Tree-shaking prevention */
export function LoadTagCloudComponent() {
    // Prevents tree-shaking of the component
}
//# sourceMappingURL=tag-cloud.component.js.map