@gravitee/ui-components 3.24.4 → 3.24.5-renovate-github-markdown-css-5-x-d2ffdad
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/CHANGELOG.md +1260 -0
- package/LICENSE.txt +202 -0
- package/README.md +195 -0
- package/assets/css/github-markdown-css/github-markdown.css +500 -545
- package/assets/i18n/en.json +0 -3
- package/assets/i18n/fr.json +0 -3
- package/package.json +19 -21
- package/src/.eslintrc.js +19 -0
- package/src/atoms/gv-autocomplete.js +156 -132
- package/src/atoms/gv-button.js +248 -73
- package/src/atoms/gv-checkbox.js +103 -45
- package/src/atoms/gv-date-picker-calendar.js +393 -312
- package/src/atoms/gv-date-picker-cell.js +81 -57
- package/src/atoms/gv-date-picker.js +319 -180
- package/src/atoms/gv-file-upload.js +195 -85
- package/src/atoms/gv-icon.js +34 -13
- package/src/atoms/gv-image.js +66 -31
- package/src/atoms/gv-input-message.js +37 -12
- package/src/atoms/gv-input.js +169 -139
- package/src/atoms/gv-link.js +125 -47
- package/src/atoms/gv-message.js +69 -18
- package/src/atoms/gv-metric.js +68 -19
- package/src/atoms/gv-relative-time.js +38 -67
- package/src/atoms/gv-select-native.js +215 -96
- package/src/atoms/gv-select.js +230 -110
- package/src/atoms/gv-spinner.js +26 -5
- package/src/atoms/gv-state.js +66 -25
- package/src/atoms/gv-switch.js +160 -40
- package/src/atoms/gv-tag.js +78 -26
- package/src/atoms/gv-text.js +83 -22
- package/src/charts/gv-chart-bar.js +18 -22
- package/src/charts/gv-chart-gauge.js +31 -28
- package/src/charts/gv-chart-histogram.js +10 -18
- package/src/charts/gv-chart-line.js +59 -70
- package/src/charts/gv-chart-map.js +42 -44
- package/src/charts/gv-chart-pie.js +14 -18
- package/src/index.js +0 -2
- package/src/lib/cron-expression.js +35 -40
- package/src/lib/date.js +1 -10
- package/src/lib/events.js +1 -3
- package/src/lib/http-client-schema-form.js +12 -13
- package/src/lib/http.js +56 -57
- package/src/lib/i18n.js +22 -30
- package/src/lib/item.js +12 -13
- package/src/lib/properties.js +42 -77
- package/src/lib/schema-form.js +5 -4
- package/src/lib/studio.js +60 -13
- package/src/lib/style.js +8 -8
- package/src/lib/text-format.js +7 -14
- package/src/lib/theme.js +5 -8
- package/src/lib/utils.js +18 -17
- package/src/mixins/chart-element.js +54 -31
- package/src/mixins/input-element.js +49 -60
- package/src/mixins/item-resource.js +32 -34
- package/src/mixins/keyboard-element.js +5 -6
- package/src/mixins/update-after-browser.js +1 -4
- package/src/mixins/with-resize-observer.js +13 -23
- package/src/mixins/with-skeleton-attribute.js +48 -54
- package/src/molecules/gv-card-full.js +147 -26
- package/src/molecules/gv-card-list.js +42 -13
- package/src/molecules/gv-card.js +91 -17
- package/src/molecules/gv-category-list.js +17 -6
- package/src/molecules/gv-category.js +103 -23
- package/src/molecules/gv-code.js +263 -189
- package/src/molecules/gv-confirm.js +71 -41
- package/src/molecules/gv-cron-editor.js +389 -143
- package/src/molecules/gv-dropdown-menu.js +46 -14
- package/src/molecules/gv-expandable.js +59 -31
- package/src/molecules/gv-expression-language.js +208 -552
- package/src/molecules/gv-identity-picture.js +65 -42
- package/src/molecules/gv-list.js +134 -42
- package/src/molecules/gv-metrics.js +49 -37
- package/src/molecules/gv-modal.js +95 -28
- package/src/molecules/gv-nav.js +75 -49
- package/src/molecules/gv-option.js +130 -57
- package/src/molecules/gv-plans.js +209 -86
- package/src/molecules/gv-popover.js +177 -57
- package/src/molecules/gv-promote.js +146 -28
- package/src/molecules/gv-rating-list.js +195 -69
- package/src/molecules/gv-rating.js +105 -52
- package/src/molecules/gv-row-expandable.js +11 -5
- package/src/molecules/gv-row.js +147 -21
- package/src/molecules/gv-stats.js +48 -23
- package/src/molecules/gv-stepper.js +187 -43
- package/src/molecules/gv-table.js +309 -199
- package/src/molecules/gv-tree.js +156 -33
- package/src/organisms/gv-documentation.js +127 -44
- package/src/organisms/gv-header.js +195 -37
- package/src/organisms/gv-http-client.js +168 -32
- package/src/organisms/gv-menu.js +158 -37
- package/src/organisms/gv-newsletter-subscription.js +189 -48
- package/src/organisms/gv-pagination.js +77 -49
- package/src/organisms/gv-properties.js +492 -271
- package/src/organisms/gv-resizable-views.js +259 -41
- package/src/organisms/gv-resources.js +275 -168
- package/src/organisms/gv-schema-form-array.js +159 -49
- package/src/organisms/gv-schema-form-control-object.js +73 -59
- package/src/organisms/gv-schema-form-control.js +134 -107
- package/src/organisms/gv-schema-form.js +280 -195
- package/src/organisms/gv-tabs.js +98 -66
- package/src/organisms/gv-user-menu.js +201 -36
- package/src/organisms/gv-vertical-menu.js +61 -20
- package/src/policy-studio/gv-flow-step.js +245 -105
- package/src/policy-studio/gv-flow.js +304 -125
- package/src/policy-studio/gv-policy-studio-menu.js +471 -157
- package/src/policy-studio/gv-policy-studio.js +761 -692
- package/src/styles/empty.js +20 -3
- package/src/styles/input.js +247 -3
- package/src/styles/link.js +16 -3
- package/src/styles/shapes.js +0 -1
- package/src/styles/skeleton.js +37 -3
- package/src/styles/zoom.js +24 -3
- package/src/theme/definition.json +1762 -0
- package/src/theme/gv-theme.js +60 -21
- package/assets/css/codemirror/all.css +0 -476
- package/src/molecules/gv-code-hint.js +0 -49
- package/wc/gv-code-hint.js +0 -1
package/src/organisms/gv-menu.js
CHANGED
|
@@ -18,6 +18,7 @@ import '../molecules/gv-nav';
|
|
|
18
18
|
import { isSameRoutes } from '../lib/utils';
|
|
19
19
|
import { classMap } from 'lit/directives/class-map';
|
|
20
20
|
import { withResizeObserver } from '../mixins/with-resize-observer';
|
|
21
|
+
|
|
21
22
|
/**
|
|
22
23
|
* A menu
|
|
23
24
|
*
|
|
@@ -40,55 +41,175 @@ import { withResizeObserver } from '../mixins/with-resize-observer';
|
|
|
40
41
|
* @cssprop {Color} [--gv-menu-link--bgc=transparent] - Background color
|
|
41
42
|
* @cssprop {Length} [--gv-menu-link-a--pv=0px] - Link vertical padding
|
|
42
43
|
*/
|
|
43
|
-
|
|
44
44
|
export class GvMenu extends withResizeObserver(LitElement) {
|
|
45
45
|
static get properties() {
|
|
46
46
|
return {
|
|
47
47
|
/** @required **/
|
|
48
|
-
routes: {
|
|
49
|
-
|
|
50
|
-
},
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
reflect: true
|
|
54
|
-
},
|
|
55
|
-
_small: {
|
|
56
|
-
type: Boolean,
|
|
57
|
-
attribute: false
|
|
58
|
-
},
|
|
59
|
-
_routes: {
|
|
60
|
-
type: Array,
|
|
61
|
-
attribute: false
|
|
62
|
-
},
|
|
63
|
-
_hasHeader: {
|
|
64
|
-
type: Boolean,
|
|
65
|
-
attribute: false
|
|
66
|
-
}
|
|
48
|
+
routes: { type: Array },
|
|
49
|
+
sticky: { type: Boolean, reflect: true },
|
|
50
|
+
_small: { type: Boolean, attribute: false },
|
|
51
|
+
_routes: { type: Array, attribute: false },
|
|
52
|
+
_hasHeader: { type: Boolean, attribute: false },
|
|
67
53
|
};
|
|
68
54
|
}
|
|
69
55
|
|
|
70
56
|
static get styles() {
|
|
71
|
-
return [
|
|
72
|
-
|
|
57
|
+
return [
|
|
58
|
+
// language=css
|
|
59
|
+
css`
|
|
60
|
+
:host {
|
|
61
|
+
--gv-link--c: var(--gv-menu--c, var(--gv-theme-font-color-light, #ffffff));
|
|
62
|
+
--gv-link-active--c: var(--gv-menu--c, var(--gv-theme-font-color-light, #ffffff));
|
|
63
|
+
--gv-link--bgc: var(--gv-menu-link--bgc, transparent);
|
|
64
|
+
--gv-link-active--bgc: var(--gv-menu-link-active--bgc, transparent);
|
|
65
|
+
--gv-link-active--bdc: var(--gv-menu-link-active--bdc, var(--gv-theme-color-light, #86c3d0));
|
|
66
|
+
--gv-link-active--bds: var(--gv-menu-link-active--bds, solid);
|
|
67
|
+
--gv-link-active--bdw: var(--gv-menu-link-active--bdw, 0 0 3px 0);
|
|
68
|
+
--pr: var(--gv-theme-layout--pr, 4rem);
|
|
69
|
+
--pl: var(--gv-theme-layout--pl, 4rem);
|
|
70
|
+
box-sizing: border-box;
|
|
71
|
+
display: block;
|
|
72
|
+
font-size: var(--gv-theme-font-size-s, 12px);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
:host([sticky]) gv-nav {
|
|
76
|
+
line-height: 14px;
|
|
77
|
+
--gv-link-icon--s: 20px;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
:host([sticky]) .has-header gv-nav {
|
|
81
|
+
line-height: 34px;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
:host([sticky]) ::slotted([slot='top']) {
|
|
85
|
+
transition: height 250ms ease-in-out;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
:host([w-lt-1024]) {
|
|
89
|
+
--pr: 5px;
|
|
90
|
+
--pl: 5px;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
:host([w-lt-768]) .nav-container {
|
|
94
|
+
width: 100%;
|
|
95
|
+
padding-left: var(--pl);
|
|
96
|
+
--gv-link-a--pv: var(--gv-menu-link-a--pv, 0px);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
:host([w-lt-580]) .nav-container {
|
|
100
|
+
flex: auto;
|
|
101
|
+
padding-left: 0;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
:host([w-lt-580]) gv-nav {
|
|
105
|
+
flex: auto;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
:host([w-lt-580]) .right {
|
|
109
|
+
flex: auto;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
:host([w-lt-380]) .nav-container {
|
|
113
|
+
display: flex;
|
|
114
|
+
flex-direction: column-reverse;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
:host([w-lt-380]) gv-nav {
|
|
118
|
+
align-self: flex-start;
|
|
119
|
+
flex: 1;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
:host([w-lt-380]) .right {
|
|
123
|
+
align-self: flex-end;
|
|
124
|
+
flex: 1;
|
|
125
|
+
width: 100%;
|
|
126
|
+
padding-right: 0;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
gv-nav {
|
|
130
|
+
display: table-cell;
|
|
131
|
+
line-height: 50px;
|
|
132
|
+
vertical-align: middle;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.nav-container {
|
|
136
|
+
display: grid;
|
|
137
|
+
grid-template-columns: auto auto;
|
|
138
|
+
background-color: var(--gv-menu--bgc, var(--gv-theme-color-dark, #28444f));
|
|
139
|
+
color: var(--gv-menu--c, var(--gv-theme-font-color-light, #ffffff));
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.has-header .nav-container {
|
|
143
|
+
width: calc(100% - 10rem);
|
|
144
|
+
padding-left: 10rem;
|
|
145
|
+
--gv-link-a--pv: 0;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
:host([sticky]) .has-header .nav-container {
|
|
149
|
+
width: calc(100% - 5rem);
|
|
150
|
+
padding-left: 5rem;
|
|
151
|
+
transition: all 250ms ease-in-out;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.right {
|
|
155
|
+
display: flex;
|
|
156
|
+
padding-right: var(--pr);
|
|
157
|
+
justify-content: center;
|
|
158
|
+
flex-direction: column;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
gv-nav {
|
|
162
|
+
padding-left: var(--pl);
|
|
163
|
+
transition: width 250ms ease-in-out;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
slot[name='right-transition'],
|
|
167
|
+
slot[name='right'] {
|
|
168
|
+
display: flex;
|
|
169
|
+
justify-content: flex-end;
|
|
170
|
+
width: 100%;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.right ::slotted([slot='right']),
|
|
174
|
+
.right ::slotted([slot='right-transition']) {
|
|
175
|
+
align-self: center;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
.right ::slotted([slot='right-transition']) {
|
|
179
|
+
transition: width 250ms ease 250ms;
|
|
180
|
+
width: 70%;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
.right:focus-within ::slotted([slot='right-transition']) {
|
|
184
|
+
animation: slide 250ms 250ms;
|
|
185
|
+
transition: width 250ms ease-in-out 250ms;
|
|
186
|
+
width: 100%;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
.right ::slotted([slot='right']) {
|
|
190
|
+
--gv-button--p: 7px 16px;
|
|
191
|
+
--gv-button--fz: 15px;
|
|
192
|
+
}
|
|
193
|
+
`,
|
|
194
|
+
];
|
|
73
195
|
}
|
|
74
196
|
|
|
75
197
|
constructor() {
|
|
76
198
|
super();
|
|
77
199
|
/** @protected */
|
|
78
|
-
|
|
79
200
|
this._routes = [];
|
|
80
201
|
this.sticky = false;
|
|
81
202
|
this.breakpoints = {
|
|
82
203
|
// ceiled width with 275px tiles and 1rem (16px) gap
|
|
83
|
-
width: [380, 580, 768, 1024]
|
|
204
|
+
width: [380, 580, 768, 1024],
|
|
84
205
|
};
|
|
85
206
|
}
|
|
86
207
|
|
|
87
208
|
set routes(candidate) {
|
|
88
209
|
if (candidate) {
|
|
89
|
-
Promise.resolve(candidate).then(candidates => {
|
|
210
|
+
Promise.resolve(candidate).then((candidates) => {
|
|
90
211
|
if (candidates) {
|
|
91
|
-
Promise.all(candidates).then(futureRoutes => {
|
|
212
|
+
Promise.all(candidates).then((futureRoutes) => {
|
|
92
213
|
if (!isSameRoutes(this._routes, futureRoutes)) {
|
|
93
214
|
this._routes = futureRoutes;
|
|
94
215
|
}
|
|
@@ -102,9 +223,7 @@ export class GvMenu extends withResizeObserver(LitElement) {
|
|
|
102
223
|
}
|
|
103
224
|
}
|
|
104
225
|
|
|
105
|
-
onResize({
|
|
106
|
-
width
|
|
107
|
-
}) {
|
|
226
|
+
onResize({ width }) {
|
|
108
227
|
if (width <= 1024) {
|
|
109
228
|
this._small = true;
|
|
110
229
|
} else {
|
|
@@ -113,19 +232,23 @@ export class GvMenu extends withResizeObserver(LitElement) {
|
|
|
113
232
|
}
|
|
114
233
|
|
|
115
234
|
render() {
|
|
116
|
-
return html`
|
|
117
|
-
'has-header': this._hasHeader
|
|
118
|
-
|
|
235
|
+
return html`
|
|
236
|
+
<div class="${classMap({ 'has-header': this._hasHeader })}">
|
|
237
|
+
<slot name="top"></slot>
|
|
238
|
+
<div class="nav-container">
|
|
239
|
+
<gv-nav .routes="${this._routes}" ?small="${this._small}"></gv-nav>
|
|
240
|
+
<div class="right"><slot name="right-transition"></slot><slot name="right"></slot></div>
|
|
241
|
+
</div>
|
|
242
|
+
</div>
|
|
243
|
+
`;
|
|
119
244
|
}
|
|
120
245
|
|
|
121
246
|
updated(changedProperties) {
|
|
122
247
|
super.updated(changedProperties);
|
|
123
248
|
let _header = false;
|
|
124
|
-
|
|
125
249
|
for (const node of this.childNodes) {
|
|
126
250
|
if (node.nodeType === 1) {
|
|
127
251
|
const child = node.nodeName.toLowerCase() === 'gv-header' ? node : node.querySelector('gv-header');
|
|
128
|
-
|
|
129
252
|
if (child) {
|
|
130
253
|
child.sticky = this.sticky;
|
|
131
254
|
_header = true;
|
|
@@ -133,10 +256,8 @@ export class GvMenu extends withResizeObserver(LitElement) {
|
|
|
133
256
|
}
|
|
134
257
|
}
|
|
135
258
|
}
|
|
136
|
-
|
|
137
259
|
this._hasHeader = _header;
|
|
138
260
|
}
|
|
139
|
-
|
|
140
261
|
}
|
|
262
|
+
|
|
141
263
|
window.customElements.define('gv-menu', GvMenu);
|
|
142
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1tZW51LmpzIl0sIm5hbWVzIjpbIkxpdEVsZW1lbnQiLCJodG1sIiwiY3NzIiwiaXNTYW1lUm91dGVzIiwiY2xhc3NNYXAiLCJ3aXRoUmVzaXplT2JzZXJ2ZXIiLCJHdk1lbnUiLCJwcm9wZXJ0aWVzIiwicm91dGVzIiwidHlwZSIsIkFycmF5Iiwic3RpY2t5IiwiQm9vbGVhbiIsInJlZmxlY3QiLCJfc21hbGwiLCJhdHRyaWJ1dGUiLCJfcm91dGVzIiwiX2hhc0hlYWRlciIsInN0eWxlcyIsImNvbnN0cnVjdG9yIiwiYnJlYWtwb2ludHMiLCJ3aWR0aCIsImNhbmRpZGF0ZSIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsImNhbmRpZGF0ZXMiLCJhbGwiLCJmdXR1cmVSb3V0ZXMiLCJvblJlc2l6ZSIsInJlbmRlciIsInVwZGF0ZWQiLCJjaGFuZ2VkUHJvcGVydGllcyIsIl9oZWFkZXIiLCJub2RlIiwiY2hpbGROb2RlcyIsIm5vZGVUeXBlIiwiY2hpbGQiLCJub2RlTmFtZSIsInRvTG93ZXJDYXNlIiwicXVlcnlTZWxlY3RvciIsIndpbmRvdyIsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxVQUFULEVBQXFCQyxJQUFyQixFQUEyQkMsR0FBM0IsUUFBc0MsS0FBdEM7QUFDQSxPQUFPLHFCQUFQO0FBQ0EsU0FBU0MsWUFBVCxRQUE2QixjQUE3QjtBQUNBLFNBQVNDLFFBQVQsUUFBeUIsMEJBQXpCO0FBQ0EsU0FBU0Msa0JBQVQsUUFBbUMsZ0NBQW5DO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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QSxJQUFJLENBQUNNLGFBQUwsQ0FBbUIsV0FBbkIsQ0FBbkU7O0FBQ0EsWUFBSUgsS0FBSixFQUFXO0FBQ1RBLFVBQUFBLEtBQUssQ0FBQzFCLE1BQU4sR0FBZSxLQUFLQSxNQUFwQjtBQUNBc0IsVUFBQUEsT0FBTyxHQUFHLElBQVY7QUFDQTtBQUNEO0FBQ0Y7QUFDRjs7QUFDRCxTQUFLaEIsVUFBTCxHQUFrQmdCLE9BQWxCO0FBQ0Q7O0FBeE53RDtBQTJOM0RRLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQkMsTUFBdEIsQ0FBNkIsU0FBN0IsRUFBd0NyQyxNQUF4QyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBMaXRFbGVtZW50LCBodG1sLCBjc3MgfSBmcm9tICdsaXQnO1xuaW1wb3J0ICcuLi9tb2xlY3VsZXMvZ3YtbmF2JztcbmltcG9ydCB7IGlzU2FtZVJvdXRlcyB9IGZyb20gJy4uL2xpYi91dGlscyc7XG5pbXBvcnQgeyBjbGFzc01hcCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL2NsYXNzLW1hcCc7XG5pbXBvcnQgeyB3aXRoUmVzaXplT2JzZXJ2ZXIgfSBmcm9tICcuLi9taXhpbnMvd2l0aC1yZXNpemUtb2JzZXJ2ZXInO1xuXG4vKipcbiAqIEEgbWVudVxuICpcbiAqICMjIERldGFpbHNcbiAqICogaGFzIEB0aGVtZSBmYWNldFxuICpcbiAqIEBmaXJlcyBndi1saW5rOmNsaWNrIC0gQ3VzdG9tIGV2ZW50IHdoZW4gbGluayBjbGlja1xuICpcbiAqIEBzbG90IHRvcCAtIFRoZSBjb250ZW50IG9uIHRvcCBvZiBtZW51XG4gKiBAc2xvdCByaWdodCAtIFRoZSBjb250ZW50IGF0IHJpZ2h0XG4gKiBAc2xvdCByaWdodC10cmFuc2l0aW9uIC0gVGhlIGNvbnRlbnQgYXQgcmlnaHQgd2l0aCB0cmFuc2l0aW9uXG4gKlxuICogQGF0dHIge0FycmF5fSByb3V0ZXMgLSBkZWZpbml0aW9uIG9mIHJvdXRlcyBbe2FjdGl2ZTogQm9vbGVhbiwgaWNvbjogU3RyaW5nLCBwYXRoOiBTdHJpbmcsIHRpdGxlOiBQcm9taXNlPFN0cmluZz5dXG4gKiBAY3NzcHJvcCB7Q29sb3J9IFstLWd2LW1lbnUtLWM9dmFyKC0tZ3YtdGhlbWUtZm9udC1jb2xvci1saWdodCwgI2ZmZmZmZildIC0gQ29sb3JcbiAqIEBjc3Nwcm9wIHtDb2xvcn0gWy0tZ3YtbWVudS0tYmdjPXZhcigtLWd2LXRoZW1lLWNvbG9yLWRhcmssICMyODQ0NGYpXSAtIEJhY2tncm91bmQgY29sb3IuXG4gKiBAY3NzcHJvcCB7Q29sb3J9IFstLWd2LW1lbnUtbGluay1hY3RpdmUtLWJkYz12YXIoLS1ndi10aGVtZS1jb2xvci1saWdodCwgIzg2YzNkMCldIC0gQm9yZGVyIGJvdHRvbSBjb2xvciBvZiBhY3RpdmUgbGluay5cbiAqIEBjc3Nwcm9wIHtTdHJpbmd9IFstLWd2LW1lbnUtbGluay1hY3RpdmUtLWJkcz1zb2xpZF0gLSBCb3JkZXIgYm90dG9tIHN0eWxlIG9mIGFjdGl2ZSBsaW5rLlxuICogQGNzc3Byb3Age0xlbmd0aH0gWy0tZ3YtbWVudS1saW5rLWFjdGl2ZS0tYmR3PTAgMCAzcHggMF0gLSBCb3JkZXIgYm90dG9tIHdpZHRoIG9mIGFjdGl2ZSBsaW5rLlxuICogQGNzc3Byb3Age0NvbG9yfSBbLS1ndi1tZW51LWxpbmstYWN0aXZlLS1iZ2M9dHJhbnNwYXJlbnRdIC0gQWN0aXZlIGJhY2tncm91bmQgY29sb3JcbiAqIEBjc3Nwcm9wIHtDb2xvcn0gWy0tZ3YtbWVudS1saW5rLS1iZ2M9dHJhbnNwYXJlbnRdIC0gQmFja2dyb3VuZCBjb2xvclxuICogQGNzc3Byb3Age0xlbmd0aH0gWy0tZ3YtbWVudS1saW5rLWEtLXB2PTBweF0gLSBMaW5rIHZlcnRpY2FsIHBhZGRpbmdcbiAqL1xuZXhwb3J0IGNsYXNzIEd2TWVudSBleHRlbmRzIHdpdGhSZXNpemVPYnNlcnZlcihMaXRFbGVtZW50KSB7XG4gIHN0YXRpYyBnZXQgcHJvcGVydGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLyoqIEByZXF1aXJlZCAqKi9cbiAgICAgIHJvdXRlczogeyB0eXBlOiBBcnJheSB9LFxuICAgICAgc3RpY2t5OiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIF9zbWFsbDogeyB0eXBlOiBCb29sZWFuLCBhdHRyaWJ1dGU6IGZhbHNlIH0sXG4gICAgICBfcm91dGVzOiB7IHR5cGU6IEFycmF5LCBhdHRyaWJ1dGU6IGZhbHNlIH0sXG4gICAgICBfaGFzSGVhZGVyOiB7IHR5cGU6IEJvb2xlYW4sIGF0dHJpYnV0ZTogZmFsc2UgfSxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGdldCBzdHlsZXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC8vIGxhbmd1YWdlPWNzc1xuICAgICAgY3NzYFxuICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgLS1ndi1saW5rLS1jOiB2YXIoLS1ndi1tZW51LS1jLCB2YXIoLS1ndi10aGVtZS1mb250LWNvbG9yLWxpZ2h0LCAjZmZmZmZmKSk7XG4gICAgICAgICAgLS1ndi1saW5rLWFjdGl2ZS0tYzogdmFyKC0tZ3YtbWVudS0tYywgdmFyKC0tZ3YtdGhlbWUtZm9udC1jb2xvci1saWdodCwgI2ZmZmZmZikpO1xuICAgICAgICAgIC0tZ3YtbGluay0tYmdjOiB2YXIoLS1ndi1tZW51LWxpbmstLWJnYywgdHJhbnNwYXJlbnQpO1xuICAgICAgICAgIC0tZ3YtbGluay1hY3RpdmUtLWJnYzogdmFyKC0tZ3YtbWVudS1saW5rLWFjdGl2ZS0tYmdjLCB0cmFuc3BhcmVudCk7XG4gICAgICAgICAgLS1ndi1saW5rLWFjdGl2ZS0tYmRjOiB2YXIoLS1ndi1tZW51LWxpbmstYWN0aXZlLS1iZGMsIHZhcigtLWd2LXRoZW1lLWNvbG9yLWxpZ2h0LCAjODZjM2QwKSk7XG4gICAgICAgICAgLS1ndi1saW5rLWFjdGl2ZS0tYmRzOiB2YXIoLS1ndi1tZW51LWxpbmstYWN0aXZlLS1iZHMsIHNvbGlkKTtcbiAgICAgICAgICAtLWd2LWxpbmstYWN0aXZlLS1iZHc6IHZhcigtLWd2LW1lbnUtbGluay1hY3RpdmUtLWJkdywgMCAwIDNweCAwKTtcbiAgICAgICAgICAtLXByOiB2YXIoLS1ndi10aGVtZS1sYXlvdXQtLXByLCA0cmVtKTtcbiAgICAgICAgICAtLXBsOiB2YXIoLS1ndi10aGVtZS1sYXlvdXQtLXBsLCA0cmVtKTtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tZ3YtdGhlbWUtZm9udC1zaXplLXMsIDEycHgpO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3N0aWNreV0pIGd2LW5hdiB7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDE0cHg7XG4gICAgICAgICAgLS1ndi1saW5rLWljb24tLXM6IDIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbc3RpY2t5XSkgLmhhcy1oZWFkZXIgZ3YtbmF2IHtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMzRweDtcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFtzdGlja3ldKSA6OnNsb3R0ZWQoW3Nsb3Q9J3RvcCddKSB7XG4gICAgICAgICAgdHJhbnNpdGlvbjogaGVpZ2h0IDI1MG1zIGVhc2UtaW4tb3V0O1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3ctbHQtMTAyNF0pIHtcbiAgICAgICAgICAtLXByOiA1cHg7XG4gICAgICAgICAgLS1wbDogNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3ctbHQtNzY4XSkgLm5hdi1jb250YWluZXIge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIHBhZGRpbmctbGVmdDogdmFyKC0tcGwpO1xuICAgICAgICAgIC0tZ3YtbGluay1hLS1wdjogdmFyKC0tZ3YtbWVudS1saW5rLWEtLXB2LCAwcHgpO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3ctbHQtNTgwXSkgLm5hdi1jb250YWluZXIge1xuICAgICAgICAgIGZsZXg6IGF1dG87XG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3ctbHQtNTgwXSkgZ3YtbmF2IHtcbiAgICAgICAgICBmbGV4OiBhdXRvO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3ctbHQtNTgwXSkgLnJpZ2h0IHtcbiAgICAgICAgICBmbGV4OiBhdXRvO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3ctbHQtMzgwXSkgLm5hdi1jb250YWluZXIge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3ctbHQtMzgwXSkgZ3YtbmF2IHtcbiAgICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbdy1sdC0zODBdKSAucmlnaHQge1xuICAgICAgICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kO1xuICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGd2LW5hdiB7XG4gICAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgICAgICBsaW5lLWhlaWdodDogNTBweDtcbiAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICB9XG5cbiAgICAgICAgLm5hdi1jb250YWluZXIge1xuICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIGF1dG87XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZ3YtbWVudS0tYmdjLCB2YXIoLS1ndi10aGVtZS1jb2xvci1kYXJrLCAjMjg0NDRmKSk7XG4gICAgICAgICAgY29sb3I6IHZhcigtLWd2LW1lbnUtLWMsIHZhcigtLWd2LXRoZW1lLWZvbnQtY29sb3ItbGlnaHQsICNmZmZmZmYpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oYXMtaGVhZGVyIC5uYXYtY29udGFpbmVyIHtcbiAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gMTByZW0pO1xuICAgICAgICAgIHBhZGRpbmctbGVmdDogMTByZW07XG4gICAgICAgICAgLS1ndi1saW5rLWEtLXB2OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3N0aWNreV0pIC5oYXMtaGVhZGVyIC5uYXYtY29udGFpbmVyIHtcbiAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gNXJlbSk7XG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiA1cmVtO1xuICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAyNTBtcyBlYXNlLWluLW91dDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5yaWdodCB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1wcik7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGd2LW5hdiB7XG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1wbCk7XG4gICAgICAgICAgdHJhbnNpdGlvbjogd2lkdGggMjUwbXMgZWFzZS1pbi1vdXQ7XG4gICAgICAgIH1cblxuICAgICAgICBzbG90W25hbWU9J3JpZ2h0LXRyYW5zaXRpb24nXSxcbiAgICAgICAgc2xvdFtuYW1lPSdyaWdodCddIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAucmlnaHQgOjpzbG90dGVkKFtzbG90PSdyaWdodCddKSxcbiAgICAgICAgLnJpZ2h0IDo6c2xvdHRlZChbc2xvdD0ncmlnaHQtdHJhbnNpdGlvbiddKSB7XG4gICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLnJpZ2h0IDo6c2xvdHRlZChbc2xvdD0ncmlnaHQtdHJhbnNpdGlvbiddKSB7XG4gICAgICAgICAgdHJhbnNpdGlvbjogd2lkdGggMjUwbXMgZWFzZSAyNTBtcztcbiAgICAgICAgICB3aWR0aDogNzAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLnJpZ2h0OmZvY3VzLXdpdGhpbiA6OnNsb3R0ZWQoW3Nsb3Q9J3JpZ2h0LXRyYW5zaXRpb24nXSkge1xuICAgICAgICAgIGFuaW1hdGlvbjogc2xpZGUgMjUwbXMgMjUwbXM7XG4gICAgICAgICAgdHJhbnNpdGlvbjogd2lkdGggMjUwbXMgZWFzZS1pbi1vdXQgMjUwbXM7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAucmlnaHQgOjpzbG90dGVkKFtzbG90PSdyaWdodCddKSB7XG4gICAgICAgICAgLS1ndi1idXR0b24tLXA6IDdweCAxNnB4O1xuICAgICAgICAgIC0tZ3YtYnV0dG9uLS1mejogMTVweDtcbiAgICAgICAgfVxuICAgICAgYCxcbiAgICBdO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIHRoaXMuX3JvdXRlcyA9IFtdO1xuICAgIHRoaXMuc3RpY2t5ID0gZmFsc2U7XG4gICAgdGhpcy5icmVha3BvaW50cyA9IHtcbiAgICAgIC8vIGNlaWxlZCB3aWR0aCB3aXRoIDI3NXB4IHRpbGVzIGFuZCAxcmVtICgxNnB4KSBnYXBcbiAgICAgIHdpZHRoOiBbMzgwLCA1ODAsIDc2OCwgMTAyNF0sXG4gICAgfTtcbiAgfVxuXG4gIHNldCByb3V0ZXMoY2FuZGlkYXRlKSB7XG4gICAgaWYgKGNhbmRpZGF0ZSkge1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKGNhbmRpZGF0ZSkudGhlbigoY2FuZGlkYXRlcykgPT4ge1xuICAgICAgICBpZiAoY2FuZGlkYXRlcykge1xuICAgICAgICAgIFByb21pc2UuYWxsKGNhbmRpZGF0ZXMpLnRoZW4oKGZ1dHVyZVJvdXRlcykgPT4ge1xuICAgICAgICAgICAgaWYgKCFpc1NhbWVSb3V0ZXModGhpcy5fcm91dGVzLCBmdXR1cmVSb3V0ZXMpKSB7XG4gICAgICAgICAgICAgIHRoaXMuX3JvdXRlcyA9IGZ1dHVyZVJvdXRlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9yb3V0ZXMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3JvdXRlcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIG9uUmVzaXplKHsgd2lkdGggfSkge1xuICAgIGlmICh3aWR0aCA8PSAxMDI0KSB7XG4gICAgICB0aGlzLl9zbWFsbCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NtYWxsID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cIiR7Y2xhc3NNYXAoeyAnaGFzLWhlYWRlcic6IHRoaXMuX2hhc0hlYWRlciB9KX1cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInRvcFwiPjwvc2xvdD5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1jb250YWluZXJcIj5cbiAgICAgICAgICA8Z3YtbmF2IC5yb3V0ZXM9XCIke3RoaXMuX3JvdXRlc31cIiA/c21hbGw9XCIke3RoaXMuX3NtYWxsfVwiPjwvZ3YtbmF2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPjxzbG90IG5hbWU9XCJyaWdodC10cmFuc2l0aW9uXCI+PC9zbG90PjxzbG90IG5hbWU9XCJyaWdodFwiPjwvc2xvdD48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG5cbiAgdXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcykge1xuICAgIHN1cGVyLnVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIGxldCBfaGVhZGVyID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCBub2RlIG9mIHRoaXMuY2hpbGROb2Rlcykge1xuICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgICAgY29uc3QgY2hpbGQgPSBub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdndi1oZWFkZXInID8gbm9kZSA6IG5vZGUucXVlcnlTZWxlY3RvcignZ3YtaGVhZGVyJyk7XG4gICAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICAgIGNoaWxkLnN0aWNreSA9IHRoaXMuc3RpY2t5O1xuICAgICAgICAgIF9oZWFkZXIgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2hhc0hlYWRlciA9IF9oZWFkZXI7XG4gIH1cbn1cblxud2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZ3YtbWVudScsIEd2TWVudSk7XG4iXX0=
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { css, html, LitElement } from 'lit';
|
|
17
17
|
import { dispatchCustomEvent } from '../lib/events';
|
|
18
|
+
|
|
18
19
|
/**
|
|
19
20
|
* The newsletter subscription page
|
|
20
21
|
*
|
|
@@ -34,58 +35,126 @@ import { dispatchCustomEvent } from '../lib/events';
|
|
|
34
35
|
* @attr {String} linkedinUrl - The url to linkedin page
|
|
35
36
|
*
|
|
36
37
|
*/
|
|
37
|
-
|
|
38
38
|
export class GvNewsletterSubscription extends LitElement {
|
|
39
39
|
static get properties() {
|
|
40
40
|
return {
|
|
41
|
-
title: {
|
|
42
|
-
|
|
43
|
-
},
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
},
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
},
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
},
|
|
54
|
-
skipLabel: {
|
|
55
|
-
type: String,
|
|
56
|
-
attribute: 'skip-label'
|
|
57
|
-
},
|
|
58
|
-
taglines: {
|
|
59
|
-
type: Array
|
|
60
|
-
},
|
|
61
|
-
email: {
|
|
62
|
-
type: String
|
|
63
|
-
},
|
|
64
|
-
disabled: {
|
|
65
|
-
type: Boolean
|
|
66
|
-
},
|
|
67
|
-
githubUrl: {
|
|
68
|
-
type: String,
|
|
69
|
-
attribute: 'github-url'
|
|
70
|
-
},
|
|
71
|
-
twitterUrl: {
|
|
72
|
-
type: String,
|
|
73
|
-
attribute: 'twitter-url'
|
|
74
|
-
},
|
|
75
|
-
linkedinUrl: {
|
|
76
|
-
type: String,
|
|
77
|
-
attribute: 'linkedin-url'
|
|
78
|
-
},
|
|
79
|
-
_invalid: {
|
|
80
|
-
type: Boolean,
|
|
81
|
-
attribute: false
|
|
82
|
-
}
|
|
41
|
+
title: { type: String },
|
|
42
|
+
header: { type: String },
|
|
43
|
+
placeholder: { type: String },
|
|
44
|
+
subscribeLabel: { type: String, attribute: 'subscribe-label' },
|
|
45
|
+
skipLabel: { type: String, attribute: 'skip-label' },
|
|
46
|
+
taglines: { type: Array },
|
|
47
|
+
email: { type: String },
|
|
48
|
+
disabled: { type: Boolean },
|
|
49
|
+
githubUrl: { type: String, attribute: 'github-url' },
|
|
50
|
+
twitterUrl: { type: String, attribute: 'twitter-url' },
|
|
51
|
+
linkedinUrl: { type: String, attribute: 'linkedin-url' },
|
|
52
|
+
_invalid: { type: Boolean, attribute: false },
|
|
83
53
|
};
|
|
84
54
|
}
|
|
85
55
|
|
|
86
56
|
static get styles() {
|
|
87
|
-
return [
|
|
88
|
-
|
|
57
|
+
return [
|
|
58
|
+
// language=css
|
|
59
|
+
css`
|
|
60
|
+
:host {
|
|
61
|
+
box-sizing: border-box;
|
|
62
|
+
margin: 0.2rem;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.newsletter-container {
|
|
66
|
+
display: flex;
|
|
67
|
+
flex-direction: column;
|
|
68
|
+
align-items: center;
|
|
69
|
+
justify-content: space-between;
|
|
70
|
+
max-width: 680px;
|
|
71
|
+
box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 5px 5px 0 rgba(0, 0, 0, 0.24);
|
|
72
|
+
padding: 25px 20px 5px 20px;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.newsletter__header {
|
|
76
|
+
text-transform: uppercase;
|
|
77
|
+
font-style: oblique;
|
|
78
|
+
text-align: center;
|
|
79
|
+
font-size: 16px;
|
|
80
|
+
font-weight: bold;
|
|
81
|
+
padding: 5px 35px;
|
|
82
|
+
color: var(--gv-theme-neutral-color-lightest, #ffffff);
|
|
83
|
+
background-color: var(--gv-theme-color-light, #86c3d0);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.newsletter__title {
|
|
87
|
+
display: flex;
|
|
88
|
+
flex-direction: column;
|
|
89
|
+
align-items: center;
|
|
90
|
+
font-size: 20px;
|
|
91
|
+
text-transform: uppercase;
|
|
92
|
+
padding: 20px;
|
|
93
|
+
color: var(--gv-theme-color-light, #86c3d0);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.newsletter__title-highlight {
|
|
97
|
+
font-size: 30px;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.newsletter__email {
|
|
101
|
+
display: flex;
|
|
102
|
+
flex-direction: column;
|
|
103
|
+
width: 50%;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.newsletter__taglines {
|
|
107
|
+
display: flex;
|
|
108
|
+
flex-direction: row;
|
|
109
|
+
justify-content: space-between;
|
|
110
|
+
align-items: center;
|
|
111
|
+
text-align: center;
|
|
112
|
+
text-transform: uppercase;
|
|
113
|
+
font-size: 14px;
|
|
114
|
+
height: 20%;
|
|
115
|
+
margin-top: 20px;
|
|
116
|
+
padding: 10px 0;
|
|
117
|
+
color: var(--gv-theme-color-darker, #383e3f);
|
|
118
|
+
border-bottom: solid 1px var(--gv-theme-color-darker, #383e3f);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.newsletter__tagline {
|
|
122
|
+
display: flex;
|
|
123
|
+
flex-basis: 100%;
|
|
124
|
+
flex-direction: column;
|
|
125
|
+
justify-content: center;
|
|
126
|
+
align-items: center;
|
|
127
|
+
height: 100%;
|
|
128
|
+
font-weight: bold;
|
|
129
|
+
padding: 0 15px;
|
|
130
|
+
border-right: solid 1px var(--gv-theme-color-darker, #383e3f);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.newsletter__tagline.last {
|
|
134
|
+
border-right: none;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.newsletter__tagline-text {
|
|
138
|
+
width: 100%;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.newsletter__skip {
|
|
142
|
+
margin-top: 20px;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.social {
|
|
146
|
+
width: 100%;
|
|
147
|
+
display: flex;
|
|
148
|
+
flex-direction: row;
|
|
149
|
+
justify-content: flex-end;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.social-link {
|
|
153
|
+
--gv-icon--c: var(--gv-theme-color-light, #86c3d0);
|
|
154
|
+
--gv-icon--s: 32px;
|
|
155
|
+
}
|
|
156
|
+
`,
|
|
157
|
+
];
|
|
89
158
|
}
|
|
90
159
|
|
|
91
160
|
constructor() {
|
|
@@ -105,7 +174,80 @@ export class GvNewsletterSubscription extends LitElement {
|
|
|
105
174
|
}
|
|
106
175
|
|
|
107
176
|
render() {
|
|
108
|
-
return html`
|
|
177
|
+
return html`
|
|
178
|
+
<div class="newsletter-container">
|
|
179
|
+
<div class="newsletter__header">
|
|
180
|
+
${this.header}
|
|
181
|
+
</div>
|
|
182
|
+
<div class="newsletter__title">
|
|
183
|
+
<span>Join the</span>
|
|
184
|
+
<span class="newsletter__title-highlight">${this.title}</span>
|
|
185
|
+
<span>Today</span>
|
|
186
|
+
</div>
|
|
187
|
+
<div class="newsletter__email">
|
|
188
|
+
<gv-input
|
|
189
|
+
id="email"
|
|
190
|
+
name="email"
|
|
191
|
+
@gv-input:submit="${this._onSubscribe}"
|
|
192
|
+
@gv-input:input="${this._onInputChange}"
|
|
193
|
+
type="email"
|
|
194
|
+
required
|
|
195
|
+
.value="${this.email}"
|
|
196
|
+
.disabled=${this.disabled}
|
|
197
|
+
placeholder="${this.placeholder}"
|
|
198
|
+
></gv-input>
|
|
199
|
+
<gv-button @click="${this._onSubscribe}"
|
|
200
|
+
id="email-submit"
|
|
201
|
+
provider="graviteeio_am"
|
|
202
|
+
icon-right="navigation:angle-right"
|
|
203
|
+
.disabled=${!this.disabled && this._invalid}>
|
|
204
|
+
${this.subscribeLabel}
|
|
205
|
+
</gv-button>
|
|
206
|
+
</div>
|
|
207
|
+
${
|
|
208
|
+
this.taglines.length > 0
|
|
209
|
+
? html` <div class="newsletter__taglines">
|
|
210
|
+
${this.taglines.map(
|
|
211
|
+
(item, i, arr) => html`
|
|
212
|
+
<div class="newsletter__tagline ${i === arr.length - 1 ? 'last' : ''}">
|
|
213
|
+
<div class="newsletter__tagline-text">${item}</div>
|
|
214
|
+
</div>
|
|
215
|
+
`,
|
|
216
|
+
)}
|
|
217
|
+
</div>`
|
|
218
|
+
: ''
|
|
219
|
+
}
|
|
220
|
+
<div class="newsletter__skip">
|
|
221
|
+
<gv-button @click="${this._onSkip}"
|
|
222
|
+
provider="graviteeio_am"
|
|
223
|
+
icon-right="navigation:angle-right"
|
|
224
|
+
small
|
|
225
|
+
outlined>
|
|
226
|
+
${this.skipLabel}
|
|
227
|
+
</gv-button>
|
|
228
|
+
</div>
|
|
229
|
+
<div class="social">
|
|
230
|
+
<gv-button class="social-link"
|
|
231
|
+
link
|
|
232
|
+
icon="thirdparty:github"
|
|
233
|
+
.href="${this.githubUrl}"
|
|
234
|
+
@gv-button:click="${this._navigateSocial.bind(this, this.githubUrl)}">
|
|
235
|
+
</gv-button>
|
|
236
|
+
<gv-button class="social-link"
|
|
237
|
+
link icon="thirdparty:twitter"
|
|
238
|
+
.href="${this.twitterUrl}"
|
|
239
|
+
@gv-button:click="${this._navigateSocial.bind(this, this.twitterUrl)}">
|
|
240
|
+
</gv-button>
|
|
241
|
+
<gv-button class="social-link"
|
|
242
|
+
link
|
|
243
|
+
icon="thirdparty:linkedin"
|
|
244
|
+
.href="${this.linkedinUrl}"
|
|
245
|
+
@gv-button:click="${this._navigateSocial.bind(this, this.linkedinUrl)}">
|
|
246
|
+
</gv-button>
|
|
247
|
+
</gv-link>
|
|
248
|
+
</div>
|
|
249
|
+
</div>
|
|
250
|
+
`;
|
|
109
251
|
}
|
|
110
252
|
|
|
111
253
|
_onSubscribe() {
|
|
@@ -124,7 +266,6 @@ export class GvNewsletterSubscription extends LitElement {
|
|
|
124
266
|
this._invalid = e.target.invalid;
|
|
125
267
|
this.email = e.detail;
|
|
126
268
|
}
|
|
127
|
-
|
|
128
269
|
}
|
|
270
|
+
|
|
129
271
|
window.customElements.define('gv-newsletter-subscription', GvNewsletterSubscription);
|
|
130
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1uZXdzbGV0dGVyLXN1YnNjcmlwdGlvbi5qcyJdLCJuYW1lcyI6WyJjc3MiLCJodG1sIiwiTGl0RWxlbWVudCIsImRpc3BhdGNoQ3VzdG9tRXZlbnQiLCJHdk5ld3NsZXR0ZXJTdWJzY3JpcHRpb24iLCJwcm9wZXJ0aWVzIiwidGl0bGUiLCJ0eXBlIiwiU3RyaW5nIiwiaGVhZGVyIiwicGxhY2Vob2xkZXIiLCJzdWJzY3JpYmVMYWJlbCIsImF0dHJpYnV0ZSIsInNraXBMYWJlbCIsInRhZ2xpbmVzIiwiQXJyYXkiLCJlbWFpbCIsImRpc2FibGVkIiwiQm9vbGVhbiIsImdpdGh1YlVybCIsInR3aXR0ZXJVcmwiLCJsaW5rZWRpblVybCIsIl9pbnZhbGlkIiwic3R5bGVzIiwiY29uc3RydWN0b3IiLCJyZW5kZXIiLCJfb25TdWJzY3JpYmUiLCJfb25JbnB1dENoYW5nZSIsImxlbmd0aCIsIm1hcCIsIml0ZW0iLCJpIiwiYXJyIiwiX29uU2tpcCIsIl9uYXZpZ2F0ZVNvY2lhbCIsImJpbmQiLCJ1cmwiLCJ3aW5kb3ciLCJvcGVuIiwiZSIsInRhcmdldCIsImludmFsaWQiLCJkZXRhaWwiLCJjdXN0b21FbGVtZW50cyIsImRlZmluZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsR0FBVCxFQUFjQyxJQUFkLEVBQW9CQyxVQUFwQixRQUFzQyxLQUF0QztBQUNBLFNBQVNDLG1CQUFULFFBQW9DLGVBQXBDO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyx3QkFBTixTQUF1Q0YsVUFBdkMs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NSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IGNzcywgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBkaXNwYXRjaEN1c3RvbUV2ZW50IH0gZnJvbSAnLi4vbGliL2V2ZW50cyc7XG5cbi8qKlxuICogVGhlIG5ld3NsZXR0ZXIgc3Vic2NyaXB0aW9uIHBhZ2VcbiAqXG4gKiBAZmlyZXMgZ3YtbmV3c2xldHRlci1zdWJzY3JpcHRpb246c3Vic2NyaWJlIC0gQ3VzdG9tIGV2ZW50IHdoZW4gbGluayBjbGlja1xuICogQGZpcmVzIGd2LW5ld3NsZXR0ZXItc3Vic2NyaXB0aW9uOnNraXAgLSBDdXN0b20gZXZlbnQgd2hlbiBsaW5rIGNsaWNrXG4gKlxuICogQGF0dHIge1N0cmluZ30gdGl0bGUgLSBUaGUgdGl0bGUgb2YgbmV3c2xldHRlciBzdWJzY3JpcHRpb24gY29udGFpbmVyXG4gKiBAYXR0ciB7U3RyaW5nfSBoZWFkZXIgLSBUaGUgaGVhZGVyIG9mIG5ld3NsZXR0ZXIgc3Vic2NyaXB0aW9uIGNvbnRhaW5lclxuICogQGF0dHIge1N0cmluZ30gcGxhY2Vob2xkZXIgLSBUaGUgcGxhY2Vob2xkZXIgdXNlZCBmb3IgdGhlIGVtYWlsIGlucHV0XG4gKiBAYXR0ciB7U3RyaW5nfSBzdWJzY3JpYmVMYWJlbCAtIFRoZSB0ZXh0IG9mIHRoZSBzdWJzY3JpYmUgYnV0dG9uXG4gKiBAYXR0ciB7U3RyaW5nfSBza2lwTGFiZWwgLSBUaGUgdGV4dCBvZiB0aGUgc2tpcCBidXR0b25cbiAqIEBhdHRyIHtBcnJheX0gdGFnbGluZXMgLSBUaGUgdGFnbGluZXMgdG8gcHJvbW90ZSB0aGUgbmV3c2xldHRlciBzdWJzY3JpcHRpb25cbiAqIEBhdHRyIHtTdHJpbmd9IGVtYWlsIC0gVGhlIGVtYWlsIHZhbHVlXG4gKiBAYXR0ciB7Qm9vbGVhbn0gZGlzYWJsZWQgLSBUaGUgZGlzYWJsZWQgc3RhdGUgb2YgZW1haWwgaW5wdXRcbiAqIEBhdHRyIHtTdHJpbmd9IGdpdGh1YlVybCAtIFRoZSB1cmwgdG8gZ2l0aHViIHBhZ2VcbiAqIEBhdHRyIHtTdHJpbmd9IHR3aXR0ZXJVcmwgLSBUaGUgdXJsIHRvIHR3aXR0ZXIgcGFnZVxuICogQGF0dHIge1N0cmluZ30gbGlua2VkaW5VcmwgLSBUaGUgdXJsIHRvIGxpbmtlZGluIHBhZ2VcbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBHdk5ld3NsZXR0ZXJTdWJzY3JpcHRpb24gZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgc3RhdGljIGdldCBwcm9wZXJ0aWVzKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogeyB0eXBlOiBTdHJpbmcgfSxcbiAgICAgIGhlYWRlcjogeyB0eXBlOiBTdHJpbmcgfSxcbiAgICAgIHBsYWNlaG9sZGVyOiB7IHR5cGU6IFN0cmluZyB9LFxuICAgICAgc3Vic2NyaWJlTGFiZWw6IHsgdHlwZTogU3RyaW5nLCBhdHRyaWJ1dGU6ICdzdWJzY3JpYmUtbGFiZWwnIH0sXG4gICAgICBza2lwTGFiZWw6IHsgdHlwZTogU3RyaW5nLCBhdHRyaWJ1dGU6ICdza2lwLWxhYmVsJyB9LFxuICAgICAgdGFnbGluZXM6IHsgdHlwZTogQXJyYXkgfSxcbiAgICAgIGVtYWlsOiB7IHR5cGU6IFN0cmluZyB9LFxuICAgICAgZGlzYWJsZWQ6IHsgdHlwZTogQm9vbGVhbiB9LFxuICAgICAgZ2l0aHViVXJsOiB7IHR5cGU6IFN0cmluZywgYXR0cmlidXRlOiAnZ2l0aHViLXVybCcgfSxcbiAgICAgIHR3aXR0ZXJVcmw6IHsgdHlwZTogU3RyaW5nLCBhdHRyaWJ1dGU6ICd0d2l0dGVyLXVybCcgfSxcbiAgICAgIGxpbmtlZGluVXJsOiB7IHR5cGU6IFN0cmluZywgYXR0cmlidXRlOiAnbGlua2VkaW4tdXJsJyB9LFxuICAgICAgX2ludmFsaWQ6IHsgdHlwZTogQm9vbGVhbiwgYXR0cmlidXRlOiBmYWxzZSB9LFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZ2V0IHN0eWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgLy8gbGFuZ3VhZ2U9Y3NzXG4gICAgICBjc3NgXG4gICAgICAgIDpob3N0IHtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIG1hcmdpbjogMC4ycmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLm5ld3NsZXR0ZXItY29udGFpbmVyIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgICAgbWF4LXdpZHRoOiA2ODBweDtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMjBweCAwIHJnYmEoMCwgMCwgMCwgMC4yKSwgMCA1cHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjI0KTtcbiAgICAgICAgICBwYWRkaW5nOiAyNXB4IDIwcHggNXB4IDIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAubmV3c2xldHRlcl9faGVhZGVyIHtcbiAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgIGZvbnQtc3R5bGU6IG9ibGlxdWU7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICBwYWRkaW5nOiA1cHggMzVweDtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tZ3YtdGhlbWUtbmV1dHJhbC1jb2xvci1saWdodGVzdCwgI2ZmZmZmZik7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZ3YtdGhlbWUtY29sb3ItbGlnaHQsICM4NmMzZDApO1xuICAgICAgICB9XG5cbiAgICAgICAgLm5ld3NsZXR0ZXJfX3RpdGxlIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICBwYWRkaW5nOiAyMHB4O1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1ndi10aGVtZS1jb2xvci1saWdodCwgIzg2YzNkMCk7XG4gICAgICAgIH1cblxuICAgICAgICAubmV3c2xldHRlcl9fdGl0bGUtaGlnaGxpZ2h0IHtcbiAgICAgICAgICBmb250LXNpemU6IDMwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAubmV3c2xldHRlcl9fZW1haWwge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLm5ld3NsZXR0ZXJfX3RhZ2xpbmVzIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgIGhlaWdodDogMjAlO1xuICAgICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgICAgICAgcGFkZGluZzogMTBweCAwO1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1ndi10aGVtZS1jb2xvci1kYXJrZXIsICMzODNlM2YpO1xuICAgICAgICAgIGJvcmRlci1ib3R0b206IHNvbGlkIDFweCB2YXIoLS1ndi10aGVtZS1jb2xvci1kYXJrZXIsICMzODNlM2YpO1xuICAgICAgICB9XG5cbiAgICAgICAgLm5ld3NsZXR0ZXJfX3RhZ2xpbmUge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1iYXNpczogMTAwJTtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgIHBhZGRpbmc6IDAgMTVweDtcbiAgICAgICAgICBib3JkZXItcmlnaHQ6IHNvbGlkIDFweCB2YXIoLS1ndi10aGVtZS1jb2xvci1kYXJrZXIsICMzODNlM2YpO1xuICAgICAgICB9XG5cbiAgICAgICAgLm5ld3NsZXR0ZXJfX3RhZ2xpbmUubGFzdCB7XG4gICAgICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLm5ld3NsZXR0ZXJfX3RhZ2xpbmUtdGV4dCB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAubmV3c2xldHRlcl9fc2tpcCB7XG4gICAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zb2NpYWwge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgLnNvY2lhbC1saW5rIHtcbiAgICAgICAgICAtLWd2LWljb24tLWM6IHZhcigtLWd2LXRoZW1lLWNvbG9yLWxpZ2h0LCAjODZjM2QwKTtcbiAgICAgICAgICAtLWd2LWljb24tLXM6IDMycHg7XG4gICAgICAgIH1cbiAgICAgIGAsXG4gICAgXTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5oZWFkZXIgPSAnQ3VzdG9tZXJzIHByb2Nlc3Mgb3ZlciAxIGJpbGxpb24gcmVxdWVzdHMgdGhyb3VnaCB0aGUgZ3Jhdml0ZWUuaW8gZ2F0ZXdheSBpbiBqdXN0IG9uZSB3ZWVrJztcbiAgICB0aGlzLnRpdGxlID0gJ0NvbW11bml0eSBvZiBhcGkgbWFzdGVycyc7XG4gICAgdGhpcy5wbGFjZWhvbGRlciA9ICdFbnRlciB5b3VyIGVtYWlsJztcbiAgICB0aGlzLnN1YnNjcmliZUxhYmVsID0gJ0JlY29tZSBhbiBBUEkgbWFzdGVyIG5vdyc7XG4gICAgdGhpcy50YWdsaW5lcyA9IFsnTmV3IHJlbGVhc2UgbW9udGhseSB1cGRhdGVzJywgJ0ZyZWUgdHJpYWwgb2YgR3Jhdml0ZWUuSU8gZW50ZXJwcmlzZScsICdTaGFyZSB5b3VyIGV4cGVyaWVuY2VzIHdpdGggb3RoZXIgbWVtYmVycyddO1xuICAgIHRoaXMuc2tpcExhYmVsID0gJ1NraXAnO1xuICAgIHRoaXMuZW1haWwgPSAnJztcbiAgICB0aGlzLmRpc2FibGVkID0gZmFsc2U7XG4gICAgdGhpcy5faW52YWxpZCA9IHRydWU7XG4gICAgdGhpcy5naXRodWJVcmwgPSAnaHR0cHM6Ly9naXRodWIuY29tL2dyYXZpdGVlLWlvJztcbiAgICB0aGlzLnR3aXR0ZXJVcmwgPSAnaHR0cHM6Ly90d2l0dGVyLmNvbS9HcmF2aXRlZUlPJztcbiAgICB0aGlzLmxpbmtlZGluVXJsID0gJ2h0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21wYW55L2dyYXZpdGVlLWlvLyc7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuZXdzbGV0dGVyLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXdzbGV0dGVyX19oZWFkZXJcIj5cbiAgICAgICAgICAgICR7dGhpcy5oZWFkZXJ9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm5ld3NsZXR0ZXJfX3RpdGxlXCI+XG4gICAgICAgICAgICA8c3Bhbj5Kb2luIHRoZTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmV3c2xldHRlcl9fdGl0bGUtaGlnaGxpZ2h0XCI+JHt0aGlzLnRpdGxlfTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPlRvZGF5PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXdzbGV0dGVyX19lbWFpbFwiPlxuICAgICAgICAgICAgPGd2LWlucHV0XG4gICAgICAgICAgICAgIGlkPVwiZW1haWxcIlxuICAgICAgICAgICAgICBuYW1lPVwiZW1haWxcIlxuICAgICAgICAgICAgICBAZ3YtaW5wdXQ6c3VibWl0PVwiJHt0aGlzLl9vblN1YnNjcmliZX1cIlxuICAgICAgICAgICAgICBAZ3YtaW5wdXQ6aW5wdXQ9XCIke3RoaXMuX29uSW5wdXRDaGFuZ2V9XCJcbiAgICAgICAgICAgICAgdHlwZT1cImVtYWlsXCJcbiAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgLnZhbHVlPVwiJHt0aGlzLmVtYWlsfVwiXG4gICAgICAgICAgICAgIC5kaXNhYmxlZD0ke3RoaXMuZGlzYWJsZWR9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiJHt0aGlzLnBsYWNlaG9sZGVyfVwiXG4gICAgICAgICAgICA+PC9ndi1pbnB1dD5cbiAgICAgICAgICAgIDxndi1idXR0b24gQGNsaWNrPVwiJHt0aGlzLl9vblN1YnNjcmliZX1cIlxuICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVtYWlsLXN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVyPVwiZ3Jhdml0ZWVpb19hbVwiXG4gICAgICAgICAgICAgICAgICAgICAgIGljb24tcmlnaHQ9XCJuYXZpZ2F0aW9uOmFuZ2xlLXJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgLmRpc2FibGVkPSR7IXRoaXMuZGlzYWJsZWQgJiYgdGhpcy5faW52YWxpZH0+XG4gICAgICAgICAgICAgICR7dGhpcy5zdWJzY3JpYmVMYWJlbH1cbiAgICAgICAgICAgIDwvZ3YtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICR7XG4gICAgICAgICAgICB0aGlzLnRhZ2xpbmVzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgPyBodG1sYCA8ZGl2IGNsYXNzPVwibmV3c2xldHRlcl9fdGFnbGluZXNcIj5cbiAgICAgICAgICAgICAgICAgICR7dGhpcy50YWdsaW5lcy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtLCBpLCBhcnIpID0+IGh0bWxgXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ld3NsZXR0ZXJfX3RhZ2xpbmUgJHtpID09PSBhcnIubGVuZ3RoIC0gMSA/ICdsYXN0JyA6ICcnfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ld3NsZXR0ZXJfX3RhZ2xpbmUtdGV4dFwiPiR7aXRlbX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgYCxcbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9kaXY+YFxuICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgfVxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXdzbGV0dGVyX19za2lwXCI+XG4gICAgICAgICAgICA8Z3YtYnV0dG9uIEBjbGljaz1cIiR7dGhpcy5fb25Ta2lwfVwiXG4gICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVyPVwiZ3Jhdml0ZWVpb19hbVwiXG4gICAgICAgICAgICAgICAgICAgICAgIGljb24tcmlnaHQ9XCJuYXZpZ2F0aW9uOmFuZ2xlLXJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgc21hbGxcbiAgICAgICAgICAgICAgICAgICAgICAgb3V0bGluZWQ+XG4gICAgICAgICAgICAgICR7dGhpcy5za2lwTGFiZWx9XG4gICAgICAgICAgICA8L2d2LWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic29jaWFsXCI+XG4gICAgICAgICAgICA8Z3YtYnV0dG9uIGNsYXNzPVwic29jaWFsLWxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICBsaW5rXG4gICAgICAgICAgICAgICAgICAgICAgIGljb249XCJ0aGlyZHBhcnR5OmdpdGh1YlwiXG4gICAgICAgICAgICAgICAgICAgICAgIC5ocmVmPVwiJHt0aGlzLmdpdGh1YlVybH1cIlxuICAgICAgICAgICAgICAgICAgICAgICBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLl9uYXZpZ2F0ZVNvY2lhbC5iaW5kKHRoaXMsIHRoaXMuZ2l0aHViVXJsKX1cIj5cbiAgICAgICAgICAgIDwvZ3YtYnV0dG9uPlxuICAgICAgICAgICAgPGd2LWJ1dHRvbiBjbGFzcz1cInNvY2lhbC1saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgbGluayBpY29uPVwidGhpcmRwYXJ0eTp0d2l0dGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgLmhyZWY9XCIke3RoaXMudHdpdHRlclVybH1cIlxuICAgICAgICAgICAgICAgICAgICAgICBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLl9uYXZpZ2F0ZVNvY2lhbC5iaW5kKHRoaXMsIHRoaXMudHdpdHRlclVybCl9XCI+XG4gICAgICAgICAgICA8L2d2LWJ1dHRvbj5cbiAgICAgICAgICAgIDxndi1idXR0b24gY2xhc3M9XCJzb2NpYWwtbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgIGxpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInRoaXJkcGFydHk6bGlua2VkaW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAuaHJlZj1cIiR7dGhpcy5saW5rZWRpblVybH1cIlxuICAgICAgICAgICAgICAgICAgICAgICBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLl9uYXZpZ2F0ZVNvY2lhbC5iaW5kKHRoaXMsIHRoaXMubGlua2VkaW5VcmwpfVwiPlxuICAgICAgICAgICAgPC9ndi1idXR0b24+XG4gICAgICAgICAgICA8L2d2LWxpbms+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cblxuICBfb25TdWJzY3JpYmUoKSB7XG4gICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnc3Vic2NyaWJlJywgdGhpcy5lbWFpbCk7XG4gIH1cblxuICBfb25Ta2lwKCkge1xuICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ3NraXAnKTtcbiAgfVxuXG4gIF9uYXZpZ2F0ZVNvY2lhbCh1cmwpIHtcbiAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcbiAgfVxuXG4gIF9vbklucHV0Q2hhbmdlKGUpIHtcbiAgICB0aGlzLl9pbnZhbGlkID0gZS50YXJnZXQuaW52YWxpZDtcbiAgICB0aGlzLmVtYWlsID0gZS5kZXRhaWw7XG4gIH1cbn1cblxud2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZ3YtbmV3c2xldHRlci1zdWJzY3JpcHRpb24nLCBHdk5ld3NsZXR0ZXJTdWJzY3JpcHRpb24pO1xuIl19
|