angular-slickgrid 3.0.4 → 3.3.0

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.
Files changed (36) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +192 -181
  3. package/angular-slickgrid.metadata.json +1 -1
  4. package/app/modules/angular-slickgrid/components/angular-slickgrid.component.d.ts +11 -3
  5. package/app/modules/angular-slickgrid/index.d.ts +0 -1
  6. package/bundles/angular-slickgrid.umd.js +99 -248
  7. package/bundles/angular-slickgrid.umd.js.map +1 -1
  8. package/esm2015/app/modules/angular-slickgrid/components/angular-slickgrid.component.js +89 -70
  9. package/esm2015/app/modules/angular-slickgrid/constants.js +1 -1
  10. package/esm2015/app/modules/angular-slickgrid/extensions/index.js +1 -1
  11. package/esm2015/app/modules/angular-slickgrid/extensions/rowDetailViewExtension.js +2 -2
  12. package/esm2015/app/modules/angular-slickgrid/global-grid-options.js +4 -3
  13. package/esm2015/app/modules/angular-slickgrid/index.js +1 -2
  14. package/esm2015/app/modules/angular-slickgrid/models/angularComponentOutput.interface.js +1 -1
  15. package/esm2015/app/modules/angular-slickgrid/models/angularGridInstance.interface.js +1 -1
  16. package/esm2015/app/modules/angular-slickgrid/models/externalTestingDependencies.interface.js +1 -1
  17. package/esm2015/app/modules/angular-slickgrid/models/gridOption.interface.js +1 -1
  18. package/esm2015/app/modules/angular-slickgrid/models/index.js +1 -1
  19. package/esm2015/app/modules/angular-slickgrid/models/rowDetailView.interface.js +1 -1
  20. package/esm2015/app/modules/angular-slickgrid/models/slickGrid.interface.js +1 -1
  21. package/esm2015/app/modules/angular-slickgrid/modules/angular-slickgrid.module.js +1 -4
  22. package/esm2015/app/modules/angular-slickgrid/services/angularUtil.service.js +1 -1
  23. package/esm2015/app/modules/angular-slickgrid/services/bsDropdown.service.js +1 -1
  24. package/esm2015/app/modules/angular-slickgrid/services/container.service.js +1 -1
  25. package/esm2015/app/modules/angular-slickgrid/services/index.js +1 -1
  26. package/esm2015/app/modules/angular-slickgrid/services/translater.service.js +1 -1
  27. package/esm2015/app/modules/angular-slickgrid/services/utilities.js +1 -1
  28. package/esm2015/app/modules/angular-slickgrid/slickgrid-config.js +1 -1
  29. package/esm2015/public_api.js +1 -1
  30. package/fesm2015/angular-slickgrid.js +95 -209
  31. package/fesm2015/angular-slickgrid.js.map +1 -1
  32. package/i18n/en.json +89 -89
  33. package/i18n/fr.json +90 -90
  34. package/package.json +11 -10
  35. package/app/modules/angular-slickgrid/components/slick-pagination.component.d.ts +0 -42
  36. package/esm2015/app/modules/angular-slickgrid/components/slick-pagination.component.js +0 -137
package/i18n/en.json CHANGED
@@ -1,90 +1,90 @@
1
- {
2
- "ALL_SELECTED": "All Selected",
3
- "CANCEL": "Cancel",
4
- "CLEAR_ALL_FILTERS": "Clear all Filters",
5
- "CLEAR_ALL_GROUPING": "Clear all Grouping",
6
- "CLEAR_ALL_SORTING": "Clear all Sorting",
7
- "CLEAR_PINNING": "Unfreeze Columns/Rows",
8
- "COLLAPSE_ALL_GROUPS": "Collapse all Groups",
9
- "COLUMNS": "Columns",
10
- "COLUMN_RESIZE_BY_CONTENT": "Resize by Content",
11
- "COMMANDS": "Commands",
12
- "CONTAINS": "Contains",
13
- "COPY": "Copy",
14
- "EMPTY_DATA_WARNING_MESSAGE": "No data to display.",
15
- "ENDS_WITH": "Ends With",
16
- "EQUALS": "Equals",
17
- "EQUAL_TO": "Equal to",
18
- "EXPAND_ALL_GROUPS": "Expand all Groups",
19
- "EXPORT_TO_CSV": "Export in CSV format",
20
- "EXPORT_TO_EXCEL": "Export to Excel",
21
- "EXPORT_TO_TAB_DELIMITED": "Export in Text format (Tab delimited)",
22
- "EXPORT_TO_TEXT_FORMAT": "Export in Text format",
23
- "FROM_TO_OF_TOTAL_ITEMS": "{{from}}-{{to}} of {{totalItems}} items",
24
- "FORCE_FIT_COLUMNS": "Force fit columns",
25
- "FREEZE_COLUMNS": "Freeze Columns",
26
- "INVALID_FLOAT": "The number must be valid and have a maximum of {{maxDecimal}} decimals.",
27
- "GREATER_THAN": "Greater than",
28
- "GREATER_THAN_OR_EQUAL_TO": "Greater than or equal to",
29
- "GROUP_BY": "Group by",
30
- "HIDE_COLUMN": "Hide Column",
31
- "IN_COLLECTION_SEPERATED_BY_COMMA": "Search items in a collection, must be separated by a comma (a,b)",
32
- "ITEMS": "items",
33
- "ITEMS_PER_PAGE": "items per page",
34
- "ITEMS_SELECTED": "items selected",
35
- "LAST_UPDATE": "Last Update",
36
- "LESS_THAN": "Less than",
37
- "LESS_THAN_OR_EQUAL_TO": "Less than or equal to",
38
- "NOT_CONTAINS": "Not contains",
39
- "NOT_EQUAL_TO": "Not equal to",
40
- "NOT_IN_COLLECTION_SEPERATED_BY_COMMA": "Search items not in a collection, must be separated by a comma (a,b)",
41
- "OF": "of",
42
- "OK": "OK",
43
- "PAGE": "Page",
44
- "PAGE_X_OF_Y": "page {{x}} of {{y}}",
45
- "REFRESH_DATASET": "Refresh Dataset",
46
- "REMOVE_FILTER": "Remove Filter",
47
- "REMOVE_SORT": "Remove Sort",
48
- "SAVE": "Save",
49
- "SELECT_ALL": "Select All",
50
- "SORT_ASCENDING": "Sort Ascending",
51
- "SORT_DESCENDING": "Sort Descending",
52
- "STARTS_WITH": "Starts With",
53
- "SYNCHRONOUS_RESIZE": "Synchronous resize",
54
- "TOGGLE_FILTER_ROW": "Toggle Filter Row",
55
- "TOGGLE_PRE_HEADER_ROW": "Toggle Pre-Header Row",
56
- "X_OF_Y_SELECTED": "# of % selected",
57
- "BILLING": {
58
- "ADDRESS": {
59
- "STREET": "Billing Address Street",
60
- "ZIP": "Billing Address Zip"
61
- },
62
- "INFORMATION": "Billing Information"
63
- },
64
- "CUSTOM_COMMANDS": "Custom Commands",
65
- "DURATION": "Duration",
66
- "COMPANY": "Company",
67
- "COMPLETED": "Completed",
68
- "CHANGE_COMPLETED_FLAG": "Change Completed Flag",
69
- "CHANGE_PRIORITY": "Change Priority",
70
- "CUSTOMER_INFORMATION": "Customer Information",
71
- "DELETE_ROW": "Delete Row",
72
- "DISABLED_COMMAND": "Disabled Command",
73
- "FALSE": "False",
74
- "FEMALE": "Female",
75
- "FINISH": "Finish",
76
- "GENDER": "Gender",
77
- "HELP": "Help",
78
- "HIGH": "High",
79
- "LOW": "Low",
80
- "MEDIUM": "Medium",
81
- "MALE": "Male",
82
- "NAME": "Name",
83
- "NONE": "None",
84
- "PERCENT_COMPLETE": "% Complete",
85
- "PRIORITY": "Priority",
86
- "START": "Start",
87
- "TASK_X": "Task {{x}}",
88
- "TITLE": "Title",
89
- "TRUE": "True"
1
+ {
2
+ "ALL_SELECTED": "All Selected",
3
+ "CANCEL": "Cancel",
4
+ "CLEAR_ALL_FILTERS": "Clear all Filters",
5
+ "CLEAR_ALL_GROUPING": "Clear all Grouping",
6
+ "CLEAR_ALL_SORTING": "Clear all Sorting",
7
+ "CLEAR_PINNING": "Unfreeze Columns/Rows",
8
+ "COLLAPSE_ALL_GROUPS": "Collapse all Groups",
9
+ "COLUMNS": "Columns",
10
+ "COLUMN_RESIZE_BY_CONTENT": "Resize by Content",
11
+ "COMMANDS": "Commands",
12
+ "CONTAINS": "Contains",
13
+ "COPY": "Copy",
14
+ "EMPTY_DATA_WARNING_MESSAGE": "No data to display.",
15
+ "ENDS_WITH": "Ends With",
16
+ "EQUALS": "Equals",
17
+ "EQUAL_TO": "Equal to",
18
+ "EXPAND_ALL_GROUPS": "Expand all Groups",
19
+ "EXPORT_TO_CSV": "Export in CSV format",
20
+ "EXPORT_TO_EXCEL": "Export to Excel",
21
+ "EXPORT_TO_TAB_DELIMITED": "Export in Text format (Tab delimited)",
22
+ "EXPORT_TO_TEXT_FORMAT": "Export in Text format",
23
+ "FROM_TO_OF_TOTAL_ITEMS": "{{from}}-{{to}} of {{totalItems}} items",
24
+ "FORCE_FIT_COLUMNS": "Force fit columns",
25
+ "FREEZE_COLUMNS": "Freeze Columns",
26
+ "INVALID_FLOAT": "The number must be valid and have a maximum of {{maxDecimal}} decimals.",
27
+ "GREATER_THAN": "Greater than",
28
+ "GREATER_THAN_OR_EQUAL_TO": "Greater than or equal to",
29
+ "GROUP_BY": "Group by",
30
+ "HIDE_COLUMN": "Hide Column",
31
+ "IN_COLLECTION_SEPERATED_BY_COMMA": "Search items in a collection, must be separated by a comma (a,b)",
32
+ "ITEMS": "items",
33
+ "ITEMS_PER_PAGE": "items per page",
34
+ "ITEMS_SELECTED": "items selected",
35
+ "LAST_UPDATE": "Last Update",
36
+ "LESS_THAN": "Less than",
37
+ "LESS_THAN_OR_EQUAL_TO": "Less than or equal to",
38
+ "NOT_CONTAINS": "Not contains",
39
+ "NOT_EQUAL_TO": "Not equal to",
40
+ "NOT_IN_COLLECTION_SEPERATED_BY_COMMA": "Search items not in a collection, must be separated by a comma (a,b)",
41
+ "OF": "of",
42
+ "OK": "OK",
43
+ "PAGE": "Page",
44
+ "PAGE_X_OF_Y": "page {{x}} of {{y}}",
45
+ "REFRESH_DATASET": "Refresh Dataset",
46
+ "REMOVE_FILTER": "Remove Filter",
47
+ "REMOVE_SORT": "Remove Sort",
48
+ "SAVE": "Save",
49
+ "SELECT_ALL": "Select All",
50
+ "SORT_ASCENDING": "Sort Ascending",
51
+ "SORT_DESCENDING": "Sort Descending",
52
+ "STARTS_WITH": "Starts With",
53
+ "SYNCHRONOUS_RESIZE": "Synchronous resize",
54
+ "TOGGLE_FILTER_ROW": "Toggle Filter Row",
55
+ "TOGGLE_PRE_HEADER_ROW": "Toggle Pre-Header Row",
56
+ "X_OF_Y_SELECTED": "# of % selected",
57
+ "BILLING": {
58
+ "ADDRESS": {
59
+ "STREET": "Billing Address Street",
60
+ "ZIP": "Billing Address Zip"
61
+ },
62
+ "INFORMATION": "Billing Information"
63
+ },
64
+ "CUSTOM_COMMANDS": "Custom Commands",
65
+ "DURATION": "Duration",
66
+ "COMPANY": "Company",
67
+ "COMPLETED": "Completed",
68
+ "CHANGE_COMPLETED_FLAG": "Change Completed Flag",
69
+ "CHANGE_PRIORITY": "Change Priority",
70
+ "CUSTOMER_INFORMATION": "Customer Information",
71
+ "DELETE_ROW": "Delete Row",
72
+ "DISABLED_COMMAND": "Disabled Command",
73
+ "FALSE": "False",
74
+ "FEMALE": "Female",
75
+ "FINISH": "Finish",
76
+ "GENDER": "Gender",
77
+ "HELP": "Help",
78
+ "HIGH": "High",
79
+ "LOW": "Low",
80
+ "MEDIUM": "Medium",
81
+ "MALE": "Male",
82
+ "NAME": "Name",
83
+ "NONE": "None",
84
+ "PERCENT_COMPLETE": "% Complete",
85
+ "PRIORITY": "Priority",
86
+ "START": "Start",
87
+ "TASK_X": "Task {{x}}",
88
+ "TITLE": "Title",
89
+ "TRUE": "True"
90
90
  }
package/i18n/fr.json CHANGED
@@ -1,91 +1,91 @@
1
- {
2
- "ALL_SELECTED": "Tout sélectionnés",
3
- "CANCEL": "Annuler",
4
- "CLEAR_ALL_FILTERS": "Supprimer tous les filtres",
5
- "CLEAR_ALL_GROUPING": "Supprimer tous les groupes",
6
- "CLEAR_ALL_SORTING": "Supprimer tous les tris",
7
- "CLEAR_PINNING": "Dégeler les colonnes/rangées",
8
- "COLLAPSE_ALL_GROUPS": "Réduire tous les groupes",
9
- "COLUMNS": "Colonnes",
10
- "COLUMN_RESIZE_BY_CONTENT": "Redimensionner par contenu",
11
- "COMMANDS": "Commandes",
12
- "CONTAINS": "Contient",
13
- "COPY": "Copier",
14
- "EMPTY_DATA_WARNING_MESSAGE": "Aucune donnée à afficher.",
15
- "ENDS_WITH": "Se termine par",
16
- "EQUALS": "Égale",
17
- "EQUAL_TO": "Égal à",
18
- "EXPAND_ALL_GROUPS": "Étendre tous les groupes",
19
- "EXPORT_TO_CSV": "Exporter en format CSV",
20
- "EXPORT_TO_EXCEL": "Exporter vers Excel",
21
- "EXPORT_TO_TAB_DELIMITED": "Exporter en format texte (délimité par tabulation)",
22
- "EXPORT_TO_TEXT_FORMAT": "Exporter en format texte",
23
- "FROM_TO_OF_TOTAL_ITEMS": "{{from}}-{{to}} de {{totalItems}} éléments",
24
- "FORCE_FIT_COLUMNS": "Ajustement forcé des colonnes",
25
- "FREEZE_COLUMNS": "Geler les colonnes",
26
- "GREATER_THAN": "Plus grand que",
27
- "GREATER_THAN_OR_EQUAL_TO": "Plus grand ou égal à",
28
- "GROUP_BY": "Grouper par",
29
- "HIDE_COLUMN": "Cacher la colonne",
30
- "IN_COLLECTION_SEPERATED_BY_COMMA": "Recherche incluant certain éléments d'une collection, doit être séparé par une virgule (a,b)",
31
- "INVALID_FLOAT": "Le nombre doit être valide et avoir un maximum de {{maxDecimal}} décimales.",
32
- "ITEMS": "éléments",
33
- "ITEMS_PER_PAGE": "éléments par page",
34
- "ITEMS_SELECTED": "éléments sélectionnés",
35
- "LAST_UPDATE": "Dernière mise à jour",
36
- "LESS_THAN": "Plus petit que",
37
- "LESS_THAN_OR_EQUAL_TO": "Plus petit ou égal à",
38
- "NOT_CONTAINS": "Ne contient pas",
39
- "NOT_EQUAL_TO": "Non égal à",
40
- "NOT_IN_COLLECTION_SEPERATED_BY_COMMA": "Recherche excluant certain éléments d'une collection, doit être séparé par une virgule (a,b)",
41
- "OF": "de",
42
- "OK": "Terminé",
43
- "PAGE": "Page",
44
- "PAGE_X_OF_Y": "page {{x}} de {{y}}",
45
- "REFRESH_DATASET": "Rafraîchir les données",
46
- "REMOVE_FILTER": "Supprimer le filtre",
47
- "REMOVE_SORT": "Supprimer le tri",
48
- "SAVE": "Sauvegarder",
49
- "SELECT_ALL": "Sélectionner tout",
50
- "SORT_ASCENDING": "Trier par ordre croissant",
51
- "SORT_DESCENDING": "Trier par ordre décroissant",
52
- "STARTS_WITH": "Commence par",
53
- "SYNCHRONOUS_RESIZE": "Redimension synchrone",
54
- "TOGGLE_FILTER_ROW": "Basculer la ligne des filtres",
55
- "TOGGLE_PRE_HEADER_ROW": "Basculer la ligne de pré-en-tête",
56
- "X_OF_Y_SELECTED": "# de % sélectionnés",
57
- "BILLING": {
58
- "ADDRESS": {
59
- "STREET": "Adresse de facturation",
60
- "ZIP": "Code zip de facturation"
61
- },
62
- "INFORMATION": "Information de Facturation"
63
- },
64
- "DURATION": "Durée",
65
- "COMPANY": "Compagnie",
66
- "COMPLETED": "Terminé",
67
- "CHANGE_COMPLETED_FLAG": "Changer l'indicateur terminé",
68
- "CHANGE_PRIORITY": "Changer la priorité",
69
- "CUSTOM_COMMANDS": "Commandes Personnalisées",
70
- "CUSTOMER_INFORMATION": "Information Client",
71
- "DELETE_ROW": "Supprimer la ligne",
72
- "DISABLED_COMMAND": "Commande désactivée",
73
- "FALSE": "Faux",
74
- "FEMALE": "Féminin",
75
- "FINISH": "Fin",
76
- "GENDER": "Sexe",
77
- "HELP": "Aide",
78
- "HIGH": "Haut",
79
- "LOW": "Bas",
80
- "MEDIUM": "Moyen",
81
- "MALE": "Masculin",
82
- "NAME": "Nom",
83
- "NONE": "Aucun",
84
- "PERCENT_COMPLETE": "% Achevée",
85
- "PRIORITY": "Priorité",
86
- "START": "Début",
87
- "TASK_X": "Tâche {{x}}",
88
- "TITLE": "Titre",
89
- "TITLE.NAME": "Nom du Titre",
90
- "TRUE": "Vrai"
1
+ {
2
+ "ALL_SELECTED": "Tout sélectionnés",
3
+ "CANCEL": "Annuler",
4
+ "CLEAR_ALL_FILTERS": "Supprimer tous les filtres",
5
+ "CLEAR_ALL_GROUPING": "Supprimer tous les groupes",
6
+ "CLEAR_ALL_SORTING": "Supprimer tous les tris",
7
+ "CLEAR_PINNING": "Dégeler les colonnes/rangées",
8
+ "COLLAPSE_ALL_GROUPS": "Réduire tous les groupes",
9
+ "COLUMNS": "Colonnes",
10
+ "COLUMN_RESIZE_BY_CONTENT": "Redimensionner par contenu",
11
+ "COMMANDS": "Commandes",
12
+ "CONTAINS": "Contient",
13
+ "COPY": "Copier",
14
+ "EMPTY_DATA_WARNING_MESSAGE": "Aucune donnée à afficher.",
15
+ "ENDS_WITH": "Se termine par",
16
+ "EQUALS": "Égale",
17
+ "EQUAL_TO": "Égal à",
18
+ "EXPAND_ALL_GROUPS": "Étendre tous les groupes",
19
+ "EXPORT_TO_CSV": "Exporter en format CSV",
20
+ "EXPORT_TO_EXCEL": "Exporter vers Excel",
21
+ "EXPORT_TO_TAB_DELIMITED": "Exporter en format texte (délimité par tabulation)",
22
+ "EXPORT_TO_TEXT_FORMAT": "Exporter en format texte",
23
+ "FROM_TO_OF_TOTAL_ITEMS": "{{from}}-{{to}} de {{totalItems}} éléments",
24
+ "FORCE_FIT_COLUMNS": "Ajustement forcé des colonnes",
25
+ "FREEZE_COLUMNS": "Geler les colonnes",
26
+ "GREATER_THAN": "Plus grand que",
27
+ "GREATER_THAN_OR_EQUAL_TO": "Plus grand ou égal à",
28
+ "GROUP_BY": "Grouper par",
29
+ "HIDE_COLUMN": "Cacher la colonne",
30
+ "IN_COLLECTION_SEPERATED_BY_COMMA": "Recherche incluant certain éléments d'une collection, doit être séparé par une virgule (a,b)",
31
+ "INVALID_FLOAT": "Le nombre doit être valide et avoir un maximum de {{maxDecimal}} décimales.",
32
+ "ITEMS": "éléments",
33
+ "ITEMS_PER_PAGE": "éléments par page",
34
+ "ITEMS_SELECTED": "éléments sélectionnés",
35
+ "LAST_UPDATE": "Dernière mise à jour",
36
+ "LESS_THAN": "Plus petit que",
37
+ "LESS_THAN_OR_EQUAL_TO": "Plus petit ou égal à",
38
+ "NOT_CONTAINS": "Ne contient pas",
39
+ "NOT_EQUAL_TO": "Non égal à",
40
+ "NOT_IN_COLLECTION_SEPERATED_BY_COMMA": "Recherche excluant certain éléments d'une collection, doit être séparé par une virgule (a,b)",
41
+ "OF": "de",
42
+ "OK": "Terminé",
43
+ "PAGE": "Page",
44
+ "PAGE_X_OF_Y": "page {{x}} de {{y}}",
45
+ "REFRESH_DATASET": "Rafraîchir les données",
46
+ "REMOVE_FILTER": "Supprimer le filtre",
47
+ "REMOVE_SORT": "Supprimer le tri",
48
+ "SAVE": "Sauvegarder",
49
+ "SELECT_ALL": "Sélectionner tout",
50
+ "SORT_ASCENDING": "Trier par ordre croissant",
51
+ "SORT_DESCENDING": "Trier par ordre décroissant",
52
+ "STARTS_WITH": "Commence par",
53
+ "SYNCHRONOUS_RESIZE": "Redimension synchrone",
54
+ "TOGGLE_FILTER_ROW": "Basculer la ligne des filtres",
55
+ "TOGGLE_PRE_HEADER_ROW": "Basculer la ligne de pré-en-tête",
56
+ "X_OF_Y_SELECTED": "# de % sélectionnés",
57
+ "BILLING": {
58
+ "ADDRESS": {
59
+ "STREET": "Adresse de facturation",
60
+ "ZIP": "Code zip de facturation"
61
+ },
62
+ "INFORMATION": "Information de Facturation"
63
+ },
64
+ "DURATION": "Durée",
65
+ "COMPANY": "Compagnie",
66
+ "COMPLETED": "Terminé",
67
+ "CHANGE_COMPLETED_FLAG": "Changer l'indicateur terminé",
68
+ "CHANGE_PRIORITY": "Changer la priorité",
69
+ "CUSTOM_COMMANDS": "Commandes Personnalisées",
70
+ "CUSTOMER_INFORMATION": "Information Client",
71
+ "DELETE_ROW": "Supprimer la ligne",
72
+ "DISABLED_COMMAND": "Commande désactivée",
73
+ "FALSE": "Faux",
74
+ "FEMALE": "Féminin",
75
+ "FINISH": "Fin",
76
+ "GENDER": "Sexe",
77
+ "HELP": "Aide",
78
+ "HIGH": "Haut",
79
+ "LOW": "Bas",
80
+ "MEDIUM": "Moyen",
81
+ "MALE": "Masculin",
82
+ "NAME": "Nom",
83
+ "NONE": "Aucun",
84
+ "PERCENT_COMPLETE": "% Achevée",
85
+ "PRIORITY": "Priorité",
86
+ "START": "Début",
87
+ "TASK_X": "Tâche {{x}}",
88
+ "TITLE": "Titre",
89
+ "TITLE.NAME": "Nom du Titre",
90
+ "TRUE": "Vrai"
91
91
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "angular-slickgrid",
3
- "version": "3.0.4",
3
+ "version": "3.3.0",
4
4
  "description": "Slickgrid components made available in Angular",
5
5
  "keywords": [
6
6
  "angular",
@@ -18,20 +18,21 @@
18
18
  "main": "bundles/angular-slickgrid.umd.js",
19
19
  "private": false,
20
20
  "dependencies": {
21
- "@slickgrid-universal/common": "^0.16.1",
22
- "@slickgrid-universal/custom-footer-component": "^0.16.1",
23
- "@slickgrid-universal/empty-warning-component": "^0.16.1",
24
- "@slickgrid-universal/event-pub-sub": "^0.16.1",
25
- "@slickgrid-universal/rxjs-observable": "^0.16.1",
26
- "@types/dompurify": "^2.2.3",
21
+ "@slickgrid-universal/common": "^0.19.0",
22
+ "@slickgrid-universal/custom-footer-component": "^0.19.0",
23
+ "@slickgrid-universal/empty-warning-component": "^0.19.0",
24
+ "@slickgrid-universal/event-pub-sub": "^0.19.0",
25
+ "@slickgrid-universal/pagination-component": "^0.19.0",
26
+ "@slickgrid-universal/rxjs-observable": "^0.19.0",
27
+ "@types/dompurify": "^2.3.0",
27
28
  "@types/jquery": "^3.5.6",
28
29
  "dequal": "^2.0.2",
29
- "dompurify": "^2.3.0",
30
+ "dompurify": "^2.3.3",
30
31
  "font-awesome": "^4.7.0",
31
32
  "jquery": "~3.5.1",
32
33
  "jquery-ui-dist": "^1.12.1",
33
34
  "moment-mini": "^2.24.0",
34
- "rxjs": "^7.2.0",
35
+ "rxjs": "^7.3.0",
35
36
  "tslib": "^2.2.0"
36
37
  },
37
38
  "peerDependencies": {
@@ -41,7 +42,7 @@
41
42
  "typescript": ">=4.3.5"
42
43
  },
43
44
  "engines": {
44
- "node": ">=14.15.0",
45
+ "node": ">=14.17.0",
45
46
  "npm": ">=6.14.8"
46
47
  },
47
48
  "module": "fesm2015/angular-slickgrid.js",
@@ -1,42 +0,0 @@
1
- import { OnDestroy, OnInit } from '@angular/core';
2
- import { TranslateService } from '@ngx-translate/core';
3
- import { PaginationService } from '@slickgrid-universal/common';
4
- import { GridOption } from './../models/index';
5
- export declare class SlickPaginationComponent implements OnDestroy, OnInit {
6
- private readonly translate;
7
- gridOptions: GridOption;
8
- paginationService: PaginationService;
9
- private subscriptions;
10
- private _enableTranslate;
11
- private _gridOptions;
12
- private _locales;
13
- textItemsPerPage: string;
14
- textItems: string;
15
- textOf: string;
16
- textPage: string;
17
- /** Constructor */
18
- constructor(translate: TranslateService);
19
- get availablePageSizes(): number[];
20
- get dataFrom(): number;
21
- get dataTo(): number;
22
- /** is the left side pagination disabled? */
23
- get isLeftPaginationDisabled(): boolean;
24
- /** is the right side pagination disabled? */
25
- get isRightPaginationDisabled(): boolean;
26
- get itemsPerPage(): number;
27
- get pageCount(): number;
28
- get pageNumber(): number;
29
- set pageNumber(page: number);
30
- get totalItems(): number;
31
- ngOnDestroy(): void;
32
- ngOnInit(): void;
33
- changeToFirstPage(event: MouseEvent): void;
34
- changeToLastPage(event: MouseEvent): void;
35
- changeToNextPage(event: MouseEvent): void;
36
- changeToPreviousPage(event: MouseEvent): void;
37
- changeToCurrentPage(event: any): void;
38
- changeItemPerPage(event: any): void;
39
- dispose(): void;
40
- /** Translate all the texts shown in the UI, use ngx-translate service when available or custom locales when service is null */
41
- private translateAllUiTexts;
42
- }
@@ -1,137 +0,0 @@
1
- import { Component, Input, Optional } from '@angular/core';
2
- import { TranslateService } from '@ngx-translate/core';
3
- import { getTranslationPrefix } from '@slickgrid-universal/common';
4
- import { Constants } from '../constants';
5
- import { unsubscribeAllObservables } from '../services/utilities';
6
- export class SlickPaginationComponent {
7
- /** Constructor */
8
- constructor(translate) {
9
- this.translate = translate;
10
- this.subscriptions = [];
11
- this._enableTranslate = false;
12
- // text translations (handled by ngx-translate or by custom locale)
13
- this.textItemsPerPage = 'items per page';
14
- this.textItems = 'items';
15
- this.textOf = 'of';
16
- this.textPage = 'Page';
17
- }
18
- get availablePageSizes() {
19
- return this.paginationService.availablePageSizes;
20
- }
21
- get dataFrom() {
22
- return this.paginationService.dataFrom;
23
- }
24
- get dataTo() {
25
- return this.paginationService.dataTo;
26
- }
27
- /** is the left side pagination disabled? */
28
- get isLeftPaginationDisabled() {
29
- return this.pageNumber === 1 || this.totalItems === 0;
30
- }
31
- /** is the right side pagination disabled? */
32
- get isRightPaginationDisabled() {
33
- return this.pageNumber === this.pageCount || this.totalItems === 0;
34
- }
35
- get itemsPerPage() {
36
- return this.paginationService.itemsPerPage;
37
- }
38
- get pageCount() {
39
- return this.paginationService.pageCount;
40
- }
41
- get pageNumber() {
42
- return this.paginationService.pageNumber;
43
- }
44
- set pageNumber(page) {
45
- // the setter has to be declared but we won't use it, instead we will use the "changeToCurrentPage()" to only update the value after ENTER keydown event
46
- }
47
- get totalItems() {
48
- return this.paginationService.totalItems;
49
- }
50
- ngOnDestroy() {
51
- this.dispose();
52
- }
53
- ngOnInit() {
54
- this._gridOptions = this.gridOptions || {};
55
- this._enableTranslate = this._gridOptions && this._gridOptions.enableTranslate || false;
56
- this._locales = this._gridOptions && this._gridOptions.locales || Constants.locales;
57
- if (this._enableTranslate && !this.translate) {
58
- throw new Error('[Angular-Slickgrid] requires "ngx-translate" to be installed and configured when the grid option "enableTranslate" is enabled.');
59
- }
60
- this.translateAllUiTexts(this._locales);
61
- // translate all the text using ngx-translate or custom locales
62
- if (this._enableTranslate && this.translate && this.translate.onLangChange) {
63
- this.subscriptions.push(this.translate.onLangChange.subscribe(() => this.translateAllUiTexts(this._locales)));
64
- }
65
- }
66
- changeToFirstPage(event) {
67
- if (!this.isLeftPaginationDisabled) {
68
- this.paginationService.goToFirstPage(event);
69
- }
70
- }
71
- changeToLastPage(event) {
72
- if (!this.isRightPaginationDisabled) {
73
- this.paginationService.goToLastPage(event);
74
- }
75
- }
76
- changeToNextPage(event) {
77
- if (!this.isRightPaginationDisabled) {
78
- this.paginationService.goToNextPage(event);
79
- }
80
- }
81
- changeToPreviousPage(event) {
82
- if (!this.isLeftPaginationDisabled) {
83
- this.paginationService.goToPreviousPage(event);
84
- }
85
- }
86
- changeToCurrentPage(event) {
87
- let pageNumber = 1;
88
- if (event && event.currentTarget && event.currentTarget.value) {
89
- pageNumber = +(event.currentTarget.value);
90
- }
91
- this.paginationService.goToPageNumber(pageNumber, event);
92
- }
93
- changeItemPerPage(event) {
94
- let itemsPerPage = 1;
95
- if (event && event.currentTarget && event.currentTarget.value) {
96
- itemsPerPage = +(event.currentTarget.value);
97
- }
98
- this.paginationService.changeItemPerPage(itemsPerPage, event);
99
- }
100
- dispose() {
101
- // also unsubscribe all Angular Subscriptions
102
- this.subscriptions = unsubscribeAllObservables(this.subscriptions);
103
- }
104
- // --
105
- // private functions
106
- // --------------------
107
- /** Translate all the texts shown in the UI, use ngx-translate service when available or custom locales when service is null */
108
- translateAllUiTexts(locales) {
109
- if (this._enableTranslate && this.translate && this.translate.instant && this.translate.currentLang) {
110
- const translationPrefix = getTranslationPrefix(this._gridOptions);
111
- this.textItemsPerPage = this.translate.instant(`${translationPrefix}ITEMS_PER_PAGE`);
112
- this.textItems = this.translate.instant(`${translationPrefix}ITEMS`);
113
- this.textOf = this.translate.instant(`${translationPrefix}OF`);
114
- this.textPage = this.translate.instant(`${translationPrefix}PAGE`);
115
- }
116
- else if (locales) {
117
- this.textItemsPerPage = locales.TEXT_ITEMS_PER_PAGE || 'TEXT_ITEMS_PER_PAGE';
118
- this.textItems = locales.TEXT_ITEMS || 'TEXT_ITEMS';
119
- this.textOf = locales.TEXT_OF || 'TEXT_OF';
120
- this.textPage = locales.TEXT_PAGE || 'TEXT_PAGE';
121
- }
122
- }
123
- }
124
- SlickPaginationComponent.decorators = [
125
- { type: Component, args: [{
126
- selector: 'slick-pagination',
127
- template: "<div class=\"slick-pagination\">\n <div class=\"slick-pagination-nav\">\n <nav aria-label=\"Page navigation\">\n <ul class=\"pagination\">\n <li class=\"page-item\" [ngClass]=\"isLeftPaginationDisabled ? 'disabled' : ''\">\n <a class=\"page-link icon-seek-first fa fa-angle-double-left\" aria-label=\"First\"\n (click)=\"changeToFirstPage($event)\">\n </a>\n </li>\n <li class=\"page-item\" [ngClass]=\"isLeftPaginationDisabled ? 'disabled' : ''\">\n <a class=\"page-link icon-seek-prev fa fa-angle-left\" aria-label=\"Previous\"\n (click)=\"changeToPreviousPage($event)\">\n </a>\n </li>\n </ul>\n </nav>\n\n <div class=\"slick-page-number\">\n <span>{{textPage}}</span>\n <input type=\"text\" class=\"form-control\" data-test=\"page-number-input\" [value]=\"pageNumber\" size=\"1\"\n [readOnly]=\"totalItems === 0\" (change)=\"changeToCurrentPage($event)\">\n <span>{{textOf}}</span><span data-test=\"page-count\"> {{pageCount}}</span>\n </div>\n\n <nav aria-label=\"Page navigation\">\n <ul class=\"pagination\">\n <li class=\"page-item\" [ngClass]=\"isRightPaginationDisabled ? 'disabled' : ''\">\n <a class=\"page-link icon-seek-next text-center fa fa-lg fa-angle-right\" aria-label=\"Next\"\n (click)=\"changeToNextPage($event)\">\n </a>\n </li>\n <li class=\"page-item\" [ngClass]=\"isRightPaginationDisabled ? 'disabled' : ''\">\n <a class=\"page-link icon-seek-end fa fa-lg fa-angle-double-right\" aria-label=\"Last\"\n (click)=\"changeToLastPage($event)\">\n </a>\n </li>\n </ul>\n </nav>\n </div>\n <span class=\"slick-pagination-settings\">\n <select id=\"items-per-page-label\" (change)=\"changeItemPerPage($event)\">\n <option value=\"{{pageSize}}\" [selected]=\"pageSize === itemsPerPage\" *ngFor=\"let pageSize of availablePageSizes\">{{pageSize}}</option>\n </select>\n <span>{{textItemsPerPage}}</span>,\n <span class=\"slick-pagination-count\">\n <span *ngIf=\"totalItems\">\n <span class=\"page-info-from-to\">\n <span data-test=\"item-from\">{{dataFrom}}</span>-<span data-test=\"item-to\">{{dataTo}}</span>\n {{textOf}}\n </span>\n </span>\n <span class=\"page-info-total-items\">\n <span data-test=\"total-items\">{{totalItems}}</span> {{textItems}}\n </span>\n </span>\n </span>\n</div>\n"
128
- },] }
129
- ];
130
- SlickPaginationComponent.ctorParameters = () => [
131
- { type: TranslateService, decorators: [{ type: Optional }] }
132
- ];
133
- SlickPaginationComponent.propDecorators = {
134
- gridOptions: [{ type: Input }],
135
- paginationService: [{ type: Input }]
136
- };
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stcGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYW5ndWxhci1zbGlja2dyaWQvY29tcG9uZW50cy9zbGljay1wYWdpbmF0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBNkIsTUFBTSw2QkFBNkIsQ0FBQztBQUc5RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBTWxFLE1BQU0sT0FBTyx3QkFBd0I7SUFlbkMsa0JBQWtCO0lBQ2xCLFlBQXlDLFNBQTJCO1FBQTNCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBWjVELGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUNuQyxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFJakMsbUVBQW1FO1FBQ25FLHFCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBQ3BDLGNBQVMsR0FBRyxPQUFPLENBQUM7UUFDcEIsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLGFBQVEsR0FBRyxNQUFNLENBQUM7SUFHc0QsQ0FBQztJQUV6RSxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENB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Z0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLGlCQUFpQixnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3JGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxpQkFBaUIsT0FBTyxDQUFDLENBQUM7WUFDckUsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLGlCQUFpQixJQUFJLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsaUJBQWlCLE1BQU0sQ0FBQyxDQUFDO1NBQ3BFO2FBQU0sSUFBSSxPQUFPLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsSUFBSSxxQkFBcUIsQ0FBQztZQUM3RSxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksWUFBWSxDQUFDO1lBQ3BELElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxTQUFTLENBQUM7WUFDM0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLFdBQVcsQ0FBQztTQUNsRDtJQUNILENBQUM7OztZQW5KRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIsby9FQUFnRDthQUNqRDs7O1lBWFEsZ0JBQWdCLHVCQTRCVixRQUFROzs7MEJBZnBCLEtBQUs7Z0NBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgZ2V0VHJhbnNsYXRpb25QcmVmaXgsIExvY2FsZSwgUGFnaW5hdGlvblNlcnZpY2UgfSBmcm9tICdAc2xpY2tncmlkLXVuaXZlcnNhbC9jb21tb24nO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBHcmlkT3B0aW9uLCB9IGZyb20gJy4vLi4vbW9kZWxzL2luZGV4JztcbmltcG9ydCB7IHVuc3Vic2NyaWJlQWxsT2JzZXJ2YWJsZXMgfSBmcm9tICcuLi9zZXJ2aWNlcy91dGlsaXRpZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzbGljay1wYWdpbmF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NsaWNrLXBhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFNsaWNrUGFnaW5hdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgQElucHV0KCkgZ3JpZE9wdGlvbnMhOiBHcmlkT3B0aW9uO1xuICBASW5wdXQoKSBwYWdpbmF0aW9uU2VydmljZSE6IFBhZ2luYXRpb25TZXJ2aWNlO1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBfZW5hYmxlVHJhbnNsYXRlID0gZmFsc2U7XG4gIHByaXZhdGUgX2dyaWRPcHRpb25zITogR3JpZE9wdGlvbjtcbiAgcHJpdmF0ZSBfbG9jYWxlcyE6IExvY2FsZTtcblxuICAvLyB0ZXh0IHRyYW5zbGF0aW9ucyAoaGFuZGxlZCBieSBuZ3gtdHJhbnNsYXRlIG9yIGJ5IGN1c3RvbSBsb2NhbGUpXG4gIHRleHRJdGVtc1BlclBhZ2UgPSAnaXRlbXMgcGVyIHBhZ2UnO1xuICB0ZXh0SXRlbXMgPSAnaXRlbXMnO1xuICB0ZXh0T2YgPSAnb2YnO1xuICB0ZXh0UGFnZSA9ICdQYWdlJztcblxuICAvKiogQ29uc3RydWN0b3IgKi9cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHsgfVxuXG4gIGdldCBhdmFpbGFibGVQYWdlU2l6ZXMoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLmF2YWlsYWJsZVBhZ2VTaXplcztcbiAgfVxuXG4gIGdldCBkYXRhRnJvbSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLmRhdGFGcm9tO1xuICB9XG5cbiAgZ2V0IGRhdGFUbygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLmRhdGFUbztcbiAgfVxuXG4gIC8qKiBpcyB0aGUgbGVmdCBzaWRlIHBhZ2luYXRpb24gZGlzYWJsZWQ/ICovXG4gIGdldCBpc0xlZnRQYWdpbmF0aW9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGFnZU51bWJlciA9PT0gMSB8fCB0aGlzLnRvdGFsSXRlbXMgPT09IDA7XG4gIH1cblxuICAvKiogaXMgdGhlIHJpZ2h0IHNpZGUgcGFnaW5hdGlvbiBkaXNhYmxlZD8gKi9cbiAgZ2V0IGlzUmlnaHRQYWdpbmF0aW9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGFnZU51bWJlciA9PT0gdGhpcy5wYWdlQ291bnQgfHwgdGhpcy50b3RhbEl0ZW1zID09PSAwO1xuICB9XG5cbiAgZ2V0IGl0ZW1zUGVyUGFnZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLml0ZW1zUGVyUGFnZTtcbiAgfVxuXG4gIGdldCBwYWdlQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wYWdpbmF0aW9uU2VydmljZS5wYWdlQ291bnQ7XG4gIH1cblxuICBnZXQgcGFnZU51bWJlcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLnBhZ2VOdW1iZXI7XG4gIH1cbiAgc2V0IHBhZ2VOdW1iZXIocGFnZTogbnVtYmVyKSB7XG4gICAgLy8gdGhlIHNldHRlciBoYXMgdG8gYmUgZGVjbGFyZWQgYnV0IHdlIHdvbid0IHVzZSBpdCwgaW5zdGVhZCB3ZSB3aWxsIHVzZSB0aGUgXCJjaGFuZ2VUb0N1cnJlbnRQYWdlKClcIiB0byBvbmx5IHVwZGF0ZSB0aGUgdmFsdWUgYWZ0ZXIgRU5URVIga2V5ZG93biBldmVudFxuICB9XG5cbiAgZ2V0IHRvdGFsSXRlbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFnaW5hdGlvblNlcnZpY2UudG90YWxJdGVtcztcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fZ3JpZE9wdGlvbnMgPSB0aGlzLmdyaWRPcHRpb25zIHx8IHt9O1xuICAgIHRoaXMuX2VuYWJsZVRyYW5zbGF0ZSA9IHRoaXMuX2dyaWRPcHRpb25zICYmIHRoaXMuX2dyaWRPcHRpb25zLmVuYWJsZVRyYW5zbGF0ZSB8fCBmYWxzZTtcbiAgICB0aGlzLl9sb2NhbGVzID0gdGhpcy5fZ3JpZE9wdGlvbnMgJiYgdGhpcy5fZ3JpZE9wdGlvbnMubG9jYWxlcyB8fCBDb25zdGFudHMubG9jYWxlcztcblxuICAgIGlmICh0aGlzLl9lbmFibGVUcmFuc2xhdGUgJiYgIXRoaXMudHJhbnNsYXRlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1tBbmd1bGFyLVNsaWNrZ3JpZF0gcmVxdWlyZXMgXCJuZ3gtdHJhbnNsYXRlXCIgdG8gYmUgaW5zdGFsbGVkIGFuZCBjb25maWd1cmVkIHdoZW4gdGhlIGdyaWQgb3B0aW9uIFwiZW5hYmxlVHJhbnNsYXRlXCIgaXMgZW5hYmxlZC4nKTtcbiAgICB9XG5cbiAgICB0aGlzLnRyYW5zbGF0ZUFsbFVpVGV4dHModGhpcy5fbG9jYWxlcyk7XG5cbiAgICAvLyB0cmFuc2xhdGUgYWxsIHRoZSB0ZXh0IHVzaW5nIG5neC10cmFuc2xhdGUgb3IgY3VzdG9tIGxvY2FsZXNcbiAgICBpZiAodGhpcy5fZW5hYmxlVHJhbnNsYXRlICYmIHRoaXMudHJhbnNsYXRlICYmIHRoaXMudHJhbnNsYXRlLm9uTGFuZ0NoYW5nZSkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy50cmFuc2xhdGUub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB0aGlzLnRyYW5zbGF0ZUFsbFVpVGV4dHModGhpcy5fbG9jYWxlcykpKTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VUb0ZpcnN0UGFnZShldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICghdGhpcy5pc0xlZnRQYWdpbmF0aW9uRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2UuZ29Ub0ZpcnN0UGFnZShldmVudCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlVG9MYXN0UGFnZShldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICghdGhpcy5pc1JpZ2h0UGFnaW5hdGlvbkRpc2FibGVkKSB7XG4gICAgICB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLmdvVG9MYXN0UGFnZShldmVudCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlVG9OZXh0UGFnZShldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICghdGhpcy5pc1JpZ2h0UGFnaW5hdGlvbkRpc2FibGVkKSB7XG4gICAgICB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLmdvVG9OZXh0UGFnZShldmVudCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlVG9QcmV2aW91c1BhZ2UoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuaXNMZWZ0UGFnaW5hdGlvbkRpc2FibGVkKSB7XG4gICAgICB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLmdvVG9QcmV2aW91c1BhZ2UoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZVRvQ3VycmVudFBhZ2UoZXZlbnQ6IGFueSkge1xuICAgIGxldCBwYWdlTnVtYmVyID0gMTtcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQuY3VycmVudFRhcmdldCAmJiBldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlKSB7XG4gICAgICBwYWdlTnVtYmVyID0gKyhldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5wYWdpbmF0aW9uU2VydmljZS5nb1RvUGFnZU51bWJlcihwYWdlTnVtYmVyLCBldmVudCk7XG4gIH1cblxuICBjaGFuZ2VJdGVtUGVyUGFnZShldmVudDogYW55KSB7XG4gICAgbGV0IGl0ZW1zUGVyUGFnZSA9IDE7XG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LmN1cnJlbnRUYXJnZXQgJiYgZXZlbnQuY3VycmVudFRhcmdldC52YWx1ZSkge1xuICAgICAgaXRlbXNQZXJQYWdlID0gKyhldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5wYWdpbmF0aW9uU2VydmljZS5jaGFuZ2VJdGVtUGVyUGFnZShpdGVtc1BlclBhZ2UsIGV2ZW50KTtcbiAgfVxuXG4gIGRpc3Bvc2UoKSB7XG4gICAgLy8gYWxzbyB1bnN1YnNjcmliZSBhbGwgQW5ndWxhciBTdWJzY3JpcHRpb25zXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gdW5zdWJzY3JpYmVBbGxPYnNlcnZhYmxlcyh0aGlzLnN1YnNjcmlwdGlvbnMpO1xuICB9XG5cbiAgLy8gLS1cbiAgLy8gcHJpdmF0ZSBmdW5jdGlvbnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKiogVHJhbnNsYXRlIGFsbCB0aGUgdGV4dHMgc2hvd24gaW4gdGhlIFVJLCB1c2Ugbmd4LXRyYW5zbGF0ZSBzZXJ2aWNlIHdoZW4gYXZhaWxhYmxlIG9yIGN1c3RvbSBsb2NhbGVzIHdoZW4gc2VydmljZSBpcyBudWxsICovXG4gIHByaXZhdGUgdHJhbnNsYXRlQWxsVWlUZXh0cyhsb2NhbGVzOiBMb2NhbGUpIHtcbiAgICBpZiAodGhpcy5fZW5hYmxlVHJhbnNsYXRlICYmIHRoaXMudHJhbnNsYXRlICYmIHRoaXMudHJhbnNsYXRlLmluc3RhbnQgJiYgdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmcpIHtcbiAgICAgIGNvbnN0IHRyYW5zbGF0aW9uUHJlZml4ID0gZ2V0VHJhbnNsYXRpb25QcmVmaXgodGhpcy5fZ3JpZE9wdGlvbnMpO1xuICAgICAgdGhpcy50ZXh0SXRlbXNQZXJQYWdlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0cmFuc2xhdGlvblByZWZpeH1JVEVNU19QRVJfUEFHRWApO1xuICAgICAgdGhpcy50ZXh0SXRlbXMgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RyYW5zbGF0aW9uUHJlZml4fUlURU1TYCk7XG4gICAgICB0aGlzLnRleHRPZiA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dHJhbnNsYXRpb25QcmVmaXh9T0ZgKTtcbiAgICAgIHRoaXMudGV4dFBhZ2UgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RyYW5zbGF0aW9uUHJlZml4fVBBR0VgKTtcbiAgICB9IGVsc2UgaWYgKGxvY2FsZXMpIHtcbiAgICAgIHRoaXMudGV4dEl0ZW1zUGVyUGFnZSA9IGxvY2FsZXMuVEVYVF9JVEVNU19QRVJfUEFHRSB8fCAnVEVYVF9JVEVNU19QRVJfUEFHRSc7XG4gICAgICB0aGlzLnRleHRJdGVtcyA9IGxvY2FsZXMuVEVYVF9JVEVNUyB8fCAnVEVYVF9JVEVNUyc7XG4gICAgICB0aGlzLnRleHRPZiA9IGxvY2FsZXMuVEVYVF9PRiB8fCAnVEVYVF9PRic7XG4gICAgICB0aGlzLnRleHRQYWdlID0gbG9jYWxlcy5URVhUX1BBR0UgfHwgJ1RFWFRfUEFHRSc7XG4gICAgfVxuICB9XG59XG4iXX0=