concepto-user-controls 0.0.7 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/concepto-context-menu/concepto-context-menu.component.mjs +3 -7
- package/esm2022/lib/concepto-tree/components/tree-node/tree-node.component.mjs +301 -0
- package/esm2022/lib/concepto-tree/components/tree-node-checkbox/tree-node-checkbox.component.mjs +90 -0
- package/esm2022/lib/concepto-tree/components/tree-node-content/tree-node-content.component.mjs +65 -0
- package/esm2022/lib/concepto-tree/components/tree-node-expander/tree-node-expander.component.mjs +74 -0
- package/esm2022/lib/concepto-tree/components/tree-root/tree-root.component.mjs +230 -0
- package/esm2022/lib/concepto-tree/components/tree-viewport/tree-viewport.component.mjs +216 -0
- package/esm2022/lib/concepto-tree/concepto-tree.component.mjs +220 -0
- package/esm2022/lib/concepto-tree/core/models/tree-events.model.mjs +2 -0
- package/esm2022/lib/concepto-tree/core/models/tree-node.model.mjs +102 -0
- package/esm2022/lib/concepto-tree/core/models/tree-options.model.mjs +24 -0
- package/esm2022/lib/concepto-tree/core/models/tree.model.mjs +313 -0
- package/esm2022/lib/concepto-tree/core/services/tree-drag-drop.service.mjs +27 -0
- package/esm2022/lib/concepto-tree/directives/tree-drag.directive.mjs +69 -0
- package/esm2022/lib/concepto-tree/directives/tree-drop.directive.mjs +124 -0
- package/esm2022/lib/concepto-tree/directives/tree-node-template.directive.mjs +19 -0
- package/esm2022/lib/entity-comparison/components/entity-comparison.component.mjs +218 -0
- package/esm2022/lib/entity-comparison/core/services/entity-comparison.service.mjs +111 -0
- package/esm2022/public-api.mjs +4 -1
- package/fesm2022/concepto-user-controls.mjs +2147 -7
- package/fesm2022/concepto-user-controls.mjs.map +1 -1
- package/lib/concepto-context-menu/concepto-context-menu.component.d.ts +2 -3
- package/lib/concepto-tree/components/tree-node/tree-node.component.d.ts +19 -0
- package/lib/concepto-tree/components/tree-node-checkbox/tree-node-checkbox.component.d.ts +17 -0
- package/lib/concepto-tree/components/tree-node-content/tree-node-content.component.d.ts +18 -0
- package/lib/concepto-tree/components/tree-node-expander/tree-node-expander.component.d.ts +12 -0
- package/lib/concepto-tree/components/tree-root/tree-root.component.d.ts +35 -0
- package/lib/concepto-tree/components/tree-viewport/tree-viewport.component.d.ts +33 -0
- package/lib/concepto-tree/concepto-tree.component.d.ts +36 -0
- package/lib/concepto-tree/core/models/tree-events.model.d.ts +13 -0
- package/lib/concepto-tree/core/models/tree-node.model.d.ts +39 -0
- package/lib/concepto-tree/core/models/tree-options.model.d.ts +28 -0
- package/lib/concepto-tree/core/models/tree.model.d.ts +54 -0
- package/lib/concepto-tree/core/services/tree-drag-drop.service.d.ts +11 -0
- package/lib/concepto-tree/directives/tree-drag.directive.d.ts +16 -0
- package/lib/concepto-tree/directives/tree-drop.directive.d.ts +25 -0
- package/lib/concepto-tree/directives/tree-node-template.directive.d.ts +8 -0
- package/lib/entity-comparison/components/entity-comparison.component.d.ts +49 -0
- package/lib/entity-comparison/core/services/entity-comparison.service.d.ts +10 -0
- package/package.json +1 -1
- package/public-api.d.ts +3 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import { TreeRootComponent } from './components/tree-root/tree-root.component';
|
|
3
|
+
import { TreeOptions } from './core/models/tree-options.model';
|
|
4
|
+
import { TreeEvent } from './core/models/tree-events.model';
|
|
5
|
+
import { TreeNode } from './core/models/tree-node.model';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export declare class ConceptoTreeComponent {
|
|
8
|
+
nodes: any[];
|
|
9
|
+
options: Partial<TreeOptions>;
|
|
10
|
+
initialized: EventEmitter<TreeEvent>;
|
|
11
|
+
toggleExpanded: EventEmitter<TreeEvent>;
|
|
12
|
+
activate: EventEmitter<TreeEvent>;
|
|
13
|
+
deactivate: EventEmitter<TreeEvent>;
|
|
14
|
+
select: EventEmitter<TreeEvent>;
|
|
15
|
+
deselect: EventEmitter<TreeEvent>;
|
|
16
|
+
focus: EventEmitter<TreeEvent>;
|
|
17
|
+
blur: EventEmitter<TreeEvent>;
|
|
18
|
+
moveNode: EventEmitter<TreeEvent>;
|
|
19
|
+
loadChildren: EventEmitter<TreeEvent>;
|
|
20
|
+
treeEvent: EventEmitter<TreeEvent>;
|
|
21
|
+
treeRoot: TreeRootComponent;
|
|
22
|
+
isDropdownOpen: import("@angular/core").WritableSignal<boolean>;
|
|
23
|
+
searchTerm: string;
|
|
24
|
+
selectedNode: import("@angular/core").WritableSignal<TreeNode | null>;
|
|
25
|
+
private allNodes;
|
|
26
|
+
filteredNodes: import("@angular/core").WritableSignal<TreeNode[]>;
|
|
27
|
+
get displayField(): string;
|
|
28
|
+
toggleDropdown(): void;
|
|
29
|
+
closeDropdown(): void;
|
|
30
|
+
filterNodes(): void;
|
|
31
|
+
selectNode(node: TreeNode): void;
|
|
32
|
+
onTreeInitialized(event: TreeEvent): void;
|
|
33
|
+
onNodeActivated(event: TreeEvent): void;
|
|
34
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ConceptoTreeComponent, never>;
|
|
35
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ConceptoTreeComponent, "lib-concepto-tree", never, { "nodes": { "alias": "nodes"; "required": false; }; "options": { "alias": "options"; "required": false; }; }, { "initialized": "initialized"; "toggleExpanded": "toggleExpanded"; "activate": "activate"; "deactivate": "deactivate"; "select": "select"; "deselect": "deselect"; "focus": "focus"; "blur": "blur"; "moveNode": "moveNode"; "loadChildren": "loadChildren"; "treeEvent": "treeEvent"; }, never, never, true, never>;
|
|
36
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { TreeNode } from './tree-node.model';
|
|
2
|
+
import { TreeModel } from './tree.model';
|
|
3
|
+
export type TreeEventType = 'initialized' | 'update' | 'expand' | 'collapse' | 'expandAll' | 'collapseAll' | 'activate' | 'deactivate' | 'select' | 'deselect' | 'focus' | 'blur' | 'moveNode' | 'loadChildren' | 'loadChildrenError' | 'filter' | 'clearFilter';
|
|
4
|
+
export interface TreeEvent {
|
|
5
|
+
type: TreeEventType;
|
|
6
|
+
treeModel?: TreeModel;
|
|
7
|
+
node?: TreeNode;
|
|
8
|
+
to?: {
|
|
9
|
+
parent: TreeNode;
|
|
10
|
+
index: number;
|
|
11
|
+
};
|
|
12
|
+
error?: any;
|
|
13
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Signal } from '@angular/core';
|
|
2
|
+
import { TreeOptions } from './tree-options.model';
|
|
3
|
+
export interface TreeNodeData {
|
|
4
|
+
id: string | number;
|
|
5
|
+
[key: string]: any;
|
|
6
|
+
}
|
|
7
|
+
export declare class TreeNode {
|
|
8
|
+
readonly isExpanded: import("@angular/core").WritableSignal<boolean>;
|
|
9
|
+
readonly isActive: import("@angular/core").WritableSignal<boolean>;
|
|
10
|
+
readonly isSelected: import("@angular/core").WritableSignal<boolean>;
|
|
11
|
+
readonly isFocused: import("@angular/core").WritableSignal<boolean>;
|
|
12
|
+
readonly isHidden: import("@angular/core").WritableSignal<boolean>;
|
|
13
|
+
readonly isLoading: import("@angular/core").WritableSignal<boolean>;
|
|
14
|
+
readonly isCollapsed: Signal<boolean>;
|
|
15
|
+
readonly isLeaf: Signal<boolean>;
|
|
16
|
+
readonly isVisible: Signal<boolean>;
|
|
17
|
+
id: string | number;
|
|
18
|
+
data: TreeNodeData;
|
|
19
|
+
parent: TreeNode | null;
|
|
20
|
+
children: TreeNode[];
|
|
21
|
+
level: number;
|
|
22
|
+
path: Array<string | number>;
|
|
23
|
+
index: number;
|
|
24
|
+
hasChildren: boolean;
|
|
25
|
+
icon?: string;
|
|
26
|
+
constructor(data: TreeNodeData, parent: TreeNode | null, level: number, index: number, options: TreeOptions);
|
|
27
|
+
expand(): void;
|
|
28
|
+
collapse(): void;
|
|
29
|
+
toggle(): void;
|
|
30
|
+
setActive(value: boolean): void;
|
|
31
|
+
setSelected(value: boolean): void;
|
|
32
|
+
setFocus(value: boolean): void;
|
|
33
|
+
setHidden(value: boolean): void;
|
|
34
|
+
setLoading(value: boolean): void;
|
|
35
|
+
ensureVisible(): void;
|
|
36
|
+
setActiveAndVisible(): void;
|
|
37
|
+
getAncestors(): TreeNode[];
|
|
38
|
+
getDescendants(): TreeNode[];
|
|
39
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { TreeNode } from './tree-node.model';
|
|
2
|
+
export interface TreeOptions {
|
|
3
|
+
idField?: string;
|
|
4
|
+
childrenField?: string;
|
|
5
|
+
displayField?: string;
|
|
6
|
+
isExpandedField?: string;
|
|
7
|
+
hasChildrenField?: string;
|
|
8
|
+
iconField?: string;
|
|
9
|
+
allowDrag?: boolean | ((node: TreeNode) => boolean);
|
|
10
|
+
allowDrop?: boolean | ((node: TreeNode, to: any) => boolean);
|
|
11
|
+
useCheckbox?: boolean;
|
|
12
|
+
useTriState?: boolean;
|
|
13
|
+
levelPadding?: number;
|
|
14
|
+
useVirtualScroll?: boolean;
|
|
15
|
+
nodeHeight?: number | ((node: TreeNode) => number);
|
|
16
|
+
scrollContainerHeight?: number;
|
|
17
|
+
bufferAmount?: number;
|
|
18
|
+
getChildren?: (node: TreeNode) => Promise<any[]>;
|
|
19
|
+
animateExpand?: boolean;
|
|
20
|
+
animateSpeed?: number;
|
|
21
|
+
animateAcceleration?: number;
|
|
22
|
+
scrollOnActivate?: boolean;
|
|
23
|
+
scrollContainer?: HTMLElement;
|
|
24
|
+
rtl?: boolean;
|
|
25
|
+
multiSelect?: boolean;
|
|
26
|
+
useMetaKey?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export declare const DEFAULT_TREE_OPTIONS: TreeOptions;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Subject } from 'rxjs';
|
|
2
|
+
import { TreeNode } from './tree-node.model';
|
|
3
|
+
import { TreeOptions } from './tree-options.model';
|
|
4
|
+
import { TreeEvent } from './tree-events.model';
|
|
5
|
+
export declare class TreeModel {
|
|
6
|
+
options: TreeOptions;
|
|
7
|
+
readonly roots: import("@angular/core").WritableSignal<TreeNode[]>;
|
|
8
|
+
readonly focusedNodeId: import("@angular/core").WritableSignal<string | number | null>;
|
|
9
|
+
readonly expandedNodeIds: import("@angular/core").WritableSignal<Set<string | number>>;
|
|
10
|
+
readonly activeNodeIds: import("@angular/core").WritableSignal<Set<string | number>>;
|
|
11
|
+
readonly selectedNodeIds: import("@angular/core").WritableSignal<Set<string | number>>;
|
|
12
|
+
readonly hiddenNodeIds: import("@angular/core").WritableSignal<Set<string | number>>;
|
|
13
|
+
readonly focusedNode: import("@angular/core").Signal<TreeNode | null>;
|
|
14
|
+
readonly expandedNodes: import("@angular/core").Signal<TreeNode[]>;
|
|
15
|
+
readonly activeNodes: import("@angular/core").Signal<TreeNode[]>;
|
|
16
|
+
readonly selectedNodes: import("@angular/core").Signal<TreeNode[]>;
|
|
17
|
+
readonly visibleNodes: import("@angular/core").Signal<TreeNode[]>;
|
|
18
|
+
readonly flattenedNodes: import("@angular/core").Signal<TreeNode[]>;
|
|
19
|
+
readonly events$: Subject<TreeEvent>;
|
|
20
|
+
virtualRoot: TreeNode | null;
|
|
21
|
+
private nodeRegistry;
|
|
22
|
+
constructor(options: TreeOptions);
|
|
23
|
+
setData(data: any[]): void;
|
|
24
|
+
private buildNodes;
|
|
25
|
+
update(): void;
|
|
26
|
+
getNodeById(id: string | number): TreeNode | null;
|
|
27
|
+
getNodeBy(predicate: (node: TreeNode) => boolean): TreeNode | null;
|
|
28
|
+
getAllNodes(): TreeNode[];
|
|
29
|
+
focusNode(node: TreeNode | null): void;
|
|
30
|
+
focusNextNode(): void;
|
|
31
|
+
focusPreviousNode(): void;
|
|
32
|
+
focusDrillDown(): void;
|
|
33
|
+
focusDrillUp(): void;
|
|
34
|
+
expandAll(): void;
|
|
35
|
+
collapseAll(): void;
|
|
36
|
+
expandNode(node: TreeNode): void;
|
|
37
|
+
collapseNode(node: TreeNode): void;
|
|
38
|
+
activateNode(node: TreeNode, multi?: boolean): void;
|
|
39
|
+
deactivateNode(node: TreeNode): void;
|
|
40
|
+
selectNode(node: TreeNode, multi?: boolean): void;
|
|
41
|
+
filterNodes(filterFn: (node: TreeNode) => boolean, autoShow?: boolean): void;
|
|
42
|
+
clearFilter(): void;
|
|
43
|
+
canMoveNode(node: TreeNode, to: {
|
|
44
|
+
parent: TreeNode;
|
|
45
|
+
index: number;
|
|
46
|
+
}): boolean;
|
|
47
|
+
moveNode(node: TreeNode, to: {
|
|
48
|
+
parent: TreeNode;
|
|
49
|
+
index: number;
|
|
50
|
+
}): void;
|
|
51
|
+
private updateNodeLevels;
|
|
52
|
+
loadChildren(node: TreeNode): Promise<void>;
|
|
53
|
+
private emitEvent;
|
|
54
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { TreeNode } from '../models/tree-node.model';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class TreeDragDropService {
|
|
4
|
+
private readonly draggedNode;
|
|
5
|
+
setDraggedNode(node: TreeNode): void;
|
|
6
|
+
getDraggedNode(): TreeNode | null;
|
|
7
|
+
clearDraggedNode(): void;
|
|
8
|
+
isDragging(): boolean;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TreeDragDropService, never>;
|
|
10
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<TreeDragDropService>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { TreeNode } from '../core/models/tree-node.model';
|
|
2
|
+
import { TreeModel } from '../core/models/tree.model';
|
|
3
|
+
import { TreeOptions } from '../core/models/tree-options.model';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class TreeDragDirective {
|
|
6
|
+
node: TreeNode;
|
|
7
|
+
treeModel: TreeModel;
|
|
8
|
+
options: TreeOptions;
|
|
9
|
+
private readonly elementRef;
|
|
10
|
+
private readonly dragDropService;
|
|
11
|
+
get draggable(): boolean;
|
|
12
|
+
onDragStart(event: DragEvent): void;
|
|
13
|
+
onDragEnd(event: DragEvent): void;
|
|
14
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TreeDragDirective, never>;
|
|
15
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TreeDragDirective, "[treeDrag]", never, { "node": { "alias": "treeDrag"; "required": true; }; "treeModel": { "alias": "treeModel"; "required": true; }; "options": { "alias": "options"; "required": true; }; }, {}, never, never, true, never>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { TreeNode } from '../core/models/tree-node.model';
|
|
2
|
+
import { TreeModel } from '../core/models/tree.model';
|
|
3
|
+
import { TreeOptions } from '../core/models/tree-options.model';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
type DropPosition = 'before' | 'after' | 'inside';
|
|
6
|
+
export declare class TreeDropDirective {
|
|
7
|
+
node: TreeNode;
|
|
8
|
+
treeModel: TreeModel;
|
|
9
|
+
options: TreeOptions;
|
|
10
|
+
dropPosition: DropPosition;
|
|
11
|
+
private readonly elementRef;
|
|
12
|
+
private readonly dragDropService;
|
|
13
|
+
readonly isDraggingOver: import("@angular/core").WritableSignal<boolean>;
|
|
14
|
+
readonly canDrop: import("@angular/core").WritableSignal<boolean>;
|
|
15
|
+
get isDropTarget(): boolean;
|
|
16
|
+
get isDropDisabled(): boolean;
|
|
17
|
+
onDragEnter(event: DragEvent): void;
|
|
18
|
+
onDragOver(event: DragEvent): void;
|
|
19
|
+
onDragLeave(event: DragEvent): void;
|
|
20
|
+
onDrop(event: DragEvent): void;
|
|
21
|
+
private getDropTarget;
|
|
22
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TreeDropDirective, never>;
|
|
23
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TreeDropDirective, "[treeDrop]", never, { "node": { "alias": "treeDrop"; "required": true; }; "treeModel": { "alias": "treeModel"; "required": true; }; "options": { "alias": "options"; "required": true; }; "dropPosition": { "alias": "dropPosition"; "required": false; }; }, {}, never, never, true, never>;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TemplateRef } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class TreeNodeTemplateDirective {
|
|
4
|
+
template: TemplateRef<any>;
|
|
5
|
+
constructor(template: TemplateRef<any>);
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TreeNodeTemplateDirective, never>;
|
|
7
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TreeNodeTemplateDirective, "[treeNodeTemplate]", never, {}, {}, never, never, true, never>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { EntityComparisonService } from '../core/services/entity-comparison.service';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export interface ComparisonResult {
|
|
4
|
+
leftOnly: any[];
|
|
5
|
+
rightOnly: any[];
|
|
6
|
+
modified: any[];
|
|
7
|
+
unchanged: any[];
|
|
8
|
+
}
|
|
9
|
+
export declare class EntityComparisonComponent {
|
|
10
|
+
private comparisonService;
|
|
11
|
+
leftFile: string;
|
|
12
|
+
rightFile: string;
|
|
13
|
+
leftEntities: any[];
|
|
14
|
+
rightEntities: any[];
|
|
15
|
+
selectedLeftEntity: any;
|
|
16
|
+
selectedRightEntity: any;
|
|
17
|
+
comparisonResult: ComparisonResult | null;
|
|
18
|
+
expandedNodes: Set<string>;
|
|
19
|
+
isFullScreen: boolean;
|
|
20
|
+
currentDifferenceIndex: number;
|
|
21
|
+
differences: any[];
|
|
22
|
+
constructor(comparisonService: EntityComparisonService);
|
|
23
|
+
onLeftFileSelected(event: any): void;
|
|
24
|
+
onRightFileSelected(event: any): void;
|
|
25
|
+
selectLeftEntity(entity: any): void;
|
|
26
|
+
selectRightEntity(entity: any): void;
|
|
27
|
+
private compareIfBothSelected;
|
|
28
|
+
private buildDifferencesList;
|
|
29
|
+
navigateToNextDifference(): void;
|
|
30
|
+
navigateToPreviousDifference(): void;
|
|
31
|
+
private scrollToDifference;
|
|
32
|
+
private expandPathToNode;
|
|
33
|
+
private expandParentsInStructure;
|
|
34
|
+
get hasDifferences(): boolean;
|
|
35
|
+
get currentDifferenceNumber(): number;
|
|
36
|
+
get totalDifferences(): number;
|
|
37
|
+
toggleNode(nodeId: string): void;
|
|
38
|
+
isExpanded(nodeId: string): boolean;
|
|
39
|
+
getNodeId(node: any, prefix: string): string;
|
|
40
|
+
hasChildren(node: any): boolean;
|
|
41
|
+
getChildren(node: any): any[];
|
|
42
|
+
getProperties(node: any): any;
|
|
43
|
+
getPropertyKeys(node: any): string[];
|
|
44
|
+
getChangeType(node: any): string;
|
|
45
|
+
getModifiedProperties(node: any): string[];
|
|
46
|
+
toggleFullScreen(): void;
|
|
47
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<EntityComparisonComponent, never>;
|
|
48
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<EntityComparisonComponent, "app-entity-comparison", never, {}, {}, never, never, true, never>;
|
|
49
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ComparisonResult } from '../../components/entity-comparison.component';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class EntityComparisonService {
|
|
4
|
+
parseEntities(xmlString: string): any[];
|
|
5
|
+
compareStructures(leftStructure: any[], rightStructure: any[]): ComparisonResult;
|
|
6
|
+
private createNodeMap;
|
|
7
|
+
private compareNodes;
|
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<EntityComparisonService, never>;
|
|
9
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<EntityComparisonService>;
|
|
10
|
+
}
|
package/package.json
CHANGED
package/public-api.d.ts
CHANGED
|
@@ -2,3 +2,6 @@ export * from './lib/concepto-user-controls.service';
|
|
|
2
2
|
export * from './lib/concepto-user-controls.component';
|
|
3
3
|
export * from './lib/concepto-message/concepto-message.component';
|
|
4
4
|
export * from './lib/concepto-context-menu/concepto-context-menu.component';
|
|
5
|
+
export * from './lib/concepto-tree/concepto-tree.component';
|
|
6
|
+
export * from './lib/entity-comparison/components/entity-comparison.component';
|
|
7
|
+
export * from './lib/entity-comparison/core/services/entity-comparison.service';
|