@ruc-lib/timeline 2.0.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.
package/README.md ADDED
@@ -0,0 +1,91 @@
1
+ # ruclib-timeline
2
+
3
+ A timeline visualizes a series of chained events. It's a way to display information, like data tables, in a format that's easy to scan, allowing users to identify patterns and insights.
4
+
5
+ # Features
6
+ - Configurable layout (vertical or horizontal).
7
+ - Customizable details and subdetails.
8
+ - Option for simple text or Material card display.
9
+ - Adjustable positioning (left, right, top, bottom, opposite).
10
+ - Support for Material icons, tooltips, and configurable font styles for titles and subtitles.
11
+ - Order configuration and text ellipsis for long content.
12
+ - Support for Material Card
13
+
14
+ # Installation guide
15
+
16
+ # Install complete library
17
+
18
+ `npm install @uxpractice/ruc-lib`
19
+
20
+ # Install individual component
21
+
22
+ If users only need the timeline component, they can install it separately
23
+ `npm install @ruc-lib/timeline`
24
+
25
+ # Usage
26
+
27
+ # import required modules
28
+
29
+ for library
30
+ `import { RuclibTimelineModule } from '@uxpractice/ruc-lib/timeline'`
31
+
32
+ for seperate package
33
+ `import { RuclibTimelineModule } from '@ruc-lib/timeline'`
34
+
35
+ # use component selector
36
+
37
+ ```
38
+ <uxp-ruclib-timeline [rucInputData]="inputObjectDataTimeline" [customTheme]="customTheme"></uxp-ruclib-timeline>
39
+ ```
40
+
41
+ # Input and Output
42
+
43
+ # Inputs
44
+ rucInputData -> It is the configuration input to configure the timeline
45
+
46
+ customTheme -> It is the name of the theme.
47
+
48
+ # Output
49
+
50
+ User can see the UI with timeline data
51
+
52
+ # rucInputData (sample object)
53
+
54
+ # Detail definition of the each property can be found in type definition file.
55
+
56
+ ```
57
+ rucInputData = {
58
+ layout: 'horizontal',
59
+ position: 'alternate',
60
+ imageAltText: 'alternative text for image',
61
+ titleFontColor: '#d77777',
62
+ subTitleFontColor: 'aqua',
63
+ titleFontSize: '20px',
64
+ subTitleFontSize: '15px',
65
+ titleBackgroundColor: 'yellow',
66
+ subTitleBackgroundColor: '#d77777',
67
+ highlightColor: 'lightgreen',
68
+ maxTitleLength: 5,
69
+ maxSubTitleLength: 20,
70
+ isInfo: false,
71
+ isTemplate: false,
72
+ data: [
73
+ {
74
+ id: 1,
75
+ title: 'Ordered',
76
+ subtitle: 'sub-title',
77
+ },
78
+ {
79
+ id: 2,
80
+ title: 'Processing',
81
+ subtitle: 'sub-title',
82
+ },
83
+ ]
84
+ };
85
+ ```
86
+
87
+ # Contribution
88
+ Contributions are welcome! Feel free to open issues or pull requests for any enhancements or fixes.
89
+
90
+ # Acknowledgements
91
+ Thank you for choosing the Timeline Component Library. If you have any feedback or suggestions, please let us know!
@@ -0,0 +1,3 @@
1
+ export * from './lib/ruclib-timeline.module';
2
+ export * from './lib/ruclib-timeline/ruclib-timeline.component';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLGlEQUFpRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvcnVjbGliLXRpbWVsaW5lLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1Y2xpYi10aW1lbGluZS9ydWNsaWItdGltZWxpbmUuY29tcG9uZW50JztcclxuIl19
@@ -0,0 +1,206 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "@angular/material/icon";
5
+ import * as i3 from "@angular/material/tooltip";
6
+ import * as i4 from "@angular/material/card";
7
+ export class RuclibTimelineComponent {
8
+ constructor() { }
9
+ /**
10
+ * To get position of the timeline
11
+ * @param position
12
+ * @param index
13
+ * @returns default: left
14
+ */
15
+ getItemPosition(position, index) {
16
+ switch (position) {
17
+ case 'alternate': {
18
+ const layout = this.getLayout();
19
+ if (index % 2 == 0) {
20
+ return layout === 'horizontal' ? 'top' : 'left';
21
+ }
22
+ else {
23
+ return layout === 'horizontal' ? 'bottom' : 'right';
24
+ }
25
+ }
26
+ case 'top':
27
+ return 'top';
28
+ case 'bottom':
29
+ return 'bottom';
30
+ case 'right':
31
+ return 'right';
32
+ case 'left':
33
+ default:
34
+ return 'left';
35
+ }
36
+ }
37
+ /**
38
+ * To get layout of the timeline
39
+ * @param layout
40
+ * @returns default: vertical
41
+ */
42
+ getItemLayout(layout = '') {
43
+ switch (layout) {
44
+ case 'horizontal':
45
+ return 'horizontal';
46
+ case 'vertical':
47
+ default:
48
+ return 'vertical';
49
+ }
50
+ }
51
+ /**
52
+ * To get data from the input
53
+ */
54
+ getData() {
55
+ if (this.rucInputData?.data) {
56
+ this.data = this.rucInputData.data?.sort((a, b) => a?.id - b?.id) || [];
57
+ }
58
+ return typeof this.data !== 'undefined' ? this.data : [];
59
+ }
60
+ /**
61
+ * To get position of the timeline
62
+ * @returns default: left
63
+ */
64
+ getPosition(index = -1) {
65
+ if (index === -1) {
66
+ return this.rucInputData?.position;
67
+ }
68
+ return this.getItemPosition(this.rucInputData?.position || 'left', index); // Provide a default if position is undefined
69
+ }
70
+ /**
71
+ * To get layout of the timeline
72
+ * @returns default: vertical
73
+ */
74
+ getLayout() {
75
+ return this.getItemLayout(this.rucInputData?.layout); // Provide a default if layout is undefined
76
+ }
77
+ /**
78
+ * To get highlight color of the timeline
79
+ * @returns default: undefined
80
+ */
81
+ getHighlightColor() {
82
+ return this.rucInputData?.highlightColor;
83
+ }
84
+ /**
85
+ * To get title font color of the timeline
86
+ * @returns default: undefined
87
+ */
88
+ getTitleColor() {
89
+ return this.rucInputData?.titleFontColor;
90
+ }
91
+ /**
92
+ * To get sub title font color of the timeline
93
+ * @returns default: undefined
94
+ */
95
+ getSubTitleColor() {
96
+ return this.rucInputData?.subTitleFontColor;
97
+ }
98
+ /**
99
+ * To get title font size of the timeline
100
+ * @returns default: undefined
101
+ */
102
+ getTitleFontSize() {
103
+ return this.rucInputData?.titleFontSize;
104
+ }
105
+ /**
106
+ * To get subtitle font size of the timeline
107
+ * @returns default: undefined
108
+ */
109
+ getSubTitleFontSize() {
110
+ return this.rucInputData?.subTitleFontSize;
111
+ }
112
+ /**
113
+ * To get title background color of the timeline
114
+ * @returns default: undefined
115
+ */
116
+ getTitleBackgroundColor() {
117
+ return this.rucInputData?.titleBackgroundColor;
118
+ }
119
+ /**
120
+ * To get subtitle background color of the timeline
121
+ * @returns default: undefined
122
+ */
123
+ getSubTitleBackgroundColor() {
124
+ return this.rucInputData?.subTitleBackgroundColor;
125
+ }
126
+ /**
127
+ * To get max title length of the timeline
128
+ * @returns default: undefined
129
+ */
130
+ getMaxTitleLength() {
131
+ return this.rucInputData?.maxTitleLength;
132
+ }
133
+ /**
134
+ * To get max sub title length of the timeline
135
+ * @returns default: undefined
136
+ */
137
+ getMaxSubtitleLength() {
138
+ return this.rucInputData?.maxSubTitleLength;
139
+ }
140
+ /**
141
+ * To check if the isInfo variable is defined and value is true|false in timeline
142
+ * @returns default: undefined
143
+ */
144
+ isInfo() {
145
+ return this.rucInputData?.isInfo;
146
+ }
147
+ /**
148
+ * To get title in timeline
149
+ * @param title
150
+ * @param key
151
+ * @returns default: title
152
+ */
153
+ getTitle(title = '', key = '') {
154
+ switch (key) {
155
+ case 'title': {
156
+ const checkLength = this.getMaxTitleLength();
157
+ return this.isLengthDefined(title, checkLength);
158
+ }
159
+ case 'subtitle': {
160
+ const checkLength = this.getMaxSubtitleLength();
161
+ return this.isLengthDefined(title, checkLength);
162
+ }
163
+ default: {
164
+ return title;
165
+ }
166
+ }
167
+ }
168
+ /**
169
+ * To check if the length is defined
170
+ * @param title
171
+ * @param checkLength
172
+ * @returns default: title
173
+ */
174
+ isLengthDefined(title = '', checkLength) {
175
+ if (typeof checkLength !== 'undefined' && checkLength > 0 && title !== '') {
176
+ const str = title.substring(0, checkLength);
177
+ return title.length === checkLength ? str : str + '...';
178
+ }
179
+ return title;
180
+ }
181
+ /**
182
+ * To check if the template variable is defined and value is true|false in timeline
183
+ * @returns default: false
184
+ */
185
+ isCard() {
186
+ return typeof this.rucInputData?.isTemplate !== 'undefined' ? this.rucInputData?.isTemplate : false;
187
+ }
188
+ /**
189
+ * To get the color of icon
190
+ * @returns default: false
191
+ */
192
+ getIconColor() {
193
+ return this.rucInputData?.iconColor || 'primary';
194
+ }
195
+ }
196
+ RuclibTimelineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RuclibTimelineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
197
+ RuclibTimelineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RuclibTimelineComponent, selector: "uxp-ruclib-timeline", inputs: { customTheme: "customTheme", rucInputData: "rucInputData" }, ngImport: i0, template: "<div class={{customTheme}}>\r\n <ul class=\"w-full timeline timeline-{{getPosition()}} timeline-{{getLayout()}}\"\r\n [ngClass]=\"{'timeline-card': !!isCard()}\">\r\n <li class=\"timeline-event\" *ngFor=\"let item of getData(); let i = index\">\r\n <ng-container *ngIf=\"getPosition() === 'opposite' then oppositeTemplate else simpleOppositeTemplate\"></ng-container>\r\n <ng-template #oppositeTemplate>\r\n <div class=\"timeline-event-opposite divya\">\r\n <ng-template *ngIf=\"true then titleTemplate\"></ng-template>\r\n </div>\r\n </ng-template>\r\n <ng-template #simpleOppositeTemplate>\r\n <div class=\"timeline-event-opposite rajput\"></div>\r\n </ng-template>\r\n \r\n <div class=\"timeline-event-separator\">\r\n <div class=\"timeline-event-marker\" [ngClass]=\"{'timeline-event-marker-active': !item.icon}\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-circle\"\r\n *ngIf=\"item.icon\"\r\n role=\"img\"\r\n [attr.aria-label]=\"item.iconAriaLabel || item.icon\"\r\n >{{item.icon}}</mat-icon>\r\n </div>\r\n <div class=\"timeline-event-connector\" *ngIf=\"i !== (getData()?.length - 1)\"></div>\r\n </div>\r\n <div class=\"timeline-event-content\" [style.background-color]=\"getHighlightColor()\">\r\n <ng-container *ngIf=\"isCard(); then cardTemplate\"></ng-container>\r\n\r\n <ng-container *ngIf=\"getPosition() === 'opposite' then subtitleTemplate\"></ng-container>\r\n\r\n <ng-container *ngIf=\"(!isCard() && getPosition() !== 'opposite') then dataTemplate\"></ng-container>\r\n \r\n <ng-template #cardTemplate>\r\n <!-- Fot Template -->\r\n <mat-card class=\"m-mat-card\" appearance=\"outlined\">\r\n <mat-card-header>\r\n <mat-card-title-group>\r\n <mat-card-title>{{item.title}}</mat-card-title>\r\n <mat-card-subtitle>{{item.subtitle}}</mat-card-subtitle>\r\n <img\r\n mat-card-lg-image\r\n src=\"{{item.imageUrl}}\"\r\n [alt]=\"item.imageAltText || item.title || 'Timeline event image'\"\r\n >\r\n </mat-card-title-group>\r\n </mat-card-header>\r\n <mat-card-content>\r\n {{item.content}}\r\n </mat-card-content>\r\n </mat-card>\r\n </ng-template>\r\n\r\n <ng-template #dataTemplate>\r\n <ng-template *ngIf=\"true then titleTemplate\"></ng-template>\r\n \r\n <ng-template *ngIf=\"true then subtitleTemplate\"></ng-template>\r\n </ng-template>\r\n\r\n <ng-template #titleTemplate>\r\n <!-- Fot Title -->\r\n <div \r\n class=\"timeline-event-title\"\r\n [ngClass]=\"{'timeline-icon-question-mark-active': !!item.iconTitle}\" \r\n [style.background-color]=\"getTitleBackgroundColor()\"\r\n *ngIf=\"!!item.title\"\r\n >\r\n <span \r\n [ngClass]=\"{'description-ellipsis-active': !!getMaxTitleLength()}\"\r\n [style.color]=\"getTitleColor()\"\r\n [style.font-size]=\"getTitleFontSize()\"\r\n [matTooltipDisabled]=\"!(item?.title && item?.title?.length > getMaxTitleLength())\"\r\n [matTooltip]=\"item.title\"\r\n matTooltipPosition=\"above\">\r\n {{getTitle(item.title, 'title')}}\r\n </span>\r\n <span *ngIf=\"!!item.iconTitle\" class=\"timeline-icon-question-mark\" aria-hidden=\"true\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-circle timeline-icon\"\r\n >{{item.iconTitle}}</mat-icon>\r\n </span>\r\n <span *ngIf=\"isInfo()\" class=\"timeline-icon-question-mark\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-question-mark-icon\"\r\n [matTooltip]=\"item?.titleInfo\"\r\n matTooltipPosition=\"above\" \r\n role=\"button\" \r\n aria-label=\"More information about title\"\r\n >{{item.titleInfoIcon}}</mat-icon> \r\n </span>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #subtitleTemplate>\r\n <!-- Fot Sub Title -->\r\n <div\r\n class=\"timeline-event-sub-title\"\r\n [ngClass]=\"{'timeline-icon-question-mark-active': !!item.iconSubTitle}\"\r\n [style.background-color]=\"getSubTitleBackgroundColor()\"\r\n *ngIf=\"!!item.subtitle\"\r\n >\r\n <span \r\n [ngClass]=\"{'description-ellipsis-active': !!getMaxSubtitleLength()}\"\r\n [style.color]=\"getSubTitleColor()\"\r\n [style.font-size]=\"getSubTitleFontSize()\"\r\n [matTooltipDisabled]=\"!(item.subtitle && item.subtitle.length > getMaxSubtitleLength())\"\r\n [matTooltip]=\"item.subtitle\"\r\n matTooltipPosition=\"above\"\r\n >\r\n {{getTitle(item.subtitle, 'subtitle')}}\r\n </span>\r\n <span *ngIf=\"!!item.iconSubTitle\" class=\"timeline-icon-question-mark\" aria-hidden=\"true\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-circle timeline-icon\"\r\n >{{item.iconSubTitle}}</mat-icon>\r\n </span>\r\n <span *ngIf=\"isInfo()\" class=\"timeline-icon-question-mark\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-question-mark-icon\"\r\n [matTooltip]=\"item?.subTitleInfo\"\r\n matTooltipPosition=\"above\" \r\n role=\"button\"\r\n aria-label=\"More information about subtitle\"\r\n >{{item.subTitleInfoIcon}}</mat-icon>\r\n </span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </li>\r\n </ul>\r\n</div>\r\n", styles: ["*,:before,:after{box-sizing:border-box}.timeline{display:flex;flex-grow:1;flex-direction:column;direction:ltr}.timeline.w-full{max-width:800px;margin:auto}.timeline.timeline-vertical .timeline-event{display:flex;position:relative}.timeline.timeline-vertical .timeline-event:last-child{min-height:0;margin-bottom:0}.timeline.timeline-vertical .timeline-event-connector{width:2px;min-height:30px}.timeline.timeline-vertical .timeline-event-opposite,.timeline.timeline-vertical .timeline-event-content{padding:0 .5rem}.timeline.timeline-vertical.timeline-left .timeline-event-opposite{text-align:right}.timeline.timeline-vertical.timeline-left .timeline-event-content{text-align:left}.timeline.timeline-vertical.timeline-left .timeline-icon-question-mark{padding:0 .375rem}.timeline.timeline-vertical.timeline-left .timeline-icon-question-mark-active{padding:.375rem 0;justify-content:start!important}.timeline.timeline-vertical.timeline-right .timeline-event{flex-direction:row-reverse}.timeline.timeline-vertical.timeline-right .timeline-event-opposite,.timeline.timeline-vertical.timeline-right.timeline-card .timeline-event-content{text-align:left}.timeline.timeline-vertical.timeline-right .timeline-event-content{text-align:right}.timeline.timeline-vertical.timeline-right .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(odd) .timeline-event-opposite{text-align:right}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(odd) .timeline-event-content{text-align:left}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(odd) .timeline-icon-question-mark-active{justify-content:start!important}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(even){flex-direction:row-reverse}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(even) .timeline-event-opposite{text-align:left}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(even) .timeline-event-content{text-align:right}.timeline.timeline-vertical.timeline-alternate .timeline-event .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-vertical.timeline-alternate.timeline-card .timeline-event .timeline-event-content{text-align:left}.timeline.timeline-vertical.timeline-opposite .timeline-event-opposite{display:flex;justify-content:flex-end;align-items:normal}.timeline.timeline-horizontal{flex-direction:row}.timeline.timeline-horizontal .timeline-event{display:flex;position:relative;flex-direction:column;flex:1}.timeline.timeline-horizontal .timeline-event-connector{width:100%;height:2px}.timeline.timeline-horizontal.timeline-top .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-horizontal.timeline-bottom .timeline-event{flex-direction:column-reverse}.timeline.timeline-horizontal.timeline-bottom .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-horizontal.timeline-alternate{min-height:29vh}.timeline.timeline-horizontal.timeline-alternate.timeline-card{white-space:nowrap;min-height:45vh;flex:1}.timeline.timeline-horizontal.timeline-alternate .timeline-event{min-height:calc(100% - 80px)}.timeline.timeline-horizontal.timeline-alternate .timeline-event:nth-child(even){flex-direction:column-reverse}.timeline.timeline-horizontal.timeline-alternate .timeline-event-opposite{flex:1}.timeline.timeline-horizontal.timeline-alternate .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-horizontal .timeline-event-content{margin-bottom:auto;padding-left:1px;margin-right:8px;padding:1rem 0}.timeline.timeline-horizontal .timeline-event-content .timeline-icon-question-mark-active{padding:.375rem 0;justify-content:start}.timeline.timeline-horizontal .timeline-event-opposite{flex:0;padding:1rem 0}.timeline.timeline-horizontal .timeline-event-separator{flex-direction:row}.timeline .timeline-event-separator{flex:0;display:flex;align-items:center;flex-direction:column}.timeline .timeline-event-separator .timeline-event-marker{display:inline-flex;align-items:center;justify-content:center;position:relative;align-self:baseline;border-width:2px;border-style:solid;border-color:#e2e8f0;border-radius:50%;width:25px;height:25px}.timeline .timeline-event-separator .timeline-event-marker:after{content:\" \";position:absolute;width:100%;height:100%;border-radius:50%}.timeline .timeline-event-separator .timeline-event-marker.timeline-event-marker-active:before{content:\" \";border-radius:50%;width:.375rem;height:.375rem;background:#ccc}.timeline .timeline-event-separator .timeline-event-connector{flex-grow:1;background:#e2e8f0}.timeline .timeline-event-opposite{line-height:1;flex:1}.timeline .timeline-event-content{flex:1;margin-bottom:10px;line-height:1}.timeline .timeline-event-content .m-mat-card{max-width:400px;margin-bottom:8px}.timeline .timeline-event-content .timeline-event-title{padding:.375rem 0}.timeline .timeline-event-content .timeline-event-sub-title{padding:.125rem .15rem}.timeline .timeline-event-content .timeline-icon-question-mark-active{padding:.375rem 0;display:flex;align-items:normal;justify-content:end}.timeline .timeline-icon-circle{position:absolute;border-radius:50%;font-size:var(--timeline-icon-glyph-size)!important;display:flex;align-items:center;justify-content:center;z-index:1;box-sizing:border-box}.timeline .timeline-icon{align-items:normal}.timeline .timeline-icon-question-mark-icon{position:absolute;font-size:var(--timeline-icon-glyph-size)!important;align-items:normal;justify-content:center}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i4.MatCardLgImage, selector: "[mat-card-lg-image], [matCardImageLarge]" }, { kind: "directive", type: i4.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "directive", type: i4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i4.MatCardTitleGroup, selector: "mat-card-title-group" }] });
198
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RuclibTimelineComponent, decorators: [{
199
+ type: Component,
200
+ args: [{ selector: 'uxp-ruclib-timeline', template: "<div class={{customTheme}}>\r\n <ul class=\"w-full timeline timeline-{{getPosition()}} timeline-{{getLayout()}}\"\r\n [ngClass]=\"{'timeline-card': !!isCard()}\">\r\n <li class=\"timeline-event\" *ngFor=\"let item of getData(); let i = index\">\r\n <ng-container *ngIf=\"getPosition() === 'opposite' then oppositeTemplate else simpleOppositeTemplate\"></ng-container>\r\n <ng-template #oppositeTemplate>\r\n <div class=\"timeline-event-opposite divya\">\r\n <ng-template *ngIf=\"true then titleTemplate\"></ng-template>\r\n </div>\r\n </ng-template>\r\n <ng-template #simpleOppositeTemplate>\r\n <div class=\"timeline-event-opposite rajput\"></div>\r\n </ng-template>\r\n \r\n <div class=\"timeline-event-separator\">\r\n <div class=\"timeline-event-marker\" [ngClass]=\"{'timeline-event-marker-active': !item.icon}\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-circle\"\r\n *ngIf=\"item.icon\"\r\n role=\"img\"\r\n [attr.aria-label]=\"item.iconAriaLabel || item.icon\"\r\n >{{item.icon}}</mat-icon>\r\n </div>\r\n <div class=\"timeline-event-connector\" *ngIf=\"i !== (getData()?.length - 1)\"></div>\r\n </div>\r\n <div class=\"timeline-event-content\" [style.background-color]=\"getHighlightColor()\">\r\n <ng-container *ngIf=\"isCard(); then cardTemplate\"></ng-container>\r\n\r\n <ng-container *ngIf=\"getPosition() === 'opposite' then subtitleTemplate\"></ng-container>\r\n\r\n <ng-container *ngIf=\"(!isCard() && getPosition() !== 'opposite') then dataTemplate\"></ng-container>\r\n \r\n <ng-template #cardTemplate>\r\n <!-- Fot Template -->\r\n <mat-card class=\"m-mat-card\" appearance=\"outlined\">\r\n <mat-card-header>\r\n <mat-card-title-group>\r\n <mat-card-title>{{item.title}}</mat-card-title>\r\n <mat-card-subtitle>{{item.subtitle}}</mat-card-subtitle>\r\n <img\r\n mat-card-lg-image\r\n src=\"{{item.imageUrl}}\"\r\n [alt]=\"item.imageAltText || item.title || 'Timeline event image'\"\r\n >\r\n </mat-card-title-group>\r\n </mat-card-header>\r\n <mat-card-content>\r\n {{item.content}}\r\n </mat-card-content>\r\n </mat-card>\r\n </ng-template>\r\n\r\n <ng-template #dataTemplate>\r\n <ng-template *ngIf=\"true then titleTemplate\"></ng-template>\r\n \r\n <ng-template *ngIf=\"true then subtitleTemplate\"></ng-template>\r\n </ng-template>\r\n\r\n <ng-template #titleTemplate>\r\n <!-- Fot Title -->\r\n <div \r\n class=\"timeline-event-title\"\r\n [ngClass]=\"{'timeline-icon-question-mark-active': !!item.iconTitle}\" \r\n [style.background-color]=\"getTitleBackgroundColor()\"\r\n *ngIf=\"!!item.title\"\r\n >\r\n <span \r\n [ngClass]=\"{'description-ellipsis-active': !!getMaxTitleLength()}\"\r\n [style.color]=\"getTitleColor()\"\r\n [style.font-size]=\"getTitleFontSize()\"\r\n [matTooltipDisabled]=\"!(item?.title && item?.title?.length > getMaxTitleLength())\"\r\n [matTooltip]=\"item.title\"\r\n matTooltipPosition=\"above\">\r\n {{getTitle(item.title, 'title')}}\r\n </span>\r\n <span *ngIf=\"!!item.iconTitle\" class=\"timeline-icon-question-mark\" aria-hidden=\"true\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-circle timeline-icon\"\r\n >{{item.iconTitle}}</mat-icon>\r\n </span>\r\n <span *ngIf=\"isInfo()\" class=\"timeline-icon-question-mark\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-question-mark-icon\"\r\n [matTooltip]=\"item?.titleInfo\"\r\n matTooltipPosition=\"above\" \r\n role=\"button\" \r\n aria-label=\"More information about title\"\r\n >{{item.titleInfoIcon}}</mat-icon> \r\n </span>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #subtitleTemplate>\r\n <!-- Fot Sub Title -->\r\n <div\r\n class=\"timeline-event-sub-title\"\r\n [ngClass]=\"{'timeline-icon-question-mark-active': !!item.iconSubTitle}\"\r\n [style.background-color]=\"getSubTitleBackgroundColor()\"\r\n *ngIf=\"!!item.subtitle\"\r\n >\r\n <span \r\n [ngClass]=\"{'description-ellipsis-active': !!getMaxSubtitleLength()}\"\r\n [style.color]=\"getSubTitleColor()\"\r\n [style.font-size]=\"getSubTitleFontSize()\"\r\n [matTooltipDisabled]=\"!(item.subtitle && item.subtitle.length > getMaxSubtitleLength())\"\r\n [matTooltip]=\"item.subtitle\"\r\n matTooltipPosition=\"above\"\r\n >\r\n {{getTitle(item.subtitle, 'subtitle')}}\r\n </span>\r\n <span *ngIf=\"!!item.iconSubTitle\" class=\"timeline-icon-question-mark\" aria-hidden=\"true\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-circle timeline-icon\"\r\n >{{item.iconSubTitle}}</mat-icon>\r\n </span>\r\n <span *ngIf=\"isInfo()\" class=\"timeline-icon-question-mark\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-question-mark-icon\"\r\n [matTooltip]=\"item?.subTitleInfo\"\r\n matTooltipPosition=\"above\" \r\n role=\"button\"\r\n aria-label=\"More information about subtitle\"\r\n >{{item.subTitleInfoIcon}}</mat-icon>\r\n </span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </li>\r\n </ul>\r\n</div>\r\n", styles: ["*,:before,:after{box-sizing:border-box}.timeline{display:flex;flex-grow:1;flex-direction:column;direction:ltr}.timeline.w-full{max-width:800px;margin:auto}.timeline.timeline-vertical .timeline-event{display:flex;position:relative}.timeline.timeline-vertical .timeline-event:last-child{min-height:0;margin-bottom:0}.timeline.timeline-vertical .timeline-event-connector{width:2px;min-height:30px}.timeline.timeline-vertical .timeline-event-opposite,.timeline.timeline-vertical .timeline-event-content{padding:0 .5rem}.timeline.timeline-vertical.timeline-left .timeline-event-opposite{text-align:right}.timeline.timeline-vertical.timeline-left .timeline-event-content{text-align:left}.timeline.timeline-vertical.timeline-left .timeline-icon-question-mark{padding:0 .375rem}.timeline.timeline-vertical.timeline-left .timeline-icon-question-mark-active{padding:.375rem 0;justify-content:start!important}.timeline.timeline-vertical.timeline-right .timeline-event{flex-direction:row-reverse}.timeline.timeline-vertical.timeline-right .timeline-event-opposite,.timeline.timeline-vertical.timeline-right.timeline-card .timeline-event-content{text-align:left}.timeline.timeline-vertical.timeline-right .timeline-event-content{text-align:right}.timeline.timeline-vertical.timeline-right .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(odd) .timeline-event-opposite{text-align:right}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(odd) .timeline-event-content{text-align:left}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(odd) .timeline-icon-question-mark-active{justify-content:start!important}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(even){flex-direction:row-reverse}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(even) .timeline-event-opposite{text-align:left}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(even) .timeline-event-content{text-align:right}.timeline.timeline-vertical.timeline-alternate .timeline-event .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-vertical.timeline-alternate.timeline-card .timeline-event .timeline-event-content{text-align:left}.timeline.timeline-vertical.timeline-opposite .timeline-event-opposite{display:flex;justify-content:flex-end;align-items:normal}.timeline.timeline-horizontal{flex-direction:row}.timeline.timeline-horizontal .timeline-event{display:flex;position:relative;flex-direction:column;flex:1}.timeline.timeline-horizontal .timeline-event-connector{width:100%;height:2px}.timeline.timeline-horizontal.timeline-top .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-horizontal.timeline-bottom .timeline-event{flex-direction:column-reverse}.timeline.timeline-horizontal.timeline-bottom .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-horizontal.timeline-alternate{min-height:29vh}.timeline.timeline-horizontal.timeline-alternate.timeline-card{white-space:nowrap;min-height:45vh;flex:1}.timeline.timeline-horizontal.timeline-alternate .timeline-event{min-height:calc(100% - 80px)}.timeline.timeline-horizontal.timeline-alternate .timeline-event:nth-child(even){flex-direction:column-reverse}.timeline.timeline-horizontal.timeline-alternate .timeline-event-opposite{flex:1}.timeline.timeline-horizontal.timeline-alternate .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-horizontal .timeline-event-content{margin-bottom:auto;padding-left:1px;margin-right:8px;padding:1rem 0}.timeline.timeline-horizontal .timeline-event-content .timeline-icon-question-mark-active{padding:.375rem 0;justify-content:start}.timeline.timeline-horizontal .timeline-event-opposite{flex:0;padding:1rem 0}.timeline.timeline-horizontal .timeline-event-separator{flex-direction:row}.timeline .timeline-event-separator{flex:0;display:flex;align-items:center;flex-direction:column}.timeline .timeline-event-separator .timeline-event-marker{display:inline-flex;align-items:center;justify-content:center;position:relative;align-self:baseline;border-width:2px;border-style:solid;border-color:#e2e8f0;border-radius:50%;width:25px;height:25px}.timeline .timeline-event-separator .timeline-event-marker:after{content:\" \";position:absolute;width:100%;height:100%;border-radius:50%}.timeline .timeline-event-separator .timeline-event-marker.timeline-event-marker-active:before{content:\" \";border-radius:50%;width:.375rem;height:.375rem;background:#ccc}.timeline .timeline-event-separator .timeline-event-connector{flex-grow:1;background:#e2e8f0}.timeline .timeline-event-opposite{line-height:1;flex:1}.timeline .timeline-event-content{flex:1;margin-bottom:10px;line-height:1}.timeline .timeline-event-content .m-mat-card{max-width:400px;margin-bottom:8px}.timeline .timeline-event-content .timeline-event-title{padding:.375rem 0}.timeline .timeline-event-content .timeline-event-sub-title{padding:.125rem .15rem}.timeline .timeline-event-content .timeline-icon-question-mark-active{padding:.375rem 0;display:flex;align-items:normal;justify-content:end}.timeline .timeline-icon-circle{position:absolute;border-radius:50%;font-size:var(--timeline-icon-glyph-size)!important;display:flex;align-items:center;justify-content:center;z-index:1;box-sizing:border-box}.timeline .timeline-icon{align-items:normal}.timeline .timeline-icon-question-mark-icon{position:absolute;font-size:var(--timeline-icon-glyph-size)!important;align-items:normal;justify-content:center}\n"] }]
201
+ }], ctorParameters: function () { return []; }, propDecorators: { customTheme: [{
202
+ type: Input
203
+ }], rucInputData: [{
204
+ type: Input
205
+ }] } });
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVjbGliLXRpbWVsaW5lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvcnVjbGliLXRpbWVsaW5lL3J1Y2xpYi10aW1lbGluZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvbGliL3J1Y2xpYi10aW1lbGluZS9ydWNsaWItdGltZWxpbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVFqRCxNQUFNLE9BQU8sdUJBQXVCO0lBS2xDLGdCQUFlLENBQUM7SUFFaEI7Ozs7O09BS0c7SUFDSyxlQUFlLENBQUMsUUFBZ0IsRUFBRSxLQUFhO1FBQ3JELFFBQVEsUUFBUSxFQUFFO1lBQ2hCLEtBQUssV0FBVyxDQUFDLENBQUM7Z0JBQ2QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNoQyxJQUFHLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNqQixPQUFPLE1BQU0sS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUEsTUFBTSxDQUFDO2lCQUNoRDtxQkFBTTtvQkFDTCxPQUFPLE1BQU0sS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUEsT0FBTyxDQUFDO2lCQUNwRDthQUNGO1lBQ0gsS0FBSyxLQUFLO2dCQUNSLE9BQU8sS0FBSyxDQUFDO1lBQ2YsS0FBSyxRQUFRO2dCQUNYLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLEtBQUssT0FBTztnQkFDVixPQUFPLE9BQU8sQ0FBQztZQUNqQixLQUFLLE1BQU0sQ0FBQztZQUNaO2dCQUNFLE9BQU8sTUFBTSxDQUFBO1NBQ2hCO0lBQ0gsQ0FBQztJQUdEOzs7O09BSUc7SUFDSyxhQUFhLENBQUMsU0FBaUIsRUFBRTtRQUN2QyxR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ci9jb3JlJztcclxuaW1wb3J0IHsgUnVjVGltZWxpbmVJbnB1dCwgUnVjVGltZWxpbmVJdGVtRGF0YSB9IGZyb20gJy4uLy4uL21vZGVsL3J1Y2xpYi10aW1lbGluZS5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3V4cC1ydWNsaWItdGltZWxpbmUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ydWNsaWItdGltZWxpbmUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3J1Y2xpYi10aW1lbGluZS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUnVjbGliVGltZWxpbmVDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIGN1c3RvbVRoZW1lITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHJ1Y0lucHV0RGF0YT86IFJ1Y1RpbWVsaW5lSW5wdXQ7XHJcbiAgZGF0YTogUnVjVGltZWxpbmVJdGVtRGF0YVtdIHwgdW5kZWZpbmVkO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRvIGdldCBwb3NpdGlvbiBvZiB0aGUgdGltZWxpbmVcclxuICAgKiBAcGFyYW0gcG9zaXRpb24gXHJcbiAgICogQHBhcmFtIGluZGV4IFxyXG4gICAqIEByZXR1cm5zIGRlZmF1bHQ6IGxlZnRcclxuICAgKi9cclxuICBwcml2YXRlIGdldEl0ZW1Qb3NpdGlvbihwb3NpdGlvbjogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAocG9zaXRpb24pIHtcclxuICAgICAgY2FzZSAnYWx0ZXJuYXRlJzoge1xyXG4gICAgICAgICAgY29uc3QgbGF5b3V0ID0gdGhpcy5nZXRMYXlvdXQoKTtcclxuICAgICAgICAgIGlmKGluZGV4ICUgMiA9PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBsYXlvdXQgPT09ICdob3Jpem9udGFsJyA/ICd0b3AnIDonbGVmdCc7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gbGF5b3V0ID09PSAnaG9yaXpvbnRhbCcgPyAnYm90dG9tJyA6J3JpZ2h0JztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIGNhc2UgJ3RvcCc6XHJcbiAgICAgICAgcmV0dXJuICd0b3AnO1xyXG4gICAgICBjYXNlICdib3R0b20nOlxyXG4gICAgICAgIHJldHVybiAnYm90dG9tJztcclxuICAgICAgY2FzZSAncmlnaHQnOlxyXG4gICAgICAgIHJldHVybiAncmlnaHQnO1xyXG4gICAgICBjYXNlICdsZWZ0JzpcclxuICAgICAgZGVmYXVsdDogXHJcbiAgICAgICAgcmV0dXJuICdsZWZ0J1xyXG4gICAgfVxyXG4gIH1cclxuICAgXHJcblxyXG4gIC8qKlxyXG4gICAqIFRvIGdldCBsYXlvdXQgb2YgdGhlIHRpbWVsaW5lXHJcbiAgICogQHBhcmFtIGxheW91dCBcclxuICAgKiBAcmV0dXJucyBkZWZhdWx0OiB2ZXJ0aWNhbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0SXRlbUxheW91dChsYXlvdXQ6IHN0cmluZyA9ICcnKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAobGF5b3V0KSB7XHJcbiAgICAgIGNhc2UgJ2hvcml6b250YWwnOlxyXG4gICAgICAgIHJldHVybiAnaG9yaXpvbnRhbCc7XHJcbiAgICAgIGNhc2UgJ3ZlcnRpY2FsJzpcclxuICAgICAgZGVmYXVsdDogXHJcbiAgICAgICAgcmV0dXJuICd2ZXJ0aWNhbCc7XHJcbiAgICB9XHJcbiAgfSAgXHJcbiAgIFxyXG4gIFxyXG4gIC8qKlxyXG4gICAqIFRvIGdldCBkYXRhIGZyb20gdGhlIGlucHV0XHJcbiAgICovXHJcbiAgZ2V0RGF0YSgpOiBSdWNUaW1lbGluZUl0ZW1EYXRhW10gfCBhbnkge1xyXG4gICAgaWYgKHRoaXMucnVjSW5wdXREYXRhPy5kYXRhKSB7XHJcbiAgICAgIHRoaXMuZGF0YSA9IHRoaXMucnVjSW5wdXREYXRhLmRhdGE/LnNvcnQoKGE6IFJ1Y1RpbWVsaW5lSXRlbURhdGEsIGI6IFJ1Y1RpbWVsaW5lSXRlbURhdGEpID0+IGE/LmlkIC0gYj8uaWQpIHx8IFtdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLmRhdGEgIT09ICd1bmRlZmluZWQnID8gdGhpcy5kYXRhIDogW107XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUbyBnZXQgcG9zaXRpb24gb2YgdGhlIHRpbWVsaW5lXHJcbiAgICogQHJldHVybnMgZGVmYXVsdDogbGVmdFxyXG4gICAqL1xyXG4gIGdldFBvc2l0aW9uKGluZGV4OiBudW1iZXIgPSAtMSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZihpbmRleCA9PT0gLTEpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucnVjSW5wdXREYXRhPy5wb3NpdGlvbjtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmdldEl0ZW1Qb3NpdGlvbih0aGlzLnJ1Y0lucHV0RGF0YT8ucG9zaXRpb24gfHwgJ2xlZnQnLCBpbmRleCk7IC8vIFByb3ZpZGUgYSBkZWZhdWx0IGlmIHBvc2l0aW9uIGlzIHVuZGVmaW5lZFxyXG4gIH0gIFxyXG4gICBcclxuXHJcbiAgIC8qKlxyXG4gICAqIFRvIGdldCBsYXlvdXQgb2YgdGhlIHRpbWVsaW5lXHJcbiAgICogQHJldHVybnMgZGVmYXVsdDogdmVydGljYWxcclxuICAgKi9cclxuICBnZXRMYXlvdXQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmdldEl0ZW1MYXlvdXQodGhpcy5ydWNJbnB1dERhdGE/LmxheW91dCkgLy8gUHJvdmlkZSBhIGRlZmF1bHQgaWYgbGF5b3V0IGlzIHVuZGVmaW5lZFxyXG4gIH0gIFxyXG4gIFxyXG4gIC8qKlxyXG4gICAqIFRvIGdldCBoaWdobGlnaHQgY29sb3Igb2YgdGhlIHRpbWVsaW5lXHJcbiAgICogQHJldHVybnMgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgICovXHJcbiAgZ2V0SGlnaGxpZ2h0Q29sb3IoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLnJ1Y0lucHV0RGF0YT8uaGlnaGxpZ2h0Q29sb3I7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUbyBnZXQgdGl0bGUgZm9udCBjb2xvciBvZiB0aGUgdGltZWxpbmVcclxuICAgKiBAcmV0dXJucyBkZWZhdWx0OiB1bmRlZmluZWRcclxuICAgKi9cclxuICBnZXRUaXRsZUNvbG9yKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5ydWNJbnB1dERhdGE/LnRpdGxlRm9udENvbG9yO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVG8gZ2V0IHN1YiB0aXRsZSBmb250IGNvbG9yIG9mIHRoZSB0aW1lbGluZVxyXG4gICAqIEByZXR1cm5zIGRlZmF1bHQ6IHVuZGVmaW5lZFxyXG4gICAqL1xyXG4gIGdldFN1YlRpdGxlQ29sb3IoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLnJ1Y0lucHV0RGF0YT8uc3ViVGl0bGVGb250Q29sb3I7XHJcbiAgfSAgXHJcbiAgXHJcbiAgLyoqXHJcbiAgICogVG8gZ2V0IHRpdGxlIGZvbnQgc2l6ZSBvZiB0aGUgdGltZWxpbmVcclxuICAgKiBAcmV0dXJucyBkZWZhdWx0OiB1bmRlZmluZWRcclxuICAgKi9cclxuICBnZXRUaXRsZUZvbnRTaXplKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5ydWNJbnB1dERhdGE/LnRpdGxlRm9udFNpemU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUbyBnZXQgc3VidGl0bGUgZm9udCBzaXplIG9mIHRoZSB0aW1lbGluZVxyXG4gICAqIEByZXR1cm5zIGRlZmF1bHQ6IHVuZGVmaW5lZFxyXG4gICAqL1xyXG4gIGdldFN1YlRpdGxlRm9udFNpemUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLnJ1Y0lucHV0RGF0YT8uc3ViVGl0bGVGb250U2l6ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRvIGdldCB0aXRsZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSB0aW1lbGluZVxyXG4gICAqIEByZXR1cm5zIGRlZmF1bHQ6IHVuZGVmaW5lZFxyXG4gICAqL1xyXG4gIGdldFRpdGxlQmFja2dyb3VuZENvbG9yKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5ydWNJbnB1dERhdGE/LnRpdGxlQmFja2dyb3VuZENvbG9yO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVG8gZ2V0IHN1YnRpdGxlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIHRpbWVsaW5lXHJcbiAgICogQHJldHVybnMgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgICovXHJcbiAgZ2V0U3ViVGl0bGVCYWNrZ3JvdW5kQ29sb3IoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLnJ1Y0lucHV0RGF0YT8uc3ViVGl0bGVCYWNrZ3JvdW5kQ29sb3I7XHJcbiAgfVxyXG4gICBcclxuICAvKipcclxuICAgKiBUbyBnZXQgbWF4IHRpdGxlIGxlbmd0aCBvZiB0aGUgdGltZWxpbmVcclxuICAgKiBAcmV0dXJucyBkZWZhdWx0OiB1bmRlZmluZWRcclxuICAgKi9cclxuICBnZXRNYXhUaXRsZUxlbmd0aCgpOiBudW1iZXIgfCBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMucnVjSW5wdXREYXRhPy5tYXhUaXRsZUxlbmd0aDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRvIGdldCBtYXggc3ViIHRpdGxlIGxlbmd0aCBvZiB0aGUgdGltZWxpbmVcclxuICAgKiBAcmV0dXJucyBkZWZhdWx0OiB1bmRlZmluZWRcclxuICAgKi9cclxuICBnZXRNYXhTdWJ0aXRsZUxlbmd0aCgpOiBudW1iZXIgfCBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMucnVjSW5wdXREYXRhPy5tYXhTdWJUaXRsZUxlbmd0aDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRvIGNoZWNrIGlmIHRoZSBpc0luZm8gdmFyaWFibGUgaXMgZGVmaW5lZCBhbmQgdmFsdWUgaXMgdHJ1ZXxmYWxzZSBpbiB0aW1lbGluZVxyXG4gICAqIEByZXR1cm5zIGRlZmF1bHQ6IHVuZGVmaW5lZFxyXG4gICAqL1xyXG4gIGlzSW5mbygpIHtcclxuICAgIHJldHVybiB0aGlzLnJ1Y0lucHV0RGF0YT8uaXNJbmZvO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVG8gZ2V0IHRpdGxlIGluIHRpbWVsaW5lXHJcbiAgICogQHBhcmFtIHRpdGxlIFxyXG4gICAqIEBwYXJhbSBrZXkgXHJcbiAgICogQHJldHVybnMgZGVmYXVsdDogdGl0bGVcclxuICAgKi9cclxuICBnZXRUaXRsZSh0aXRsZTogc3RyaW5nID0gJycsIGtleTogJ3RpdGxlJyB8ICdzdWJ0aXRsZScgfCAnJyA9ICcnKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaChrZXkpIHtcclxuICAgICAgY2FzZSAndGl0bGUnOiB7XHJcbiAgICAgICAgY29uc3QgY2hlY2tMZW5ndGggPSB0aGlzLmdldE1heFRpdGxlTGVuZ3RoKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNMZW5ndGhEZWZpbmVkKHRpdGxlLCBjaGVja0xlbmd0aCk7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnc3VidGl0bGUnOiB7XHJcbiAgICAgICAgY29uc3QgY2hlY2tMZW5ndGggPSB0aGlzLmdldE1heFN1YnRpdGxlTGVuZ3RoKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNMZW5ndGhEZWZpbmVkKHRpdGxlLCBjaGVja0xlbmd0aCk7XHJcbiAgICAgIH1cclxuICAgICAgZGVmYXVsdDoge1xyXG4gICAgICAgIHJldHVybiB0aXRsZTtcclxuICAgICAgfVxyXG4gICAgfSAgICBcclxuICB9ICBcclxuICBcclxuICAvKipcclxuICAgKiBUbyBjaGVjayBpZiB0aGUgbGVuZ3RoIGlzIGRlZmluZWRcclxuICAgKiBAcGFyYW0gdGl0bGUgXHJcbiAgICogQHBhcmFtIGNoZWNrTGVuZ3RoIFxyXG4gICAqIEByZXR1cm5zIGRlZmF1bHQ6IHRpdGxlXHJcbiAgICovXHJcbiAgaXNMZW5ndGhEZWZpbmVkKHRpdGxlOiBzdHJpbmcgPSAnJywgY2hlY2tMZW5ndGg6IG51bWJlciB8IHVuZGVmaW5lZCk6IHN0cmluZyB7ICAgIFxyXG4gICAgaWYodHlwZW9mIGNoZWNrTGVuZ3RoICE9PSAndW5kZWZpbmVkJyAmJiBjaGVja0xlbmd0aCA+IDAgJiYgdGl0bGUgIT09ICcnKSB7XHJcbiAgICAgIGNvbnN0IHN0ciA9IHRpdGxlLnN1YnN0cmluZygwLCBjaGVja0xlbmd0aCk7XHJcbiAgICAgIHJldHVybiB0aXRsZS5sZW5ndGggPT09IGNoZWNrTGVuZ3RoID8gc3RyIDogc3RyKycuLi4nO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRpdGxlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVG8gY2hlY2sgaWYgdGhlIHRlbXBsYXRlIHZhcmlhYmxlIGlzIGRlZmluZWQgYW5kIHZhbHVlIGlzIHRydWV8ZmFsc2UgaW4gdGltZWxpbmVcclxuICAgKiBAcmV0dXJucyBkZWZhdWx0OiBmYWxzZVxyXG4gICAqL1xyXG4gIGlzQ2FyZCgpIHtcclxuICAgIHJldHVybiB0eXBlb2YgdGhpcy5ydWNJbnB1dERhdGE/LmlzVGVtcGxhdGUgIT09ICd1bmRlZmluZWQnID8gdGhpcy5ydWNJbnB1dERhdGE/LmlzVGVtcGxhdGUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRvIGdldCB0aGUgY29sb3Igb2YgaWNvblxyXG4gICAqIEByZXR1cm5zIGRlZmF1bHQ6IGZhbHNlXHJcbiAgICovXHJcbiAgZ2V0SWNvbkNvbG9yKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5ydWNJbnB1dERhdGE/Lmljb25Db2xvciB8fCAncHJpbWFyeSc7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9e3tjdXN0b21UaGVtZX19PlxyXG4gIDx1bCBjbGFzcz1cInctZnVsbCB0aW1lbGluZSB0aW1lbGluZS17e2dldFBvc2l0aW9uKCl9fSB0aW1lbGluZS17e2dldExheW91dCgpfX1cIlxyXG4gICAgW25nQ2xhc3NdPVwieyd0aW1lbGluZS1jYXJkJzogISFpc0NhcmQoKX1cIj5cclxuICAgIDxsaSBjbGFzcz1cInRpbWVsaW5lLWV2ZW50XCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0RGF0YSgpOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRQb3NpdGlvbigpID09PSAnb3Bwb3NpdGUnIHRoZW4gb3Bwb3NpdGVUZW1wbGF0ZSBlbHNlIHNpbXBsZU9wcG9zaXRlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNvcHBvc2l0ZVRlbXBsYXRlPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lbGluZS1ldmVudC1vcHBvc2l0ZSBkaXZ5YVwiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwidHJ1ZSB0aGVuIHRpdGxlVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI3NpbXBsZU9wcG9zaXRlVGVtcGxhdGU+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWVsaW5lLWV2ZW50LW9wcG9zaXRlIHJhanB1dFwiPjwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICBcclxuICAgICAgPGRpdiBjbGFzcz1cInRpbWVsaW5lLWV2ZW50LXNlcGFyYXRvclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lbGluZS1ldmVudC1tYXJrZXJcIiBbbmdDbGFzc109XCJ7J3RpbWVsaW5lLWV2ZW50LW1hcmtlci1hY3RpdmUnOiAhaXRlbS5pY29ufVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uXHJcbiAgICAgICAgICAgIGNvbG9yPVwie3tnZXRJY29uQ29sb3IoKX19XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJ0aW1lbGluZS1pY29uLWNpcmNsZVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5pY29uXCJcclxuICAgICAgICAgICAgcm9sZT1cImltZ1wiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiaXRlbS5pY29uQXJpYUxhYmVsIHx8IGl0ZW0uaWNvblwiXHJcbiAgICAgICAgICA+e3tpdGVtLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWVsaW5lLWV2ZW50LWNvbm5lY3RvclwiICpuZ0lmPVwiaSAhPT0gKGdldERhdGEoKT8ubGVuZ3RoIC0gMSlcIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lbGluZS1ldmVudC1jb250ZW50XCIgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZ2V0SGlnaGxpZ2h0Q29sb3IoKVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0NhcmQoKTsgdGhlbiBjYXJkVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdldFBvc2l0aW9uKCkgPT09ICdvcHBvc2l0ZScgdGhlbiBzdWJ0aXRsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoIWlzQ2FyZCgpICYmIGdldFBvc2l0aW9uKCkgIT09ICdvcHBvc2l0ZScpIHRoZW4gZGF0YVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNjYXJkVGVtcGxhdGU+XHJcbiAgICAgICAgICA8IS0tIEZvdCBUZW1wbGF0ZSAtLT5cclxuICAgICAgICAgIDxtYXQtY2FyZCBjbGFzcz1cIm0tbWF0LWNhcmRcIiBhcHBlYXJhbmNlPVwib3V0bGluZWRcIj5cclxuICAgICAgICAgICAgPG1hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgICAgICAgICA8bWF0LWNhcmQtdGl0bGUtZ3JvdXA+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWNhcmQtdGl0bGU+e3tpdGVtLnRpdGxlfX08L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1jYXJkLXN1YnRpdGxlPnt7aXRlbS5zdWJ0aXRsZX19PC9tYXQtY2FyZC1zdWJ0aXRsZT5cclxuICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICAgbWF0LWNhcmQtbGctaW1hZ2VcclxuICAgICAgICAgICAgICAgICAgc3JjPVwie3tpdGVtLmltYWdlVXJsfX1cIlxyXG4gICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0uaW1hZ2VBbHRUZXh0IHx8IGl0ZW0udGl0bGUgfHwgJ1RpbWVsaW5lIGV2ZW50IGltYWdlJ1wiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9tYXQtY2FyZC10aXRsZS1ncm91cD5cclxuICAgICAgICAgICAgPC9tYXQtY2FyZC1oZWFkZXI+XHJcbiAgICAgICAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgICAgIHt7aXRlbS5jb250ZW50fX1cclxuICAgICAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgPC9tYXQtY2FyZD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI2RhdGFUZW1wbGF0ZT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInRydWUgdGhlbiB0aXRsZVRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cclxuICBcclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInRydWUgdGhlbiBzdWJ0aXRsZVRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI3RpdGxlVGVtcGxhdGU+XHJcbiAgICAgICAgICA8IS0tIEZvdCBUaXRsZSAtLT5cclxuICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgIGNsYXNzPVwidGltZWxpbmUtZXZlbnQtdGl0bGVcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J3RpbWVsaW5lLWljb24tcXVlc3Rpb24tbWFyay1hY3RpdmUnOiAhIWl0ZW0uaWNvblRpdGxlfVwiICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImdldFRpdGxlQmFja2dyb3VuZENvbG9yKClcIlxyXG4gICAgICAgICAgICAqbmdJZj1cIiEhaXRlbS50aXRsZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuIFxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZGVzY3JpcHRpb24tZWxsaXBzaXMtYWN0aXZlJzogISFnZXRNYXhUaXRsZUxlbmd0aCgpfVwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImdldFRpdGxlQ29sb3IoKVwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZV09XCJnZXRUaXRsZUZvbnRTaXplKClcIlxyXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiIShpdGVtPy50aXRsZSAmJiBpdGVtPy50aXRsZT8ubGVuZ3RoID4gZ2V0TWF4VGl0bGVMZW5ndGgoKSlcIlxyXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIml0ZW0udGl0bGVcIlxyXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCI+XHJcbiAgICAgICAgICAgICAge3tnZXRUaXRsZShpdGVtLnRpdGxlLCAndGl0bGUnKX19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhIWl0ZW0uaWNvblRpdGxlXCIgY2xhc3M9XCJ0aW1lbGluZS1pY29uLXF1ZXN0aW9uLW1hcmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb25cclxuICAgICAgICAgICAgICAgIGNvbG9yPVwie3tnZXRJY29uQ29sb3IoKX19XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGltZWxpbmUtaWNvbi1jaXJjbGUgdGltZWxpbmUtaWNvblwiXHJcbiAgICAgICAgICAgICAgPnt7aXRlbS5pY29uVGl0bGV9fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc0luZm8oKVwiIGNsYXNzPVwidGltZWxpbmUtaWNvbi1xdWVzdGlvbi1tYXJrXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uXHJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInt7Z2V0SWNvbkNvbG9yKCl9fVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRpbWVsaW5lLWljb24tcXVlc3Rpb24tbWFyay1pY29uXCJcclxuICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIml0ZW0/LnRpdGxlSW5mb1wiXHJcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiIFxyXG4gICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiIFxyXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIk1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGl0bGVcIlxyXG4gICAgICAgICAgICAgID57e2l0ZW0udGl0bGVJbmZvSWNvbn19PC9tYXQtaWNvbj4gXHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc3VidGl0bGVUZW1wbGF0ZT5cclxuICAgICAgICAgIDwhLS0gRm90IFN1YiBUaXRsZSAtLT5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJ0aW1lbGluZS1ldmVudC1zdWItdGl0bGVcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J3RpbWVsaW5lLWljb24tcXVlc3Rpb24tbWFyay1hY3RpdmUnOiAhIWl0ZW0uaWNvblN1YlRpdGxlfVwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImdldFN1YlRpdGxlQmFja2dyb3VuZENvbG9yKClcIlxyXG4gICAgICAgICAgICAqbmdJZj1cIiEhaXRlbS5zdWJ0aXRsZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuIFxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZGVzY3JpcHRpb24tZWxsaXBzaXMtYWN0aXZlJzogISFnZXRNYXhTdWJ0aXRsZUxlbmd0aCgpfVwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImdldFN1YlRpdGxlQ29sb3IoKVwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZV09XCJnZXRTdWJUaXRsZUZvbnRTaXplKClcIlxyXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiIShpdGVtLnN1YnRpdGxlICYmIGl0ZW0uc3VidGl0bGUubGVuZ3RoID4gZ2V0TWF4U3VidGl0bGVMZW5ndGgoKSlcIlxyXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIml0ZW0uc3VidGl0bGVcIlxyXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7Z2V0VGl0bGUoaXRlbS5zdWJ0aXRsZSwgJ3N1YnRpdGxlJyl9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiISFpdGVtLmljb25TdWJUaXRsZVwiIGNsYXNzPVwidGltZWxpbmUtaWNvbi1xdWVzdGlvbi1tYXJrXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uXHJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInt7Z2V0SWNvbkNvbG9yKCl9fVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRpbWVsaW5lLWljb24tY2lyY2xlIHRpbWVsaW5lLWljb25cIlxyXG4gICAgICAgICAgICAgID57e2l0ZW0uaWNvblN1YlRpdGxlfX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXNJbmZvKClcIiBjbGFzcz1cInRpbWVsaW5lLWljb24tcXVlc3Rpb24tbWFya1wiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvblxyXG4gICAgICAgICAgICAgICAgY29sb3I9XCJ7e2dldEljb25Db2xvcigpfX1cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0aW1lbGluZS1pY29uLXF1ZXN0aW9uLW1hcmstaWNvblwiXHJcbiAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJpdGVtPy5zdWJUaXRsZUluZm9cIlxyXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIiBcclxuICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIk1vcmUgaW5mb3JtYXRpb24gYWJvdXQgc3VidGl0bGVcIlxyXG4gICAgICAgICAgICAgID57e2l0ZW0uc3ViVGl0bGVJbmZvSWNvbn19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2xpPlxyXG4gIDwvdWw+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,21 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { RuclibTimelineComponent } from './ruclib-timeline/ruclib-timeline.component';
4
+ import { MatIconModule } from '@angular/material/icon';
5
+ import { MatTooltipModule } from '@angular/material/tooltip';
6
+ import { MatCardModule } from '@angular/material/card';
7
+ import * as i0 from "@angular/core";
8
+ export class RuclibTimelineModule {
9
+ }
10
+ RuclibTimelineModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RuclibTimelineModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
+ RuclibTimelineModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: RuclibTimelineModule, declarations: [RuclibTimelineComponent], imports: [CommonModule, MatIconModule, MatTooltipModule, MatCardModule], exports: [RuclibTimelineComponent] });
12
+ RuclibTimelineModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RuclibTimelineModule, imports: [CommonModule, MatIconModule, MatTooltipModule, MatCardModule] });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RuclibTimelineModule, decorators: [{
14
+ type: NgModule,
15
+ args: [{
16
+ imports: [CommonModule, MatIconModule, MatTooltipModule, MatCardModule],
17
+ declarations: [RuclibTimelineComponent],
18
+ exports: [RuclibTimelineComponent],
19
+ }]
20
+ }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVjbGliLXRpbWVsaW5lLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvcnVjbGliLXRpbWVsaW5lLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDOztBQU9yRCxNQUFNLE9BQU8sb0JBQW9COztrSEFBcEIsb0JBQW9CO21IQUFwQixvQkFBb0IsaUJBSGhCLHVCQUF1QixhQUQ1QixZQUFZLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLGFBQWEsYUFFNUQsdUJBQXVCO21IQUV0QixvQkFBb0IsWUFKckIsWUFBWSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhOzRGQUkzRCxvQkFBb0I7a0JBTGhDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLENBQUM7b0JBQ3ZFLFlBQVksRUFBRSxDQUFDLHVCQUF1QixDQUFDO29CQUN2QyxPQUFPLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztpQkFDbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBSdWNsaWJUaW1lbGluZUNvbXBvbmVudCB9IGZyb20gJy4vcnVjbGliLXRpbWVsaW5lL3J1Y2xpYi10aW1lbGluZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHtNYXRDYXJkTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0VG9vbHRpcE1vZHVsZSwgTWF0Q2FyZE1vZHVsZV0sXHJcbiAgZGVjbGFyYXRpb25zOiBbUnVjbGliVGltZWxpbmVDb21wb25lbnRdLFxyXG4gIGV4cG9ydHM6IFtSdWNsaWJUaW1lbGluZUNvbXBvbmVudF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSdWNsaWJUaW1lbGluZU1vZHVsZSB7fVxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVjbGliLXRpbWVsaW5lLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZGVsL3J1Y2xpYi10aW1lbGluZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqSW50ZXJmYWNlIGZvciBkZWZpbmluZyB0aGUgVGltZWxpbmUgRGF0YVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBSdWNUaW1lbGluZUl0ZW1EYXRhIHtcclxuICAgIGlkOiBudW1iZXI7XHJcbiAgICB0aXRsZTogc3RyaW5nO1xyXG4gICAgc3VidGl0bGU/OiBzdHJpbmc7XHJcbiAgICBjb250ZW50Pzogc3RyaW5nOyBcclxuICAgIGljb24/OiBzdHJpbmc7IFxyXG4gICAgaWNvbkFyaWFMYWJlbD86IHN0cmluZzsgXHJcbiAgICBpbWFnZVVybD86IHN0cmluZzsgXHJcbiAgICBpbWFnZUFsdFRleHQ/OiBzdHJpbmc7IFxyXG4gICAgdGl0bGVJbmZvPzogc3RyaW5nOyBcclxuICAgIHN1YlRpdGxlSW5mbz86IHN0cmluZzsgXHJcbiAgICBpY29uVGl0bGU/OiBzdHJpbmc7IFxyXG4gICAgaWNvblN1YlRpdGxlPzogc3RyaW5nO1xyXG4gICAgdGl0bGVJbmZvSWNvbj86IHN0cmluZztcclxuICAgIHN1YlRpdGxlSW5mb0ljb24/OiBzdHJpbmc7IFxyXG59XHJcblxyXG4vKipcclxuICpJbnRlcmZhY2UgZm9yIGRlZmluaW5nIHRoZSBUaW1lbGluZSBQcm9wZXJ0eVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBSdWNUaW1lbGluZUlucHV0IHtcclxuICAgIGxheW91dD86ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCcgfCB1bmRlZmluZWQ7XHJcbiAgICBwb3NpdGlvbj86ICdsZWZ0JyB8ICdyaWdodCcgfCAndG9wJyB8ICdib3R0b20nIHwgJ2FsdGVybmF0ZScgfCAnb3Bwb3NpdGUnO1xyXG4gICAgdGl0bGVGb250Q29sb3I/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgICBzdWJUaXRsZUZvbnRDb2xvcj86IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAgIHRpdGxlRm9udFNpemU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgICBzdWJUaXRsZUZvbnRTaXplPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gICAgdGl0bGVCYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgICBzdWJUaXRsZUJhY2tncm91bmRDb2xvcj86IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAgIGhpZ2hsaWdodENvbG9yPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gICAgaWNvbkNvbG9yPzogJ3ByaW1hcnknIHwgJ2FjY2VudCcgfCAnd2Fybic7XHJcbiAgICBtYXhUaXRsZUxlbmd0aD86IG51bWJlcjtcclxuICAgIG1heFN1YlRpdGxlTGVuZ3RoPzogbnVtYmVyO1xyXG4gICAgaXNJbmZvPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuICAgIGlzVGVtcGxhdGU/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG4gICAgZGF0YT86IFJ1Y1RpbWVsaW5lSXRlbURhdGFbXTtcclxufVxyXG4gICJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVjLWxpYi10aW1lbGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWMtbGliLXRpbWVsaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19