@gravitee/ui-components 3.24.5-renovate-github-markdown-css-5-x-6cd8067 → 3.25.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/assets/css/github-markdown-css/github-markdown.css +545 -500
  2. package/assets/i18n/en.json +3 -0
  3. package/assets/i18n/fr.json +3 -0
  4. package/assets/icons/design.svg +1 -1
  5. package/package.json +2 -9
  6. package/src/atoms/gv-autocomplete.js +132 -156
  7. package/src/atoms/gv-button.js +73 -248
  8. package/src/atoms/gv-checkbox.js +45 -103
  9. package/src/atoms/gv-date-picker-calendar.js +312 -393
  10. package/src/atoms/gv-date-picker-cell.js +57 -81
  11. package/src/atoms/gv-date-picker.js +180 -319
  12. package/src/atoms/gv-file-upload.js +85 -195
  13. package/src/atoms/gv-icon.js +13 -34
  14. package/src/atoms/gv-image.js +31 -66
  15. package/src/atoms/gv-input-message.js +12 -37
  16. package/src/atoms/gv-input.js +117 -148
  17. package/src/atoms/gv-link.js +47 -125
  18. package/src/atoms/gv-message.js +18 -69
  19. package/src/atoms/gv-metric.js +19 -68
  20. package/src/atoms/gv-relative-time.js +67 -38
  21. package/src/atoms/gv-select-native.js +96 -215
  22. package/src/atoms/gv-select.js +110 -230
  23. package/src/atoms/gv-spinner.js +5 -26
  24. package/src/atoms/gv-state.js +25 -66
  25. package/src/atoms/gv-switch.js +40 -160
  26. package/src/atoms/gv-tag.js +26 -78
  27. package/src/atoms/gv-text.js +22 -83
  28. package/src/charts/gv-chart-bar.js +22 -18
  29. package/src/charts/gv-chart-gauge.js +28 -31
  30. package/src/charts/gv-chart-histogram.js +18 -10
  31. package/src/charts/gv-chart-line.js +70 -59
  32. package/src/charts/gv-chart-map.js +44 -42
  33. package/src/charts/gv-chart-pie.js +18 -14
  34. package/src/index.js +1 -0
  35. package/src/lib/cron-expression.js +40 -35
  36. package/src/lib/date.js +10 -1
  37. package/src/lib/events.js +3 -1
  38. package/src/lib/http-client-schema-form.js +13 -12
  39. package/src/lib/http.js +57 -56
  40. package/src/lib/i18n.js +30 -22
  41. package/src/lib/item.js +13 -12
  42. package/src/lib/properties.js +77 -42
  43. package/src/lib/schema-form.js +4 -5
  44. package/src/lib/studio.js +13 -60
  45. package/src/lib/style.js +8 -8
  46. package/src/lib/text-format.js +14 -7
  47. package/src/lib/theme.js +8 -5
  48. package/src/lib/utils.js +17 -18
  49. package/src/mixins/chart-element.js +31 -54
  50. package/src/mixins/input-element.js +60 -47
  51. package/src/mixins/item-resource.js +34 -32
  52. package/src/mixins/keyboard-element.js +6 -5
  53. package/src/mixins/update-after-browser.js +4 -1
  54. package/src/mixins/with-resize-observer.js +23 -13
  55. package/src/mixins/with-skeleton-attribute.js +54 -48
  56. package/src/molecules/gv-card-full.js +26 -147
  57. package/src/molecules/gv-card-list.js +13 -42
  58. package/src/molecules/gv-card.js +17 -91
  59. package/src/molecules/gv-category-list.js +6 -17
  60. package/src/molecules/gv-category.js +23 -103
  61. package/src/molecules/gv-code.js +81 -143
  62. package/src/molecules/gv-confirm.js +41 -71
  63. package/src/molecules/gv-cron-editor.js +143 -389
  64. package/src/molecules/gv-dropdown-menu.js +14 -46
  65. package/src/molecules/gv-expandable.js +31 -59
  66. package/src/molecules/gv-expression-language.js +176 -138
  67. package/src/molecules/gv-identity-picture.js +42 -65
  68. package/src/molecules/gv-list.js +42 -134
  69. package/src/molecules/gv-metrics.js +37 -49
  70. package/src/molecules/gv-modal.js +28 -95
  71. package/src/molecules/gv-nav.js +49 -75
  72. package/src/molecules/gv-option.js +57 -130
  73. package/src/molecules/gv-plans.js +86 -209
  74. package/src/molecules/gv-popover.js +57 -177
  75. package/src/molecules/gv-promote.js +28 -146
  76. package/src/molecules/gv-rating-list.js +69 -195
  77. package/src/molecules/gv-rating.js +52 -105
  78. package/src/molecules/gv-row-expandable.js +5 -11
  79. package/src/molecules/gv-row.js +21 -147
  80. package/src/molecules/gv-stats.js +23 -48
  81. package/src/molecules/gv-stepper.js +43 -187
  82. package/src/molecules/gv-table.js +199 -309
  83. package/src/molecules/gv-tree.js +33 -156
  84. package/src/organisms/gv-documentation.js +45 -128
  85. package/src/organisms/gv-header.js +37 -195
  86. package/src/organisms/gv-http-client.js +32 -168
  87. package/src/organisms/gv-menu.js +37 -158
  88. package/src/organisms/gv-newsletter-subscription.js +48 -189
  89. package/src/organisms/gv-pagination.js +49 -77
  90. package/src/organisms/gv-properties.js +271 -492
  91. package/src/organisms/gv-resizable-views.js +41 -259
  92. package/src/organisms/gv-resources.js +168 -275
  93. package/src/organisms/gv-schema-form-array.js +49 -159
  94. package/src/organisms/gv-schema-form-control-object.js +59 -73
  95. package/src/organisms/gv-schema-form-control.js +107 -134
  96. package/src/organisms/gv-schema-form.js +219 -280
  97. package/src/organisms/gv-tabs.js +66 -98
  98. package/src/organisms/gv-user-menu.js +36 -201
  99. package/src/organisms/gv-vertical-menu.js +20 -61
  100. package/src/policy-studio/gv-flow-step.js +106 -245
  101. package/src/policy-studio/gv-flow.js +125 -304
  102. package/src/policy-studio/gv-policy-studio-menu.js +157 -471
  103. package/src/policy-studio/gv-policy-studio.js +714 -760
  104. package/src/styles/empty.js +3 -20
  105. package/src/styles/input.js +3 -247
  106. package/src/styles/link.js +3 -16
  107. package/src/styles/shapes.js +1 -0
  108. package/src/styles/skeleton.js +3 -37
  109. package/src/styles/zoom.js +3 -24
  110. package/src/theme/gv-theme.js +21 -60
  111. package/CHANGELOG.md +0 -1260
  112. package/LICENSE.txt +0 -202
  113. package/README.md +0 -195
  114. package/src/.eslintrc.js +0 -19
  115. package/src/theme/definition.json +0 -1762
@@ -13,16 +13,13 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
-
17
16
  import { css, LitElement, html } from 'lit';
18
17
  import { repeat } from 'lit/directives/repeat';
19
18
  import '../atoms/gv-icon';
20
19
  import { skeleton } from '../styles/skeleton';
21
20
  import { classMap } from 'lit/directives/class-map';
22
21
  import { i18n } from '../lib/i18n';
23
-
24
22
  const MAX_RATE = 5;
25
-
26
23
  /**
27
24
  * Rating component
28
25
  *
@@ -38,86 +35,37 @@ const MAX_RATE = 5;
38
35
  * @cssprop {Color} [--gv-rating--c=var(--gv-theme-color, #5a7684)] - Color
39
36
  * @cssprop {Length} [--gv-rating--s=13px] - Size
40
37
  */
38
+
41
39
  export class GvRating extends LitElement {
42
40
  static get properties() {
43
41
  return {
44
- value: { type: Number, reflect: true },
45
- count: { type: String },
46
- skeleton: { type: Boolean },
47
- readonly: { type: Boolean },
48
- _candidate: { type: Number, attribute: false },
49
- withDescription: { type: Boolean, attribute: 'with-description' },
42
+ value: {
43
+ type: Number,
44
+ reflect: true
45
+ },
46
+ count: {
47
+ type: String
48
+ },
49
+ skeleton: {
50
+ type: Boolean
51
+ },
52
+ readonly: {
53
+ type: Boolean
54
+ },
55
+ _candidate: {
56
+ type: Number,
57
+ attribute: false
58
+ },
59
+ withDescription: {
60
+ type: Boolean,
61
+ attribute: 'with-description'
62
+ }
50
63
  };
51
64
  }
52
65
 
53
66
  static get styles() {
54
- return [
55
- // language=CSS
56
- css`
57
- :host {
58
- --gv-icon--c: var(--gv-rating--c, var(--gv-theme-color, #5a7684));
59
- --size: var(--gv-rating--s, 13px);
60
- --gv-icon--s: var(--size);
61
-
62
- font-size: var(--gv-theme-font-size-m, 14px);
63
- cursor: default;
64
- }
65
-
66
- .content,
67
- .rate {
68
- justify-content: space-evenly;
69
- display: inline-flex;
70
- align-items: flex-end;
71
- vertical-align: middle;
72
- height: 100%;
73
- }
74
-
75
- .info-title {
76
- font-size: var(--gv-theme-font-size-m, 14px);
77
- line-height: 16px;
78
- align-self: center;
79
- min-width: 35px;
80
- text-align: center;
81
- }
82
-
83
- .info-subtitle {
84
- font-size: var(--gv-theme-font-size-xs, 10px);
85
- line-height: 10px;
86
- opacity: 0.5;
87
- text-align: center;
88
- }
89
-
90
- .icon {
91
- display: inline-flex;
92
- align-self: center;
93
- margin-right: calc(var(--size) / 4);
94
- align-items: center;
95
- }
96
-
97
- .edit {
98
- cursor: pointer;
99
- }
100
-
101
- .edit gv-icon:hover {
102
- transform: translateY(-0.5px);
103
- }
104
-
105
- gv-input {
106
- flex: 1;
107
- }
108
-
109
- .icon {
110
- min-height: 30px;
111
- }
112
-
113
- .description {
114
- min-width: 100px;
115
- line-height: calc(var(--size) + 4px);
116
- margin: auto 4px;
117
- }
118
- `,
119
- skeleton,
120
- ];
67
+ return [// language=CSS
68
+ css`:host{--gv-icon--c:var(--gv-rating--c, var(--gv-theme-color, #5a7684));--size:var(--gv-rating--s, 13px);--gv-icon--s:var(--size);font-size:var(--gv-theme-font-size-m,14px);cursor:default}.content,.rate{justify-content:space-evenly;display:inline-flex;align-items:flex-end;vertical-align:middle;height:100%}.info-title{font-size:var(--gv-theme-font-size-m,14px);line-height:16px;align-self:center;min-width:35px;text-align:center}.info-subtitle{font-size:var(--gv-theme-font-size-xs,10px);line-height:10px;opacity:.5;text-align:center}.icon{display:inline-flex;align-self:center;margin-right:calc(var(--size)/ 4);align-items:center}.edit{cursor:pointer}.edit gv-icon:hover{transform:translateY(-.5px)}gv-input{flex:1}.icon{min-height:30px}.description{min-width:100px;line-height:calc(var(--size) + 4px);margin:auto 4px}`, skeleton];
121
69
  }
122
70
 
123
71
  constructor() {
@@ -135,20 +83,25 @@ export class GvRating extends LitElement {
135
83
 
136
84
  _onMouseEnter(index) {
137
85
  this._candidate = index + 1;
86
+
138
87
  if (this.withDescription) {
139
88
  switch (this._candidate) {
140
89
  case 1:
141
90
  this.description = i18n('gv-rating.description-1');
142
91
  break;
92
+
143
93
  case 2:
144
94
  this.description = i18n('gv-rating.description-2');
145
95
  break;
96
+
146
97
  case 3:
147
98
  this.description = i18n('gv-rating.description-3');
148
99
  break;
100
+
149
101
  case 4:
150
102
  this.description = i18n('gv-rating.description-4');
151
103
  break;
104
+
152
105
  case 5:
153
106
  this.description = i18n('gv-rating.description-5');
154
107
  break;
@@ -158,6 +111,7 @@ export class GvRating extends LitElement {
158
111
 
159
112
  _onMouseOut() {
160
113
  this._candidate = -1;
114
+
161
115
  if (this.withDescription && !this.isSelected) {
162
116
  this.description = null;
163
117
  }
@@ -167,14 +121,19 @@ export class GvRating extends LitElement {
167
121
  this._candidate = -1;
168
122
  this.isSelected = true;
169
123
  this.value = index + 1;
170
- this.dispatchEvent(new Event('input'), { bubbles: true, cancelable: true });
124
+ this.dispatchEvent(new Event('input'), {
125
+ bubbles: true,
126
+ cancelable: true
127
+ });
171
128
  }
172
129
 
173
130
  _getAverage() {
174
131
  const _value = parseFloat(this.value);
132
+
175
133
  if (_value >= 0 && _value <= MAX_RATE) {
176
134
  return _value;
177
135
  }
136
+
178
137
  return 0;
179
138
  }
180
139
 
@@ -182,16 +141,13 @@ export class GvRating extends LitElement {
182
141
  if (this.readonly) {
183
142
  return html`<gv-icon shape="general:${star}"></gv-icon>`;
184
143
  } else {
185
- return html`<gv-icon
186
- @mouseenter=${this._onMouseEnter.bind(this, index)}
187
- @click=${this._onClick.bind(this, index)}
188
- shape="general:${star}"
189
- ></gv-icon>`;
144
+ return html`<gv-icon @mouseenter="${this._onMouseEnter.bind(this, index)}" @click="${this._onClick.bind(this, index)}" shape="general:${star}"></gv-icon>`;
190
145
  }
191
146
  }
192
147
 
193
148
  render() {
194
149
  const average = this._getAverage();
150
+
195
151
  let trunc = average * 1;
196
152
 
197
153
  if (!this.readonly) {
@@ -199,6 +155,7 @@ export class GvRating extends LitElement {
199
155
  }
200
156
 
201
157
  const stars = [];
158
+
202
159
  for (let star = 1; star <= MAX_RATE; star += 1) {
203
160
  if (trunc >= star) {
204
161
  stars.push('star');
@@ -209,28 +166,15 @@ export class GvRating extends LitElement {
209
166
  }
210
167
  }
211
168
 
212
- return html`
213
- <div class="${classMap({ skeleton: this.skeleton, edit: !this.readonly, content: true })}">
214
- <div class="${classMap({ content: true })}">
215
- <div class="${classMap({ rate: true })}">
216
- <div class="icon" title="${this._getTitle()}">
217
- ${this.withDescription ? html`<div class="description">${this.description}</div>` : ''}
218
- ${repeat(
219
- stars,
220
- (star) => star,
221
- (star, index) => html` ${this._renderStar(star, index)} `,
222
- )}
223
- </div>
224
- ${this.count
225
- ? html`<div>
226
- <div class="info-title">${this.count || ''}</div>
227
- <div class="info-subtitle">${this._getCountTitle()}</div>
228
- </div>`
229
- : ''}
230
- </div>
231
- </div>
232
- </div>
233
- `;
169
+ return html` <div class="${classMap({
170
+ skeleton: this.skeleton,
171
+ edit: !this.readonly,
172
+ content: true
173
+ })}"> <div class="${classMap({
174
+ content: true
175
+ })}"> <div class="${classMap({
176
+ rate: true
177
+ })}"> <div class="icon" title="${this._getTitle()}"> ${this.withDescription ? html`<div class="description">${this.description}</div>` : ''} ${repeat(stars, star => star, (star, index) => html` ${this._renderStar(star, index)} `)} </div> ${this.count ? html`<div> <div class="info-title">${this.count || ''}</div> <div class="info-subtitle">${this._getCountTitle()}</div> </div>` : ''} </div> </div> </div> `;
234
178
  }
235
179
 
236
180
  firstUpdated() {
@@ -244,10 +188,13 @@ export class GvRating extends LitElement {
244
188
  if (this.count > 1) {
245
189
  return i18n('gv-rating.notes');
246
190
  }
191
+
247
192
  return i18n('gv-rating.note');
248
193
  }
194
+
249
195
  return '';
250
196
  }
251
- }
252
197
 
198
+ }
253
199
  window.customElements.define('gv-rating', GvRating);
200
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL21vbGVjdWxlcy9ndi1yYXRpbmcuanMiXSwibmFtZXMiOlsiY3NzIiwiTGl0RWxlbWVudCIsImh0bWwiLCJyZXBlYXQiLCJza2VsZXRvbiIsImNsYXNzTWFwIiwiaTE4biIsIk1BWF9SQVRFIiwiR3ZSYXRpbmciLCJwcm9wZXJ0aWVzIiwidmFsdWUiLCJ0eXBlIiwiTnVtYmVyIiwicmVmbGVjdCIsImNvdW50IiwiU3RyaW5nIiwiQm9vbGVhbiIsInJlYWRvbmx5IiwiX2NhbmRpZGF0ZSIsImF0dHJpYnV0ZSIsIndpdGhEZXNjcmlwdGlvbiIsInN0eWxlcyIsImNvbnN0cnVjdG9yIiwiaXNTZWxlY3RlZCIsIl9nZXRUaXRsZSIsIl9nZXRBdmVyYWdlIiwiX29uTW91c2VFbnRlciIsImluZGV4IiwiZGVzY3JpcHRpb24iLCJfb25Nb3VzZU91dCIsIl9vbkNsaWNrIiwiZGlzcGF0Y2hFdmVudCIsIkV2ZW50IiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJfdmFsdWUiLCJwYXJzZUZsb2F0IiwiX3JlbmRlclN0YXIiLCJzdGFyIiwiYmluZCIsInJlbmRlciIsImF2ZXJhZ2UiLCJ0cnVuYyIsInN0YXJzIiwicHVzaCIsImVkaXQiLCJjb250ZW50IiwicmF0ZSIsIl9nZXRDb3VudFRpdGxlIiwiZmlyc3RVcGRhdGVkIiwic2hhZG93Um9vdCIsInF1ZXJ5U2VsZWN0b3IiLCJhZGRFdmVudExpc3RlbmVyIiwid2luZG93IiwiY3VzdG9tRWxlbWVudHMiLCJkZWZpbmUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLFNBQVNBLEdBQVQsRUFBY0MsVUFBZCxFQUEwQkMsSUFBMUIsUUFBc0MsS0FBdEM7QUFDQSxTQUFTQyxNQUFULFFBQXVCLHVCQUF2QjtBQUNBLE9BQU8sa0JBQVA7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QVYsRUFBb0I7QUFDbEIsV0FBS2lDLFVBQUwsQ0FBZ0JDLGFBQWhCLENBQThCLE9BQTlCLEVBQXVDQyxnQkFBdkMsQ0FBd0QsVUFBeEQsRUFBb0UsS0FBS3ZCLFdBQUwsQ0FBaUJVLElBQWpCLENBQXNCLElBQXRCLENBQXBFO0FBQ0Q7QUFDRjs7QUFFRFMsRUFBQUEsY0FBYyxHQUFHO0FBQ2YsUUFBSSxLQUFLbEMsS0FBVCxFQUFnQjtBQUNkLFVBQUksS0FBS0EsS0FBTCxHQUFhLENBQWpCLEVBQW9CO0FBQ2xCLGVBQU9SLElBQUksQ0FBQyxpQkFBRCxDQUFYO0FBQ0Q7O0FBQ0QsYUFBT0EsSUFBSSxDQUFDLGdCQUFELENBQVg7QUFDRDs7QUFDRCxXQUFPLEVBQVA7QUFDRDs7QUFqTnNDO0FBb056QytDLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQkMsTUFBdEIsQ0FBNkIsV0FBN0IsRUFBMEMvQyxRQUExQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IGNzcywgTGl0RWxlbWVudCwgaHRtbCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyByZXBlYXQgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZXBlYXQnO1xuaW1wb3J0ICcuLi9hdG9tcy9ndi1pY29uJztcbmltcG9ydCB7IHNrZWxldG9uIH0gZnJvbSAnLi4vc3R5bGVzL3NrZWxldG9uJztcbmltcG9ydCB7IGNsYXNzTWFwIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvY2xhc3MtbWFwJztcbmltcG9ydCB7IGkxOG4gfSBmcm9tICcuLi9saWIvaTE4bic7XG5cbmNvbnN0IE1BWF9SQVRFID0gNTtcblxuLyoqXG4gKiBSYXRpbmcgY29tcG9uZW50XG4gKlxuICogIyMgRGV0YWlsc1xuICogKiBoYXMgQHRoZW1lIGZhY2V0XG4gKlxuICogQGF0dHIge0xlbmd0aH0gdmFsdWUgLSBhdmVyYWdlIG9mIHJhdGluZ3MgYmV0d2VlbiAxIGFuZCA1XG4gKiBAYXR0ciB7U3RyaW5nfSBjb3VudCAtIHRvdGFsIGNvdW50IGZvciB0aGUgYXZlcmFnZVxuICogQGF0dHIge0Jvb2xlYW59IHNrZWxldG9uIC0gc2tlbGV0b24gbW9kZVxuICogQGF0dHIge0Jvb2xlYW59IHJlYWRvbmx5IC0gcmVhZG9ubHkgbW9kZVxuICogQGF0dHIge0Jvb2xlYW59IHdpdGgtZGVzY3JpcHRpb24gLSBpZiB0cnVlLCBzaG93IHJhdGUgZGVzY3JpcHRpb24gb24gaG92ZXJcbiAqXG4gKiBAY3NzcHJvcCB7Q29sb3J9IFstLWd2LXJhdGluZy0tYz12YXIoLS1ndi10aGVtZS1jb2xvciwgIzVhNzY4NCldIC0gQ29sb3JcbiAqIEBjc3Nwcm9wIHtMZW5ndGh9IFstLWd2LXJhdGluZy0tcz0xM3B4XSAtIFNpemVcbiAqL1xuZXhwb3J0IGNsYXNzIEd2UmF0aW5nIGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHN0YXRpYyBnZXQgcHJvcGVydGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IHsgdHlwZTogTnVtYmVyLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBjb3VudDogeyB0eXBlOiBTdHJpbmcgfSxcbiAgICAgIHNrZWxldG9uOiB7IHR5cGU6IEJvb2xlYW4gfSxcbiAgICAgIHJlYWRvbmx5OiB7IHR5cGU6IEJvb2xlYW4gfSxcbiAgICAgIF9jYW5kaWRhdGU6IHsgdHlwZTogTnVtYmVyLCBhdHRyaWJ1dGU6IGZhbHNlIH0sXG4gICAgICB3aXRoRGVzY3JpcHRpb246IHsgdHlwZTogQm9vbGVhbiwgYXR0cmlidXRlOiAnd2l0aC1kZXNjcmlwdGlvbicgfSxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGdldCBzdHlsZXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC8vIGxhbmd1YWdlPUNTU1xuICAgICAgY3NzYFxuICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgLS1ndi1pY29uLS1jOiB2YXIoLS1ndi1yYXRpbmctLWMsIHZhcigtLWd2LXRoZW1lLWNvbG9yLCAjNWE3Njg0KSk7XG4gICAgICAgICAgLS1zaXplOiB2YXIoLS1ndi1yYXRpbmctLXMsIDEzcHgpO1xuICAgICAgICAgIC0tZ3YtaWNvbi0tczogdmFyKC0tc2l6ZSk7XG5cbiAgICAgICAgICBmb250LXNpemU6IHZhcigtLWd2LXRoZW1lLWZvbnQtc2l6ZS1tLCAxNHB4KTtcbiAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgIH1cblxuICAgICAgICAuY29udGVudCxcbiAgICAgICAgLnJhdGUge1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtZXZlbmx5O1xuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5pbmZvLXRpdGxlIHtcbiAgICAgICAgICBmb250LXNpemU6IHZhcigtLWd2LXRoZW1lLWZvbnQtc2l6ZS1tLCAxNHB4KTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgICAgICAgbWluLXdpZHRoOiAzNXB4O1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5pbmZvLXN1YnRpdGxlIHtcbiAgICAgICAgICBmb250LXNpemU6IHZhcigtLWd2LXRoZW1lLWZvbnQtc2l6ZS14cywgMTBweCk7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEwcHg7XG4gICAgICAgICAgb3BhY2l0eTogMC41O1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5pY29uIHtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKHZhcigtLXNpemUpIC8gNCk7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5lZGl0IHtcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAuZWRpdCBndi1pY29uOmhvdmVyIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTAuNXB4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGd2LWlucHV0IHtcbiAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLmljb24ge1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDMwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuZGVzY3JpcHRpb24ge1xuICAgICAgICAgIG1pbi13aWR0aDogMTAwcHg7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IGNhbGModmFyKC0tc2l6ZSkgKyA0cHgpO1xuICAgICAgICAgIG1hcmdpbjogYXV0byA0cHg7XG4gICAgICAgIH1cbiAgICAgIGAsXG4gICAgICBza2VsZXRvbixcbiAgICBdO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnZhbHVlID0gMDtcbiAgICB0aGlzLmNvdW50ID0gMDtcbiAgICB0aGlzLnJlYWRvbmx5ID0gZmFsc2U7XG4gICAgdGhpcy5fY2FuZGlkYXRlID0gLTE7XG4gICAgdGhpcy5pc1NlbGVjdGVkID0gZmFsc2U7XG4gIH1cblxuICBfZ2V0VGl0bGUoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuX2dldEF2ZXJhZ2UoKX0vJHtNQVhfUkFURX1gO1xuICB9XG5cbiAgX29uTW91c2VFbnRlcihpbmRleCkge1xuICAgIHRoaXMuX2NhbmRpZGF0ZSA9IGluZGV4ICsgMTtcbiAgICBpZiAodGhpcy53aXRoRGVzY3JpcHRpb24pIHtcbiAgICAgIHN3aXRjaCAodGhpcy5fY2FuZGlkYXRlKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICB0aGlzLmRlc2NyaXB0aW9uID0gaTE4bignZ3YtcmF0aW5nLmRlc2NyaXB0aW9uLTEnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSBpMThuKCdndi1yYXRpbmcuZGVzY3JpcHRpb24tMicpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgdGhpcy5kZXNjcmlwdGlvbiA9IGkxOG4oJ2d2LXJhdGluZy5kZXNjcmlwdGlvbi0zJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICB0aGlzLmRlc2NyaXB0aW9uID0gaTE4bignZ3YtcmF0aW5nLmRlc2NyaXB0aW9uLTQnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSBpMThuKCdndi1yYXRpbmcuZGVzY3JpcHRpb24tNScpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9vbk1vdXNlT3V0KCkge1xuICAgIHRoaXMuX2NhbmRpZGF0ZSA9IC0xO1xuICAgIGlmICh0aGlzLndpdGhEZXNjcmlwdGlvbiAmJiAhdGhpcy5pc1NlbGVjdGVkKSB7XG4gICAgICB0aGlzLmRlc2NyaXB0aW9uID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBfb25DbGljayhpbmRleCkge1xuICAgIHRoaXMuX2NhbmRpZGF0ZSA9IC0xO1xuICAgIHRoaXMuaXNTZWxlY3RlZCA9IHRydWU7XG4gICAgdGhpcy52YWx1ZSA9IGluZGV4ICsgMTtcbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcpLCB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUgfSk7XG4gIH1cblxuICBfZ2V0QXZlcmFnZSgpIHtcbiAgICBjb25zdCBfdmFsdWUgPSBwYXJzZUZsb2F0KHRoaXMudmFsdWUpO1xuICAgIGlmIChfdmFsdWUgPj0gMCAmJiBfdmFsdWUgPD0gTUFYX1JBVEUpIHtcbiAgICAgIHJldHVybiBfdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgX3JlbmRlclN0YXIoc3RhciwgaW5kZXgpIHtcbiAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgcmV0dXJuIGh0bWxgPGd2LWljb24gc2hhcGU9XCJnZW5lcmFsOiR7c3Rhcn1cIj48L2d2LWljb24+YDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGh0bWxgPGd2LWljb25cbiAgICAgICAgQG1vdXNlZW50ZXI9JHt0aGlzLl9vbk1vdXNlRW50ZXIuYmluZCh0aGlzLCBpbmRleCl9XG4gICAgICAgIEBjbGljaz0ke3RoaXMuX29uQ2xpY2suYmluZCh0aGlzLCBpbmRleCl9XG4gICAgICAgIHNoYXBlPVwiZ2VuZXJhbDoke3N0YXJ9XCJcbiAgICAgID48L2d2LWljb24+YDtcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgYXZlcmFnZSA9IHRoaXMuX2dldEF2ZXJhZ2UoKTtcbiAgICBsZXQgdHJ1bmMgPSBhdmVyYWdlICogMTtcblxuICAgIGlmICghdGhpcy5yZWFkb25seSkge1xuICAgICAgdHJ1bmMgPSB0aGlzLl9jYW5kaWRhdGUgPiAtMSA/IHRoaXMuX2NhbmRpZGF0ZSA6IGF2ZXJhZ2U7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnMgPSBbXTtcbiAgICBmb3IgKGxldCBzdGFyID0gMTsgc3RhciA8PSBNQVhfUkFURTsgc3RhciArPSAxKSB7XG4gICAgICBpZiAodHJ1bmMgPj0gc3Rhcikge1xuICAgICAgICBzdGFycy5wdXNoKCdzdGFyJyk7XG4gICAgICB9IGVsc2UgaWYgKHRydW5jID49IHN0YXIgLSAwLjcpIHtcbiAgICAgICAgc3RhcnMucHVzaCgnaGFsZi1zdGFyJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGFycy5wdXNoKCduby1zdGFyJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwiJHtjbGFzc01hcCh7IHNrZWxldG9uOiB0aGlzLnNrZWxldG9uLCBlZGl0OiAhdGhpcy5yZWFkb25seSwgY29udGVudDogdHJ1ZSB9KX1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIiR7Y2xhc3NNYXAoeyBjb250ZW50OiB0cnVlIH0pfVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCIke2NsYXNzTWFwKHsgcmF0ZTogdHJ1ZSB9KX1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uXCIgdGl0bGU9XCIke3RoaXMuX2dldFRpdGxlKCl9XCI+XG4gICAgICAgICAgICAgICR7dGhpcy53aXRoRGVzY3JpcHRpb24gPyBodG1sYDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiPiR7dGhpcy5kZXNjcmlwdGlvbn08L2Rpdj5gIDogJyd9XG4gICAgICAgICAgICAgICR7cmVwZWF0KFxuICAgICAgICAgICAgICAgIHN0YXJzLFxuICAgICAgICAgICAgICAgIChzdGFyKSA9PiBzdGFyLFxuICAgICAgICAgICAgICAgIChzdGFyLCBpbmRleCkgPT4gaHRtbGAgJHt0aGlzLl9yZW5kZXJTdGFyKHN0YXIsIGluZGV4KX0gYCxcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgJHt0aGlzLmNvdW50XG4gICAgICAgICAgICAgID8gaHRtbGA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tdGl0bGVcIj4ke3RoaXMuY291bnQgfHwgJyd9PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1zdWJ0aXRsZVwiPiR7dGhpcy5fZ2V0Q291bnRUaXRsZSgpfTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PmBcbiAgICAgICAgICAgICAgOiAnJ31cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG5cbiAgZmlyc3RVcGRhdGVkKCkge1xuICAgIGlmICghdGhpcy5yZWFkb25seSkge1xuICAgICAgdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJy5lZGl0JykuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdXQnLCB0aGlzLl9vbk1vdXNlT3V0LmJpbmQodGhpcykpO1xuICAgIH1cbiAgfVxuXG4gIF9nZXRDb3VudFRpdGxlKCkge1xuICAgIGlmICh0aGlzLmNvdW50KSB7XG4gICAgICBpZiAodGhpcy5jb3VudCA+IDEpIHtcbiAgICAgICAgcmV0dXJuIGkxOG4oJ2d2LXJhdGluZy5ub3RlcycpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGkxOG4oJ2d2LXJhdGluZy5ub3RlJyk7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxufVxuXG53aW5kb3cuY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdndi1yYXRpbmcnLCBHdlJhdGluZyk7XG4iXX0=
@@ -15,12 +15,12 @@
15
15
  */
16
16
  import { css } from 'lit';
17
17
  import { GvExpandable } from './gv-expandable';
18
-
19
18
  /**
20
19
  * Expandable row
21
20
  * @extends GvExpandable
22
21
  *
23
22
  */
23
+
24
24
  export class GvRowExpandable extends GvExpandable {
25
25
  constructor() {
26
26
  super();
@@ -30,16 +30,10 @@ export class GvRowExpandable extends GvExpandable {
30
30
  }
31
31
 
32
32
  static get styles() {
33
- return [
34
- ...super.styles,
35
- // language=CSS
36
- css`
37
- .box:hover {
38
- background-color: var(--gv-theme-neutral-color, #f5f5f5);
39
- }
40
- `,
41
- ];
33
+ return [...super.styles, // language=CSS
34
+ css`.box:hover{background-color:var(--gv-theme-neutral-color,#f5f5f5)}`];
42
35
  }
43
- }
44
36
 
37
+ }
45
38
  window.customElements.define('gv-row-expandable', GvRowExpandable);
39
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL21vbGVjdWxlcy9ndi1yb3ctZXhwYW5kYWJsZS5qcyJdLCJuYW1lcyI6WyJjc3MiLCJHdkV4cGFuZGFibGUiLCJHdlJvd0V4cGFuZGFibGUiLCJjb25zdHJ1Y3RvciIsImljb24iLCJpY29uT3BlbmVkIiwiY2xpY2thYmxlIiwic3R5bGVzIiwid2luZG93IiwiY3VzdG9tRWxlbWVudHMiLCJkZWZpbmUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLEdBQVQsUUFBb0IsS0FBcEI7QUFDQSxTQUFTQyxZQUFULFFBQTZCLGlCQUE3QjtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxlQUFOLFNBQThCRCxZQUE5QixDQUEyQztBQUNoREUsRUFBQUEsV0FBVyxHQUFHO0FBQ1o7QUFDQSxTQUFLQyxJQUFMLEdBQVksaUJBQVo7QUFDQSxTQUFLQyxVQUFMLEdBQWtCLGlCQUFsQjtBQUNBLFNBQUtDLFNBQUwsR0FBaUIsSUFBakI7QUFDRDs7QUFFZ0IsYUFBTkMsTUFBTSxHQUFHO0FBQ2xCLFdBQU8sQ0FDTCxHQUFHLE1BQU1BLE1BREosRUFFTDtBQUNBUCxJQUFBQSxHQUFHLG9FQUhFLENBQVA7QUFTRDs7QUFsQitDO0FBcUJsRFEsTUFBTSxDQUFDQyxjQUFQLENBQXNCQyxNQUF0QixDQUE2QixtQkFBN0IsRUFBa0RSLGVBQWxEIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IGNzcyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBHdkV4cGFuZGFibGUgfSBmcm9tICcuL2d2LWV4cGFuZGFibGUnO1xuXG4vKipcbiAqIEV4cGFuZGFibGUgcm93XG4gKiAgQGV4dGVuZHMgR3ZFeHBhbmRhYmxlXG4gKlxuICovXG5leHBvcnQgY2xhc3MgR3ZSb3dFeHBhbmRhYmxlIGV4dGVuZHMgR3ZFeHBhbmRhYmxlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmljb24gPSAnZ2VuZXJhbDpvdGhlciMyJztcbiAgICB0aGlzLmljb25PcGVuZWQgPSAnZ2VuZXJhbDpvdGhlciMyJztcbiAgICB0aGlzLmNsaWNrYWJsZSA9IHRydWU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHN0eWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uc3VwZXIuc3R5bGVzLFxuICAgICAgLy8gbGFuZ3VhZ2U9Q1NTXG4gICAgICBjc3NgXG4gICAgICAgIC5ib3g6aG92ZXIge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWd2LXRoZW1lLW5ldXRyYWwtY29sb3IsICNmNWY1ZjUpO1xuICAgICAgICB9XG4gICAgICBgLFxuICAgIF07XG4gIH1cbn1cblxud2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZ3Ytcm93LWV4cGFuZGFibGUnLCBHdlJvd0V4cGFuZGFibGUpO1xuIl19
@@ -21,7 +21,6 @@ import { i18n } from '../lib/i18n';
21
21
  import { ItemResource } from '../mixins/item-resource';
22
22
  import { withResizeObserver } from '../mixins/with-resize-observer';
23
23
  import { getOwner, getTitle, getDescription, getVersion } from '../lib/item';
24
-
25
24
  /**
26
25
  * Row component
27
26
  *
@@ -37,140 +36,27 @@ import { getOwner, getTitle, getDescription, getVersion } from '../lib/item';
37
36
  * @cssprop {Length} [--gv-row-image--w=35px] - Image width
38
37
  *
39
38
  */
39
+
40
40
  export class GvRow extends withResizeObserver(ItemResource(LitElement)) {
41
41
  static get styles() {
42
- return [
43
- ...super.styles,
44
- // language=CSS
45
- css`
46
- :host {
47
- box-sizing: border-box;
48
- cursor: pointer;
49
- --hover-bgc: var(--gv-row-hover--bgc, var(--gv-theme-neutral-color-lighter, #fafafa));
50
- --trf-ty: var(--gv-row-hover--trf-ty, 0px);
51
- display: block;
52
- }
53
-
54
- :host([_invisible]) {
55
- display: none;
56
- }
57
-
58
- .row {
59
- padding: 12px;
60
- }
61
-
62
- .row:hover {
63
- -webkit-transform: -webkit-translateY(var(--trf-ty));
64
- transform: translateY(var(--trf-ty));
65
- background-color: var(--hover-bgc);
66
- }
67
-
68
- .row:not(.error) {
69
- display: grid;
70
- grid-template-columns: calc(var(--gv-row-image--w, 35px) + 5px) auto fit-content(20%);
71
- grid-gap: 10px;
72
- align-items: center;
73
- }
74
-
75
- :host([w-lt-450]) .meta {
76
- display: none;
77
- }
78
-
79
- .row .name {
80
- margin-right: 15px;
81
- }
82
-
83
- .row .name,
84
- .row .meta__owner {
85
- margin-bottom: 5px;
86
- }
87
-
88
- .row .version {
89
- color: var(--gv-theme-neutral-color-dark, #d9d9d9);
90
- }
91
-
92
- .row .description {
93
- --lh: 1.4rem;
94
- --max-lines: 2;
95
- max-height: calc(var(--lh) * var(--max-lines));
96
- line-height: var(--lh);
97
- overflow: hidden;
98
- text-overflow: ellipsis;
99
- text-after-overflow: '...';
100
- }
101
-
102
- .row .meta {
103
- display: flex;
104
- flex-direction: column;
105
- align-items: flex-end;
106
- }
107
-
108
- .row .meta__owner {
109
- --gv-icon--c: var(--gv-theme-neutral-color-dark, #d9d9d9);
110
- --gv-icon--s: 16px;
111
- color: var(--gv-theme-neutral-color-dark, #d9d9d9);
112
- display: flex;
113
- }
114
-
115
- .row .meta__tags {
116
- display: flex;
117
- flex-direction: row;
118
- flex-wrap: wrap;
119
- }
120
-
121
- .skeleton {
122
- transition: 0.5s;
123
- min-height: 30px;
124
- align-self: start;
125
- }
126
-
127
- .error {
128
- cursor: default;
129
- text-align: center;
130
- }
131
-
132
- gv-identity-picture {
133
- height: var(--gv-row-image--h, 35px);
134
- width: var(--gv-row-image--w, 35px);
135
- border-radius: 20px;
136
- --gv-image--of: contain;
137
- align-self: baseline;
138
- }
139
-
140
- h3 {
141
- margin: 0;
142
- }
143
-
144
- .row > .group {
145
- display: flex;
146
- flex-direction: column;
147
- margin: 0 5px;
148
- width: 100%;
149
- flex: 1;
150
- }
151
-
152
- .title {
153
- display: flex;
154
- flex-direction: row;
155
- }
156
- `,
157
- link,
158
- skeleton,
159
- ];
42
+ return [...super.styles, // language=CSS
43
+ css`:host{box-sizing:border-box;cursor:pointer;--hover-bgc:var(--gv-row-hover--bgc, var(--gv-theme-neutral-color-lighter, #fafafa));--trf-ty:var(--gv-row-hover--trf-ty, 0px);display:block}:host([_invisible]){display:none}.row{padding:12px}.row:hover{-webkit-transform:-webkit-translateY(var(--trf-ty));transform:translateY(var(--trf-ty));background-color:var(--hover-bgc)}.row:not(.error){display:grid;grid-template-columns:calc(var(--gv-row-image--w,35px) + 5px) auto fit-content(20%);grid-gap:10px;align-items:center}:host([w-lt-450]) .meta{display:none}.row .name{margin-right:15px}.row .meta__owner,.row .name{margin-bottom:5px}.row .version{color:var(--gv-theme-neutral-color-dark,#d9d9d9)}.row .description{--lh:1.4rem;--max-lines:2;max-height:calc(var(--lh) * var(--max-lines));line-height:var(--lh);overflow:hidden;text-overflow:ellipsis;text-after-overflow:'...'}.row .meta{display:flex;flex-direction:column;align-items:flex-end}.row .meta__owner{--gv-icon--c:var(--gv-theme-neutral-color-dark, #d9d9d9);--gv-icon--s:16px;color:var(--gv-theme-neutral-color-dark,#d9d9d9);display:flex}.row .meta__tags{display:flex;flex-direction:row;flex-wrap:wrap}.skeleton{transition:.5s;min-height:30px;align-self:start}.error{cursor:default;text-align:center}gv-identity-picture{height:var(--gv-row-image--h,35px);width:var(--gv-row-image--w,35px);border-radius:20px;--gv-image--of:contain;align-self:baseline}h3{margin:0}.row>.group{display:flex;flex-direction:column;margin:0 5px;width:100%;flex:1}.title{display:flex;flex-direction:row}`, link, skeleton];
160
44
  }
161
45
 
162
46
  static get properties() {
163
- return {
164
- ...super.properties,
47
+ return { ...super.properties,
48
+
165
49
  /** @required */
166
- small: { type: Boolean },
50
+ small: {
51
+ type: Boolean
52
+ }
167
53
  };
168
54
  }
169
55
 
170
56
  constructor() {
171
57
  super();
172
58
  this.breakpoints = {
173
- width: [450],
59
+ width: [450]
174
60
  };
175
61
  this.small = false;
176
62
  }
@@ -179,32 +65,20 @@ export class GvRow extends withResizeObserver(ItemResource(LitElement)) {
179
65
  const classes = {
180
66
  row: true,
181
67
  link: true,
182
- error: !this._skeleton && (this._error || this._empty),
68
+ error: !this._skeleton && (this._error || this._empty)
183
69
  };
184
70
  const owner = getOwner(this._item);
185
- return html`
186
- <div class=${classMap(classes)}>
187
- ${!this._skeleton && (this._error || this._empty)
188
- ? html`<div class="message">${this._error ? i18n('gv-row.error') : i18n('gv-row.empty')}</div>`
189
- : html`
190
- <div class="${classMap({ skeleton: this._skeleton })}">${this._renderImage()}</div>
191
- <div class="${classMap({ group: true, skeleton: this._skeleton })}">
192
- <div class="title">
193
- <h3 class="name">${getTitle(this._item)}</h3>
194
- <div class="version">${getVersion(this._item)}</div>
195
- </div>
196
- <div class="description">${getDescription(this._item)}</div>
197
- </div>
198
- <div class="${classMap({ meta: true, skeleton: this._skeleton })}">
199
- <div class="meta__owner">
200
- ${owner != null && owner.trim().length > 0 ? html`<gv-icon shape="general:user" size="8px"></gv-icon>${owner}` : ''}
201
- </div>
202
- ${this.small !== true ? html`<div class="meta__tags">${this._renderLabels()}</div>` : ''}
203
- </div>
204
- `}
205
- </div>
206
- `;
71
+ return html` <div class="${classMap(classes)}"> ${!this._skeleton && (this._error || this._empty) ? html`<div class="message">${this._error ? i18n('gv-row.error') : i18n('gv-row.empty')}</div>` : html` <div class="${classMap({
72
+ skeleton: this._skeleton
73
+ })}">${this._renderImage()}</div> <div class="${classMap({
74
+ group: true,
75
+ skeleton: this._skeleton
76
+ })}"> <div class="title"> <h3 class="name">${getTitle(this._item)}</h3> <div class="version">${getVersion(this._item)}</div> </div> <div class="description">${getDescription(this._item)}</div> </div> <div class="${classMap({
77
+ meta: true,
78
+ skeleton: this._skeleton
79
+ })}"> <div class="meta__owner"> ${owner != null && owner.trim().length > 0 ? html`<gv-icon shape="general:user" size="8px"></gv-icon>${owner}` : ''} </div> ${this.small !== true ? html`<div class="meta__tags">${this._renderLabels()}</div>` : ''} </div> `} </div> `;
207
80
  }
208
- }
209
81
 
82
+ }
210
83
  window.customElements.define('gv-row', GvRow);
84
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL21vbGVjdWxlcy9ndi1yb3cuanMiXSwibmFtZXMiOlsiY3NzIiwiaHRtbCIsIkxpdEVsZW1lbnQiLCJza2VsZXRvbiIsImxpbmsiLCJjbGFzc01hcCIsImkxOG4iLCJJdGVtUmVzb3VyY2UiLCJ3aXRoUmVzaXplT2JzZXJ2ZXIiLCJnZXRPd25lciIsImdldFRpdGxlIiwiZ2V0RGVzY3JpcHRpb24iLCJnZXRWZXJzaW9uIiwiR3ZSb3ciLCJzdHlsZXMiLCJwcm9wZXJ0aWVzIiwic21hbGwiLCJ0eXBlIiwiQm9vbGVhbiIsImNvbnN0cnVjdG9yIiwiYnJlYWtwb2ludHMiLCJ3aWR0aCIsInJlbmRlciIsImNsYXNzZXMiLCJyb3ciLCJlcnJvciIsIl9za2VsZXRvbiIsIl9lcnJvciIsIl9lbXB0eSIsIm93bmVyIiwiX2l0ZW0iLCJfcmVuZGVySW1hZ2UiLCJncm91cCIsIm1ldGEiLCJ0cmltIiwibGVuZ3RoIiwiX3JlbmRlckxhYmVscyIsIndpbmRvdyIsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxHQUFULEVBQWNDLElBQWQsRUFBb0JDLFVBQXBCLFFBQXNDLEtBQXRDO0FBQ0EsU0FBU0MsUUFBVCxRQUF5QixvQkFBekI7QUFDQSxTQUFTQyxJQUFULFFBQXFCLGdCQUFyQjtBQUNBLFNBQVNDLFFBQVQsUUFBeUIsMEJBQXpCO0FBQ0EsU0FBU0MsSUFBVCxRQUFxQixhQUFyQjtBQUNBLFNBQVNDLFlBQVQsUUFBNkIseUJBQTdCO0FBQ0EsU0FBU0Msa0JBQVQsUUFBbUMsZ0NBQW5DO0FBQ0EsU0FBU0MsUUFBVCxFQUFtQkMsUUFBbkIsRUFBNkJDLGNBQTdCLEVBQTZDQyxVQUE3QyxRQUErRCxhQUEvRDtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxPQUFPLE1BQU1DLEtBQU4sU0FBb0JMLGtCQUFrQixDQUFDRCxZQUFZLENBQUNMLFVBQUQsQ0FBYixDQUF0QyxDQUFpRTtBQUNyRCxhQUFOWSxNQUFNLEdBQUc7QUFDbEIsV0FBTyxDQUNMLEdBQUcsTUFBTUEsTUFESixFQUVMO0FBQ0FkLElBQUFBLEdBQUcsOC9DQUhFLEVBbUhMSSxJQW5ISyxFQW9ITEQsUUFwSEssQ0FBUDtBQXNIRDs7QUFFb0IsYUFBVlksVUFBVSxHQUFHO0FBQ3RCLFdBQU8sRUFDTCxHQUFHLE1BQU1BLFVBREo7O0FBRUw7QUFDQUMsTUFBQUEsS0FBSyxFQUFFO0FBQUVDLFFBQUFBLElBQUksRUFBRUM7QUFBUjtBQUhGLEtBQVA7QUFLRDs7QUFFREMsRUFBQUEsV0FBVyxHQUFHO0FBQ1o7QUFDQSxTQUFLQyxXQUFMLEdBQW1CO0FBQ2pCQyxNQUFBQSxLQUFLLEVBQUUsQ0FBQyxHQUFEO0FBRFUsS0FBbkI7QUFHQSxTQUFLTCxLQUFMLEdBQWEsS0FBYjtBQUNEOztBQUVETSxFQUFBQSxNQUFNLEdBQUc7QUFDUCxVQUFNQyxPQUFPLEdBQUc7QUFDZEMsTUFBQUEsR0FBRyxFQUFFLElBRFM7QUFFZHBCLE1BQUFBLElBQUksRUFBRSxJQUZRO0FBR2RxQixNQUFBQSxLQUFLLEVBQUUsQ0FBQyxLQUFLQyxTQUFOLEtBQW9CLEtBQUtDLE1BQUwsSUFBZSxLQUFLQyxNQUF4QztBQUhPLEtBQWhCO0FBS0EsVUFBTUMsS0FBSyxHQUFHcEIsUUFBUSxDQUFDLEtBQUtxQixLQUFOLENBQXRCO0FBQ0EsV0FBTzdCLElBQUksZ0JBQ0lJLFFBQVEsQ0FBQ2tCLE9BQUQsQ0FEWixNQUVMLENBQUMsS0FBS0csU0FBTixLQUFvQixLQUFLQyxNQUFMLElBQWUsS0FBS0MsTUFBeEMsSUFDRTNCLElBQUksd0JBQXdCLEtBQUswQixNQUFMLEdBQWNyQixJQUFJLENBQUMsY0FBRCxDQUFsQixHQUFxQ0EsSUFBSSxDQUFDLGNBQUQsQ0FBakUsUUFETixHQUVFTCxJQUFJLGdCQUNZSSxRQUFRLENBQUM7QUFBRUYsTUFBQUEsUUFBUSxFQUFFLEtBQUt1QjtBQUFqQixLQUFELENBRHBCLEtBQ3VELEtBQUtLLFlBQUwsRUFEdkQsc0JBRVkxQixRQUFRLENBQUM7QUFBRTJCLE1BQUFBLEtBQUssRUFBRSxJQUFUO0FBQWU3QixNQUFBQSxRQUFRLEVBQUUsS0FBS3VCO0FBQTlCLEtBQUQsQ0FGcEIsMkNBSXFCaEIsUUFBUSxDQUFDLEtBQUtvQixLQUFOLENBSjdCLDhCQUt5QmxCLFVBQVUsQ0FBQyxLQUFLa0IsS0FBTixDQUxuQywwQ0FPMkJuQixjQUFjLENBQUMsS0FBS21CLEtBQU4sQ0FQekMsNkJBU1l6QixRQUFRLENBQUM7QUFBRTRCLE1BQUFBLElBQUksRUFBRSxJQUFSO0FBQWM5QixNQUFBQSxRQUFRLEVBQUUsS0FBS3VCO0FBQTdCLEtBQUQsQ0FUcEIsZ0NBV0lHLEtBQUssSUFBSSxJQUFULElBQWlCQSxLQUFLLENBQUNLLElBQU4sR0FBYUMsTUFBYixHQUFzQixDQUF2QyxHQUEyQ2xDLElBQUksc0RBQXNENEIsS0FBdEQsRUFBL0MsR0FBK0csRUFYbkgsV0FhRSxLQUFLYixLQUFMLEtBQWUsSUFBZixHQUFzQmYsSUFBSSwyQkFBMkIsS0FBS21DLGFBQUwsRUFBM0IsUUFBMUIsR0FBb0YsRUFidEYsVUFKRCxVQUFYO0FBc0JEOztBQXZLcUU7QUEwS3hFQyxNQUFNLENBQUNDLGNBQVAsQ0FBc0JDLE1BQXRCLENBQTZCLFFBQTdCLEVBQXVDMUIsS0FBdkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgY3NzLCBodG1sLCBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHNrZWxldG9uIH0gZnJvbSAnLi4vc3R5bGVzL3NrZWxldG9uJztcbmltcG9ydCB7IGxpbmsgfSBmcm9tICcuLi9zdHlsZXMvbGluayc7XG5pbXBvcnQgeyBjbGFzc01hcCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL2NsYXNzLW1hcCc7XG5pbXBvcnQgeyBpMThuIH0gZnJvbSAnLi4vbGliL2kxOG4nO1xuaW1wb3J0IHsgSXRlbVJlc291cmNlIH0gZnJvbSAnLi4vbWl4aW5zL2l0ZW0tcmVzb3VyY2UnO1xuaW1wb3J0IHsgd2l0aFJlc2l6ZU9ic2VydmVyIH0gZnJvbSAnLi4vbWl4aW5zL3dpdGgtcmVzaXplLW9ic2VydmVyJztcbmltcG9ydCB7IGdldE93bmVyLCBnZXRUaXRsZSwgZ2V0RGVzY3JpcHRpb24sIGdldFZlcnNpb24gfSBmcm9tICcuLi9saWIvaXRlbSc7XG5cbi8qKlxuICogUm93IGNvbXBvbmVudFxuICpcbiAqICMjIERldGFpbHNcbiAqICogaGFzIEB0aGVtZSBmYWNldFxuICpcbiAqIEBhdHRyIHtQcm9taXNlPGFueT59IGl0ZW0gLSBBbiBpdGVtLlxuICogQGF0dHIge0Jvb2xlYW59IHNtYWxsIC0gV2hlbiB0cnVlLCBub3QgZGlzcGxheSBsYWJlbHNcbiAqXG4gKiBAY3NzcHJvcCB7Q29sb3J9IFstLWd2LXJvdy1ob3Zlci0tYmdjPXZhcigtLWd2LXRoZW1lLW5ldXRyYWwtY29sb3ItbGlnaHRlciwgI2ZhZmFmYSldIC0gSG9vdmVyIGJhY2tncm91bmQgY29sb3JcbiAqIEBjc3Nwcm9wIHtMZW5ndGh9IFstLWd2LXJvdy1ob3Zlci0tdHJmLXR5PTBweF0gLSBIb292ZXIgdHJhbnNmb3JtIHRyYW5zbGF0ZVlcbiAqIEBjc3Nwcm9wIHtMZW5ndGh9IFstLWd2LXJvdy1pbWFnZS0taD0zNXB4XSAtIEltYWdlIGhlaWdodFxuICogQGNzc3Byb3Age0xlbmd0aH0gWy0tZ3Ytcm93LWltYWdlLS13PTM1cHhdIC0gSW1hZ2Ugd2lkdGhcbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBHdlJvdyBleHRlbmRzIHdpdGhSZXNpemVPYnNlcnZlcihJdGVtUmVzb3VyY2UoTGl0RWxlbWVudCkpIHtcbiAgc3RhdGljIGdldCBzdHlsZXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLnN1cGVyLnN0eWxlcyxcbiAgICAgIC8vIGxhbmd1YWdlPUNTU1xuICAgICAgY3NzYFxuICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgLS1ob3Zlci1iZ2M6IHZhcigtLWd2LXJvdy1ob3Zlci0tYmdjLCB2YXIoLS1ndi10aGVtZS1uZXV0cmFsLWNvbG9yLWxpZ2h0ZXIsICNmYWZhZmEpKTtcbiAgICAgICAgICAtLXRyZi10eTogdmFyKC0tZ3Ytcm93LWhvdmVyLS10cmYtdHksIDBweCk7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbX2ludmlzaWJsZV0pIHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLnJvdyB7XG4gICAgICAgICAgcGFkZGluZzogMTJweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5yb3c6aG92ZXIge1xuICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiAtd2Via2l0LXRyYW5zbGF0ZVkodmFyKC0tdHJmLXR5KSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKHZhcigtLXRyZi10eSkpO1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWhvdmVyLWJnYyk7XG4gICAgICAgIH1cblxuICAgICAgICAucm93Om5vdCguZXJyb3IpIHtcbiAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogY2FsYyh2YXIoLS1ndi1yb3ctaW1hZ2UtLXcsIDM1cHgpICsgNXB4KSBhdXRvIGZpdC1jb250ZW50KDIwJSk7XG4gICAgICAgICAgZ3JpZC1nYXA6IDEwcHg7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFt3LWx0LTQ1MF0pIC5tZXRhIHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLnJvdyAubmFtZSB7XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnJvdyAubmFtZSxcbiAgICAgICAgLnJvdyAubWV0YV9fb3duZXIge1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDVweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5yb3cgLnZlcnNpb24ge1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1ndi10aGVtZS1uZXV0cmFsLWNvbG9yLWRhcmssICNkOWQ5ZDkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLnJvdyAuZGVzY3JpcHRpb24ge1xuICAgICAgICAgIC0tbGg6IDEuNHJlbTtcbiAgICAgICAgICAtLW1heC1saW5lczogMjtcbiAgICAgICAgICBtYXgtaGVpZ2h0OiBjYWxjKHZhcigtLWxoKSAqIHZhcigtLW1heC1saW5lcykpO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saCk7XG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgICB0ZXh0LWFmdGVyLW92ZXJmbG93OiAnLi4uJztcbiAgICAgICAgfVxuXG4gICAgICAgIC5yb3cgLm1ldGEge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgICAgIH1cblxuICAgICAgICAucm93IC5tZXRhX19vd25lciB7XG4gICAgICAgICAgLS1ndi1pY29uLS1jOiB2YXIoLS1ndi10aGVtZS1uZXV0cmFsLWNvbG9yLWRhcmssICNkOWQ5ZDkpO1xuICAgICAgICAgIC0tZ3YtaWNvbi0tczogMTZweDtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tZ3YtdGhlbWUtbmV1dHJhbC1jb2xvci1kYXJrLCAjZDlkOWQ5KTtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnJvdyAubWV0YV9fdGFncyB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5za2VsZXRvbiB7XG4gICAgICAgICAgdHJhbnNpdGlvbjogMC41cztcbiAgICAgICAgICBtaW4taGVpZ2h0OiAzMHB4O1xuICAgICAgICAgIGFsaWduLXNlbGY6IHN0YXJ0O1xuICAgICAgICB9XG5cbiAgICAgICAgLmVycm9yIHtcbiAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgZ3YtaWRlbnRpdHktcGljdHVyZSB7XG4gICAgICAgICAgaGVpZ2h0OiB2YXIoLS1ndi1yb3ctaW1hZ2UtLWgsIDM1cHgpO1xuICAgICAgICAgIHdpZHRoOiB2YXIoLS1ndi1yb3ctaW1hZ2UtLXcsIDM1cHgpO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgICAgLS1ndi1pbWFnZS0tb2Y6IGNvbnRhaW47XG4gICAgICAgICAgYWxpZ24tc2VsZjogYmFzZWxpbmU7XG4gICAgICAgIH1cblxuICAgICAgICBoMyB7XG4gICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLnJvdyA+IC5ncm91cCB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIG1hcmdpbjogMCA1cHg7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgZmxleDogMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC50aXRsZSB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICB9XG4gICAgICBgLFxuICAgICAgbGluayxcbiAgICAgIHNrZWxldG9uLFxuICAgIF07XG4gIH1cblxuICBzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLnByb3BlcnRpZXMsXG4gICAgICAvKiogQHJlcXVpcmVkICovXG4gICAgICBzbWFsbDogeyB0eXBlOiBCb29sZWFuIH0sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5icmVha3BvaW50cyA9IHtcbiAgICAgIHdpZHRoOiBbNDUwXSxcbiAgICB9O1xuICAgIHRoaXMuc21hbGwgPSBmYWxzZTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBjbGFzc2VzID0ge1xuICAgICAgcm93OiB0cnVlLFxuICAgICAgbGluazogdHJ1ZSxcbiAgICAgIGVycm9yOiAhdGhpcy5fc2tlbGV0b24gJiYgKHRoaXMuX2Vycm9yIHx8IHRoaXMuX2VtcHR5KSxcbiAgICB9O1xuICAgIGNvbnN0IG93bmVyID0gZ2V0T3duZXIodGhpcy5faXRlbSk7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPSR7Y2xhc3NNYXAoY2xhc3Nlcyl9PlxuICAgICAgICAkeyF0aGlzLl9za2VsZXRvbiAmJiAodGhpcy5fZXJyb3IgfHwgdGhpcy5fZW1wdHkpXG4gICAgICAgICAgPyBodG1sYDxkaXYgY2xhc3M9XCJtZXNzYWdlXCI+JHt0aGlzLl9lcnJvciA/IGkxOG4oJ2d2LXJvdy5lcnJvcicpIDogaTE4bignZ3Ytcm93LmVtcHR5Jyl9PC9kaXY+YFxuICAgICAgICAgIDogaHRtbGBcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiR7Y2xhc3NNYXAoeyBza2VsZXRvbjogdGhpcy5fc2tlbGV0b24gfSl9XCI+JHt0aGlzLl9yZW5kZXJJbWFnZSgpfTwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiJHtjbGFzc01hcCh7IGdyb3VwOiB0cnVlLCBza2VsZXRvbjogdGhpcy5fc2tlbGV0b24gfSl9XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJuYW1lXCI+JHtnZXRUaXRsZSh0aGlzLl9pdGVtKX08L2gzPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnNpb25cIj4ke2dldFZlcnNpb24odGhpcy5faXRlbSl9PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+JHtnZXREZXNjcmlwdGlvbih0aGlzLl9pdGVtKX08L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIke2NsYXNzTWFwKHsgbWV0YTogdHJ1ZSwgc2tlbGV0b246IHRoaXMuX3NrZWxldG9uIH0pfVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRhX19vd25lclwiPlxuICAgICAgICAgICAgICAgICAgJHtvd25lciAhPSBudWxsICYmIG93bmVyLnRyaW0oKS5sZW5ndGggPiAwID8gaHRtbGA8Z3YtaWNvbiBzaGFwZT1cImdlbmVyYWw6dXNlclwiIHNpemU9XCI4cHhcIj48L2d2LWljb24+JHtvd25lcn1gIDogJyd9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgJHt0aGlzLnNtYWxsICE9PSB0cnVlID8gaHRtbGA8ZGl2IGNsYXNzPVwibWV0YV9fdGFnc1wiPiR7dGhpcy5fcmVuZGVyTGFiZWxzKCl9PC9kaXY+YCA6ICcnfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIGB9XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbndpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ2d2LXJvdycsIEd2Um93KTtcbiJdfQ==