import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, HostListener } from '@angular/core';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import * as i0 from "@angular/core";
import * as i1 from "../../services/action-explorer-state.service";
import * as i2 from "@angular/common";
import * as i3 from "@memberjunction/ng-ui-components";
const _c0 = a0 => ({ nodes: a0 });
const _forTrack0 = ($index, $item) => $item.category.ID;
function ActionTreePanelComponent_Conditional_0_Conditional_17_Template(rf, ctx) { if (rf & 1) {
    const _r3 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "button", 32);
    i0.ɵɵlistener("click", function ActionTreePanelComponent_Conditional_0_Conditional_17_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onSearchChange("")); });
    i0.ɵɵelement(1, "i", 33);
    i0.ɵɵelementEnd();
} }
function ActionTreePanelComponent_Conditional_0_Conditional_26_Template(rf, ctx) { if (rf & 1) {
    const _r4 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "div", 34);
    i0.ɵɵlistener("click", function ActionTreePanelComponent_Conditional_0_Conditional_26_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.selectCategory("uncategorized")); });
    i0.ɵɵelementStart(1, "span", 21);
    i0.ɵɵelement(2, "i", 35);
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(3, "span", 23);
    i0.ɵɵtext(4, "Uncategorized");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(5, "span", 24);
    i0.ɵɵtext(6);
    i0.ɵɵelementEnd()();
} if (rf & 2) {
    const ctx_r1 = i0.ɵɵnextContext(2);
    i0.ɵɵclassProp("selected", ctx_r1.isSelected("uncategorized"));
    i0.ɵɵadvance(6);
    i0.ɵɵtextInterpolate(ctx_r1.getUncategorizedCount());
} }
function ActionTreePanelComponent_Conditional_0_ng_container_28_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementContainer(0);
} }
function ActionTreePanelComponent_Conditional_0_ng_template_29_For_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
    const _r7 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "button", 46);
    i0.ɵɵlistener("click", function ActionTreePanelComponent_Conditional_0_ng_template_29_For_1_Conditional_2_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r7); const node_r6 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.toggleExpanded(node_r6.category.ID, $event)); });
    i0.ɵɵelement(1, "i");
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const node_r6 = i0.ɵɵnextContext().$implicit;
    const ctx_r1 = i0.ɵɵnextContext(3);
    i0.ɵɵproperty("title", ctx_r1.isExpanded(node_r6.category.ID) ? "Collapse" : "Expand");
    i0.ɵɵadvance();
    i0.ɵɵclassMap(ctx_r1.isExpanded(node_r6.category.ID) ? "fa-solid fa-chevron-down" : "fa-solid fa-chevron-right");
} }
function ActionTreePanelComponent_Conditional_0_ng_template_29_For_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelement(0, "span", 40);
} }
function ActionTreePanelComponent_Conditional_0_ng_template_29_For_1_Conditional_13_ng_container_1_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementContainer(0);
} }
function ActionTreePanelComponent_Conditional_0_ng_template_29_For_1_Conditional_13_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 45);
    i0.ɵɵtemplate(1, ActionTreePanelComponent_Conditional_0_ng_template_29_For_1_Conditional_13_ng_container_1_Template, 1, 0, "ng-container", 27);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const node_r6 = i0.ɵɵnextContext().$implicit;
    i0.ɵɵnextContext(2);
    const categoryTreeTemplate_r8 = i0.ɵɵreference(30);
    i0.ɵɵadvance();
    i0.ɵɵproperty("ngTemplateOutlet", categoryTreeTemplate_r8)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, node_r6.children));
} }
function ActionTreePanelComponent_Conditional_0_ng_template_29_For_1_Template(rf, ctx) { if (rf & 1) {
    const _r5 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "div", 37)(1, "div", 38);
    i0.ɵɵlistener("click", function ActionTreePanelComponent_Conditional_0_ng_template_29_For_1_Template_div_click_1_listener() { const node_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.selectCategory(node_r6.category.ID)); });
    i0.ɵɵconditionalCreate(2, ActionTreePanelComponent_Conditional_0_ng_template_29_For_1_Conditional_2_Template, 2, 3, "button", 39)(3, ActionTreePanelComponent_Conditional_0_ng_template_29_For_1_Conditional_3_Template, 1, 0, "span", 40);
    i0.ɵɵelementStart(4, "span", 21);
    i0.ɵɵelement(5, "i");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(6, "span", 41);
    i0.ɵɵtext(7);
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(8, "span", 42);
    i0.ɵɵtext(9);
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(10, "div", 43)(11, "button", 44);
    i0.ɵɵlistener("click", function ActionTreePanelComponent_Conditional_0_ng_template_29_For_1_Template_button_click_11_listener($event) { const node_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onNewCategory(node_r6.category.ID, $event)); });
    i0.ɵɵelement(12, "i", 30);
    i0.ɵɵelementEnd()()();
    i0.ɵɵconditionalCreate(13, ActionTreePanelComponent_Conditional_0_ng_template_29_For_1_Conditional_13_Template, 2, 4, "div", 45);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const node_r6 = ctx.$implicit;
    const ctx_r1 = i0.ɵɵnextContext(3);
    i0.ɵɵstyleProp("--level", node_r6.level);
    i0.ɵɵadvance();
    i0.ɵɵclassProp("selected", ctx_r1.isSelected(node_r6.category.ID))("has-children", node_r6.children.length > 0);
    i0.ɵɵadvance();
    i0.ɵɵconditional(node_r6.children.length > 0 ? 2 : 3);
    i0.ɵɵadvance(3);
    i0.ɵɵclassMap(ctx_r1.isExpanded(node_r6.category.ID) ? "fa-solid fa-folder-open" : "fa-solid fa-folder");
    i0.ɵɵadvance();
    i0.ɵɵproperty("title", node_r6.category.Name);
    i0.ɵɵadvance();
    i0.ɵɵtextInterpolate(node_r6.category.Name);
    i0.ɵɵadvance();
    i0.ɵɵproperty("title", node_r6.totalActionCount + " total actions");
    i0.ɵɵadvance();
    i0.ɵɵtextInterpolate(node_r6.totalActionCount);
    i0.ɵɵadvance(4);
    i0.ɵɵconditional(node_r6.children.length > 0 && ctx_r1.isExpanded(node_r6.category.ID) ? 13 : -1);
} }
function ActionTreePanelComponent_Conditional_0_ng_template_29_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵrepeaterCreate(0, ActionTreePanelComponent_Conditional_0_ng_template_29_For_1_Template, 14, 14, "div", 36, _forTrack0);
} if (rf & 2) {
    const nodes_r9 = ctx.nodes;
    i0.ɵɵrepeater(nodes_r9);
} }
function ActionTreePanelComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
    const _r1 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "div", 3)(1, "div", 4)(2, "div", 5)(3, "h3");
    i0.ɵɵelement(4, "i", 6);
    i0.ɵɵtext(5, " Categories");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(6, "div", 7)(7, "button", 8);
    i0.ɵɵlistener("click", function ActionTreePanelComponent_Conditional_0_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.expandAll()); });
    i0.ɵɵelement(8, "i", 9);
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(9, "button", 10);
    i0.ɵɵlistener("click", function ActionTreePanelComponent_Conditional_0_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.collapseAll()); });
    i0.ɵɵelement(10, "i", 11);
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(11, "button", 12);
    i0.ɵɵlistener("click", function ActionTreePanelComponent_Conditional_0_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleCollapse()); });
    i0.ɵɵelement(12, "i", 13);
    i0.ɵɵelementEnd()()();
    i0.ɵɵelementStart(13, "div", 14)(14, "div", 15);
    i0.ɵɵelement(15, "i", 16);
    i0.ɵɵelementStart(16, "input", 17);
    i0.ɵɵlistener("input", function ActionTreePanelComponent_Conditional_0_Template_input_input_16_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSearchChange($event.target.value)); });
    i0.ɵɵelementEnd();
    i0.ɵɵconditionalCreate(17, ActionTreePanelComponent_Conditional_0_Conditional_17_Template, 2, 0, "button", 18);
    i0.ɵɵelementEnd()()();
    i0.ɵɵelementStart(18, "div", 19)(19, "div", 20);
    i0.ɵɵlistener("click", function ActionTreePanelComponent_Conditional_0_Template_div_click_19_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.selectCategory("all")); });
    i0.ɵɵelementStart(20, "span", 21);
    i0.ɵɵelement(21, "i", 22);
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(22, "span", 23);
    i0.ɵɵtext(23, "All Actions");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(24, "span", 24);
    i0.ɵɵtext(25);
    i0.ɵɵelementEnd()();
    i0.ɵɵconditionalCreate(26, ActionTreePanelComponent_Conditional_0_Conditional_26_Template, 7, 3, "div", 25);
    i0.ɵɵelementStart(27, "div", 26);
    i0.ɵɵtemplate(28, ActionTreePanelComponent_Conditional_0_ng_container_28_Template, 1, 0, "ng-container", 27);
    i0.ɵɵelementEnd();
    i0.ɵɵtemplate(29, ActionTreePanelComponent_Conditional_0_ng_template_29_Template, 2, 0, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(31, "div", 28)(32, "button", 29);
    i0.ɵɵlistener("click", function ActionTreePanelComponent_Conditional_0_Template_button_click_32_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onNewCategory(null, $event)); });
    i0.ɵɵelement(33, "i", 30);
    i0.ɵɵtext(34, " New Category ");
    i0.ɵɵelementEnd()();
    i0.ɵɵelementStart(35, "div", 31);
    i0.ɵɵlistener("mousedown", function ActionTreePanelComponent_Conditional_0_Template_div_mousedown_35_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onResizeStart($event)); });
    i0.ɵɵelementEnd()();
} if (rf & 2) {
    const categoryTreeTemplate_r8 = i0.ɵɵreference(30);
    const ctx_r1 = i0.ɵɵnextContext();
    i0.ɵɵstyleProp("width", ctx_r1.TreeWidth, "px");
    i0.ɵɵadvance(16);
    i0.ɵɵproperty("value", ctx_r1.SearchTerm);
    i0.ɵɵadvance();
    i0.ɵɵconditional(ctx_r1.SearchTerm ? 17 : -1);
    i0.ɵɵadvance(2);
    i0.ɵɵclassProp("selected", ctx_r1.isSelected("all"));
    i0.ɵɵadvance(6);
    i0.ɵɵtextInterpolate(ctx_r1.getTotalActionCount());
    i0.ɵɵadvance();
    i0.ɵɵconditional(ctx_r1.getUncategorizedCount() > 0 ? 26 : -1);
    i0.ɵɵadvance(2);
    i0.ɵɵproperty("ngTemplateOutlet", categoryTreeTemplate_r8)("ngTemplateOutletContext", i0.ɵɵpureFunction1(10, _c0, ctx_r1.FilteredTree));
} }
function ActionTreePanelComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
    const _r10 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "div", 2)(1, "button", 47);
    i0.ɵɵlistener("click", function ActionTreePanelComponent_Conditional_1_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleCollapse()); });
    i0.ɵɵelement(2, "i", 48);
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(3, "button", 49);
    i0.ɵɵlistener("click", function ActionTreePanelComponent_Conditional_1_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.selectCategory("all")); });
    i0.ɵɵelement(4, "i", 22);
    i0.ɵɵelementEnd()();
} if (rf & 2) {
    const ctx_r1 = i0.ɵɵnextContext();
    i0.ɵɵadvance(3);
    i0.ɵɵclassProp("selected", ctx_r1.isSelected("all"));
} }
export class ActionTreePanelComponent {
    StateService;
    cdr;
    Categories = [];
    Actions = [];
    CategorySelected = new EventEmitter();
    NewCategoryClick = new EventEmitter(); // parent ID or null for root
    EditCategoryClick = new EventEmitter();
    CategoryTree = [];
    SelectedCategoryId = 'all';
    ExpandedCategories = new Set();
    TreeWidth = 280;
    IsCollapsed = false;
    IsResizing = false;
    SearchTerm = '';
    FilteredTree = [];
    destroy$ = new Subject();
    categoryParentMap = new Map();
    categoryDescendants = new Map();
    constructor(StateService, cdr) {
        this.StateService = StateService;
        this.cdr = cdr;
    }
    ngOnInit() {
        this.subscribeToState();
        this.buildCategoryTree();
    }
    ngOnDestroy() {
        this.destroy$.next();
        this.destroy$.complete();
    }
    subscribeToState() {
        this.StateService.TreeWidth$.pipe(takeUntil(this.destroy$)).subscribe(width => {
            this.TreeWidth = width;
            this.cdr.markForCheck();
        });
        this.StateService.TreeCollapsed$.pipe(takeUntil(this.destroy$)).subscribe(collapsed => {
            this.IsCollapsed = collapsed;
            this.cdr.markForCheck();
        });
        this.StateService.SelectedCategoryId$.pipe(takeUntil(this.destroy$)).subscribe(id => {
            this.SelectedCategoryId = id;
            this.cdr.markForCheck();
        });
        this.StateService.ExpandedCategories$.pipe(takeUntil(this.destroy$)).subscribe(expanded => {
            this.ExpandedCategories = expanded;
            this.cdr.markForCheck();
        });
    }
    buildCategoryTree() {
        const categoryMap = new Map();
        this.categoryParentMap.clear();
        this.categoryDescendants.clear();
        // Build action counts per category
        const actionCounts = new Map();
        this.Actions.forEach(action => {
            if (action.CategoryID) {
                actionCounts.set(action.CategoryID, (actionCounts.get(action.CategoryID) || 0) + 1);
            }
        });
        // First pass: create all nodes
        this.Categories.forEach(category => {
            categoryMap.set(category.ID, {
                category,
                children: [],
                level: 0,
                actionCount: actionCounts.get(category.ID) || 0,
                totalActionCount: 0
            });
            this.categoryParentMap.set(category.ID, category.ParentID || null);
            this.categoryDescendants.set(category.ID, new Set([category.ID]));
        });
        // Second pass: build tree structure
        const rootNodes = [];
        categoryMap.forEach(node => {
            const parentId = node.category.ParentID;
            if (parentId && categoryMap.has(parentId)) {
                const parent = categoryMap.get(parentId);
                parent.children.push(node);
                node.level = parent.level + 1;
            }
            else {
                rootNodes.push(node);
            }
        });
        // Build descendant mapping
        this.Categories.forEach(category => {
            if (category.ParentID) {
                let currentParentId = category.ParentID;
                while (currentParentId) {
                    const descendants = this.categoryDescendants.get(currentParentId);
                    if (descendants) {
                        descendants.add(category.ID);
                    }
                    const parent = categoryMap.get(currentParentId);
                    currentParentId = parent?.category.ParentID || null;
                }
            }
        });
        // Calculate total action counts (including descendants)
        const calculateTotalCounts = (node) => {
            const descendants = this.categoryDescendants.get(node.category.ID);
            if (descendants) {
                let total = 0;
                descendants.forEach(descId => {
                    total += actionCounts.get(descId) || 0;
                });
                node.totalActionCount = total;
                return total;
            }
            return node.actionCount;
        };
        // Sort children at each level and calculate totals
        const sortAndCalculate = (nodes) => {
            nodes.sort((a, b) => a.category.Name.localeCompare(b.category.Name));
            nodes.forEach(node => {
                sortAndCalculate(node.children);
                calculateTotalCounts(node);
            });
        };
        sortAndCalculate(rootNodes);
        this.CategoryTree = rootNodes;
        this.FilteredTree = this.SearchTerm ? this.filterTree(rootNodes, this.SearchTerm.toLowerCase()) : rootNodes;
        this.cdr.markForCheck();
    }
    filterTree(nodes, searchTerm) {
        const result = [];
        for (const node of nodes) {
            const matchesSearch = node.category.Name.toLowerCase().includes(searchTerm);
            const filteredChildren = this.filterTree(node.children, searchTerm);
            if (matchesSearch || filteredChildren.length > 0) {
                result.push({
                    ...node,
                    children: filteredChildren
                });
            }
        }
        return result;
    }
    onSearchChange(term) {
        this.SearchTerm = term;
        this.FilteredTree = term ? this.filterTree(this.CategoryTree, term.toLowerCase()) : this.CategoryTree;
        this.cdr.markForCheck();
    }
    getTotalActionCount() {
        return this.Actions.length;
    }
    getUncategorizedCount() {
        return this.Actions.filter(a => !a.CategoryID).length;
    }
    selectCategory(categoryId) {
        this.StateService.setSelectedCategoryId(categoryId);
        this.CategorySelected.emit(categoryId);
    }
    toggleExpanded(categoryId, event) {
        event.stopPropagation();
        this.StateService.toggleCategoryExpanded(categoryId);
    }
    isExpanded(categoryId) {
        return this.ExpandedCategories.has(categoryId);
    }
    isSelected(categoryId) {
        return this.SelectedCategoryId === categoryId;
    }
    toggleCollapse() {
        this.StateService.toggleTreeCollapsed();
    }
    onNewCategory(parentId, event) {
        event.stopPropagation();
        this.NewCategoryClick.emit(parentId);
    }
    onEditCategory(category, event) {
        event.stopPropagation();
        this.EditCategoryClick.emit(category);
    }
    expandAll() {
        this.StateService.expandAllCategories(this.Categories.map(c => c.ID));
    }
    collapseAll() {
        this.StateService.collapseAllCategories();
    }
    // Resize handling
    onResizeStart(event) {
        event.preventDefault();
        this.IsResizing = true;
        document.body.style.cursor = 'ew-resize';
        document.body.style.userSelect = 'none';
    }
    onMouseMove(event) {
        if (!this.IsResizing)
            return;
        const newWidth = event.clientX;
        const clampedWidth = Math.min(Math.max(newWidth, this.StateService.TreeWidthMin), Math.min(this.StateService.TreeWidthMax, window.innerWidth - 400));
        this.TreeWidth = clampedWidth;
        this.cdr.detectChanges();
    }
    onMouseUp() {
        if (this.IsResizing) {
            this.IsResizing = false;
            document.body.style.cursor = '';
            document.body.style.userSelect = '';
            this.StateService.setTreeWidth(this.TreeWidth);
        }
    }
    getCategoryDescendants(categoryId) {
        return this.categoryDescendants.get(categoryId) || new Set([categoryId]);
    }
    static ɵfac = function ActionTreePanelComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ActionTreePanelComponent)(i0.ɵɵdirectiveInject(i1.ActionExplorerStateService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
    static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActionTreePanelComponent, selectors: [["mj-action-tree-panel"]], hostBindings: function ActionTreePanelComponent_HostBindings(rf, ctx) { if (rf & 1) {
            i0.ɵɵlistener("mousemove", function ActionTreePanelComponent_mousemove_HostBindingHandler($event) { return ctx.onMouseMove($event); }, i0.ɵɵresolveDocument)("mouseup", function ActionTreePanelComponent_mouseup_HostBindingHandler() { return ctx.onMouseUp(); }, i0.ɵɵresolveDocument);
        } }, inputs: { Categories: "Categories", Actions: "Actions" }, outputs: { CategorySelected: "CategorySelected", NewCategoryClick: "NewCategoryClick", EditCategoryClick: "EditCategoryClick" }, standalone: false, decls: 2, vars: 1, consts: [["categoryTreeTemplate", ""], [1, "tree-panel", 3, "width"], [1, "tree-panel-collapsed"], [1, "tree-panel"], [1, "tree-header"], [1, "header-content"], [1, "fa-solid", "fa-folder-tree"], [1, "header-actions"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Expand All", 3, "click"], [1, "fa-solid", "fa-angles-down"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Collapse All", 3, "click"], [1, "fa-solid", "fa-angles-up"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Collapse Panel", 3, "click"], [1, "fa-solid", "fa-chevron-left"], [1, "tree-search"], [1, "search-input-wrapper"], [1, "fa-solid", "fa-search", "search-icon"], ["type", "text", "placeholder", "Filter categories...", 1, "mj-input", 3, "input", "value"], ["mjButton", "", "variant", "flat", "size", "sm", 1, "search-clear"], [1, "tree-content"], [1, "tree-item", "root-item", 3, "click"], [1, "item-icon"], [1, "fa-solid", "fa-layer-group"], [1, "item-name"], [1, "item-count"], [1, "tree-item", "uncategorized-item", 3, "selected"], [1, "tree-categories"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "tree-footer"], ["mjButton", "", "variant", "primary", "size", "sm", 1, "new-category-btn", 3, "click"], [1, "fa-solid", "fa-plus"], ["title", "Drag to resize", 1, "resize-handle", 3, "mousedown"], ["mjButton", "", "variant", "flat", "size", "sm", 1, "search-clear", 3, "click"], [1, "fa-solid", "fa-times"], [1, "tree-item", "uncategorized-item", 3, "click"], [1, "fa-solid", "fa-inbox"], [1, "tree-node", 3, "--level"], [1, "tree-node"], [1, "tree-item", 3, "click"], [1, "expand-btn", 3, "title"], [1, "expand-placeholder"], [1, "item-name", 3, "title"], [1, "item-count", 3, "title"], [1, "item-actions"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Add Subcategory", 3, "click"], [1, "tree-children"], [1, "expand-btn", 3, "click", "title"], ["mjButton", "", "variant", "flat", "title", "Expand Category Panel", 3, "click"], [1, "fa-solid", "fa-chevron-right"], ["mjButton", "", "variant", "flat", "title", "All Actions", 3, "click"]], template: function ActionTreePanelComponent_Template(rf, ctx) { if (rf & 1) {
            i0.ɵɵconditionalCreate(0, ActionTreePanelComponent_Conditional_0_Template, 36, 12, "div", 1)(1, ActionTreePanelComponent_Conditional_1_Template, 5, 2, "div", 2);
        } if (rf & 2) {
            i0.ɵɵconditional(!ctx.IsCollapsed ? 0 : 1);
        } }, dependencies: [i2.NgTemplateOutlet, i3.MJButtonDirective], styles: [".tree-panel[_ngcontent-%COMP%] {\n  display: flex;\n  flex-direction: column;\n  height: 100%;\n  background: var(--mj-bg-surface-card);\n  border-right: 1px solid var(--mj-border-default);\n  position: relative;\n  min-width: 180px;\n  max-width: 450px;\n}\n\n.tree-header[_ngcontent-%COMP%] {\n  padding: 12px 16px;\n  border-bottom: 1px solid var(--mj-border-default);\n  flex-shrink: 0;\n}\n\n.tree-header[_ngcontent-%COMP%]   .header-content[_ngcontent-%COMP%] {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  margin-bottom: 12px;\n}\n\n.tree-header[_ngcontent-%COMP%]   h3[_ngcontent-%COMP%] {\n  margin: 0;\n  font-size: 14px;\n  font-weight: 600;\n  color: var(--mj-text-primary);\n  display: flex;\n  align-items: center;\n  gap: 8px;\n}\n\n.tree-header[_ngcontent-%COMP%]   h3[_ngcontent-%COMP%]   i[_ngcontent-%COMP%] {\n  color: var(--mj-brand-primary);\n}\n\n.tree-header[_ngcontent-%COMP%]   .header-actions[_ngcontent-%COMP%] {\n  display: flex;\n  gap: 2px;\n}\n\n.tree-header[_ngcontent-%COMP%]   .header-actions[_ngcontent-%COMP%]   button[_ngcontent-%COMP%] {\n  padding: 4px;\n  min-width: 28px;\n  height: 28px;\n}\n\n.tree-header[_ngcontent-%COMP%]   .header-actions[_ngcontent-%COMP%]   button[_ngcontent-%COMP%]   i[_ngcontent-%COMP%] {\n  font-size: 12px;\n}\n\n.tree-search[_ngcontent-%COMP%] {\n  width: 100%;\n}\n\n.tree-search[_ngcontent-%COMP%]   i[_ngcontent-%COMP%] {\n  font-size: 12px;\n  color: var(--mj-text-muted);\n}\n\n.tree-content[_ngcontent-%COMP%] {\n  flex: 1;\n  overflow-y: auto;\n  padding: 8px 0;\n}\n\n.tree-item[_ngcontent-%COMP%] {\n  display: flex;\n  align-items: center;\n  padding: 8px 12px;\n  cursor: pointer;\n  transition: all 0.15s ease;\n  gap: 8px;\n  position: relative;\n  color: var(--mj-text-primary);\n}\n\n.tree-item[_ngcontent-%COMP%]:hover {\n  background: var(--mj-bg-surface-hover);\n  padding-right: 40px; \n\n}\n\n.tree-item[_ngcontent-%COMP%]:hover   .item-count[_ngcontent-%COMP%] {\n  display: none; \n\n}\n\n.tree-item.selected[_ngcontent-%COMP%] {\n  background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n  color: var(--mj-brand-primary);\n}\n\n.tree-item.selected[_ngcontent-%COMP%]   .item-icon[_ngcontent-%COMP%]   i[_ngcontent-%COMP%] {\n  color: var(--mj-brand-primary);\n}\n\n.tree-item.root-item[_ngcontent-%COMP%], \n.tree-item.uncategorized-item[_ngcontent-%COMP%] {\n  padding-left: 16px;\n  margin-bottom: 4px;\n}\n\n.tree-item.root-item[_ngcontent-%COMP%] {\n  font-weight: 600;\n}\n\n.tree-item.uncategorized-item[_ngcontent-%COMP%] {\n  opacity: 0.8;\n}\n\n.tree-item.uncategorized-item[_ngcontent-%COMP%]   .item-icon[_ngcontent-%COMP%]   i[_ngcontent-%COMP%] {\n  color: var(--mj-status-warning);\n}\n\n.tree-node[_ngcontent-%COMP%] {\n  padding-left: calc(var(--level, 0) * 16px);\n}\n\n.expand-btn[_ngcontent-%COMP%] {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 20px;\n  height: 20px;\n  padding: 0;\n  border: none;\n  background: transparent;\n  cursor: pointer;\n  border-radius: 4px;\n  transition: all 0.15s ease;\n  flex-shrink: 0;\n}\n\n.expand-btn[_ngcontent-%COMP%]:hover {\n  background: var(--mj-bg-surface-active);\n}\n\n.expand-btn[_ngcontent-%COMP%]   i[_ngcontent-%COMP%] {\n  font-size: 10px;\n  color: var(--mj-text-muted);\n}\n\n.expand-placeholder[_ngcontent-%COMP%] {\n  width: 20px;\n  flex-shrink: 0;\n}\n\n.item-icon[_ngcontent-%COMP%] {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 20px;\n  flex-shrink: 0;\n}\n\n.item-icon[_ngcontent-%COMP%]   i[_ngcontent-%COMP%] {\n  font-size: 14px;\n  color: var(--mj-status-warning);\n}\n\n.item-name[_ngcontent-%COMP%] {\n  flex: 1;\n  font-size: 13px;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n\n.item-count[_ngcontent-%COMP%] {\n  font-size: 11px;\n  color: var(--mj-text-muted);\n  background: var(--mj-bg-surface-sunken);\n  padding: 2px 8px;\n  border-radius: 10px;\n  flex-shrink: 0;\n}\n\n.tree-item.selected[_ngcontent-%COMP%]   .item-count[_ngcontent-%COMP%] {\n  background: var(--mj-brand-primary);\n  color: var(--mj-text-inverse);\n}\n\n.item-actions[_ngcontent-%COMP%] {\n  display: none;\n  position: absolute;\n  right: 8px;\n  top: 50%;\n  transform: translateY(-50%);\n}\n\n.tree-item[_ngcontent-%COMP%]:hover   .item-actions[_ngcontent-%COMP%] {\n  display: flex;\n}\n\n.item-actions[_ngcontent-%COMP%]   button[_ngcontent-%COMP%] {\n  padding: 2px;\n  min-width: 24px;\n  height: 24px;\n}\n\n.item-actions[_ngcontent-%COMP%]   button[_ngcontent-%COMP%]   i[_ngcontent-%COMP%] {\n  font-size: 10px;\n}\n\n.tree-children[_ngcontent-%COMP%] {\n  \n\n}\n\n.tree-footer[_ngcontent-%COMP%] {\n  padding: 12px 16px;\n  border-top: 1px solid var(--mj-border-default);\n  flex-shrink: 0;\n}\n\n.new-category-btn[_ngcontent-%COMP%] {\n  width: 100%;\n}\n\n\n\n.resize-handle[_ngcontent-%COMP%] {\n  position: absolute;\n  top: 0;\n  right: 0;\n  width: 4px;\n  height: 100%;\n  cursor: ew-resize;\n  background: transparent;\n  transition: background 0.15s ease;\n  z-index: 10;\n}\n\n.resize-handle[_ngcontent-%COMP%]:hover, \n.resize-handle[_ngcontent-%COMP%]:active {\n  background: var(--mj-brand-primary);\n}\n\n\n\n.tree-panel-collapsed[_ngcontent-%COMP%] {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  padding: 8px 4px;\n  background: var(--mj-bg-surface-card);\n  border-right: 1px solid var(--mj-border-default);\n  width: 44px;\n  gap: 4px;\n}\n\n.tree-panel-collapsed[_ngcontent-%COMP%]   button[_ngcontent-%COMP%] {\n  padding: 8px;\n}\n\n.tree-panel-collapsed[_ngcontent-%COMP%]   button.selected[_ngcontent-%COMP%] {\n  background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n  color: var(--mj-brand-primary);\n}\n\n\n\n.tree-content[_ngcontent-%COMP%]::-webkit-scrollbar {\n  width: 6px;\n}\n\n.tree-content[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n  background: transparent;\n}\n\n.tree-content[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n  background: var(--mj-border-default);\n  border-radius: 3px;\n}\n\n.tree-content[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n  background: var(--mj-text-muted);\n}\n\n\n\n@media (max-width: 768px) {\n  .tree-panel[_ngcontent-%COMP%] {\n    position: absolute;\n    left: 0;\n    top: 0;\n    bottom: 0;\n    z-index: 100;\n    box-shadow: 2px 0 8px rgba(0, 0, 0, 0.15);\n  }\n}"], changeDetection: 0 });
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ActionTreePanelComponent, [{
        type: Component,
        args: [{ standalone: false, selector: 'mj-action-tree-panel', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!IsCollapsed) {\n  <div class=\"tree-panel\" [style.width.px]=\"TreeWidth\">\n    <div class=\"tree-header\">\n      <div class=\"header-content\">\n        <h3><i class=\"fa-solid fa-folder-tree\"></i> Categories</h3>\n        <div class=\"header-actions\">\n          <button mjButton\n            variant=\"flat\"\n            size=\"sm\"\n            title=\"Expand All\"\n            (click)=\"expandAll()\">\n            <i class=\"fa-solid fa-angles-down\"></i>\n          </button>\n          <button mjButton\n            variant=\"flat\"\n            size=\"sm\"\n            title=\"Collapse All\"\n            (click)=\"collapseAll()\">\n            <i class=\"fa-solid fa-angles-up\"></i>\n          </button>\n          <button mjButton\n            variant=\"flat\"\n            size=\"sm\"\n            title=\"Collapse Panel\"\n            (click)=\"toggleCollapse()\">\n            <i class=\"fa-solid fa-chevron-left\"></i>\n          </button>\n        </div>\n      </div>\n\n      <div class=\"tree-search\">\n        <div class=\"search-input-wrapper\">\n          <i class=\"fa-solid fa-search search-icon\"></i>\n          <input type=\"text\" class=\"mj-input\"\n            placeholder=\"Filter categories...\"\n            [value]=\"SearchTerm\"\n            (input)=\"onSearchChange($any($event.target).value)\" />\n          @if (SearchTerm) {\n            <button mjButton variant=\"flat\" size=\"sm\" class=\"search-clear\"\n              (click)=\"onSearchChange('')\">\n              <i class=\"fa-solid fa-times\"></i>\n            </button>\n          }\n        </div>\n      </div>\n    </div>\n\n    <div class=\"tree-content\">\n      <!-- All Categories -->\n      <div class=\"tree-item root-item\"\n        [class.selected]=\"isSelected('all')\"\n        (click)=\"selectCategory('all')\">\n        <span class=\"item-icon\">\n          <i class=\"fa-solid fa-layer-group\"></i>\n        </span>\n        <span class=\"item-name\">All Actions</span>\n        <span class=\"item-count\">{{ getTotalActionCount() }}</span>\n      </div>\n\n      <!-- Uncategorized -->\n      @if (getUncategorizedCount() > 0) {\n        <div class=\"tree-item uncategorized-item\"\n          [class.selected]=\"isSelected('uncategorized')\"\n          (click)=\"selectCategory('uncategorized')\">\n          <span class=\"item-icon\">\n            <i class=\"fa-solid fa-inbox\"></i>\n          </span>\n          <span class=\"item-name\">Uncategorized</span>\n          <span class=\"item-count\">{{ getUncategorizedCount() }}</span>\n        </div>\n      }\n\n      <!-- Category Tree -->\n      <div class=\"tree-categories\">\n        <ng-container *ngTemplateOutlet=\"categoryTreeTemplate; context: { nodes: FilteredTree }\"></ng-container>\n      </div>\n\n      <ng-template #categoryTreeTemplate let-nodes=\"nodes\">\n        @for (node of nodes; track node.category.ID) {\n          <div class=\"tree-node\" [style.--level]=\"node.level\">\n            <div class=\"tree-item\"\n              [class.selected]=\"isSelected(node.category.ID)\"\n              [class.has-children]=\"node.children.length > 0\"\n              (click)=\"selectCategory(node.category.ID)\">\n\n              @if (node.children.length > 0) {\n                <button class=\"expand-btn\"\n                  (click)=\"toggleExpanded(node.category.ID, $event)\"\n                  [title]=\"isExpanded(node.category.ID) ? 'Collapse' : 'Expand'\">\n                  <i [class]=\"isExpanded(node.category.ID) ? 'fa-solid fa-chevron-down' : 'fa-solid fa-chevron-right'\"></i>\n                </button>\n              } @else {\n                <span class=\"expand-placeholder\"></span>\n              }\n\n              <span class=\"item-icon\">\n                <i [class]=\"isExpanded(node.category.ID) ? 'fa-solid fa-folder-open' : 'fa-solid fa-folder'\"></i>\n              </span>\n              <span class=\"item-name\" [title]=\"node.category.Name\">{{ node.category.Name }}</span>\n              <span class=\"item-count\" [title]=\"node.totalActionCount + ' total actions'\">{{ node.totalActionCount }}</span>\n\n              <div class=\"item-actions\">\n                <button mjButton\n                  variant=\"flat\"\n                  size=\"sm\"\n                  title=\"Add Subcategory\"\n                  (click)=\"onNewCategory(node.category.ID, $event)\">\n                  <i class=\"fa-solid fa-plus\"></i>\n                </button>\n              </div>\n            </div>\n\n            @if (node.children.length > 0 && isExpanded(node.category.ID)) {\n              <div class=\"tree-children\">\n                <ng-container *ngTemplateOutlet=\"categoryTreeTemplate; context: { nodes: node.children }\"></ng-container>\n              </div>\n            }\n          </div>\n        }\n      </ng-template>\n    </div>\n\n    <div class=\"tree-footer\">\n      <button mjButton\n        variant=\"primary\"\n        size=\"sm\"\n        class=\"new-category-btn\"\n        (click)=\"onNewCategory(null, $event)\">\n        <i class=\"fa-solid fa-plus\"></i>\n        New Category\n      </button>\n    </div>\n\n    <!-- Resize Handle -->\n    <div class=\"resize-handle\"\n      (mousedown)=\"onResizeStart($event)\"\n      title=\"Drag to resize\">\n    </div>\n  </div>\n} @else {\n  <!-- Collapsed State -->\n  <div class=\"tree-panel-collapsed\">\n    <button mjButton\n      variant=\"flat\"\n      title=\"Expand Category Panel\"\n      (click)=\"toggleCollapse()\">\n      <i class=\"fa-solid fa-chevron-right\"></i>\n    </button>\n    <button mjButton\n      variant=\"flat\"\n      title=\"All Actions\"\n      [class.selected]=\"isSelected('all')\"\n      (click)=\"selectCategory('all')\">\n      <i class=\"fa-solid fa-layer-group\"></i>\n    </button>\n  </div>\n}\n", styles: [".tree-panel {\n  display: flex;\n  flex-direction: column;\n  height: 100%;\n  background: var(--mj-bg-surface-card);\n  border-right: 1px solid var(--mj-border-default);\n  position: relative;\n  min-width: 180px;\n  max-width: 450px;\n}\n\n.tree-header {\n  padding: 12px 16px;\n  border-bottom: 1px solid var(--mj-border-default);\n  flex-shrink: 0;\n}\n\n.tree-header .header-content {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  margin-bottom: 12px;\n}\n\n.tree-header h3 {\n  margin: 0;\n  font-size: 14px;\n  font-weight: 600;\n  color: var(--mj-text-primary);\n  display: flex;\n  align-items: center;\n  gap: 8px;\n}\n\n.tree-header h3 i {\n  color: var(--mj-brand-primary);\n}\n\n.tree-header .header-actions {\n  display: flex;\n  gap: 2px;\n}\n\n.tree-header .header-actions button {\n  padding: 4px;\n  min-width: 28px;\n  height: 28px;\n}\n\n.tree-header .header-actions button i {\n  font-size: 12px;\n}\n\n.tree-search {\n  width: 100%;\n}\n\n.tree-search i {\n  font-size: 12px;\n  color: var(--mj-text-muted);\n}\n\n.tree-content {\n  flex: 1;\n  overflow-y: auto;\n  padding: 8px 0;\n}\n\n.tree-item {\n  display: flex;\n  align-items: center;\n  padding: 8px 12px;\n  cursor: pointer;\n  transition: all 0.15s ease;\n  gap: 8px;\n  position: relative;\n  color: var(--mj-text-primary);\n}\n\n.tree-item:hover {\n  background: var(--mj-bg-surface-hover);\n  padding-right: 40px; /* Make room for the action button */\n}\n\n.tree-item:hover .item-count {\n  display: none; /* Hide count when action button is visible */\n}\n\n.tree-item.selected {\n  background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n  color: var(--mj-brand-primary);\n}\n\n.tree-item.selected .item-icon i {\n  color: var(--mj-brand-primary);\n}\n\n.tree-item.root-item,\n.tree-item.uncategorized-item {\n  padding-left: 16px;\n  margin-bottom: 4px;\n}\n\n.tree-item.root-item {\n  font-weight: 600;\n}\n\n.tree-item.uncategorized-item {\n  opacity: 0.8;\n}\n\n.tree-item.uncategorized-item .item-icon i {\n  color: var(--mj-status-warning);\n}\n\n.tree-node {\n  padding-left: calc(var(--level, 0) * 16px);\n}\n\n.expand-btn {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 20px;\n  height: 20px;\n  padding: 0;\n  border: none;\n  background: transparent;\n  cursor: pointer;\n  border-radius: 4px;\n  transition: all 0.15s ease;\n  flex-shrink: 0;\n}\n\n.expand-btn:hover {\n  background: var(--mj-bg-surface-active);\n}\n\n.expand-btn i {\n  font-size: 10px;\n  color: var(--mj-text-muted);\n}\n\n.expand-placeholder {\n  width: 20px;\n  flex-shrink: 0;\n}\n\n.item-icon {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 20px;\n  flex-shrink: 0;\n}\n\n.item-icon i {\n  font-size: 14px;\n  color: var(--mj-status-warning);\n}\n\n.item-name {\n  flex: 1;\n  font-size: 13px;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n\n.item-count {\n  font-size: 11px;\n  color: var(--mj-text-muted);\n  background: var(--mj-bg-surface-sunken);\n  padding: 2px 8px;\n  border-radius: 10px;\n  flex-shrink: 0;\n}\n\n.tree-item.selected .item-count {\n  background: var(--mj-brand-primary);\n  color: var(--mj-text-inverse);\n}\n\n.item-actions {\n  display: none;\n  position: absolute;\n  right: 8px;\n  top: 50%;\n  transform: translateY(-50%);\n}\n\n.tree-item:hover .item-actions {\n  display: flex;\n}\n\n.item-actions button {\n  padding: 2px;\n  min-width: 24px;\n  height: 24px;\n}\n\n.item-actions button i {\n  font-size: 10px;\n}\n\n.tree-children {\n  /* Children are indented via --level CSS variable */\n}\n\n.tree-footer {\n  padding: 12px 16px;\n  border-top: 1px solid var(--mj-border-default);\n  flex-shrink: 0;\n}\n\n.new-category-btn {\n  width: 100%;\n}\n\n/* Resize Handle */\n.resize-handle {\n  position: absolute;\n  top: 0;\n  right: 0;\n  width: 4px;\n  height: 100%;\n  cursor: ew-resize;\n  background: transparent;\n  transition: background 0.15s ease;\n  z-index: 10;\n}\n\n.resize-handle:hover,\n.resize-handle:active {\n  background: var(--mj-brand-primary);\n}\n\n/* Collapsed State */\n.tree-panel-collapsed {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  padding: 8px 4px;\n  background: var(--mj-bg-surface-card);\n  border-right: 1px solid var(--mj-border-default);\n  width: 44px;\n  gap: 4px;\n}\n\n.tree-panel-collapsed button {\n  padding: 8px;\n}\n\n.tree-panel-collapsed button.selected {\n  background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n  color: var(--mj-brand-primary);\n}\n\n/* Scrollbar Styling */\n.tree-content::-webkit-scrollbar {\n  width: 6px;\n}\n\n.tree-content::-webkit-scrollbar-track {\n  background: transparent;\n}\n\n.tree-content::-webkit-scrollbar-thumb {\n  background: var(--mj-border-default);\n  border-radius: 3px;\n}\n\n.tree-content::-webkit-scrollbar-thumb:hover {\n  background: var(--mj-text-muted);\n}\n\n/* Mobile Responsiveness */\n@media (max-width: 768px) {\n  .tree-panel {\n    position: absolute;\n    left: 0;\n    top: 0;\n    bottom: 0;\n    z-index: 100;\n    box-shadow: 2px 0 8px rgba(0, 0, 0, 0.15);\n  }\n}\n"] }]
    }], () => [{ type: i1.ActionExplorerStateService }, { type: i0.ChangeDetectorRef }], { Categories: [{
            type: Input
        }], Actions: [{
            type: Input
        }], CategorySelected: [{
            type: Output
        }], NewCategoryClick: [{
            type: Output
        }], EditCategoryClick: [{
            type: Output
        }], onMouseMove: [{
            type: HostListener,
            args: ['document:mousemove', ['$event']]
        }], onMouseUp: [{
            type: HostListener,
            args: ['document:mouseup']
        }] }); })();
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ActionTreePanelComponent, { className: "ActionTreePanelComponent", filePath: "src/Actions/components/explorer/action-tree-panel.component.ts", lineNumber: 33 }); })();
//# sourceMappingURL=action-tree-panel.component.js.map