vcomply-workflow-engine 6.0.92 → 6.0.93

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.
@@ -13,3 +13,8 @@ export declare const PROGRAM_OBJECT: {
13
13
  internal_controls: number;
14
14
  others: number;
15
15
  };
16
+ export declare const PROGRAM_NO_DATA: {
17
+ programList: string;
18
+ categoryList: string;
19
+ search: string;
20
+ };
@@ -1,16 +1,34 @@
1
- import { EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core';
1
+ import { EventEmitter, OnInit, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';
2
2
  import { ListItem } from '../interfaces/list-item.interface';
3
3
  import { ListUtilsService } from '../services/list-utils.service';
4
4
  import { ProgramListApiService } from '../services/program-list-api.service';
5
5
  import * as i0 from "@angular/core";
6
- export declare class ProgramListComponent<T extends ListItem> implements OnInit, OnChanges {
6
+ /**
7
+ * A reusable component for displaying and managing a list of programs with filtering, pagination, and category viewing capabilities.
8
+ *
9
+ * Features:
10
+ * - Program listing with pagination
11
+ * - Search functionality with debounce
12
+ * - Program type filtering
13
+ * - Category viewing for selected programs
14
+ * - Multi-select capability
15
+ *
16
+ * @template T Extends ListItem interface for type safety of list items
17
+ */
18
+ export declare class ProgramListComponent<T extends ListItem> implements OnInit, OnChanges, OnDestroy {
7
19
  private listUtils;
8
20
  private programListApiService;
21
+ /** Array of items to be displayed in the list */
9
22
  items: T[];
23
+ /** Object containing selected items, keyed by program ID */
10
24
  selectedItems: any | null;
25
+ /** URL configuration object for API endpoints */
11
26
  url: any;
27
+ /** Event emitted when an item is selected */
12
28
  itemSelected: EventEmitter<T>;
29
+ /** Event emitted when an item is deselected */
13
30
  itemDeselected: EventEmitter<T>;
31
+ /** Event emitted when the selection changes */
14
32
  itemsSelectedChange: EventEmitter<T[]>;
15
33
  tableHeaders: string[];
16
34
  currentPage: number;
@@ -23,23 +41,85 @@ export declare class ProgramListComponent<T extends ListItem> implements OnInit,
23
41
  programTypeList: any[];
24
42
  selectedProgramType: any[];
25
43
  loaderState: any;
44
+ appliedProgramType: any[];
45
+ PROGRAM_NO_DATA: any;
46
+ ASSETS: any;
47
+ /** Subject for handling debounced search */
48
+ private searchSubject;
49
+ /** Subject for cleanup subscriptions */
50
+ private destroy$;
26
51
  constructor(listUtils: ListUtilsService, programListApiService: ProgramListApiService);
52
+ /** Initialize component by fetching program list */
27
53
  ngOnInit(): void;
54
+ /** Handle changes to inputs */
28
55
  ngOnChanges(changes: SimpleChanges): void;
56
+ /** Fetch program list from API */
29
57
  getProgramList(): void;
58
+ /**
59
+ * Load data and initialize pagination
60
+ * @param data Array of items to load
61
+ */
30
62
  loadData(data: any): void;
31
- search(): void;
63
+ /**
64
+ * Handle item selection/deselection
65
+ * @param event Selection event
66
+ * @param item Item being selected/deselected
67
+ */
32
68
  selectItem(event: any, item: any): void;
69
+ /**
70
+ * Deselect a specific item
71
+ * @param item Item to deselect
72
+ */
33
73
  deselectItem(item: T): void;
74
+ /**
75
+ * Check if an item is selected
76
+ * @param item Item to check
77
+ * @returns Boolean indicating if item is selected
78
+ */
34
79
  isSelected(item: T): boolean;
80
+ /**
81
+ * Navigate to specific page
82
+ * @param page Page number to navigate to
83
+ * @param data Data to paginate
84
+ */
35
85
  goToPage(page: number, data: any): void;
86
+ /**
87
+ * Get array of page numbers for pagination
88
+ * @returns Array of page numbers
89
+ */
36
90
  getPageNumbers(): number[];
91
+ /**
92
+ * Paginate items and update view
93
+ * @param data Data to paginate
94
+ */
37
95
  paginateItems(data: any): void;
96
+ /**
97
+ * View categories for a selected program
98
+ * @param item Program to view categories for
99
+ */
38
100
  viewCategory(item?: any): void;
101
+ /**
102
+ * Add parent tree information to categories
103
+ * @param categories Array of categories
104
+ * @returns Categories with parent tree information
105
+ */
39
106
  addParentTreeToCategories(categories: any[]): any[];
107
+ /**
108
+ * Handle program type filter selection
109
+ * @param event Selection event
110
+ * @param item Program type being selected/deselected
111
+ */
40
112
  selectFilter(event: any, item: any): void;
113
+ /** Reset all applied filters */
41
114
  resetFilter(): void;
115
+ /** Apply selected filters to the program list */
42
116
  onFilterChange(): void;
117
+ /** Trigger debounced search */
118
+ search(): void;
119
+ /** Perform search on items */
120
+ private performSearch;
121
+ /** Cleanup subscriptions on component destruction */
122
+ ngOnDestroy(): void;
43
123
  static ɵfac: i0.ɵɵFactoryDeclaration<ProgramListComponent<any>, never>;
44
124
  static ɵcmp: i0.ɵɵComponentDeclaration<ProgramListComponent<any>, "app-program-list", never, { "items": { "alias": "items"; "required": false; }; "selectedItems": { "alias": "selectedItems"; "required": false; }; "url": { "alias": "url"; "required": false; }; }, { "itemSelected": "itemSelected"; "itemDeselected": "itemDeselected"; "itemsSelectedChange": "itemsSelectedChange"; }, never, never, false, never>;
45
125
  }
@@ -7,8 +7,9 @@ import * as i5 from "../../formgroup/formgroup.module";
7
7
  import * as i6 from "../../ui-kit/no-data/no-data.module";
8
8
  import * as i7 from "../../ui-kit/popover/popover.module";
9
9
  import * as i8 from "../../ui-kit/loaders/loaders.module";
10
+ import * as i9 from "../../pipes/pipes.module";
10
11
  export declare class ProgramListModule {
11
12
  static ɵfac: i0.ɵɵFactoryDeclaration<ProgramListModule, never>;
12
- static ɵmod: i0.ɵɵNgModuleDeclaration<ProgramListModule, [typeof i1.ProgramListComponent, typeof i2.CheckSelectedItemsPipe], [typeof i3.CommonModule, typeof i4.FormsModule, typeof i5.FormgroupModule, typeof i6.NoDataModule, typeof i7.PopoverModule, typeof i8.LoadersModule], [typeof i1.ProgramListComponent]>;
13
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ProgramListModule, [typeof i1.ProgramListComponent, typeof i2.CheckSelectedItemsPipe], [typeof i3.CommonModule, typeof i4.FormsModule, typeof i5.FormgroupModule, typeof i6.NoDataModule, typeof i7.PopoverModule, typeof i8.LoadersModule, typeof i9.PipesModule], [typeof i1.ProgramListComponent]>;
13
14
  static ɵinj: i0.ɵɵInjectorDeclaration<ProgramListModule>;
14
15
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vcomply-workflow-engine",
3
- "version": "6.0.92",
3
+ "version": "6.0.93",
4
4
  "peerDependencies": {
5
5
  "@angular/common": " 12.x || 13.x || 14.x || 15.x || 16.x || 17.x || 18.x || 19.x ",
6
6
  "@angular/core": " 12.x || 13.x || 14.x || 15.x || 16.x || 17.x || 18.x || 19.x "
@@ -1,152 +0,0 @@
1
- export const MOCK_PROGRAMS = [
2
- {
3
- "id": "A2B4C6",
4
- "name": "P1",
5
- "type": "regulations",
6
- },
7
- {
8
- "id": "X7Y9Z8",
9
- "name": "Standard A",
10
- "type": "standards",
11
- },
12
- {
13
- "id": "G7H2J9",
14
- "name": "Internal Control B",
15
- "type": "internal_controls",
16
- },
17
- {
18
- "id": "K4L6M1",
19
- "name": "Other Document C",
20
- "type": "others",
21
- },
22
- {
23
- "id": "N8P5Q7",
24
- "name": "Regulation X",
25
- "type": "regulations",
26
- },
27
- {
28
- "id": "R3S9T4",
29
- "name": "Standard Y",
30
- "type": "standards",
31
- },
32
- {
33
- "id": "U6V2W8",
34
- "name": "Internal Control Z",
35
- "type": "internal_controls",
36
- },
37
- {
38
- "id": "B9C4D7",
39
- "name": "Other Document D",
40
- "type": "others",
41
- },
42
- {
43
- "id": "E5F8H2",
44
- "name": "Regulation AA",
45
- "type": "regulations",
46
- },
47
- {
48
- "id": "J3K7L4",
49
- "name": "Standard BB",
50
- "type": "standards",
51
- },
52
- {
53
- "id": "M6N9P5",
54
- "name": "Internal Control CC",
55
- "type": "internal_controls",
56
- },
57
- {
58
- "id": "Q2R8S3",
59
- "name": "Other Document E",
60
- "type": "others",
61
- },
62
- {
63
- "id": "T7U4V1",
64
- "name": "Regulation BB",
65
- "type": "regulations",
66
- },
67
- {
68
- "id": "W5X8Y6",
69
- "name": "Standard CC",
70
- "type": "standards",
71
- },
72
- {
73
- "id": "Z2A6B9",
74
- "name": "Internal Control DD",
75
- "type": "internal_controls",
76
- },
77
- {
78
- "id": "C4D7E2",
79
- "name": "Other Document F",
80
- "type": "others",
81
- },
82
- ];
83
- export const MOCK_CATEGORIES = [
84
- { id: "A2B4C6", name: "P1", description: "Primary regulation document", level: 1, parent: null },
85
- { id: "D5E8F3", name: "Standard A", description: "Industry standard document", level: 1, parent: "A2B4C6" },
86
- { id: "G7H2J9", name: "Internal Control B", description: "Internal guidelines", level: 1, parent: "A2B4C6" },
87
- { id: "K4L6M1", name: "Other Document C", description: "Miscellaneous document", level: 1, parent: "A2B4C6" },
88
- { id: "N8P5Q7", name: "Regulation X", description: "Legal framework", level: 2, parent: "A2B4C6" },
89
- { id: "R3S9T4", name: "Standard Y", description: "Updated standard", level: 2, parent: "D5E8F3" },
90
- { id: "U6V2W8", name: "Internal Control Z", description: "Control procedures", level: 2, parent: "G7H2J9" },
91
- { id: "B9C4D7", name: "Other Document D", description: "General information", level: 2, parent: "K4L6M1" },
92
- { id: "E5F8H2", name: "Regulation AA", description: "Supplementary regulation", level: 3, parent: "N8P5Q7" },
93
- { id: "J3K7L4", name: "Standard BB", description: "New compliance standard", level: 3, parent: "R3S9T4" },
94
- { id: "M6N9P5", name: "Internal Control CC", description: "Advanced controls", level: 3, parent: "U6V2W8" },
95
- { id: "Q2R8S3", name: "Other Document E", description: "Additional reference", level: 3, parent: "B9C4D7" },
96
- { id: "T7U4V1", name: "Regulation BB", description: "Regulatory expansion", level: 4, parent: "E5F8H2" },
97
- { id: "W5X8Y6", name: "Standard CC", description: "Industry benchmark", level: 4, parent: "J3K7L4" },
98
- { id: "Z2A6B9", name: "Internal Control DD", description: "Internal audit policies", level: 4, parent: "M6N9P5" },
99
- { id: "C4D7E2", name: "Other Document F", description: "Extra documentation", level: 4, parent: "Q2R8S3" },
100
- { id: "F8H3J6", name: "Regulation CC", description: "Additional compliance rules", level: 5, parent: "T7U4V1" },
101
- { id: "K5L9M4", name: "Standard DD", description: "Revised guidelines", level: 5, parent: "W5X8Y6" },
102
- { id: "N2P6Q8", name: "Internal Control EE", description: "Operational security measures", level: 5, parent: "Z2A6B9" },
103
- { id: "R7S3T5", name: "Other Document G", description: "Supplementary notes", level: 5, parent: "C4D7E2" }
104
- ];
105
- function addParentTreeToCategories(categories) {
106
- // Create a map for quick lookup of categories by ID
107
- const categoryMap = new Map(categories.map(category => [category.id, category]));
108
- function getParentTree(category) {
109
- const parentTree = [];
110
- let currentParent = category.parent;
111
- while (currentParent) {
112
- const parentCategory = categoryMap.get(currentParent);
113
- if (parentCategory) {
114
- parentTree.push(parentCategory.name);
115
- currentParent = parentCategory.parent;
116
- }
117
- else {
118
- break;
119
- }
120
- }
121
- return parentTree;
122
- }
123
- // First, add parentTree to all categories
124
- const categoriesWithParentTree = categories.map(category => ({
125
- ...category,
126
- parentTree: getParentTree(category)
127
- }));
128
- // Sort categories to group children with parents
129
- return categoriesWithParentTree.sort((a, b) => {
130
- // Compare parent trees first
131
- const minLength = Math.min(a.parentTree.length, b.parentTree.length);
132
- for (let i = 0; i < minLength; i++) {
133
- if (a.parentTree[i] !== b.parentTree[i]) {
134
- return a.parentTree[i].localeCompare(b.parentTree[i]);
135
- }
136
- }
137
- // If one is a parent of the other, parent should come first
138
- if (a.id === b.parent)
139
- return -1;
140
- if (b.id === a.parent)
141
- return 1;
142
- // If they share the same parent, sort by name
143
- if (a.parent === b.parent) {
144
- return a.name.localeCompare(b.name);
145
- }
146
- // If they're at the same level, sort by name
147
- return a.name.localeCompare(b.name);
148
- });
149
- }
150
- // Example usage:
151
- const categoriesWithParentTree = addParentTreeToCategories(MOCK_CATEGORIES);
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL2NvbnN0YW50cy9tb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBZTtJQUN2QztRQUNFLElBQUksRUFBRSxRQUFRO1FBQ2QsTUFBTSxFQUFFLElBQUk7UUFDWixNQUFNLEVBQUUsYUFBYTtLQUN0QjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUUsWUFBWTtRQUNwQixNQUFNLEVBQUUsV0FBVztLQUVwQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUUsb0JBQW9CO1FBQzVCLE1BQU0sRUFBRSxtQkFBbUI7S0FHNUI7SUFDRDtRQUNFLElBQUksRUFBRSxRQUFRO1FBQ2QsTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixNQUFNLEVBQUUsUUFBUTtLQUdqQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUUsY0FBYztRQUN0QixNQUFNLEVBQUUsYUFBYTtLQUd0QjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUUsWUFBWTtRQUNwQixNQUFNLEVBQUUsV0FBVztLQUdwQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUUsb0JBQW9CO1FBQzVCLE1BQU0sRUFBRSxtQkFBbUI7S0FDNUI7SUFDRDtRQUNFLElBQUksRUFBRSxRQUFRO1FBQ2QsTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixNQUFNLEVBQUUsUUFBUTtLQUNqQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUUsZUFBZTtRQUN2QixNQUFNLEVBQUUsYUFBYTtLQUN0QjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUUsYUFBYTtRQUNyQixNQUFNLEVB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VSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbEMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3ZDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3ZEO1NBQ0Y7UUFFRCw0REFBNEQ7UUFDNUQsSUFBSSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxNQUFNO1lBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLE1BQU07WUFBRSxPQUFPLENBQUMsQ0FBQztRQUVoQyw4Q0FBOEM7UUFDOUMsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUU7WUFDekIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDckM7UUFFRCw2Q0FBNkM7UUFDN0MsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsaUJBQWlCO0FBQ2pCLE1BQU0sd0JBQXdCLEdBQUcseUJBQXlCLENBQUMsZUFBZSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBtb2NrLWRhdGEudHNcbmltcG9ydCB7IExpc3RJdGVtIH0gZnJvbSAnLi4vc2hhcmVkQ29tcG9uZW50cy9wcm9ncmFtLWxpc3QvaW50ZXJmYWNlcy9saXN0LWl0ZW0uaW50ZXJmYWNlJztcblxuZXhwb3J0IGNvbnN0IE1PQ0tfUFJPR1JBTVM6IExpc3RJdGVtW10gPSBbXG4gIHtcbiAgICBcImlkXCI6IFwiQTJCNEM2XCIsXG4gICAgXCJuYW1lXCI6IFwiUDFcIixcbiAgICBcInR5cGVcIjogXCJyZWd1bGF0aW9uc1wiLFxuICB9LFxuICB7XG4gICAgXCJpZFwiOiBcIlg3WTlaOFwiLFxuICAgIFwibmFtZVwiOiBcIlN0YW5kYXJkIEFcIixcbiAgICBcInR5cGVcIjogXCJzdGFuZGFyZHNcIixcbiAgIFxuICB9LFxuICB7XG4gICAgXCJpZFwiOiBcIkc3SDJKOVwiLFxuICAgIFwibmFtZVwiOiBcIkludGVybmFsIENvbnRyb2wgQlwiLFxuICAgIFwidHlwZVwiOiBcImludGVybmFsX2NvbnRyb2xzXCIsXG4gICAgXG4gICBcbiAgfSxcbiAge1xuICAgIFwiaWRcIjogXCJLNEw2TTFcIixcbiAgICBcIm5hbWVcIjogXCJPdGhlciBEb2N1bWVudCBDXCIsXG4gICAgXCJ0eXBlXCI6IFwib3RoZXJzXCIsXG4gICAgXG4gICAgXG4gIH0sXG4gIHtcbiAgICBcImlkXCI6IFwiTjhQNVE3XCIsXG4gICAgXCJuYW1lXCI6IFwiUmVndWxhdGlvbiBYXCIsXG4gICAgXCJ0eXBlXCI6IFwicmVndWxhdGlvbnNcIixcbiAgICBcbiAgICBcbiAgfSxcbiAge1xuICAgIFwiaWRcIjogXCJSM1M5VDRcIixcbiAgICBcIm5hbWVcIjogXCJTdGFuZGFyZCBZXCIsXG4gICAgXCJ0eXBlXCI6IFwic3RhbmRhcmRzXCIsXG5cbiAgIFxuICB9LFxuICB7XG4gICAgXCJpZFwiOiBcIlU2VjJXOFwiLFxuICAgIFwibmFtZVwiOiBcIkludGVybmFsIENvbnRyb2wgWlwiLFxuICAgIFwidHlwZVwiOiBcImludGVybmFsX2NvbnRyb2xzXCIsXG4gIH0sXG4gIHtcbiAgICBcImlkXCI6IFwiQjlDNEQ3XCIsXG4gICAgXCJuYW1lXCI6IFwiT3RoZXIgRG9jdW1lbnQgRFwiLFxuICAgIFwidHlwZVwiOiBcIm90aGVyc1wiLFxuICB9LFxuICB7XG4gICAgXCJpZFwiOiBcIkU1RjhIMlwiLFxuICAgIFwibmFtZVwiOiBcIlJlZ3VsYXRpb24gQUFcIixcbiAgICBcInR5cGVcIjogXCJyZWd1bGF0aW9uc1wiLFxuICB9LFxuICB7XG4gICAgXCJpZFwiOiBcIkozSzdMNFwiLFxuICAgIFwibmFtZVwiOiBcIlN0YW5kYXJkIEJCXCIsXG4gICAgXCJ0eXBlXCI6IFwic3RhbmRhcmRzXCIsXG4gICAgXG4gICAgXG4gIH0sXG4gIHtcbiAgICBcImlkXCI6IFwiTTZOOVA1XCIsXG4gICAgXCJuYW1lXCI6IFwiSW50ZXJuYWwgQ29udHJvbCBDQ1wiLFxuICAgIFwidHlwZVwiOiBcImludGVybmFsX2NvbnRyb2xzXCIsXG4gICAgXG4gICAgXG4gIH0sXG4gIHtcbiAgICBcImlkXCI6IFwiUTJSOFMzXCIsXG4gICAgXCJuYW1lXCI6IFwiT3RoZXIgRG9jdW1lbnQgRVwiLFxuICAgIFwidHlwZVwiOiBcIm90aGVyc1wiLFxuICAgIFxuICAgIFxuICB9LFxuICB7XG4gICAgXCJpZFwiOiBcIlQ3VTRWMVwiLFxuICAgIFwibmFtZVwiOiBcIlJlZ3VsYXRpb24gQkJcIixcbiAgICBcInR5cGVcIjogXCJyZWd1bGF0aW9uc1wiLFxuICAgIFxuICAgIFxuICB9LFxuICB7XG4gICAgXCJpZFwiOiBcIlc1WDhZNlwiLFxuICAgIFwibmFtZVwiOiBcIlN0YW5kYXJkIENDXCIsXG4gICAgXCJ0eXBlXCI6IFwic3RhbmRhcmRzXCIsXG4gICAgXG4gICAgXG4gIH0sXG4gIHtcbiAgICBcImlkXCI6IFwiWjJBNkI5XCIsXG4gICAgXCJuYW1lXCI6IFwiSW50ZXJuYWwgQ29udHJvbCBERFwiLFxuICAgIFwidHlwZVwiOiBcImludGVybmFsX2NvbnRyb2xzXCIsXG4gICAgXG4gICAgXG4gIH0sXG4gIHtcbiAgICBcImlkXCI6IFwiQzREN0UyXCIsXG4gICAgXCJuYW1lXCI6IFwiT3RoZXIgRG9jdW1lbnQgRlwiLFxuICAgIFwidHlwZVwiOiBcIm90aGVyc1wiLFxuICAgIFxuICAgIFxuICB9LFxuXTtcblxuZXhwb3J0IGNvbnN0IE1PQ0tfQ0FURUdPUklFUyA9IFsgICAgXG4gIHsgaWQ6IFwiQTJCNEM2XCIsIG5hbWU6IFwiUDFcIiwgZGVzY3JpcHRpb246IFwiUHJpbWFyeSByZWd1bGF0aW9uIGRvY3VtZW50XCIsIGxldmVsOiAxLCBwYXJlbnQ6IG51bGwgfSxcbiAgeyBpZDogXCJENUU4RjNcIiwgbmFtZTogXCJTdGFuZGFyZCBBXCIsIGRlc2NyaXB0aW9uOiBcIkluZHVzdHJ5IHN0YW5kYXJkIGRvY3VtZW50XCIsIGxldmVsOiAxLCBwYXJlbnQ6IFwiQTJCNEM2XCIgfSxcbiAgeyBpZDogXCJHN0gySjlcIiwgbmFtZTogXCJJbnRlcm5hbCBDb250cm9sIEJcIiwgZGVzY3JpcHRpb246IFwiSW50ZXJuYWwgZ3VpZGVsaW5lc1wiLCBsZXZlbDogMSwgcGFyZW50OiBcIkEyQjRDNlwiIH0sXG4gIHsgaWQ6IFwiSzRMNk0xXCIsIG5hbWU6IFwiT3RoZXIgRG9jdW1lbnQgQ1wiLCBkZXNjcmlwdGlvbjogXCJNaXNjZWxsYW5lb3VzIGRvY3VtZW50XCIsIGxldmVsOiAxLCBwYXJlbnQ6IFwiQTJCNEM2XCIgfSxcbiAgeyBpZDogXCJOOFA1UTdcIiwgbmFtZTogXCJSZWd1bGF0aW9uIFhcIiwgZGVzY3JpcHRpb246IFwiTGVnYWwgZnJhbWV3b3JrXCIsIGxldmVsOiAyLCBwYXJlbnQ6IFwiQTJCNEM2XCIgfSxcbiAgeyBpZDogXCJSM1M5VDRcIiwgbmFtZTogXCJTdGFuZGFyZCBZXCIsIGRlc2NyaXB0aW9uOiBcIlVwZGF0ZWQgc3RhbmRhcmRcIiwgbGV2ZWw6IDIsIHBhcmVudDogXCJENUU4RjNcIiB9LFxuICB7IGlkOiBcIlU2VjJXOFwiLCBuYW1lOiBcIkludGVybmFsIENvbnRyb2wgWlwiLCBkZXNjcmlwdGlvbjogXCJDb250cm9sIHByb2NlZHVyZXNcIiwgbGV2ZWw6IDIsIHBhcmVudDogXCJHN0gySjlcIiB9LFxuICB7IGlkOiBcIkI5QzREN1wiLCBuYW1lOiBcIk90aGVyIERvY3VtZW50IERcIiwgZGVzY3JpcHRpb246IFwiR2VuZXJhbCBpbmZvcm1hdGlvblwiLCBsZXZlbDogMiwgcGFyZW50OiBcIks0TDZNMVwiIH0sXG4gIHsgaWQ6IFwiRTVGOEgyXCIsIG5hbWU6IFwiUmVndWxhdGlvbiBBQVwiLCBkZXNjcmlwdGlvbjogXCJTdXBwbGVtZW50YXJ5IHJlZ3VsYXRpb25cIiwgbGV2ZWw6IDMsIHBhcmVudDogXCJOOFA1UTdcIiB9LFxuICB7IGlkOiBcIkozSzdMNFwiLCBuYW1lOiBcIlN0YW5kYXJkIEJCXCIsIGRlc2NyaXB0aW9uOiBcIk5ldyBjb21wbGlhbmNlIHN0YW5kYXJkXCIsIGxldmVsOiAzLCBwYXJlbnQ6IFwiUjNTOVQ0XCIgfSxcbiAgeyBpZDogXCJNNk45UDVcIiwgbmFtZTogXCJJbnRlcm5hbCBDb250cm9sIENDXCIsIGRlc2NyaXB0aW9uOiBcIkFkdmFuY2VkIGNvbnRyb2xzXCIsIGxldmVsOiAzLCBwYXJlbnQ6IFwiVTZWMlc4XCIgfSxcbiAgeyBpZDogXCJRMlI4UzNcIiwgbmFtZTogXCJPdGhlciBEb2N1bWVudCBFXCIsIGRlc2NyaXB0aW9uOiBcIkFkZGl0aW9uYWwgcmVmZXJlbmNlXCIsIGxldmVsOiAzLCBwYXJlbnQ6IFwiQjlDNEQ3XCIgfSxcbiAgeyBpZDogXCJUN1U0VjFcIiwgbmFtZTogXCJSZWd1bGF0aW9uIEJCXCIsIGRlc2NyaXB0aW9uOiBcIlJlZ3VsYXRvcnkgZXhwYW5zaW9uXCIsIGxldmVsOiA0LCBwYXJlbnQ6IFwiRTVGOEgyXCIgfSxcbiAgeyBpZDogXCJXNVg4WTZcIiwgbmFtZTogXCJTdGFuZGFyZCBDQ1wiLCBkZXNjcmlwdGlvbjogXCJJbmR1c3RyeSBiZW5jaG1hcmtcIiwgbGV2ZWw6IDQsIHBhcmVudDogXCJKM0s3TDRcIiB9LFxuICB7IGlkOiBcIloyQTZCOVwiLCBuYW1lOiBcIkludGVybmFsIENvbnRyb2wgRERcIiwgZGVzY3JpcHRpb246IFwiSW50ZXJuYWwgYXVkaXQgcG9saWNpZXNcIiwgbGV2ZWw6IDQsIHBhcmVudDogXCJNNk45UDVcIiB9LFxuICB7IGlkOiBcIkM0RDdFMlwiLCBuYW1lOiBcIk90aGVyIERvY3VtZW50IEZcIiwgZGVzY3JpcHRpb246IFwiRXh0cmEgZG9jdW1lbnRhdGlvblwiLCBsZXZlbDogNCwgcGFyZW50OiBcIlEyUjhTM1wiIH0sXG4gIHsgaWQ6IFwiRjhIM0o2XCIsIG5hbWU6IFwiUmVndWxhdGlvbiBDQ1wiLCBkZXNjcmlwdGlvbjogXCJBZGRpdGlvbmFsIGNvbXBsaWFuY2UgcnVsZXNcIiwgbGV2ZWw6IDUsIHBhcmVudDogXCJUN1U0VjFcIiB9LFxuICB7IGlkOiBcIks1TDlNNFwiLCBuYW1lOiBcIlN0YW5kYXJkIEREXCIsIGRlc2NyaXB0aW9uOiBcIlJldmlzZWQgZ3VpZGVsaW5lc1wiLCBsZXZlbDogNSwgcGFyZW50OiBcIlc1WDhZNlwiIH0sXG4gIHsgaWQ6IFwiTjJQNlE4XCIsIG5hbWU6IFwiSW50ZXJuYWwgQ29udHJvbCBFRVwiLCBkZXNjcmlwdGlvbjogXCJPcGVyYXRpb25hbCBzZWN1cml0eSBtZWFzdXJlc1wiLCBsZXZlbDogNSwgcGFyZW50OiBcIloyQTZCOVwiIH0sXG4gIHsgaWQ6IFwiUjdTM1Q1XCIsIG5hbWU6IFwiT3RoZXIgRG9jdW1lbnQgR1wiLCBkZXNjcmlwdGlvbjogXCJTdXBwbGVtZW50YXJ5IG5vdGVzXCIsIGxldmVsOiA1LCBwYXJlbnQ6IFwiQzREN0UyXCIgfVxuICBcbl1cblxuaW50ZXJmYWNlIENhdGVnb3J5IHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBsZXZlbDogbnVtYmVyO1xuICBwYXJlbnQ6IHN0cmluZyB8IG51bGw7XG59XG5cbmludGVyZmFjZSBDYXRlZ29yeVdpdGhQYXJlbnRUcmVlIGV4dGVuZHMgQ2F0ZWdvcnkge1xuICBwYXJlbnRUcmVlOiBzdHJpbmdbXTtcbn1cblxuZnVuY3Rpb24gYWRkUGFyZW50VHJlZVRvQ2F0ZWdvcmllcyhjYXRlZ29yaWVzOiBDYXRlZ29yeVtdKTogQ2F0ZWdvcnlXaXRoUGFyZW50VHJlZVtdIHtcbiAgLy8gQ3JlYXRlIGEgbWFwIGZvciBxdWljayBsb29rdXAgb2YgY2F0ZWdvcmllcyBieSBJRFxuICBjb25zdCBjYXRlZ29yeU1hcCA9IG5ldyBNYXAoY2F0ZWdvcmllcy5tYXAoY2F0ZWdvcnkgPT4gW2NhdGVnb3J5LmlkLCBjYXRlZ29yeV0pKTtcblxuICBmdW5jdGlvbiBnZXRQYXJlbnRUcmVlKGNhdGVnb3J5OiBDYXRlZ29yeSk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBwYXJlbnRUcmVlOiBzdHJpbmdbXSA9IFtdO1xuICAgIGxldCBjdXJyZW50UGFyZW50ID0gY2F0ZWdvcnkucGFyZW50O1xuXG4gICAgd2hpbGUgKGN1cnJlbnRQYXJlbnQpIHtcbiAgICAgIGNvbnN0IHBhcmVudENhdGVnb3J5ID0gY2F0ZWdvcnlNYXAuZ2V0KGN1cnJlbnRQYXJlbnQpO1xuICAgICAgaWYgKHBhcmVudENhdGVnb3J5KSB7XG4gICAgICAgIHBhcmVudFRyZWUucHVzaChwYXJlbnRDYXRlZ29yeS5uYW1lKTtcbiAgICAgICAgY3VycmVudFBhcmVudCA9IHBhcmVudENhdGVnb3J5LnBhcmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwYXJlbnRUcmVlO1xuICB9XG5cbiAgLy8gRmlyc3QsIGFkZCBwYXJlbnRUcmVlIHRvIGFsbCBjYXRlZ29yaWVzXG4gIGNvbnN0IGNhdGVnb3JpZXNXaXRoUGFyZW50VHJlZSA9IGNhdGVnb3JpZXMubWFwKGNhdGVnb3J5ID0+ICh7XG4gICAgLi4uY2F0ZWdvcnksXG4gICAgcGFyZW50VHJlZTogZ2V0UGFyZW50VHJlZShjYXRlZ29yeSlcbiAgfSkpO1xuXG4gIC8vIFNvcnQgY2F0ZWdvcmllcyB0byBncm91cCBjaGlsZHJlbiB3aXRoIHBhcmVudHNcbiAgcmV0dXJuIGNhdGVnb3JpZXNXaXRoUGFyZW50VHJlZS5zb3J0KChhLCBiKSA9PiB7XG4gICAgLy8gQ29tcGFyZSBwYXJlbnQgdHJlZXMgZmlyc3RcbiAgICBjb25zdCBtaW5MZW5ndGggPSBNYXRoLm1pbihhLnBhcmVudFRyZWUubGVuZ3RoLCBiLnBhcmVudFRyZWUubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1pbkxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYS5wYXJlbnRUcmVlW2ldICE9PSBiLnBhcmVudFRyZWVbaV0pIHtcbiAgICAgICAgcmV0dXJuIGEucGFyZW50VHJlZVtpXS5sb2NhbGVDb21wYXJlKGIucGFyZW50VHJlZVtpXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgb25lIGlzIGEgcGFyZW50IG9mIHRoZSBvdGhlciwgcGFyZW50IHNob3VsZCBjb21lIGZpcnN0XG4gICAgaWYgKGEuaWQgPT09IGIucGFyZW50KSByZXR1cm4gLTE7XG4gICAgaWYgKGIuaWQgPT09IGEucGFyZW50KSByZXR1cm4gMTtcblxuICAgIC8vIElmIHRoZXkgc2hhcmUgdGhlIHNhbWUgcGFyZW50LCBzb3J0IGJ5IG5hbWVcbiAgICBpZiAoYS5wYXJlbnQgPT09IGIucGFyZW50KSB7XG4gICAgICByZXR1cm4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGV5J3JlIGF0IHRoZSBzYW1lIGxldmVsLCBzb3J0IGJ5IG5hbWVcbiAgICByZXR1cm4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKTtcbiAgfSk7XG59XG5cbi8vIEV4YW1wbGUgdXNhZ2U6XG5jb25zdCBjYXRlZ29yaWVzV2l0aFBhcmVudFRyZWUgPSBhZGRQYXJlbnRUcmVlVG9DYXRlZ29yaWVzKE1PQ0tfQ0FURUdPUklFUyk7Il19
@@ -1,15 +0,0 @@
1
- import { ListItem } from '../sharedComponents/program-list/interfaces/list-item.interface';
2
- export declare const MOCK_PROGRAMS: ListItem[];
3
- export declare const MOCK_CATEGORIES: ({
4
- id: string;
5
- name: string;
6
- description: string;
7
- level: number;
8
- parent: null;
9
- } | {
10
- id: string;
11
- name: string;
12
- description: string;
13
- level: number;
14
- parent: string;
15
- })[];