ngx-edu-sharing-ui 10.0.20 → 10.0.22
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/assets/scss/material-theme.scss +3 -3
- package/assets/scss/mixins.scss +1 -1
- package/assets/scss/variables-root.scss +2 -0
- package/assets/scss/variables-scss.scss +3 -4
- package/assets/scss/variables.scss +1 -1
- package/fesm2022/ngx-edu-sharing-ui.mjs +376 -319
- package/fesm2022/ngx-edu-sharing-ui.mjs.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/list-items/list-widget.d.ts +1 -1
- package/lib/mds-viewer/mds-editor-instance-service.abstract.d.ts +14 -0
- package/lib/mds-viewer/widget/mds-widget.component.d.ts +6 -4
- package/package.json +8 -9
- package/esm2022/lib/actionbar/actionbar.component.mjs +0 -206
- package/esm2022/lib/common/edu-sharing-ui-common.module.mjs +0 -170
- package/esm2022/lib/directives/border-box-observer.directive.mjs +0 -71
- package/esm2022/lib/directives/check-text-overflow.directive.mjs +0 -71
- package/esm2022/lib/directives/drag-nodes/drag-nodes.mjs +0 -14
- package/esm2022/lib/directives/drag-nodes/nodes-drag-source.directive.mjs +0 -79
- package/esm2022/lib/directives/drag-nodes/nodes-drag.directive.mjs +0 -49
- package/esm2022/lib/directives/drag-nodes/nodes-drop-target.directive.mjs +0 -105
- package/esm2022/lib/directives/focus-state.directive.mjs +0 -44
- package/esm2022/lib/directives/icon.directive.mjs +0 -184
- package/esm2022/lib/directives/infinite-scroll.directive.mjs +0 -85
- package/esm2022/lib/dropdown/dropdown.component.mjs +0 -83
- package/esm2022/lib/edu-sharing-ui-configuration.mjs +0 -48
- package/esm2022/lib/edu-sharing-ui.module.mjs +0 -82
- package/esm2022/lib/index.mjs +0 -96
- package/esm2022/lib/list-items/available-widgets.mjs +0 -27
- package/esm2022/lib/list-items/format-duration.pipe.mjs +0 -20
- package/esm2022/lib/list-items/list-base/list-base.component.mjs +0 -46
- package/esm2022/lib/list-items/list-collection-info/list-collection-info.component.mjs +0 -29
- package/esm2022/lib/list-items/list-counts/list-counts.component.mjs +0 -56
- package/esm2022/lib/list-items/list-items.module.mjs +0 -50
- package/esm2022/lib/list-items/list-node-license/list-node-license.component.mjs +0 -41
- package/esm2022/lib/list-items/list-node-replication-source/list-node-replication-source.component.mjs +0 -47
- package/esm2022/lib/list-items/list-node-workflow/list-node-workflow.component.mjs +0 -24
- package/esm2022/lib/list-items/list-text/list-text.component.mjs +0 -106
- package/esm2022/lib/list-items/list-widget.mjs +0 -49
- package/esm2022/lib/list-items/node-row/node-row.component.mjs +0 -24
- package/esm2022/lib/list-items/node-source.pipe.mjs +0 -49
- package/esm2022/lib/mds/mds-helper.service.mjs +0 -167
- package/esm2022/lib/mds/mds.module.mjs +0 -16
- package/esm2022/lib/mds-viewer/mds-viewer.component.mjs +0 -170
- package/esm2022/lib/mds-viewer/mds-viewer.service.mjs +0 -18
- package/esm2022/lib/mds-viewer/replace-element-with-div.mjs +0 -47
- package/esm2022/lib/mds-viewer/view-instance.service.mjs +0 -27
- package/esm2022/lib/mds-viewer/widget/mds-widget.component.mjs +0 -379
- package/esm2022/lib/node-entries/combined-data-source.mjs +0 -41
- package/esm2022/lib/node-entries/custom-templates-data-source.mjs +0 -7
- package/esm2022/lib/node-entries/drag-preview/drag-preview.component.mjs +0 -21
- package/esm2022/lib/node-entries/entries-model.mjs +0 -24
- package/esm2022/lib/node-entries/items-cap.mjs +0 -47
- package/esm2022/lib/node-entries/list-item-label.pipe.mjs +0 -37
- package/esm2022/lib/node-entries/node-cache.mjs +0 -73
- package/esm2022/lib/node-entries/node-data-source-remote.mjs +0 -4
- package/esm2022/lib/node-entries/node-data-source.mjs +0 -117
- package/esm2022/lib/node-entries/node-entries-card/node-entries-card.component.mjs +0 -117
- package/esm2022/lib/node-entries/node-entries-card-grid/node-entries-card-grid.component.mjs +0 -329
- package/esm2022/lib/node-entries/node-entries-card-small/node-entries-card-small.component.mjs +0 -44
- package/esm2022/lib/node-entries/node-entries-global-options/node-entries-global-options.component.mjs +0 -27
- package/esm2022/lib/node-entries/node-entries-global.service.mjs +0 -71
- package/esm2022/lib/node-entries/node-entries-table/column-chooser/column-chooser.component.mjs +0 -42
- package/esm2022/lib/node-entries/node-entries-table/node-entries-table.component.mjs +0 -294
- package/esm2022/lib/node-entries/node-entries-templates.service.mjs +0 -11
- package/esm2022/lib/node-entries/node-entries-wrapper.component.mjs +0 -369
- package/esm2022/lib/node-entries/node-entries.component.mjs +0 -132
- package/esm2022/lib/node-entries/node-entries.module.mjs +0 -161
- package/esm2022/lib/node-entries/node-rating/node-rating.component.mjs +0 -125
- package/esm2022/lib/node-entries/node-stats-badges/node-stats-badges.component.mjs +0 -48
- package/esm2022/lib/node-entries/node-type-badge/node-type-badge.component.mjs +0 -36
- package/esm2022/lib/node-entries/option-button/option-button.component.mjs +0 -75
- package/esm2022/lib/node-entries/preview-image/preview-image.component.mjs +0 -53
- package/esm2022/lib/node-entries/sort-select-panel/sort-select-panel.component.mjs +0 -41
- package/esm2022/lib/node-url/node-url.component.mjs +0 -132
- package/esm2022/lib/pipes/file-size.pipe.mjs +0 -32
- package/esm2022/lib/pipes/format-date.pipe.mjs +0 -38
- package/esm2022/lib/pipes/mds-duration.pipe.mjs +0 -25
- package/esm2022/lib/pipes/node-icon.pipe.mjs +0 -18
- package/esm2022/lib/pipes/node-image-size.pipe.mjs +0 -24
- package/esm2022/lib/pipes/node-image.pipe.mjs +0 -55
- package/esm2022/lib/pipes/node-license.pipe.mjs +0 -24
- package/esm2022/lib/pipes/node-person-name.pipe.mjs +0 -50
- package/esm2022/lib/pipes/node-title.pipe.mjs +0 -35
- package/esm2022/lib/pipes/option-tooltip.pipe.mjs +0 -33
- package/esm2022/lib/pipes/property-slug.pipe.mjs +0 -16
- package/esm2022/lib/pipes/replace-chars.pipe.mjs +0 -29
- package/esm2022/lib/pipes/vcard-name.pipe.mjs +0 -25
- package/esm2022/lib/services/abstract/app.service.mjs +0 -3
- package/esm2022/lib/services/abstract/keyboard-shortcuts.service.mjs +0 -10
- package/esm2022/lib/services/abstract/options-helper.service.mjs +0 -3
- package/esm2022/lib/services/abstract/toast.service.mjs +0 -3
- package/esm2022/lib/services/accessibility.service.mjs +0 -73
- package/esm2022/lib/services/app-container.service.mjs +0 -69
- package/esm2022/lib/services/local-events.service.mjs +0 -43
- package/esm2022/lib/services/node-entries.service.mjs +0 -201
- package/esm2022/lib/services/node-helper.service.mjs +0 -330
- package/esm2022/lib/services/nodes-drag-drop.service.mjs +0 -155
- package/esm2022/lib/services/options-helper-data.service.mjs +0 -142
- package/esm2022/lib/services/render-helper.service.mjs +0 -114
- package/esm2022/lib/services/repo-url.service.mjs +0 -50
- package/esm2022/lib/services/search-helper.service.mjs +0 -52
- package/esm2022/lib/services/temporary-storage.service.mjs +0 -48
- package/esm2022/lib/services/ui.service.mjs +0 -327
- package/esm2022/lib/sort-dropdown/sort-dropdown.component.mjs +0 -50
- package/esm2022/lib/spinner/spinner.component.mjs +0 -19
- package/esm2022/lib/spinner-small/spinner-small.component.mjs +0 -18
- package/esm2022/lib/translations/fallback-translation-handler.mjs +0 -6
- package/esm2022/lib/translations/translation-loader.mjs +0 -219
- package/esm2022/lib/translations/translation-source.mjs +0 -11
- package/esm2022/lib/translations/translations.module.mjs +0 -82
- package/esm2022/lib/translations/translations.service.mjs +0 -238
- package/esm2022/lib/types/accessibillity.mjs +0 -19
- package/esm2022/lib/types/api-models.mjs +0 -2
- package/esm2022/lib/types/drag-drop.mjs +0 -2
- package/esm2022/lib/types/injection-tokens.mjs +0 -31
- package/esm2022/lib/types/keyboard-shortcuts.mjs +0 -11
- package/esm2022/lib/types/list-item.mjs +0 -41
- package/esm2022/lib/types/option-item.mjs +0 -192
- package/esm2022/lib/types/workflow.mjs +0 -25
- package/esm2022/lib/util/DateHelper.mjs +0 -200
- package/esm2022/lib/util/VCard.mjs +0 -278
- package/esm2022/lib/util/color-helper.mjs +0 -124
- package/esm2022/lib/util/duration-helper.mjs +0 -102
- package/esm2022/lib/util/functions.mjs +0 -13
- package/esm2022/lib/util/helper.mjs +0 -64
- package/esm2022/lib/util/isNumeric.mjs +0 -11
- package/esm2022/lib/util/rest-helper.mjs +0 -42
- package/esm2022/lib/util/ui-animation.mjs +0 -146
- package/esm2022/lib/util/ui-constants.mjs +0 -21
- package/esm2022/ngx-edu-sharing-ui.mjs +0 -5
- package/esm2022/public-api.mjs +0 -2
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
export const WORKFLOW_STATUS_UNCHECKED = {
|
|
2
|
-
id: '100_unchecked',
|
|
3
|
-
color: '#539DD5',
|
|
4
|
-
hasReceiver: true,
|
|
5
|
-
next: null,
|
|
6
|
-
};
|
|
7
|
-
export const WORKFLOW_STATUS_TO_CHECK = {
|
|
8
|
-
id: '200_tocheck',
|
|
9
|
-
color: '#3CB0B0',
|
|
10
|
-
hasReceiver: true,
|
|
11
|
-
next: null,
|
|
12
|
-
};
|
|
13
|
-
export const WORKFLOW_STATUS_HASFLAWS = {
|
|
14
|
-
id: '300_hasflaws',
|
|
15
|
-
color: '#D58553',
|
|
16
|
-
hasReceiver: true,
|
|
17
|
-
next: null,
|
|
18
|
-
};
|
|
19
|
-
export const WORKFLOW_STATUS_CHECKED = {
|
|
20
|
-
id: '400_checked',
|
|
21
|
-
color: '#42A053',
|
|
22
|
-
hasReceiver: false,
|
|
23
|
-
next: null,
|
|
24
|
-
};
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL3R5cGVzL3dvcmtmbG93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUF1QjtJQUN6RCxFQUFFLEVBQUUsZUFBZTtJQUNuQixLQUFLLEVBQUUsU0FBUztJQUNoQixXQUFXLEVBQUUsSUFBSTtJQUNqQixJQUFJLEVBQUUsSUFBSTtDQUNiLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBdUI7SUFDeEQsRUFBRSxFQUFFLGFBQWE7SUFDakIsS0FBSyxFQUFFLFNBQVM7SUFDaEIsV0FBVyxFQUFFLElBQUk7SUFDakIsSUFBSSxFQUFFLElBQUk7Q0FDYixDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQXVCO0lBQ3hELEVBQUUsRUFBRSxjQUFjO0lBQ2xCLEtBQUssRUFBRSxTQUFTO0lBQ2hCLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLElBQUksRUFBRSxJQUFJO0NBQ2IsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUF1QjtJQUN2RCxFQUFFLEVBQUUsYUFBYTtJQUNqQixLQUFLLEVBQUUsU0FBUztJQUNoQixXQUFXLEVBQUUsS0FBSztJQUNsQixJQUFJLEVBQUUsSUFBSTtDQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93RGVmaW5pdGlvbiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBjb2xvcjogc3RyaW5nO1xuICAgIGhhc1JlY2VpdmVyOiBib29sZWFuO1xuICAgIG5leHQ6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgY29uc3QgV09SS0ZMT1dfU1RBVFVTX1VOQ0hFQ0tFRDogV29ya2Zsb3dEZWZpbml0aW9uID0ge1xuICAgIGlkOiAnMTAwX3VuY2hlY2tlZCcsXG4gICAgY29sb3I6ICcjNTM5REQ1JyxcbiAgICBoYXNSZWNlaXZlcjogdHJ1ZSxcbiAgICBuZXh0OiBudWxsLFxufTtcbmV4cG9ydCBjb25zdCBXT1JLRkxPV19TVEFUVVNfVE9fQ0hFQ0s6IFdvcmtmbG93RGVmaW5pdGlvbiA9IHtcbiAgICBpZDogJzIwMF90b2NoZWNrJyxcbiAgICBjb2xvcjogJyMzQ0IwQjAnLFxuICAgIGhhc1JlY2VpdmVyOiB0cnVlLFxuICAgIG5leHQ6IG51bGwsXG59O1xuZXhwb3J0IGNvbnN0IFdPUktGTE9XX1NUQVRVU19IQVNGTEFXUzogV29ya2Zsb3dEZWZpbml0aW9uID0ge1xuICAgIGlkOiAnMzAwX2hhc2ZsYXdzJyxcbiAgICBjb2xvcjogJyNENTg1NTMnLFxuICAgIGhhc1JlY2VpdmVyOiB0cnVlLFxuICAgIG5leHQ6IG51bGwsXG59O1xuZXhwb3J0IGNvbnN0IFdPUktGTE9XX1NUQVRVU19DSEVDS0VEOiBXb3JrZmxvd0RlZmluaXRpb24gPSB7XG4gICAgaWQ6ICc0MDBfY2hlY2tlZCcsXG4gICAgY29sb3I6ICcjNDJBMDUzJyxcbiAgICBoYXNSZWNlaXZlcjogZmFsc2UsXG4gICAgbmV4dDogbnVsbCxcbn07XG5leHBvcnQgdHlwZSBXb3JrZmxvd0RlZmluaXRpb25TdGF0dXMgPSB7XG4gICAgY3VycmVudDogV29ya2Zsb3dEZWZpbml0aW9uO1xuICAgIGluaXRpYWw6IFdvcmtmbG93RGVmaW5pdGlvbjtcbn07XG4iXX0=
|
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
import { isNumeric } from './isNumeric';
|
|
2
|
-
export var RelativeMode;
|
|
3
|
-
(function (RelativeMode) {
|
|
4
|
-
RelativeMode[RelativeMode["off"] = 0] = "off";
|
|
5
|
-
RelativeMode[RelativeMode["short"] = 1] = "short";
|
|
6
|
-
RelativeMode[RelativeMode["medium"] = 2] = "medium";
|
|
7
|
-
RelativeMode[RelativeMode["large"] = 3] = "large";
|
|
8
|
-
RelativeMode[RelativeMode["all"] = 4] = "all";
|
|
9
|
-
})(RelativeMode || (RelativeMode = {}));
|
|
10
|
-
export class FormatOptions {
|
|
11
|
-
constructor() {
|
|
12
|
-
this.showDate = true;
|
|
13
|
-
this.showAlwaysTime = false;
|
|
14
|
-
this.showSeconds = false;
|
|
15
|
-
// @Deprecated
|
|
16
|
-
// this will be mapped to relativeLabels = MEDIUM
|
|
17
|
-
// use relativeLabels instead
|
|
18
|
-
this.useRelativeLabels = true;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
export class DateHelper {
|
|
22
|
-
/**
|
|
23
|
-
* Fill a date (day + month) string, e.g. 2 -> 02
|
|
24
|
-
* @param date
|
|
25
|
-
* @returns {string}
|
|
26
|
-
*/
|
|
27
|
-
static fillDate(date) {
|
|
28
|
-
if (date < 10)
|
|
29
|
-
return '0' + date;
|
|
30
|
-
return date + '';
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Convert date to a unix timestamp
|
|
34
|
-
* @param date
|
|
35
|
-
* @returns {number}
|
|
36
|
-
*/
|
|
37
|
-
static convertDate(date) {
|
|
38
|
-
return new Date(date).getTime();
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* format a date with a given, fixed string
|
|
42
|
-
* For consistency, we use the patterns from
|
|
43
|
-
* https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
|
|
44
|
-
* @param date
|
|
45
|
-
* @param {string} format
|
|
46
|
-
* @returns {string}
|
|
47
|
-
*/
|
|
48
|
-
static formatDateByPattern(date, format) {
|
|
49
|
-
if (!isNumeric(date)) {
|
|
50
|
-
return date;
|
|
51
|
-
}
|
|
52
|
-
let dateObject = new Date(date * 1);
|
|
53
|
-
format = format.replace('y', '' + dateObject.getFullYear());
|
|
54
|
-
format = format.replace('M', '' + DateHelper.fillDate(dateObject.getMonth() + 1));
|
|
55
|
-
format = format.replace('d', '' + DateHelper.fillDate(dateObject.getDate()));
|
|
56
|
-
return format;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Format a date for the current language
|
|
60
|
-
*/
|
|
61
|
-
static formatDate(translation, date, options = new FormatOptions()) {
|
|
62
|
-
try {
|
|
63
|
-
if (options.useRelativeLabels && !options.relativeLabels) {
|
|
64
|
-
options.relativeLabels = RelativeMode.medium;
|
|
65
|
-
}
|
|
66
|
-
if (date == null) {
|
|
67
|
-
return null;
|
|
68
|
-
}
|
|
69
|
-
if (!isNumeric(date)) {
|
|
70
|
-
date = Date.parse(date);
|
|
71
|
-
}
|
|
72
|
-
let dateObject = new Date(date * 1);
|
|
73
|
-
let dateToday = new Date();
|
|
74
|
-
let dateYesterday = new Date();
|
|
75
|
-
dateYesterday.setDate(dateYesterday.getDate() - 1);
|
|
76
|
-
let isToday = dateObject.toDateString() == dateToday.toDateString();
|
|
77
|
-
let isYesterday = dateObject.toDateString() == dateYesterday.toDateString();
|
|
78
|
-
let prefix = '';
|
|
79
|
-
let timeDiff = (dateToday.getTime() - dateObject.getTime()) / 1000;
|
|
80
|
-
let diffDays = Math.floor(timeDiff / (3600 * 24));
|
|
81
|
-
let diffMonths = new Date(timeDiff * 1000).getMonth();
|
|
82
|
-
let diffYears = new Date(timeDiff * 1000).getFullYear() - 1970;
|
|
83
|
-
let addDate = true;
|
|
84
|
-
let timeFormat = 'HH:mm';
|
|
85
|
-
if (options.showSeconds) {
|
|
86
|
-
timeFormat += ':ss';
|
|
87
|
-
}
|
|
88
|
-
if (timeDiff < 3600 * 6 && options.relativeLabels >= RelativeMode.short) {
|
|
89
|
-
if (timeDiff < 90) {
|
|
90
|
-
prefix = translation.instant('JUST_NOW', { seconds: timeDiff });
|
|
91
|
-
}
|
|
92
|
-
else if (timeDiff < 60 * 100) {
|
|
93
|
-
prefix = translation.instant('MINUTES_AGO', {
|
|
94
|
-
minutes: Math.round(timeDiff / 60),
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
prefix = translation.instant('HOURS_AGO', {
|
|
99
|
-
hours: Math.round(timeDiff / (60 * 60)),
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
addDate = false;
|
|
103
|
-
timeFormat = '';
|
|
104
|
-
}
|
|
105
|
-
else if (isToday && options.relativeLabels >= RelativeMode.short) {
|
|
106
|
-
prefix = translation.instant('TODAY');
|
|
107
|
-
addDate = false;
|
|
108
|
-
}
|
|
109
|
-
else if (isYesterday && options.relativeLabels >= RelativeMode.medium) {
|
|
110
|
-
prefix = translation.instant('YESTERDAY');
|
|
111
|
-
addDate = false;
|
|
112
|
-
}
|
|
113
|
-
else if ((diffDays < 6 && options.relativeLabels >= RelativeMode.medium) ||
|
|
114
|
-
(diffDays < 45 && options.relativeLabels >= RelativeMode.large)) {
|
|
115
|
-
prefix = translation.instant('DAYS_AGO', { days: diffDays });
|
|
116
|
-
addDate = false;
|
|
117
|
-
if (!options.showAlwaysTime)
|
|
118
|
-
timeFormat = '';
|
|
119
|
-
}
|
|
120
|
-
else if (diffYears === 0 &&
|
|
121
|
-
diffMonths < 12 &&
|
|
122
|
-
options.relativeLabels >= RelativeMode.large) {
|
|
123
|
-
prefix = translation.instant('MONTHS_AGO', { months: diffMonths });
|
|
124
|
-
addDate = false;
|
|
125
|
-
if (!options.showAlwaysTime)
|
|
126
|
-
timeFormat = '';
|
|
127
|
-
}
|
|
128
|
-
else if (options.relativeLabels === RelativeMode.all) {
|
|
129
|
-
prefix = translation.instant('YEARS_AGO', { years: diffYears });
|
|
130
|
-
addDate = false;
|
|
131
|
-
if (!options.showAlwaysTime)
|
|
132
|
-
timeFormat = '';
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
135
|
-
if (!options.showAlwaysTime)
|
|
136
|
-
timeFormat = '';
|
|
137
|
-
}
|
|
138
|
-
// ng2's dateformatter is super slow, but it doesn't matter, we just iterate it once :)
|
|
139
|
-
//return dateFormat+time;
|
|
140
|
-
let str = prefix;
|
|
141
|
-
if (addDate) {
|
|
142
|
-
if (translation.currentLang === 'en') {
|
|
143
|
-
str +=
|
|
144
|
-
dateObject.getFullYear() +
|
|
145
|
-
'-' +
|
|
146
|
-
DateHelper.fillDate(dateObject.getMonth() + 1) +
|
|
147
|
-
'-' +
|
|
148
|
-
DateHelper.fillDate(dateObject.getDate());
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
str +=
|
|
152
|
-
DateHelper.fillDate(dateObject.getDate()) +
|
|
153
|
-
'.' +
|
|
154
|
-
DateHelper.fillDate(dateObject.getMonth() + 1) +
|
|
155
|
-
'.' +
|
|
156
|
-
dateObject.getFullYear();
|
|
157
|
-
}
|
|
158
|
-
//str += DateFormatter.format(dateObject, Translation.getLanguage(), dateFormat).trim();
|
|
159
|
-
}
|
|
160
|
-
if (options.showDate == false) {
|
|
161
|
-
str = '';
|
|
162
|
-
}
|
|
163
|
-
// ie fixes, timeFormat not working
|
|
164
|
-
if (timeFormat) {
|
|
165
|
-
if (str)
|
|
166
|
-
str += ', ';
|
|
167
|
-
//let timeValue=dateObject.toLocaleTimeString(Translation.getLanguage());
|
|
168
|
-
//let times=timeValue.split(":");
|
|
169
|
-
str += timeFormat
|
|
170
|
-
.replace('HH', DateHelper.fillDate(dateObject.getHours()))
|
|
171
|
-
.replace('mm', DateHelper.fillDate(dateObject.getMinutes()))
|
|
172
|
-
.replace('ss', DateHelper.fillDate(dateObject.getSeconds()));
|
|
173
|
-
}
|
|
174
|
-
return str;
|
|
175
|
-
/*
|
|
176
|
-
let dateString=prefix+" ";
|
|
177
|
-
if(dateFormat!=""){
|
|
178
|
-
dateString+=dateObject.toLocaleDateString(Translation.getLanguage())+" ";
|
|
179
|
-
}
|
|
180
|
-
if(time!=""){
|
|
181
|
-
dateString+=dateObject.toLocaleTimeString(Translation.getLanguage());
|
|
182
|
-
}
|
|
183
|
-
return dateString;
|
|
184
|
-
*/
|
|
185
|
-
}
|
|
186
|
-
catch (e) {
|
|
187
|
-
return date;
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
static getDateFromDatepicker(date) {
|
|
191
|
-
return new Date(date.getTime() - date.getTimezoneOffset() * 60 * 1000);
|
|
192
|
-
}
|
|
193
|
-
static getDateForNewFile() {
|
|
194
|
-
return DateHelper.formatDate(null, new Date().getTime(), {
|
|
195
|
-
showAlwaysTime: true,
|
|
196
|
-
useRelativeLabels: false,
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0ZUhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VkdS1zaGFyaW5nLXVpL3NyYy9saWIvdXRpbC9EYXRlSGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsTUFBTSxDQUFOLElBQVksWUFNWDtBQU5ELFdBQVksWUFBWTtJQUNwQiw2Q0FBRyxDQUFBO0lBQ0gsaURBQUssQ0FBQTtJQUNMLG1EQUFNLENBQUE7SUFDTixpREFBSyxDQUFBO0lBQ0wsNkNBQUcsQ0FBQTtBQUNQLENBQUMsRUFOVyxZQUFZLEtBQVosWUFBWSxRQU12QjtBQUNELE1BQU0sT0FBTyxhQUFhO0lBQTFCO1FBQ0ksYUFBUSxHQUFJLElBQUksQ0FBQztRQUNqQixtQkFBYyxHQUFJLEtBQUssQ0FBQztRQUN4QixnQkFBVyxHQUFJLEtBQUssQ0FBQztRQUNyQixjQUFjO1FBQ2QsaURBQWlEO1FBQ2pELDZCQUE2QjtRQUM3QixzQkFBaUIsR0FBSSxJQUFJLENBQUM7SUFFOUIsQ0FBQztDQUFBO0FBRUQsTUFBTSxPQUFPLFVBQVU7SUFDbkI7Ozs7T0FJRztJQUNLLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBWTtRQUNoQyxJQUFJLElBQUksR0FBRyxFQUFFO1lBQUUsT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBUztRQUMvQixPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksTUFBTSxDQUFDLG1CQUFtQixDQUFDLElBQWtCLEVBQUUsTUFBYztRQUNoRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDbkIsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUNELElBQUksVUFBVSxHQUFHLElBQUksSUFBSSxDQUFFLElBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoRCxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzVELE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRixNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3RSxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsVUFBVSxDQUNwQixXQUE2QixFQUM3QixJQUFrQixFQUNsQixVQUF5QixJQUFJLGFBQWEsRUFBRTtRQUU1QyxJQUFJLENBQUM7WUFDRCxJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkQsT0FBTyxDQUFDLGNBQWMsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO1lBQ2pELENBQUM7WUFDRCxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDZixPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDO1lBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNuQixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QixDQUFDO1lBQ0QsSUFBSSxVQUFVLEdBQUcsSUFBSSxJQUFJLENBQUUsSUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2hELElBQUksU0FBUyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDM0IsSUFBSSxhQUFhLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMvQixhQUFhLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuRCxJQUFJLE9BQU8sR0FBRyxVQUFVLENBQUMsWUFBWSxFQUFFLElBQUksU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BFLElBQUksV0FBVyxHQUFHLFVBQVUsQ0FBQyxZQUFZLEVBQUUsSUFBSSxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDNUUsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLElBQUksUUFBUSxHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxHQUFHLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNuRSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xELElBQUksVUFBVSxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN0RCxJQUFJLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQy9ELElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztZQUNuQixJQUFJLFVBQVUsR0FBRyxPQUFPLENBQUM7WUFDekIsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3RCLFVBQVUsSUFBSSxLQUFLLENBQUM7WUFDeEIsQ0FBQztZQUNELElBQUksUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLGNBQWMsSUFBSSxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3RFLElBQUksUUFBUSxHQUFHLEVBQUUsRUFBRSxDQUFDO29CQUNoQixNQUFNLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDcEUsQ0FBQztxQkFBTSxJQUFJLFFBQVEsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUM7b0JBQzdCLE1BQU0sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRTt3QkFDeEMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztxQkFDckMsQ0FBQyxDQUFDO2dCQUNQLENBQUM7cUJBQU0sQ0FBQztvQkFDSixNQUFNLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUU7d0JBQ3RDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztxQkFDMUMsQ0FBQyxDQUFDO2dCQUNQLENBQUM7Z0JBQ0QsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDaEIsVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUNwQixDQUFDO2lCQUFNLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxjQUFjLElBQUksWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNqRSxNQUFNLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDdEMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNwQixDQUFDO2lCQUFNLElBQUksV0FBVyxJQUFJLE9BQU8sQ0FBQyxjQUFjLElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN0RSxNQUFNLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDMUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNwQixDQUFDO2lCQUFNLElBQ0gsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxjQUFjLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQztnQkFDL0QsQ0FBQyxRQUFRLEdBQUcsRUFBRSxJQUFJLE9BQU8sQ0FBQyxjQUFjLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUNqRSxDQUFDO2dCQUNDLE1BQU0sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RCxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWM7b0JBQUUsVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUNqRCxDQUFDO2lCQUFNLElBQ0gsU0FBUyxLQUFLLENBQUM7Z0JBQ2YsVUFBVSxHQUFHLEVBQUU7Z0JBQ2YsT0FBTyxDQUFDLGNBQWMsSUFBSSxZQUFZLENBQUMsS0FBSyxFQUM5QyxDQUFDO2dCQUNDLE1BQU0sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO2dCQUNuRSxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWM7b0JBQUUsVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUNqRCxDQUFDO2lCQUFNLElBQUksT0FBTyxDQUFDLGNBQWMsS0FBSyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ3JELE1BQU0sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRSxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWM7b0JBQUUsVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUNqRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjO29CQUFFLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDakQsQ0FBQztZQUVELHVGQUF1RjtZQUN2Rix5QkFBeUI7WUFDekIsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDO1lBQ2pCLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxXQUFXLENBQUMsV0FBVyxLQUFLLElBQUksRUFBRSxDQUFDO29CQUNuQyxHQUFHO3dCQUNDLFVBQVUsQ0FBQyxXQUFXLEVBQUU7NEJBQ3hCLEdBQUc7NEJBQ0gsVUFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDOzRCQUM5QyxHQUFHOzRCQUNILFVBQVUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ2xELENBQUM7cUJBQU0sQ0FBQztvQkFDSixHQUFHO3dCQUNDLFVBQVUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDOzRCQUN6QyxHQUFHOzRCQUNILFVBQVUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQzs0QkFDOUMsR0FBRzs0QkFDSCxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2pDLENBQUM7Z0JBQ0Qsd0ZBQXdGO1lBQzVGLENBQUM7WUFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQzVCLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDYixDQUFDO1lBQ0QsbUNBQW1DO1lBQ25DLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxHQUFHO29CQUFFLEdBQUcsSUFBSSxJQUFJLENBQUM7Z0JBRXJCLHlFQUF5RTtnQkFDekUsaUNBQWlDO2dCQUNqQyxHQUFHLElBQUksVUFBVTtxQkFDWixPQUFPLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7cUJBQ3pELE9BQU8sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztxQkFDM0QsT0FBTyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckUsQ0FBQztZQUNELE9BQU8sR0FBRyxDQUFDO1lBQ1g7Ozs7Ozs7OztRQVNKO1FBQ0EsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDVCxPQUFPLElBQVcsQ0FBQztRQUN2QixDQUFDO0lBQ0wsQ0FBQztJQUNELE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFVO1FBQ25DLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsTUFBTSxDQUFDLGlCQUFpQjtRQUNwQixPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDckQsY0FBYyxFQUFFLElBQUk7WUFDcEIsaUJBQWlCLEVBQUUsS0FBSztTQUMzQixDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBpc051bWVyaWMgfSBmcm9tICcuL2lzTnVtZXJpYyc7XG5leHBvcnQgZW51bSBSZWxhdGl2ZU1vZGUge1xuICAgIG9mZixcbiAgICBzaG9ydCxcbiAgICBtZWRpdW0sXG4gICAgbGFyZ2UsXG4gICAgYWxsLFxufVxuZXhwb3J0IGNsYXNzIEZvcm1hdE9wdGlvbnMge1xuICAgIHNob3dEYXRlPyA9IHRydWU7XG4gICAgc2hvd0Fsd2F5c1RpbWU/ID0gZmFsc2U7XG4gICAgc2hvd1NlY29uZHM/ID0gZmFsc2U7XG4gICAgLy8gQERlcHJlY2F0ZWRcbiAgICAvLyB0aGlzIHdpbGwgYmUgbWFwcGVkIHRvIHJlbGF0aXZlTGFiZWxzID0gTUVESVVNXG4gICAgLy8gdXNlIHJlbGF0aXZlTGFiZWxzIGluc3RlYWRcbiAgICB1c2VSZWxhdGl2ZUxhYmVscz8gPSB0cnVlO1xuICAgIHJlbGF0aXZlTGFiZWxzPzogUmVsYXRpdmVNb2RlO1xufVxuXG5leHBvcnQgY2xhc3MgRGF0ZUhlbHBlciB7XG4gICAgLyoqXG4gICAgICogRmlsbCBhIGRhdGUgKGRheSArIG1vbnRoKSBzdHJpbmcsIGUuZy4gMiAtPiAwMlxuICAgICAqIEBwYXJhbSBkYXRlXG4gICAgICogQHJldHVybnMge3N0cmluZ31cbiAgICAgKi9cbiAgICBwcml2YXRlIHN0YXRpYyBmaWxsRGF0ZShkYXRlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICBpZiAoZGF0ZSA8IDEwKSByZXR1cm4gJzAnICsgZGF0ZTtcbiAgICAgICAgcmV0dXJuIGRhdGUgKyAnJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGRhdGUgdG8gYSB1bml4IHRpbWVzdGFtcFxuICAgICAqIEBwYXJhbSBkYXRlXG4gICAgICogQHJldHVybnMge251bWJlcn1cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNvbnZlcnREYXRlKGRhdGU6IGFueSkge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUoZGF0ZSkuZ2V0VGltZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGZvcm1hdCBhIGRhdGUgd2l0aCBhIGdpdmVuLCBmaXhlZCBzdHJpbmdcbiAgICAgKiBGb3IgY29uc2lzdGVuY3ksIHdlIHVzZSB0aGUgcGF0dGVybnMgZnJvbVxuICAgICAqIGh0dHBzOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS83L2RvY3MvYXBpL2phdmEvdGV4dC9TaW1wbGVEYXRlRm9ybWF0Lmh0bWxcbiAgICAgKiBAcGFyYW0gZGF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXRcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZm9ybWF0RGF0ZUJ5UGF0dGVybihkYXRlOiBudW1iZXIgfCBhbnksIGZvcm1hdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFpc051bWVyaWMoZGF0ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgICB9XG4gICAgICAgIGxldCBkYXRlT2JqZWN0ID0gbmV3IERhdGUoKGRhdGUgYXMgbnVtYmVyKSAqIDEpO1xuICAgICAgICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZSgneScsICcnICsgZGF0ZU9iamVjdC5nZXRGdWxsWWVhcigpKTtcbiAgICAgICAgZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoJ00nLCAnJyArIERhdGVIZWxwZXIuZmlsbERhdGUoZGF0ZU9iamVjdC5nZXRNb250aCgpICsgMSkpO1xuICAgICAgICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZSgnZCcsICcnICsgRGF0ZUhlbHBlci5maWxsRGF0ZShkYXRlT2JqZWN0LmdldERhdGUoKSkpO1xuICAgICAgICByZXR1cm4gZm9ybWF0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvcm1hdCBhIGRhdGUgZm9yIHRoZSBjdXJyZW50IGxhbmd1YWdlXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBmb3JtYXREYXRlKFxuICAgICAgICB0cmFuc2xhdGlvbjogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgZGF0ZTogbnVtYmVyIHwgYW55LFxuICAgICAgICBvcHRpb25zOiBGb3JtYXRPcHRpb25zID0gbmV3IEZvcm1hdE9wdGlvbnMoKSxcbiAgICApOiBzdHJpbmcge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMudXNlUmVsYXRpdmVMYWJlbHMgJiYgIW9wdGlvbnMucmVsYXRpdmVMYWJlbHMpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLnJlbGF0aXZlTGFiZWxzID0gUmVsYXRpdmVNb2RlLm1lZGl1bTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkYXRlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXNOdW1lcmljKGRhdGUpKSB7XG4gICAgICAgICAgICAgICAgZGF0ZSA9IERhdGUucGFyc2UoZGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgZGF0ZU9iamVjdCA9IG5ldyBEYXRlKChkYXRlIGFzIG51bWJlcikgKiAxKTtcbiAgICAgICAgICAgIGxldCBkYXRlVG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgbGV0IGRhdGVZZXN0ZXJkYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgZGF0ZVllc3RlcmRheS5zZXREYXRlKGRhdGVZZXN0ZXJkYXkuZ2V0RGF0ZSgpIC0gMSk7XG4gICAgICAgICAgICBsZXQgaXNUb2RheSA9IGRhdGVPYmplY3QudG9EYXRlU3RyaW5nKCkgPT0gZGF0ZVRvZGF5LnRvRGF0ZVN0cmluZygpO1xuICAgICAgICAgICAgbGV0IGlzWWVzdGVyZGF5ID0gZGF0ZU9iamVjdC50b0RhdGVTdHJpbmcoKSA9PSBkYXRlWWVzdGVyZGF5LnRvRGF0ZVN0cmluZygpO1xuICAgICAgICAgICAgbGV0IHByZWZpeCA9ICcnO1xuICAgICAgICAgICAgbGV0IHRpbWVEaWZmID0gKGRhdGVUb2RheS5nZXRUaW1lKCkgLSBkYXRlT2JqZWN0LmdldFRpbWUoKSkgLyAxMDAwO1xuICAgICAgICAgICAgbGV0IGRpZmZEYXlzID0gTWF0aC5mbG9vcih0aW1lRGlmZiAvICgzNjAwICogMjQpKTtcbiAgICAgICAgICAgIGxldCBkaWZmTW9udGhzID0gbmV3IERhdGUodGltZURpZmYgKiAxMDAwKS5nZXRNb250aCgpO1xuICAgICAgICAgICAgbGV0IGRpZmZZZWFycyA9IG5ldyBEYXRlKHRpbWVEaWZmICogMTAwMCkuZ2V0RnVsbFllYXIoKSAtIDE5NzA7XG4gICAgICAgICAgICBsZXQgYWRkRGF0ZSA9IHRydWU7XG4gICAgICAgICAgICBsZXQgdGltZUZvcm1hdCA9ICdISDptbSc7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zaG93U2Vjb25kcykge1xuICAgICAgICAgICAgICAgIHRpbWVGb3JtYXQgKz0gJzpzcyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGltZURpZmYgPCAzNjAwICogNiAmJiBvcHRpb25zLnJlbGF0aXZlTGFiZWxzID49IFJlbGF0aXZlTW9kZS5zaG9ydCkge1xuICAgICAgICAgICAgICAgIGlmICh0aW1lRGlmZiA8IDkwKSB7XG4gICAgICAgICAgICAgICAgICAgIHByZWZpeCA9IHRyYW5zbGF0aW9uLmluc3RhbnQoJ0pVU1RfTk9XJywgeyBzZWNvbmRzOiB0aW1lRGlmZiB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRpbWVEaWZmIDwgNjAgKiAxMDApIHtcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0gdHJhbnNsYXRpb24uaW5zdGFudCgnTUlOVVRFU19BR08nLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW51dGVzOiBNYXRoLnJvdW5kKHRpbWVEaWZmIC8gNjApLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwcmVmaXggPSB0cmFuc2xhdGlvbi5pbnN0YW50KCdIT1VSU19BR08nLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBob3VyczogTWF0aC5yb3VuZCh0aW1lRGlmZiAvICg2MCAqIDYwKSksXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhZGREYXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGltZUZvcm1hdCA9ICcnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc1RvZGF5ICYmIG9wdGlvbnMucmVsYXRpdmVMYWJlbHMgPj0gUmVsYXRpdmVNb2RlLnNob3J0KSB7XG4gICAgICAgICAgICAgICAgcHJlZml4ID0gdHJhbnNsYXRpb24uaW5zdGFudCgnVE9EQVknKTtcbiAgICAgICAgICAgICAgICBhZGREYXRlID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzWWVzdGVyZGF5ICYmIG9wdGlvbnMucmVsYXRpdmVMYWJlbHMgPj0gUmVsYXRpdmVNb2RlLm1lZGl1bSkge1xuICAgICAgICAgICAgICAgIHByZWZpeCA9IHRyYW5zbGF0aW9uLmluc3RhbnQoJ1lFU1RFUkRBWScpO1xuICAgICAgICAgICAgICAgIGFkZERhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgKGRpZmZEYXlzIDwgNiAmJiBvcHRpb25zLnJlbGF0aXZlTGFiZWxzID49IFJlbGF0aXZlTW9kZS5tZWRpdW0pIHx8XG4gICAgICAgICAgICAgICAgKGRpZmZEYXlzIDwgNDUgJiYgb3B0aW9ucy5yZWxhdGl2ZUxhYmVscyA+PSBSZWxhdGl2ZU1vZGUubGFyZ2UpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBwcmVmaXggPSB0cmFuc2xhdGlvbi5pbnN0YW50KCdEQVlTX0FHTycsIHsgZGF5czogZGlmZkRheXMgfSk7XG4gICAgICAgICAgICAgICAgYWRkRGF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5zaG93QWx3YXlzVGltZSkgdGltZUZvcm1hdCA9ICcnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBkaWZmWWVhcnMgPT09IDAgJiZcbiAgICAgICAgICAgICAgICBkaWZmTW9udGhzIDwgMTIgJiZcbiAgICAgICAgICAgICAgICBvcHRpb25zLnJlbGF0aXZlTGFiZWxzID49IFJlbGF0aXZlTW9kZS5sYXJnZVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcHJlZml4ID0gdHJhbnNsYXRpb24uaW5zdGFudCgnTU9OVEhTX0FHTycsIHsgbW9udGhzOiBkaWZmTW9udGhzIH0pO1xuICAgICAgICAgICAgICAgIGFkZERhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2hvd0Fsd2F5c1RpbWUpIHRpbWVGb3JtYXQgPSAnJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5yZWxhdGl2ZUxhYmVscyA9PT0gUmVsYXRpdmVNb2RlLmFsbCkge1xuICAgICAgICAgICAgICAgIHByZWZpeCA9IHRyYW5zbGF0aW9uLmluc3RhbnQoJ1lFQVJTX0FHTycsIHsgeWVhcnM6IGRpZmZZZWFycyB9KTtcbiAgICAgICAgICAgICAgICBhZGREYXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKCFvcHRpb25zLnNob3dBbHdheXNUaW1lKSB0aW1lRm9ybWF0ID0gJyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5zaG93QWx3YXlzVGltZSkgdGltZUZvcm1hdCA9ICcnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBuZzIncyBkYXRlZm9ybWF0dGVyIGlzIHN1cGVyIHNsb3csIGJ1dCBpdCBkb2Vzbid0IG1hdHRlciwgd2UganVzdCBpdGVyYXRlIGl0IG9uY2UgOilcbiAgICAgICAgICAgIC8vcmV0dXJuIGRhdGVGb3JtYXQrdGltZTtcbiAgICAgICAgICAgIGxldCBzdHIgPSBwcmVmaXg7XG4gICAgICAgICAgICBpZiAoYWRkRGF0ZSkge1xuICAgICAgICAgICAgICAgIGlmICh0cmFuc2xhdGlvbi5jdXJyZW50TGFuZyA9PT0gJ2VuJykge1xuICAgICAgICAgICAgICAgICAgICBzdHIgKz1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVPYmplY3QuZ2V0RnVsbFllYXIoKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAnLScgK1xuICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZUhlbHBlci5maWxsRGF0ZShkYXRlT2JqZWN0LmdldE1vbnRoKCkgKyAxKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAnLScgK1xuICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZUhlbHBlci5maWxsRGF0ZShkYXRlT2JqZWN0LmdldERhdGUoKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RyICs9XG4gICAgICAgICAgICAgICAgICAgICAgICBEYXRlSGVscGVyLmZpbGxEYXRlKGRhdGVPYmplY3QuZ2V0RGF0ZSgpKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAnLicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZUhlbHBlci5maWxsRGF0ZShkYXRlT2JqZWN0LmdldE1vbnRoKCkgKyAxKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAnLicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZU9iamVjdC5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvL3N0ciArPSBEYXRlRm9ybWF0dGVyLmZvcm1hdChkYXRlT2JqZWN0LCBUcmFuc2xhdGlvbi5nZXRMYW5ndWFnZSgpLCBkYXRlRm9ybWF0KS50cmltKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zaG93RGF0ZSA9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHN0ciA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaWUgZml4ZXMsIHRpbWVGb3JtYXQgbm90IHdvcmtpbmdcbiAgICAgICAgICAgIGlmICh0aW1lRm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0cikgc3RyICs9ICcsICc7XG5cbiAgICAgICAgICAgICAgICAvL2xldCB0aW1lVmFsdWU9ZGF0ZU9iamVjdC50b0xvY2FsZVRpbWVTdHJpbmcoVHJhbnNsYXRpb24uZ2V0TGFuZ3VhZ2UoKSk7XG4gICAgICAgICAgICAgICAgLy9sZXQgdGltZXM9dGltZVZhbHVlLnNwbGl0KFwiOlwiKTtcbiAgICAgICAgICAgICAgICBzdHIgKz0gdGltZUZvcm1hdFxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgnSEgnLCBEYXRlSGVscGVyLmZpbGxEYXRlKGRhdGVPYmplY3QuZ2V0SG91cnMoKSkpXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKCdtbScsIERhdGVIZWxwZXIuZmlsbERhdGUoZGF0ZU9iamVjdC5nZXRNaW51dGVzKCkpKVxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgnc3MnLCBEYXRlSGVscGVyLmZpbGxEYXRlKGRhdGVPYmplY3QuZ2V0U2Vjb25kcygpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3RyO1xuICAgICAgICAgICAgLypcbiAgICAgIGxldCBkYXRlU3RyaW5nPXByZWZpeCtcIiBcIjtcbiAgICAgIGlmKGRhdGVGb3JtYXQhPVwiXCIpe1xuICAgICAgICBkYXRlU3RyaW5nKz1kYXRlT2JqZWN0LnRvTG9jYWxlRGF0ZVN0cmluZyhUcmFuc2xhdGlvbi5nZXRMYW5ndWFnZSgpKStcIiBcIjtcbiAgICAgIH1cbiAgICAgIGlmKHRpbWUhPVwiXCIpe1xuICAgICAgICBkYXRlU3RyaW5nKz1kYXRlT2JqZWN0LnRvTG9jYWxlVGltZVN0cmluZyhUcmFuc2xhdGlvbi5nZXRMYW5ndWFnZSgpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBkYXRlU3RyaW5nO1xuICAgICAgKi9cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUgYXMgYW55O1xuICAgICAgICB9XG4gICAgfVxuICAgIHN0YXRpYyBnZXREYXRlRnJvbURhdGVwaWNrZXIoZGF0ZTogRGF0ZSkge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkgLSBkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MCAqIDEwMDApO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXREYXRlRm9yTmV3RmlsZSgpIHtcbiAgICAgICAgcmV0dXJuIERhdGVIZWxwZXIuZm9ybWF0RGF0ZShudWxsLCBuZXcgRGF0ZSgpLmdldFRpbWUoKSwge1xuICAgICAgICAgICAgc2hvd0Fsd2F5c1RpbWU6IHRydWUsXG4gICAgICAgICAgICB1c2VSZWxhdGl2ZUxhYmVsczogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,278 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Created by Torsten on 28.02.2017.
|
|
3
|
-
*/
|
|
4
|
-
export class VCard {
|
|
5
|
-
static { this.TYPE_PERSON = 0; }
|
|
6
|
-
static { this.TYPE_ORG = 1; }
|
|
7
|
-
constructor(vcard = null) {
|
|
8
|
-
// was the vcard altered
|
|
9
|
-
this.isDirty = false;
|
|
10
|
-
if (vcard) {
|
|
11
|
-
this.lines = vcard.split('\n');
|
|
12
|
-
// this.remove("FN");
|
|
13
|
-
if (!this.get('BEGIN')) {
|
|
14
|
-
this.lines.splice(0, 0, 'BEGIN:VCARD');
|
|
15
|
-
}
|
|
16
|
-
if (!this.get('VERSION')) {
|
|
17
|
-
this.lines.splice(1, 0, 'VERSION:3.0');
|
|
18
|
-
}
|
|
19
|
-
if (!this.get('END')) {
|
|
20
|
-
this.lines.splice(this.lines.length, 0, 'END:VCARD');
|
|
21
|
-
}
|
|
22
|
-
this.isDirty = true;
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
this.lines = [];
|
|
26
|
-
this.lines.push('BEGIN:VCARD');
|
|
27
|
-
this.lines.push('VERSION:3.0');
|
|
28
|
-
this.lines.push('END:VCARD');
|
|
29
|
-
this.isDirty = false;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* returns true if this vcard seems to have valid data
|
|
34
|
-
* @param {string} data
|
|
35
|
-
*/
|
|
36
|
-
isValid() {
|
|
37
|
-
// return this.lines!=null && this.lines.length;
|
|
38
|
-
return (this.givenname ||
|
|
39
|
-
this.surname ||
|
|
40
|
-
this.org ||
|
|
41
|
-
this.street ||
|
|
42
|
-
this.city ||
|
|
43
|
-
this.zip ||
|
|
44
|
-
this.country);
|
|
45
|
-
}
|
|
46
|
-
set givenname(data) {
|
|
47
|
-
this.set('Givenname', data);
|
|
48
|
-
}
|
|
49
|
-
set surname(data) {
|
|
50
|
-
this.set('Surname', data);
|
|
51
|
-
}
|
|
52
|
-
set title(data) {
|
|
53
|
-
this.set('TITLE', data);
|
|
54
|
-
}
|
|
55
|
-
set org(data) {
|
|
56
|
-
this.set('ORG', data);
|
|
57
|
-
}
|
|
58
|
-
set orgPhone(data) {
|
|
59
|
-
this.set('TEL;TYPE=WORK,VOICE', data);
|
|
60
|
-
}
|
|
61
|
-
set url(data) {
|
|
62
|
-
this.set('URL', data);
|
|
63
|
-
}
|
|
64
|
-
set email(data) {
|
|
65
|
-
this.set('EMAIL;TYPE=PREF,INTERNET', data);
|
|
66
|
-
}
|
|
67
|
-
set uid(data) {
|
|
68
|
-
this.set('UID:urn:uuid', data);
|
|
69
|
-
}
|
|
70
|
-
set orcid(data) {
|
|
71
|
-
this.set('X-ORCID', data);
|
|
72
|
-
}
|
|
73
|
-
set gnduri(data) {
|
|
74
|
-
this.set('X-GND-URI', data);
|
|
75
|
-
}
|
|
76
|
-
set ror(data) {
|
|
77
|
-
this.set('X-ROR', data);
|
|
78
|
-
}
|
|
79
|
-
set wikidata(data) {
|
|
80
|
-
this.set('X-Wikidata', data);
|
|
81
|
-
}
|
|
82
|
-
set street(data) {
|
|
83
|
-
this.set('ADR;TYPE=intl,postal,parcel,work', data, 2);
|
|
84
|
-
}
|
|
85
|
-
set city(data) {
|
|
86
|
-
this.set('ADR;TYPE=intl,postal,parcel,work', data, 3);
|
|
87
|
-
}
|
|
88
|
-
set region(data) {
|
|
89
|
-
this.set('ADR;TYPE=intl,postal,parcel,work', data, 4);
|
|
90
|
-
}
|
|
91
|
-
set zip(data) {
|
|
92
|
-
this.set('ADR;TYPE=intl,postal,parcel,work', data, 5);
|
|
93
|
-
}
|
|
94
|
-
set country(data) {
|
|
95
|
-
this.set('ADR;TYPE=intl,postal,parcel,work', data, 6);
|
|
96
|
-
}
|
|
97
|
-
set contributeDate(data) {
|
|
98
|
-
this.set('X-ES-LOM-CONTRIBUTE-DATE', data);
|
|
99
|
-
}
|
|
100
|
-
get givenname() {
|
|
101
|
-
return this.get('Givenname');
|
|
102
|
-
}
|
|
103
|
-
get surname() {
|
|
104
|
-
return this.get('Surname');
|
|
105
|
-
}
|
|
106
|
-
get orcid() {
|
|
107
|
-
return this.get('X-ORCID');
|
|
108
|
-
}
|
|
109
|
-
get gnduri() {
|
|
110
|
-
return this.get('X-GND-URI');
|
|
111
|
-
}
|
|
112
|
-
get ror() {
|
|
113
|
-
return this.get('X-ROR');
|
|
114
|
-
}
|
|
115
|
-
get wikidata() {
|
|
116
|
-
return this.get('X-Wikidata');
|
|
117
|
-
}
|
|
118
|
-
get title() {
|
|
119
|
-
return this.get('TITLE');
|
|
120
|
-
}
|
|
121
|
-
get org() {
|
|
122
|
-
return this.get('ORG');
|
|
123
|
-
}
|
|
124
|
-
get contributeDate() {
|
|
125
|
-
const string = this.get('X-ES-LOM-CONTRIBUTE-DATE');
|
|
126
|
-
if (string)
|
|
127
|
-
return string.split('T')[0];
|
|
128
|
-
return string;
|
|
129
|
-
}
|
|
130
|
-
get url() {
|
|
131
|
-
return this.get('URL');
|
|
132
|
-
}
|
|
133
|
-
get orgPhone() {
|
|
134
|
-
return this.get('TEL;TYPE=WORK,VOICE');
|
|
135
|
-
}
|
|
136
|
-
get email() {
|
|
137
|
-
return this.get('EMAIL;TYPE=PREF,INTERNET');
|
|
138
|
-
}
|
|
139
|
-
get uid() {
|
|
140
|
-
return this.get('UID:urn:uuid');
|
|
141
|
-
}
|
|
142
|
-
get street() {
|
|
143
|
-
return this.get('ADR;TYPE=intl,postal,parcel,work', 2);
|
|
144
|
-
}
|
|
145
|
-
get city() {
|
|
146
|
-
return this.get('ADR;TYPE=intl,postal,parcel,work', 3);
|
|
147
|
-
}
|
|
148
|
-
get region() {
|
|
149
|
-
return this.get('ADR;TYPE=intl,postal,parcel,work', 4);
|
|
150
|
-
}
|
|
151
|
-
get zip() {
|
|
152
|
-
return this.get('ADR;TYPE=intl,postal,parcel,work', 5);
|
|
153
|
-
}
|
|
154
|
-
get country() {
|
|
155
|
-
return this.get('ADR;TYPE=intl,postal,parcel,work', 6);
|
|
156
|
-
}
|
|
157
|
-
toVCardString() {
|
|
158
|
-
// unaltered -> so return a null value
|
|
159
|
-
if (!this.isDirty)
|
|
160
|
-
return null;
|
|
161
|
-
if (this.get('Givenname') || this.get('Surname'))
|
|
162
|
-
this.set('FN', this.get('Givenname', -1, '') + ' ' + this.get('Surname', -1, ''));
|
|
163
|
-
return this.lines.join('\n');
|
|
164
|
-
}
|
|
165
|
-
getDisplayName() {
|
|
166
|
-
const string = (this.title ?? '') + ' ' + (this.givenname ?? '') + ' ' + (this.surname ?? '');
|
|
167
|
-
if (string.trim() === '') {
|
|
168
|
-
return this.org || this.get('FN') || '';
|
|
169
|
-
}
|
|
170
|
-
return string;
|
|
171
|
-
}
|
|
172
|
-
get(key, splitIndex = -1, fallback = null) {
|
|
173
|
-
if (key == 'Surname') {
|
|
174
|
-
splitIndex = 0;
|
|
175
|
-
key = 'N';
|
|
176
|
-
}
|
|
177
|
-
if (key == 'Givenname') {
|
|
178
|
-
splitIndex = 1;
|
|
179
|
-
key = 'N';
|
|
180
|
-
}
|
|
181
|
-
for (let line of this.lines) {
|
|
182
|
-
line = line.trim();
|
|
183
|
-
if (line.startsWith(key + ':')) {
|
|
184
|
-
const value = line.substring(key.length + 1).trim();
|
|
185
|
-
if (splitIndex != -1)
|
|
186
|
-
return this.deEscape(value.split(';')[splitIndex]);
|
|
187
|
-
return this.deEscape(value);
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
return fallback;
|
|
191
|
-
}
|
|
192
|
-
remove(key) {
|
|
193
|
-
for (let i = 0; i < this.lines.length; i++) {
|
|
194
|
-
if (this.lines[i].startsWith(key + ':')) {
|
|
195
|
-
this.lines.splice(i, 1);
|
|
196
|
-
return true;
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
return false;
|
|
200
|
-
}
|
|
201
|
-
set(key, value, splitIndex = -1) {
|
|
202
|
-
// no value and empty vcard -> do nothing
|
|
203
|
-
if (!this.isDirty && !value)
|
|
204
|
-
return;
|
|
205
|
-
if (key == 'Surname') {
|
|
206
|
-
splitIndex = 0;
|
|
207
|
-
key = 'N';
|
|
208
|
-
}
|
|
209
|
-
if (key == 'Givenname') {
|
|
210
|
-
splitIndex = 1;
|
|
211
|
-
key = 'N';
|
|
212
|
-
}
|
|
213
|
-
let i = 0;
|
|
214
|
-
for (let line of this.lines) {
|
|
215
|
-
line = line.trim();
|
|
216
|
-
if (line.startsWith(key + ':')) {
|
|
217
|
-
let lineValue = line.substring(key.length + 1).trim();
|
|
218
|
-
if (splitIndex != -1) {
|
|
219
|
-
const split = lineValue.split(';');
|
|
220
|
-
split[splitIndex] = this.escape(value);
|
|
221
|
-
lineValue = split.join(';');
|
|
222
|
-
}
|
|
223
|
-
else {
|
|
224
|
-
lineValue = this.escape(value);
|
|
225
|
-
}
|
|
226
|
-
this.lines[i] = line.substring(0, key.length + 1) + lineValue;
|
|
227
|
-
return;
|
|
228
|
-
}
|
|
229
|
-
i++;
|
|
230
|
-
}
|
|
231
|
-
let lineValue = this.escape(value);
|
|
232
|
-
if (splitIndex >= 0) {
|
|
233
|
-
lineValue = '';
|
|
234
|
-
while (lineValue.length < splitIndex)
|
|
235
|
-
lineValue += ';';
|
|
236
|
-
lineValue += this.escape(value);
|
|
237
|
-
}
|
|
238
|
-
this.lines.splice(this.getNextLine(), 0, key + ':' + lineValue);
|
|
239
|
-
this.isDirty = true;
|
|
240
|
-
}
|
|
241
|
-
getNextLine() {
|
|
242
|
-
let i = 0;
|
|
243
|
-
for (const line of this.lines) {
|
|
244
|
-
if (line.trim() == 'END:VCARD')
|
|
245
|
-
return i - 1;
|
|
246
|
-
i++;
|
|
247
|
-
}
|
|
248
|
-
return this.lines.length - 1;
|
|
249
|
-
}
|
|
250
|
-
deEscape(value) {
|
|
251
|
-
if (value == null)
|
|
252
|
-
return '';
|
|
253
|
-
return value.replace(/\\\\/g, '\\').replace(/\\,/g, ',');
|
|
254
|
-
}
|
|
255
|
-
escape(value) {
|
|
256
|
-
if (value == null)
|
|
257
|
-
return '';
|
|
258
|
-
return value.replace(/\\/g, '\\\\').replace(/,/g, '\\,').replace(/;/g, ' ');
|
|
259
|
-
}
|
|
260
|
-
copy() {
|
|
261
|
-
return new VCard(this.toVCardString());
|
|
262
|
-
}
|
|
263
|
-
/**
|
|
264
|
-
* Apply all data from an other vcard to this object
|
|
265
|
-
* @param other
|
|
266
|
-
*/
|
|
267
|
-
apply(other) {
|
|
268
|
-
this.lines = other.lines;
|
|
269
|
-
}
|
|
270
|
-
getType() {
|
|
271
|
-
return this.isValid()
|
|
272
|
-
? this.givenname || this.surname
|
|
273
|
-
? VCard.TYPE_PERSON
|
|
274
|
-
: VCard.TYPE_ORG
|
|
275
|
-
: VCard.TYPE_PERSON;
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVkNhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL3V0aWwvVkNhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxNQUFNLE9BQU8sS0FBSzthQUNBLGdCQUFXLEdBQUcsQ0FBQyxBQUFKLENBQUs7YUFDaEIsYUFBUSxHQUFHLENBQUMsQUFBSixDQUFLO0lBSTNCLFlBQVksUUFBZ0IsSUFBSTtRQUhoQyx3QkFBd0I7UUFDaEIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUdwQixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9CLHFCQUFxQjtZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDekQsQ0FBQztZQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxD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YTtRQUN4QixJQUFJLEtBQUssSUFBSSxJQUFJO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDN0IsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVNLElBQUk7UUFDUCxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMsS0FBWTtRQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELE9BQU87UUFDSCxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakIsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLE9BQU87Z0JBQzVCLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVztnQkFDbkIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRO1lBQ3BCLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENyZWF0ZWQgYnkgVG9yc3RlbiBvbiAyOC4wMi4yMDE3LlxuICovXG5cbmV4cG9ydCBjbGFzcyBWQ2FyZCB7XG4gICAgcHVibGljIHN0YXRpYyBUWVBFX1BFUlNPTiA9IDA7XG4gICAgcHVibGljIHN0YXRpYyBUWVBFX09SRyA9IDE7XG4gICAgLy8gd2FzIHRoZSB2Y2FyZCBhbHRlcmVkXG4gICAgcHJpdmF0ZSBpc0RpcnR5ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBsaW5lczogc3RyaW5nW107XG4gICAgY29uc3RydWN0b3IodmNhcmQ6IHN0cmluZyA9IG51bGwpIHtcbiAgICAgICAgaWYgKHZjYXJkKSB7XG4gICAgICAgICAgICB0aGlzLmxpbmVzID0gdmNhcmQuc3BsaXQoJ1xcbicpO1xuICAgICAgICAgICAgLy8gdGhpcy5yZW1vdmUoXCJGTlwiKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5nZXQoJ0JFR0lOJykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpbmVzLnNwbGljZSgwLCAwLCAnQkVHSU46VkNBUkQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5nZXQoJ1ZFUlNJT04nKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubGluZXMuc3BsaWNlKDEsIDAsICdWRVJTSU9OOjMuMCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLmdldCgnRU5EJykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpbmVzLnNwbGljZSh0aGlzLmxpbmVzLmxlbmd0aCwgMCwgJ0VORDpWQ0FSRCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pc0RpcnR5ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubGluZXMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMubGluZXMucHVzaCgnQkVHSU46VkNBUkQnKTtcbiAgICAgICAgICAgIHRoaXMubGluZXMucHVzaCgnVkVSU0lPTjozLjAnKTtcbiAgICAgICAgICAgIHRoaXMubGluZXMucHVzaCgnRU5EOlZDQVJEJyk7XG4gICAgICAgICAgICB0aGlzLmlzRGlydHkgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgdHJ1ZSBpZiB0aGlzIHZjYXJkIHNlZW1zIHRvIGhhdmUgdmFsaWQgZGF0YVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhXG4gICAgICovXG4gICAgcHVibGljIGlzVmFsaWQoKSB7XG4gICAgICAgIC8vIHJldHVybiB0aGlzLmxpbmVzIT1udWxsICYmIHRoaXMubGluZXMubGVuZ3RoO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5naXZlbm5hbWUgfHxcbiAgICAgICAgICAgIHRoaXMuc3VybmFtZSB8fFxuICAgICAgICAgICAgdGhpcy5vcmcgfHxcbiAgICAgICAgICAgIHRoaXMuc3RyZWV0IHx8XG4gICAgICAgICAgICB0aGlzLmNpdHkgfHxcbiAgICAgICAgICAgIHRoaXMuemlwIHx8XG4gICAgICAgICAgICB0aGlzLmNvdW50cnlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcHVibGljIHNldCBnaXZlbm5hbWUoZGF0YTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2V0KCdHaXZlbm5hbWUnLCBkYXRhKTtcbiAgICB9XG4gICAgcHVibGljIHNldCBzdXJuYW1lKGRhdGE6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNldCgnU3VybmFtZScsIGRhdGEpO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IHRpdGxlKGRhdGE6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNldCgnVElUTEUnLCBkYXRhKTtcbiAgICB9XG4gICAgcHVibGljIHNldCBvcmcoZGF0YTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2V0KCdPUkcnLCBkYXRhKTtcbiAgICB9XG4gICAgcHVibGljIHNldCBvcmdQaG9uZShkYXRhOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZXQoJ1RFTDtUWVBFPVdPUkssVk9JQ0UnLCBkYXRhKTtcbiAgICB9XG4gICAgcHVibGljIHNldCB1cmwoZGF0YTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2V0KCdVUkwnLCBkYXRhKTtcbiAgICB9XG4gICAgcHVibGljIHNldCBlbWFpbChkYXRhOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZXQoJ0VNQUlMO1RZUEU9UFJFRixJTlRFUk5FVCcsIGRhdGEpO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IHVpZChkYXRhOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZXQoJ1VJRDp1cm46dXVpZCcsIGRhdGEpO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IG9yY2lkKGRhdGE6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNldCgnWC1PUkNJRCcsIGRhdGEpO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IGduZHVyaShkYXRhOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZXQoJ1gtR05ELVVSSScsIGRhdGEpO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IHJvcihkYXRhOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZXQoJ1gtUk9SJywgZGF0YSk7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgd2lraWRhdGEoZGF0YTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2V0KCdYLVdpa2lkYXRhJywgZGF0YSk7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgc3RyZWV0KGRhdGE6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNldCgnQURSO1RZUEU9aW50bCxwb3N0YWwscGFyY2VsLHdvcmsnLCBkYXRhLCAyKTtcbiAgICB9XG4gICAgcHVibGljIHNldCBjaXR5KGRhdGE6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNldCgnQURSO1RZUEU9aW50bCxwb3N0YWwscGFyY2VsLHdvcmsnLCBkYXRhLCAzKTtcbiAgICB9XG4gICAgcHVibGljIHNldCByZWdpb24oZGF0YTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2V0KCdBRFI7VFlQRT1pbnRsLHBvc3RhbCxwYXJjZWwsd29yaycsIGRhdGEsIDQpO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IHppcChkYXRhOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZXQoJ0FEUjtUWVBFPWludGwscG9zdGFsLHBhcmNlbCx3b3JrJywgZGF0YSwgNSk7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgY291bnRyeShkYXRhOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZXQoJ0FEUjtUWVBFPWludGwscG9zdGFsLHBhcmNlbCx3b3JrJywgZGF0YSwgNik7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgY29udHJpYnV0ZURhdGUoZGF0YTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2V0KCdYLUVTLUxPTS1DT05UUklCVVRFLURBVEUnLCBkYXRhKTtcbiAgICB9XG4gICAgcHVibGljIGdldCBnaXZlbm5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldCgnR2l2ZW5uYW1lJyk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgc3VybmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdTdXJuYW1lJyk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgb3JjaWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldCgnWC1PUkNJRCcpO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IGduZHVyaSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdYLUdORC1VUkknKTtcbiAgICB9XG4gICAgcHVibGljIGdldCByb3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldCgnWC1ST1InKTtcbiAgICB9XG4gICAgcHVibGljIGdldCB3aWtpZGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdYLVdpa2lkYXRhJyk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgdGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldCgnVElUTEUnKTtcbiAgICB9XG4gICAgcHVibGljIGdldCBvcmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldCgnT1JHJyk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgY29udHJpYnV0ZURhdGUoKSB7XG4gICAgICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0KCdYLUVTLUxPTS1DT05UUklCVVRFLURBVEUnKTtcbiAgICAgICAgaWYgKHN0cmluZykgcmV0dXJuIHN0cmluZy5zcGxpdCgnVCcpWzBdO1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IHVybCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdVUkwnKTtcbiAgICB9XG4gICAgcHVibGljIGdldCBvcmdQaG9uZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdURUw7VFlQRT1XT1JLLFZPSUNFJyk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgZW1haWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldCgnRU1BSUw7VFlQRT1QUkVGLElOVEVSTkVUJyk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgdWlkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoJ1VJRDp1cm46dXVpZCcpO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IHN0cmVldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdBRFI7VFlQRT1pbnRsLHBvc3RhbCxwYXJjZWwsd29yaycsIDIpO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IGNpdHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldCgnQURSO1RZUEU9aW50bCxwb3N0YWwscGFyY2VsLHdvcmsnLCAzKTtcbiAgICB9XG4gICAgcHVibGljIGdldCByZWdpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldCgnQURSO1RZUEU9aW50bCxwb3N0YWwscGFyY2VsLHdvcmsnLCA0KTtcbiAgICB9XG4gICAgcHVibGljIGdldCB6aXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldCgnQURSO1RZUEU9aW50bCxwb3N0YWwscGFyY2VsLHdvcmsnLCA1KTtcbiAgICB9XG4gICAgcHVibGljIGdldCBjb3VudHJ5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoJ0FEUjtUWVBFPWludGwscG9zdGFsLHBhcmNlbCx3b3JrJywgNik7XG4gICAgfVxuICAgIHB1YmxpYyB0b1ZDYXJkU3RyaW5nKCkge1xuICAgICAgICAvLyB1bmFsdGVyZWQgLT4gc28gcmV0dXJuIGEgbnVsbCB2YWx1ZVxuICAgICAgICBpZiAoIXRoaXMuaXNEaXJ0eSkgcmV0dXJuIG51bGw7XG4gICAgICAgIGlmICh0aGlzLmdldCgnR2l2ZW5uYW1lJykgfHwgdGhpcy5nZXQoJ1N1cm5hbWUnKSlcbiAgICAgICAgICAgIHRoaXMuc2V0KCdGTicsIHRoaXMuZ2V0KCdHaXZlbm5hbWUnLCAtMSwgJycpICsgJyAnICsgdGhpcy5nZXQoJ1N1cm5hbWUnLCAtMSwgJycpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubGluZXMuam9pbignXFxuJyk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXREaXNwbGF5TmFtZSgpIHtcbiAgICAgICAgY29uc3Qgc3RyaW5nID1cbiAgICAgICAgICAgICh0aGlzLnRpdGxlID8/ICcnKSArICcgJyArICh0aGlzLmdpdmVubmFtZSA/PyAnJykgKyAnICcgKyAodGhpcy5zdXJuYW1lID8/ICcnKTtcbiAgICAgICAgaWYgKHN0cmluZy50cmltKCkgPT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcmcgfHwgdGhpcy5nZXQoJ0ZOJykgfHwgJyc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICB9XG4gICAgcHVibGljIGdldChrZXk6IHN0cmluZywgc3BsaXRJbmRleCA9IC0xLCBmYWxsYmFjazogc3RyaW5nID0gbnVsbCkge1xuICAgICAgICBpZiAoa2V5ID09ICdTdXJuYW1lJykge1xuICAgICAgICAgICAgc3BsaXRJbmRleCA9IDA7XG4gICAgICAgICAgICBrZXkgPSAnTic7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGtleSA9PSAnR2l2ZW5uYW1lJykge1xuICAgICAgICAgICAgc3BsaXRJbmRleCA9IDE7XG4gICAgICAgICAgICBrZXkgPSAnTic7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgbGluZSBvZiB0aGlzLmxpbmVzKSB7XG4gICAgICAgICAgICBsaW5lID0gbGluZS50cmltKCk7XG4gICAgICAgICAgICBpZiAobGluZS5zdGFydHNXaXRoKGtleSArICc6JykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGxpbmUuc3Vic3RyaW5nKGtleS5sZW5ndGggKyAxKS50cmltKCk7XG4gICAgICAgICAgICAgICAgaWYgKHNwbGl0SW5kZXggIT0gLTEpIHJldHVybiB0aGlzLmRlRXNjYXBlKHZhbHVlLnNwbGl0KCc7Jylbc3BsaXRJbmRleF0pO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRlRXNjYXBlKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgfVxuICAgIHB1YmxpYyByZW1vdmUoa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5saW5lc1tpXS5zdGFydHNXaXRoKGtleSArICc6JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpbmVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIHNwbGl0SW5kZXggPSAtMSkge1xuICAgICAgICAvLyBubyB2YWx1ZSBhbmQgZW1wdHkgdmNhcmQgLT4gZG8gbm90aGluZ1xuICAgICAgICBpZiAoIXRoaXMuaXNEaXJ0eSAmJiAhdmFsdWUpIHJldHVybjtcbiAgICAgICAgaWYgKGtleSA9PSAnU3VybmFtZScpIHtcbiAgICAgICAgICAgIHNwbGl0SW5kZXggPSAwO1xuICAgICAgICAgICAga2V5ID0gJ04nO1xuICAgICAgICB9XG4gICAgICAgIGlmIChrZXkgPT0gJ0dpdmVubmFtZScpIHtcbiAgICAgICAgICAgIHNwbGl0SW5kZXggPSAxO1xuICAgICAgICAgICAga2V5ID0gJ04nO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgZm9yIChsZXQgbGluZSBvZiB0aGlzLmxpbmVzKSB7XG4gICAgICAgICAgICBsaW5lID0gbGluZS50cmltKCk7XG4gICAgICAgICAgICBpZiAobGluZS5zdGFydHNXaXRoKGtleSArICc6JykpIHtcbiAgICAgICAgICAgICAgICBsZXQgbGluZVZhbHVlID0gbGluZS5zdWJzdHJpbmcoa2V5Lmxlbmd0aCArIDEpLnRyaW0oKTtcbiAgICAgICAgICAgICAgICBpZiAoc3BsaXRJbmRleCAhPSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGxpdCA9IGxpbmVWYWx1ZS5zcGxpdCgnOycpO1xuICAgICAgICAgICAgICAgICAgICBzcGxpdFtzcGxpdEluZGV4XSA9IHRoaXMuZXNjYXBlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgbGluZVZhbHVlID0gc3BsaXQuam9pbignOycpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxpbmVWYWx1ZSA9IHRoaXMuZXNjYXBlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5saW5lc1tpXSA9IGxpbmUuc3Vic3RyaW5nKDAsIGtleS5sZW5ndGggKyAxKSArIGxpbmVWYWx1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGxpbmVWYWx1ZSA9IHRoaXMuZXNjYXBlKHZhbHVlKTtcbiAgICAgICAgaWYgKHNwbGl0SW5kZXggPj0gMCkge1xuICAgICAgICAgICAgbGluZVZhbHVlID0gJyc7XG4gICAgICAgICAgICB3aGlsZSAobGluZVZhbHVlLmxlbmd0aCA8IHNwbGl0SW5kZXgpIGxpbmVWYWx1ZSArPSAnOyc7XG4gICAgICAgICAgICBsaW5lVmFsdWUgKz0gdGhpcy5lc2NhcGUodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGluZXMuc3BsaWNlKHRoaXMuZ2V0TmV4dExpbmUoKSwgMCwga2V5ICsgJzonICsgbGluZVZhbHVlKTtcbiAgICAgICAgdGhpcy5pc0RpcnR5ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE5leHRMaW5lKCkge1xuICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgIGZvciAoY29uc3QgbGluZSBvZiB0aGlzLmxpbmVzKSB7XG4gICAgICAgICAgICBpZiAobGluZS50cmltKCkgPT0gJ0VORDpWQ0FSRCcpIHJldHVybiBpIC0gMTtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5saW5lcy5sZW5ndGggLSAxO1xuICAgIH1cbiAgICBwcml2YXRlIGRlRXNjYXBlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiAnJztcbiAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1xcXFxcXFxcL2csICdcXFxcJykucmVwbGFjZSgvXFxcXCwvZywgJywnKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBlc2NhcGUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuICcnO1xuICAgICAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvXFxcXC9nLCAnXFxcXFxcXFwnKS5yZXBsYWNlKC8sL2csICdcXFxcLCcpLnJlcGxhY2UoLzsvZywgJyAnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBWQ2FyZCh0aGlzLnRvVkNhcmRTdHJpbmcoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBwbHkgYWxsIGRhdGEgZnJvbSBhbiBvdGhlciB2Y2FyZCB0byB0aGlzIG9iamVjdFxuICAgICAqIEBwYXJhbSBvdGhlclxuICAgICAqL1xuICAgIHB1YmxpYyBhcHBseShvdGhlcjogVkNhcmQpIHtcbiAgICAgICAgdGhpcy5saW5lcyA9IG90aGVyLmxpbmVzO1xuICAgIH1cblxuICAgIGdldFR5cGUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpXG4gICAgICAgICAgICA/IHRoaXMuZ2l2ZW5uYW1lIHx8IHRoaXMuc3VybmFtZVxuICAgICAgICAgICAgICAgID8gVkNhcmQuVFlQRV9QRVJTT05cbiAgICAgICAgICAgICAgICA6IFZDYXJkLlRZUEVfT1JHXG4gICAgICAgICAgICA6IFZDYXJkLlRZUEVfUEVSU09OO1xuICAgIH1cbn1cbiJdfQ==
|