@gravitee/ui-components 3.25.2 → 3.25.3-typescript-5a46c7d

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 (183) hide show
  1. package/package.json +13 -4
  2. package/src/atoms/gv-autocomplete.js +1 -437
  3. package/src/atoms/gv-button.js +1 -235
  4. package/src/atoms/gv-checkbox.js +1 -129
  5. package/src/atoms/gv-date-picker-calendar.js +1 -813
  6. package/src/atoms/gv-date-picker-cell.js +1 -166
  7. package/src/atoms/gv-date-picker.js +1 -532
  8. package/src/atoms/gv-file-upload.js +1 -257
  9. package/src/atoms/gv-icon.js +1 -82
  10. package/src/atoms/gv-image.js +1 -109
  11. package/src/atoms/gv-input-message.js +1 -59
  12. package/src/atoms/gv-input.js +1 -530
  13. package/src/atoms/gv-link.js +1 -132
  14. package/src/atoms/gv-message.js +1 -77
  15. package/src/atoms/gv-metric.js +1 -68
  16. package/src/atoms/gv-relative-time.js +1 -185
  17. package/src/atoms/gv-select-native.js +1 -269
  18. package/src/atoms/gv-select.js +1 -317
  19. package/src/atoms/gv-spinner.js +1 -36
  20. package/src/atoms/gv-state.js +1 -89
  21. package/src/atoms/gv-switch.js +1 -123
  22. package/src/atoms/gv-tag.js +1 -116
  23. package/src/atoms/gv-text.js +1 -107
  24. package/src/charts/gv-chart-bar.js +1 -107
  25. package/src/charts/gv-chart-gauge.js +1 -97
  26. package/src/charts/gv-chart-histogram.js +1 -91
  27. package/src/charts/gv-chart-line.js +1 -235
  28. package/src/charts/gv-chart-map.js +1 -114
  29. package/src/charts/gv-chart-pie.js +1 -95
  30. package/src/index.js +1 -78
  31. package/src/lib/cron-expression.js +1 -210
  32. package/src/lib/date.js +1 -53
  33. package/src/lib/events.js +1 -28
  34. package/src/lib/http-client-schema-form.js +1 -68
  35. package/src/lib/http.js +1 -238
  36. package/src/lib/i18n.js +1 -111
  37. package/src/lib/item.js +1 -119
  38. package/src/lib/properties.js +1 -224
  39. package/src/lib/schema-form.js +1 -43
  40. package/src/lib/studio.js +1 -94
  41. package/src/lib/style.js +1 -41
  42. package/src/lib/text-format.js +1 -76
  43. package/src/lib/theme.js +1 -66
  44. package/src/lib/utils.js +1 -110
  45. package/src/mixins/chart-element.js +1 -142
  46. package/src/mixins/input-element.js +1 -157
  47. package/src/mixins/item-resource.js +1 -122
  48. package/src/mixins/keyboard-element.js +1 -70
  49. package/src/mixins/update-after-browser.js +1 -33
  50. package/src/mixins/with-resize-observer.js +1 -78
  51. package/src/mixins/with-skeleton-attribute.js +1 -118
  52. package/src/molecules/gv-card-full.js +1 -97
  53. package/src/molecules/gv-card-list.js +1 -84
  54. package/src/molecules/gv-card.js +1 -59
  55. package/src/molecules/gv-category-list.js +1 -49
  56. package/src/molecules/gv-category.js +1 -90
  57. package/src/molecules/gv-code.js +1 -297
  58. package/src/molecules/gv-confirm.js +1 -158
  59. package/src/molecules/gv-cron-editor.js +1 -464
  60. package/src/molecules/gv-dropdown-menu.js +1 -84
  61. package/src/molecules/gv-expandable.js +1 -94
  62. package/src/molecules/gv-expression-language.js +1 -308
  63. package/src/molecules/gv-identity-picture.js +1 -125
  64. package/src/molecules/gv-list.js +1 -135
  65. package/src/molecules/gv-metrics.js +1 -150
  66. package/src/molecules/gv-modal.js +1 -146
  67. package/src/molecules/gv-nav.js +1 -170
  68. package/src/molecules/gv-option.js +1 -169
  69. package/src/molecules/gv-plans.js +1 -306
  70. package/src/molecules/gv-popover.js +1 -231
  71. package/src/molecules/gv-promote.js +1 -91
  72. package/src/molecules/gv-rating-list.js +1 -239
  73. package/src/molecules/gv-rating.js +1 -200
  74. package/src/molecules/gv-row-expandable.js +1 -39
  75. package/src/molecules/gv-row.js +1 -84
  76. package/src/molecules/gv-stats.js +1 -96
  77. package/src/molecules/gv-stepper.js +1 -144
  78. package/src/molecules/gv-table.js +1 -575
  79. package/src/molecules/gv-tree.js +1 -127
  80. package/src/organisms/gv-documentation.js +1 -132
  81. package/src/organisms/gv-header.js +1 -130
  82. package/src/organisms/gv-http-client.js +1 -139
  83. package/src/organisms/gv-menu.js +1 -142
  84. package/src/organisms/gv-newsletter-subscription.js +1 -130
  85. package/src/organisms/gv-pagination.js +1 -170
  86. package/src/organisms/gv-properties.js +1 -699
  87. package/src/organisms/gv-resizable-views.js +1 -178
  88. package/src/organisms/gv-resources.js +1 -428
  89. package/src/organisms/gv-schema-form-array.js +1 -140
  90. package/src/organisms/gv-schema-form-control-object.js +1 -140
  91. package/src/organisms/gv-schema-form-control.js +1 -416
  92. package/src/organisms/gv-schema-form.js +1 -646
  93. package/src/organisms/gv-tabs.js +1 -178
  94. package/src/organisms/gv-user-menu.js +1 -149
  95. package/src/organisms/gv-vertical-menu.js +1 -82
  96. package/src/policy-studio/gv-flow-step.js +1 -304
  97. package/src/policy-studio/gv-flow.js +1 -442
  98. package/src/policy-studio/gv-policy-studio-menu.js +1 -436
  99. package/src/policy-studio/gv-policy-studio.js +1 -1778
  100. package/src/styles/empty.js +1 -19
  101. package/src/styles/input.js +1 -19
  102. package/src/styles/link.js +1 -19
  103. package/src/styles/shapes.js +1 -18
  104. package/src/styles/skeleton.js +1 -19
  105. package/src/styles/zoom.js +1 -19
  106. package/src/theme/gv-theme.js +1 -164
  107. package/wc/gv-autocomplete.js +1 -1
  108. package/wc/gv-button.js +1 -1
  109. package/wc/gv-card-full.js +1 -1
  110. package/wc/gv-card-list.js +1 -1
  111. package/wc/gv-card.js +1 -1
  112. package/wc/gv-category-list.js +1 -1
  113. package/wc/gv-category.js +1 -1
  114. package/wc/gv-chart-bar.js +1 -1
  115. package/wc/gv-chart-gauge.js +1 -1
  116. package/wc/gv-chart-histogram.js +1 -1
  117. package/wc/gv-chart-line.js +1 -1
  118. package/wc/gv-chart-map.js +1 -1
  119. package/wc/gv-chart-pie.js +1 -1
  120. package/wc/gv-checkbox.js +1 -1
  121. package/wc/gv-code.js +1 -1
  122. package/wc/gv-confirm.js +1 -1
  123. package/wc/gv-cron-editor.js +1 -1
  124. package/wc/gv-date-picker-calendar.js +1 -1
  125. package/wc/gv-date-picker-cell.js +1 -1
  126. package/wc/gv-date-picker.js +1 -1
  127. package/wc/gv-documentation.js +1 -1
  128. package/wc/gv-dropdown-menu.js +1 -1
  129. package/wc/gv-expandable.js +1 -1
  130. package/wc/gv-expression-language.js +1 -1
  131. package/wc/gv-file-upload.js +1 -1
  132. package/wc/gv-flow-step.js +1 -1
  133. package/wc/gv-flow.js +1 -1
  134. package/wc/gv-header.js +1 -1
  135. package/wc/gv-http-client.js +1 -1
  136. package/wc/gv-icon.js +1 -1
  137. package/wc/gv-identity-picture.js +1 -1
  138. package/wc/gv-image.js +1 -1
  139. package/wc/gv-input-message.js +1 -1
  140. package/wc/gv-input.js +1 -1
  141. package/wc/gv-link.js +1 -1
  142. package/wc/gv-list.js +1 -1
  143. package/wc/gv-menu.js +1 -1
  144. package/wc/gv-message.js +1 -1
  145. package/wc/gv-metric.js +1 -1
  146. package/wc/gv-metrics.js +1 -1
  147. package/wc/gv-modal.js +1 -1
  148. package/wc/gv-nav.js +1 -1
  149. package/wc/gv-newsletter-subscription.js +1 -1
  150. package/wc/gv-option.js +1 -1
  151. package/wc/gv-pagination.js +1 -1
  152. package/wc/gv-plans.js +1 -1
  153. package/wc/gv-policy-studio-menu.js +1 -1
  154. package/wc/gv-policy-studio.js +1 -1
  155. package/wc/gv-popover.js +1 -1
  156. package/wc/gv-promote.js +1 -1
  157. package/wc/gv-properties.js +1 -1
  158. package/wc/gv-rating-list.js +1 -1
  159. package/wc/gv-rating.js +1 -1
  160. package/wc/gv-relative-time.js +1 -1
  161. package/wc/gv-resizable-views.js +1 -1
  162. package/wc/gv-resources.js +1 -1
  163. package/wc/gv-row-expandable.js +1 -1
  164. package/wc/gv-row.js +1 -1
  165. package/wc/gv-schema-form-array.js +1 -1
  166. package/wc/gv-schema-form-control-object.js +1 -1
  167. package/wc/gv-schema-form-control.js +1 -1
  168. package/wc/gv-schema-form.js +1 -1
  169. package/wc/gv-select-native.js +1 -1
  170. package/wc/gv-select.js +1 -1
  171. package/wc/gv-spinner.js +1 -1
  172. package/wc/gv-state.js +1 -1
  173. package/wc/gv-stats.js +1 -1
  174. package/wc/gv-stepper.js +1 -1
  175. package/wc/gv-switch.js +1 -1
  176. package/wc/gv-table.js +1 -1
  177. package/wc/gv-tabs.js +1 -1
  178. package/wc/gv-tag.js +1 -1
  179. package/wc/gv-text.js +1 -1
  180. package/wc/gv-theme.js +1 -1
  181. package/wc/gv-tree.js +1 -1
  182. package/wc/gv-user-menu.js +1 -1
  183. package/wc/gv-vertical-menu.js +1 -1
@@ -1,139 +1 @@
1
- /* eslint-disable yoda */
2
-
3
- /*
4
- * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
5
- *
6
- * Licensed under the Apache License, Version 2.0 (the "License");
7
- * you may not use this file except in compliance with the License.
8
- * You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing, software
13
- * distributed under the License is distributed on an "AS IS" BASIS,
14
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- * See the License for the specific language governing permissions and
16
- * limitations under the License.
17
- */
18
- import { css, html, LitElement } from 'lit';
19
- import './gv-schema-form';
20
- import './gv-resizable-views';
21
- import './gv-documentation';
22
- import '../molecules/gv-table';
23
- import '../atoms/gv-button';
24
- import '../molecules/gv-option';
25
- import '../atoms/gv-switch';
26
- import '../atoms/gv-icon';
27
- import { KeyboardElement } from '../mixins/keyboard-element';
28
- import { empty } from '../styles/empty';
29
- import { httpClientSchemaForm } from '../lib/http-client-schema-form';
30
- import { dispatchCustomEvent } from '../lib/events';
31
- import { statusCode } from '../lib/http';
32
- import { repeat } from 'lit-html/directives/repeat';
33
- /**
34
- * @fires gv-http-client:send - Event sent when
35
- *
36
- * @attr {String} path - Path of the request
37
- * @attr {String} method - Method of the request
38
- * @attr {Boolean} loading - True if the request is in progress
39
- * @attr {Object} response - Response of the request
40
- */
41
-
42
- export class GvHttpClient extends KeyboardElement(LitElement) {
43
- static get properties() {
44
- return {
45
- response: {
46
- type: Object
47
- },
48
- path: {
49
- type: String
50
- },
51
- method: {
52
- type: String
53
- },
54
- loading: {
55
- type: Boolean
56
- }
57
- };
58
- }
59
-
60
- constructor() {
61
- super();
62
- this.response = undefined;
63
- this.loading = false;
64
- this.path = undefined;
65
- this.method = undefined;
66
- this.request = {
67
- method: 'GET',
68
- path: '/'
69
- };
70
- }
71
-
72
- _sendRequest() {
73
- dispatchCustomEvent(this, 'send', {
74
- request: this.request
75
- });
76
- }
77
-
78
- _updateRequest(formData) {
79
- this.isFormValid = formData.detail.validation.valid;
80
- this.request = formData.detail.values;
81
- this.requestUpdate();
82
- }
83
-
84
- render() {
85
- return html` <div class="container"> <div class="request"> <div class="top-bar">Request</div> <div class="request-form"> <gv-schema-form .schema="${httpClientSchemaForm}" id="request-form" @gv-schema-form:change="${this._updateRequest}"> </gv-schema-form> <gv-button class="request-form-button" icon-right="content:send" .disabled="${this.isFormValid === false || this.loading === true}" @gv-button:click="${this._sendRequest}"> Send </gv-button> </div> </div> <div class="response"> ${!this.loading && !this.response ? this._renderEmptyResponse() : ''} ${this.loading ? this._renderLoading() : ''} ${this.response ? this._renderDebugResponse() : ''} </div> </div>`;
86
- }
87
-
88
- _renderEmptyResponse() {
89
- return html` <div class="empty-response"> <gv-icon class="empty-response-icon" shape="editor:format_align_left"></gv-icon> <div>Define and run the request you want to test!</div> </div> `;
90
- }
91
-
92
- _renderLoading() {
93
- return html` <div class="loading"> <gv-icon class="loading-icon" shape="communication:sending"></gv-icon> <div>Request in progress!</div> </div> `;
94
- }
95
-
96
- _renderDebugResponse() {
97
- let prettifiedResponse = this.response.body;
98
- let mode = 'text';
99
-
100
- if (this.response.headers) {
101
- // eslint-disable-next-line no-unused-vars
102
- const contentTypeHeader = Object.entries(this.response.headers).find(([key, value]) => {
103
- return key.toLowerCase() === 'content-type';
104
- });
105
- const contentType = contentTypeHeader ? contentTypeHeader[1].split(';')[0] : undefined;
106
-
107
- if (contentType === 'text/html') {
108
- mode = 'htmlmixed';
109
- prettifiedResponse = this.response.body;
110
- } else if (contentType === 'application/json') {
111
- mode = 'application/json'; // Convert JSON body to a human readable form with 2 spaces indentation
112
-
113
- prettifiedResponse = JSON.stringify(JSON.parse(this.response.body), null, 2);
114
- }
115
- }
116
-
117
- const gvCodeOptions = {
118
- lineNumbers: true,
119
- mode: mode
120
- };
121
- return html` ${this._renderResponseHeader()} <div class="response-headers">Headers</div> <div class="response-headers-content"> ${repeat(Object.keys(this.response.headers), key => {
122
- return html`<div><code>${key}: ${this.response.headers[key]}</code></div>`;
123
- })} </div> <div class="response-body">Body</div> <div class="code-container"> <gv-code .value="${prettifiedResponse}" .options="${gvCodeOptions}" readonly="readonly"></gv-code> </div> `;
124
- }
125
-
126
- _renderResponseHeader() {
127
- const successfulRequest = 200 <= this.response.statusCode && this.response.statusCode < 300;
128
- const errorRequest = 400 <= this.response.statusCode && this.response.statusCode < 600;
129
- return html`<div class="top-bar"> <div class="response-row-item">Response</div> ${this.method ? html` <div class="response-row-item-method">${this.method}</div>` : ''} ${this.path ? html` <div class="response-row-item">${this.path}</div>` : ''} ${this.response.statusCode ? html` <div class="response-row-item"> <gv-state ?success="${successfulRequest}" ?error="${errorRequest}"> ${this.response.statusCode} - ${statusCode[this.response.statusCode].description} </gv-state> </div>` : ''} </div> `;
130
- }
131
-
132
- static get styles() {
133
- return [empty, // language=CSS
134
- css`:host{box-sizing:border-box;height:100%;width:100%;display:block}.container{display:flex;flex-direction:row;height:100%}.request{width:40%;height:100%}.request-form{padding:8px;display:flex;flex-direction:column}.request-form-button{margin-top:16px}.response{border-left:1px solid #d9d9d9;border-right:1px solid #d9d9d9;height:100%;width:60%;overflow:hidden}.top-bar{background-color:#f5f5f5}.response-row-item{margin-right:16px}.response-row-item-method{margin-right:4px;font-weight:700}.response-body,.response-headers,.status-code,.top-bar{font-size:16px;height:40px;display:flex;flex-direction:row;align-items:center;padding:0 16px;border-bottom:1px solid #d9d9d9}.response-headers-content{padding:16px;border-bottom:1px solid #d9d9d9;max-height:40%}.empty-response,.loading{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;font-size:16px}.empty-response-icon,.loading-icon{--gv-icon--s:128px;--gv-icon--c:var(--gv-theme-color-dark)}.code-container{height:100%;overflow:auto}`];
135
- }
136
-
137
- }
138
- window.customElements.define('gv-http-client', GvHttpClient);
139
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1odHRwLWNsaWVudC5qcyJdLCJuYW1lcyI6WyJjc3MiLCJodG1sIiwiTGl0RWxlbWVudCIsIktleWJvYXJkRWxlbWVudCIsImVtcHR5IiwiaHR0cENsaWVudFNjaGVtYUZvcm0iLCJkaXNwYXRjaEN1c3RvbUV2ZW50Iiwic3RhdHVzQ29kZSIsInJlcGVhdCIsIkd2SHR0cENsaWVudCIsInByb3BlcnRpZXMiLCJyZXNwb25zZSIsInR5cGUiLCJPYmplY3QiLCJwYXRoIiwiU3RyaW5nIiwibWV0aG9kIiwibG9hZGluZyIsIkJvb2xlYW4iLCJjb25zdHJ1Y3RvciIsInVuZGVmaW5lZCIsInJlcXVlc3QiLCJfc2VuZFJlcXVlc3QiLCJfdXBkYXRlUmVxdWVzdCIsImZvcm1EYXRhIiwiaXNGb3JtVmFsaWQiLCJkZXRhaWwiLCJ2YWxpZGF0aW9uIiwidmFsaWQiLCJ2YWx1ZXMiLCJyZXF1ZXN0VXBkYXRlIiwicmVuZGVyIiwiX3JlbmRlckVtcHR5UmVzcG9uc2UiLCJfcmVuZGVyTG9hZGluZyIsIl9yZW5kZXJEZWJ1Z1Jlc3BvbnNlIiwicHJldHRpZmllZFJlc3BvbnNlIiwiYm9keSIsIm1vZGUiLCJoZWFkZXJzIiwiY29udGVudFR5cGVIZWFkZXIiLCJlbnRyaWVzIiwiZmluZCIsImtleSIsInZhbHVlIiwidG9Mb3dlckNhc2UiLCJjb250ZW50VHlwZSIsInNwbGl0IiwiSlNPTiIsInN0cmluZ2lmeSIsInBhcnNlIiwiZ3ZDb2RlT3B0aW9ucyIsImxpbmVOdW1iZXJzIiwiX3JlbmRlclJlc3BvbnNlSGVhZGVyIiwia2V5cyIsInN1Y2Nlc3NmdWxSZXF1ZXN0IiwiZXJyb3JSZXF1ZXN0IiwiZGVzY3JpcHRpb24iLCJzdHlsZXMiLCJ3aW5kb3ciLCJjdXN0b21FbGVtZW50cyIsImRlZmluZSJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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bGUgeW9kYSAqL1xuLypcbiAqIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IGNzcywgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCAnLi9ndi1zY2hlbWEtZm9ybSc7XG5pbXBvcnQgJy4vZ3YtcmVzaXphYmxlLXZpZXdzJztcbmltcG9ydCAnLi9ndi1kb2N1bWVudGF0aW9uJztcbmltcG9ydCAnLi4vbW9sZWN1bGVzL2d2LXRhYmxlJztcbmltcG9ydCAnLi4vYXRvbXMvZ3YtYnV0dG9uJztcbmltcG9ydCAnLi4vbW9sZWN1bGVzL2d2LW9wdGlvbic7XG5pbXBvcnQgJy4uL2F0b21zL2d2LXN3aXRjaCc7XG5pbXBvcnQgJy4uL2F0b21zL2d2LWljb24nO1xuaW1wb3J0IHsgS2V5Ym9hcmRFbGVtZW50IH0gZnJvbSAnLi4vbWl4aW5zL2tleWJvYXJkLWVsZW1lbnQnO1xuaW1wb3J0IHsgZW1wdHkgfSBmcm9tICcuLi9zdHlsZXMvZW1wdHknO1xuaW1wb3J0IHsgaHR0cENsaWVudFNjaGVtYUZvcm0gfSBmcm9tICcuLi9saWIvaHR0cC1jbGllbnQtc2NoZW1hLWZvcm0nO1xuaW1wb3J0IHsgZGlzcGF0Y2hDdXN0b21FdmVudCB9IGZyb20gJy4uL2xpYi9ldmVudHMnO1xuaW1wb3J0IHsgc3RhdHVzQ29kZSB9IGZyb20gJy4uL2xpYi9odHRwJztcbmltcG9ydCB7IHJlcGVhdCB9IGZyb20gJ2xpdC1odG1sL2RpcmVjdGl2ZXMvcmVwZWF0JztcblxuLyoqXG4gKiBAZmlyZXMgZ3YtaHR0cC1jbGllbnQ6c2VuZCAtIEV2ZW50IHNlbnQgd2hlblxuICpcbiAqIEBhdHRyIHtTdHJpbmd9IHBhdGggLSBQYXRoIG9mIHRoZSByZXF1ZXN0XG4gKiBAYXR0ciB7U3RyaW5nfSBtZXRob2QgLSBNZXRob2Qgb2YgdGhlIHJlcXVlc3RcbiAqIEBhdHRyIHtCb29sZWFufSBsb2FkaW5nIC0gVHJ1ZSBpZiB0aGUgcmVxdWVzdCBpcyBpbiBwcm9ncmVzc1xuICogQGF0dHIge09iamVjdH0gcmVzcG9uc2UgLSBSZXNwb25zZSBvZiB0aGUgcmVxdWVzdFxuICovXG5leHBvcnQgY2xhc3MgR3ZIdHRwQ2xpZW50IGV4dGVuZHMgS2V5Ym9hcmRFbGVtZW50KExpdEVsZW1lbnQpIHtcbiAgc3RhdGljIGdldCBwcm9wZXJ0aWVzKCkge1xuICAgIHJldHVybiB7XG4gICAgICByZXNwb25zZTogeyB0eXBlOiBPYmplY3QgfSxcbiAgICAgIHBhdGg6IHsgdHlwZTogU3RyaW5nIH0sXG4gICAgICBtZXRob2Q6IHsgdHlwZTogU3RyaW5nIH0sXG4gICAgICBsb2FkaW5nOiB7IHR5cGU6IEJvb2xlYW4gfSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnJlc3BvbnNlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMucGF0aCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm1ldGhvZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnJlcXVlc3QgPSB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgcGF0aDogJy8nLFxuICAgIH07XG4gIH1cblxuICBfc2VuZFJlcXVlc3QoKSB7XG4gICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnc2VuZCcsIHsgcmVxdWVzdDogdGhpcy5yZXF1ZXN0IH0pO1xuICB9XG5cbiAgX3VwZGF0ZVJlcXVlc3QoZm9ybURhdGEpIHtcbiAgICB0aGlzLmlzRm9ybVZhbGlkID0gZm9ybURhdGEuZGV0YWlsLnZhbGlkYXRpb24udmFsaWQ7XG4gICAgdGhpcy5yZXF1ZXN0ID0gZm9ybURhdGEuZGV0YWlsLnZhbHVlcztcbiAgICB0aGlzLnJlcXVlc3RVcGRhdGUoKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gaHRtbGAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJlcXVlc3RcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRvcC1iYXJcIj5SZXF1ZXN0PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1ZXN0LWZvcm1cIj5cbiAgICAgICAgICA8Z3Ytc2NoZW1hLWZvcm0gLnNjaGVtYT1cIiR7aHR0cENsaWVudFNjaGVtYUZvcm19XCIgaWQ9XCJyZXF1ZXN0LWZvcm1cIiBAZ3Ytc2NoZW1hLWZvcm06Y2hhbmdlPVwiJHt0aGlzLl91cGRhdGVSZXF1ZXN0fVwiPlxuICAgICAgICAgIDwvZ3Ytc2NoZW1hLWZvcm0+XG4gICAgICAgICAgPGd2LWJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJyZXF1ZXN0LWZvcm0tYnV0dG9uXCJcbiAgICAgICAgICAgIGljb24tcmlnaHQ9XCJjb250ZW50OnNlbmRcIlxuICAgICAgICAgICAgLmRpc2FibGVkPVwiJHt0aGlzLmlzRm9ybVZhbGlkID09PSBmYWxzZSB8fCB0aGlzLmxvYWRpbmcgPT09IHRydWV9XCJcbiAgICAgICAgICAgIEBndi1idXR0b246Y2xpY2s9XCIke3RoaXMuX3NlbmRSZXF1ZXN0fVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgU2VuZFxuICAgICAgICAgIDwvZ3YtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwicmVzcG9uc2VcIj5cbiAgICAgICAgJHshdGhpcy5sb2FkaW5nICYmICF0aGlzLnJlc3BvbnNlID8gdGhpcy5fcmVuZGVyRW1wdHlSZXNwb25zZSgpIDogJyd9ICR7dGhpcy5sb2FkaW5nID8gdGhpcy5fcmVuZGVyTG9hZGluZygpIDogJyd9XG4gICAgICAgICR7dGhpcy5yZXNwb25zZSA/IHRoaXMuX3JlbmRlckRlYnVnUmVzcG9uc2UoKSA6ICcnfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+YDtcbiAgfVxuXG4gIF9yZW5kZXJFbXB0eVJlc3BvbnNlKCkge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LXJlc3BvbnNlXCI+XG4gICAgICAgIDxndi1pY29uIGNsYXNzPVwiZW1wdHktcmVzcG9uc2UtaWNvblwiIHNoYXBlPVwiZWRpdG9yOmZvcm1hdF9hbGlnbl9sZWZ0XCI+PC9ndi1pY29uPlxuICAgICAgICA8ZGl2PkRlZmluZSBhbmQgcnVuIHRoZSByZXF1ZXN0IHlvdSB3YW50IHRvIHRlc3QhPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG5cbiAgX3JlbmRlckxvYWRpbmcoKSB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwibG9hZGluZ1wiPlxuICAgICAgICA8Z3YtaWNvbiBjbGFzcz1cImxvYWRpbmctaWNvblwiIHNoYXBlPVwiY29tbXVuaWNhdGlvbjpzZW5kaW5nXCI+PC9ndi1pY29uPlxuICAgICAgICA8ZGl2PlJlcXVlc3QgaW4gcHJvZ3Jlc3MhPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG5cbiAgX3JlbmRlckRlYnVnUmVzcG9uc2UoKSB7XG4gICAgbGV0IHByZXR0aWZpZWRSZXNwb25zZSA9IHRoaXMucmVzcG9uc2UuYm9keTtcbiAgICBsZXQgbW9kZSA9ICd0ZXh0JztcblxuICAgIGlmICh0aGlzLnJlc3BvbnNlLmhlYWRlcnMpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICAgICAgY29uc3QgY29udGVudFR5cGVIZWFkZXIgPSBPYmplY3QuZW50cmllcyh0aGlzLnJlc3BvbnNlLmhlYWRlcnMpLmZpbmQoKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICByZXR1cm4ga2V5LnRvTG93ZXJDYXNlKCkgPT09ICdjb250ZW50LXR5cGUnO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gY29udGVudFR5cGVIZWFkZXIgPyBjb250ZW50VHlwZUhlYWRlclsxXS5zcGxpdCgnOycpWzBdIDogdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoY29udGVudFR5cGUgPT09ICd0ZXh0L2h0bWwnKSB7XG4gICAgICAgIG1vZGUgPSAnaHRtbG1peGVkJztcbiAgICAgICAgcHJldHRpZmllZFJlc3BvbnNlID0gdGhpcy5yZXNwb25zZS5ib2R5O1xuICAgICAgfSBlbHNlIGlmIChjb250ZW50VHlwZSA9PT0gJ2FwcGxpY2F0aW9uL2pzb24nKSB7XG4gICAgICAgIG1vZGUgPSAnYXBwbGljYXRpb24vanNvbic7XG4gICAgICAgIC8vIENvbnZlcnQgSlNPTiBib2R5IHRvIGEgaHVtYW4gcmVhZGFibGUgZm9ybSB3aXRoIDIgc3BhY2VzIGluZGVudGF0aW9uXG4gICAgICAgIHByZXR0aWZpZWRSZXNwb25zZSA9IEpTT04uc3RyaW5naWZ5KEpTT04ucGFyc2UodGhpcy5yZXNwb25zZS5ib2R5KSwgbnVsbCwgMik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZ3ZDb2RlT3B0aW9ucyA9IHtcbiAgICAgIGxpbmVOdW1iZXJzOiB0cnVlLFxuICAgICAgbW9kZTogbW9kZSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICAke3RoaXMuX3JlbmRlclJlc3BvbnNlSGVhZGVyKCl9XG4gICAgICA8ZGl2IGNsYXNzPVwicmVzcG9uc2UtaGVhZGVyc1wiPkhlYWRlcnM8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZXNwb25zZS1oZWFkZXJzLWNvbnRlbnRcIj5cbiAgICAgICAgJHtyZXBlYXQoT2JqZWN0LmtleXModGhpcy5yZXNwb25zZS5oZWFkZXJzKSwgKGtleSkgPT4ge1xuICAgICAgICAgIHJldHVybiBodG1sYDxkaXY+PGNvZGU+JHtrZXl9OiAke3RoaXMucmVzcG9uc2UuaGVhZGVyc1trZXldfTwvY29kZT48L2Rpdj5gO1xuICAgICAgICB9KX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJlc3BvbnNlLWJvZHlcIj5Cb2R5PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29kZS1jb250YWluZXJcIj5cbiAgICAgICAgPGd2LWNvZGUgLnZhbHVlPVwiJHtwcmV0dGlmaWVkUmVzcG9uc2V9XCIgLm9wdGlvbnM9XCIke2d2Q29kZU9wdGlvbnN9XCIgcmVhZG9ubHk+PC9ndi1jb2RlPlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxuXG4gIF9yZW5kZXJSZXNwb25zZUhlYWRlcigpIHtcbiAgICBjb25zdCBzdWNjZXNzZnVsUmVxdWVzdCA9IDIwMCA8PSB0aGlzLnJlc3BvbnNlLnN0YXR1c0NvZGUgJiYgdGhpcy5yZXNwb25zZS5zdGF0dXNDb2RlIDwgMzAwO1xuICAgIGNvbnN0IGVycm9yUmVxdWVzdCA9IDQwMCA8PSB0aGlzLnJlc3BvbnNlLnN0YXR1c0NvZGUgJiYgdGhpcy5yZXNwb25zZS5zdGF0dXNDb2RlIDwgNjAwO1xuXG4gICAgcmV0dXJuIGh0bWxgPGRpdiBjbGFzcz1cInRvcC1iYXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZXNwb25zZS1yb3ctaXRlbVwiPlJlc3BvbnNlPC9kaXY+XG4gICAgICAke3RoaXMubWV0aG9kID8gaHRtbGAgPGRpdiBjbGFzcz1cInJlc3BvbnNlLXJvdy1pdGVtLW1ldGhvZFwiPiR7dGhpcy5tZXRob2R9PC9kaXY+YCA6ICcnfVxuICAgICAgJHt0aGlzLnBhdGggPyBodG1sYCA8ZGl2IGNsYXNzPVwicmVzcG9uc2Utcm93LWl0ZW1cIj4ke3RoaXMucGF0aH08L2Rpdj5gIDogJyd9XG4gICAgICAke3RoaXMucmVzcG9uc2Uuc3RhdHVzQ29kZVxuICAgICAgICA/IGh0bWxgIDxkaXYgY2xhc3M9XCJyZXNwb25zZS1yb3ctaXRlbVwiPlxuICAgICAgICAgICAgPGd2LXN0YXRlID9zdWNjZXNzPVwiJHtzdWNjZXNzZnVsUmVxdWVzdH1cIiA/ZXJyb3I9XCIke2Vycm9yUmVxdWVzdH1cIj5cbiAgICAgICAgICAgICAgJHt0aGlzLnJlc3BvbnNlLnN0YXR1c0NvZGV9IC0gJHtzdGF0dXNDb2RlW3RoaXMucmVzcG9uc2Uuc3RhdHVzQ29kZV0uZGVzY3JpcHRpb259XG4gICAgICAgICAgICA8L2d2LXN0YXRlPlxuICAgICAgICAgIDwvZGl2PmBcbiAgICAgICAgOiAnJ31cbiAgICA8L2Rpdj4gYDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc3R5bGVzKCkge1xuICAgIHJldHVybiBbXG4gICAgICBlbXB0eSxcbiAgICAgIC8vIGxhbmd1YWdlPUNTU1xuICAgICAgY3NzYFxuICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICAuY29udGFpbmVyIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLnJlcXVlc3Qge1xuICAgICAgICAgIHdpZHRoOiA0MCU7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLnJlcXVlc3QtZm9ybSB7XG4gICAgICAgICAgcGFkZGluZzogOHB4O1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5yZXF1ZXN0LWZvcm0tYnV0dG9uIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnJlc3BvbnNlIHtcbiAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNkOWQ5ZDk7XG4gICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2Q5ZDlkOTtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgd2lkdGg6IDYwJTtcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB9XG5cbiAgICAgICAgLnRvcC1iYXIge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XG4gICAgICAgIH1cblxuICAgICAgICAucmVzcG9uc2Utcm93LWl0ZW0ge1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogMTZweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5yZXNwb25zZS1yb3ctaXRlbS1tZXRob2Qge1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogNHB4O1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICB9XG5cbiAgICAgICAgLnN0YXR1cy1jb2RlLFxuICAgICAgICAudG9wLWJhcixcbiAgICAgICAgLnJlc3BvbnNlLWhlYWRlcnMsXG4gICAgICAgIC5yZXNwb25zZS1ib2R5IHtcbiAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIHBhZGRpbmc6IDAgMTZweDtcbiAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Q5ZDlkOTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5yZXNwb25zZS1oZWFkZXJzLWNvbnRlbnQge1xuICAgICAgICAgIHBhZGRpbmc6IDE2cHg7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkOWQ5ZDk7XG4gICAgICAgICAgbWF4LWhlaWdodDogNDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmxvYWRpbmcsXG4gICAgICAgIC5lbXB0eS1yZXNwb25zZSB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5sb2FkaW5nLWljb24sXG4gICAgICAgIC5lbXB0eS1yZXNwb25zZS1pY29uIHtcbiAgICAgICAgICAtLWd2LWljb24tLXM6IDEyOHB4O1xuICAgICAgICAgIC0tZ3YtaWNvbi0tYzogdmFyKC0tZ3YtdGhlbWUtY29sb3ItZGFyayk7XG4gICAgICAgIH1cblxuICAgICAgICAuY29kZS1jb250YWluZXIge1xuICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgICAgfVxuICAgICAgYCxcbiAgICBdO1xuICB9XG59XG5cbndpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ2d2LWh0dHAtY2xpZW50JywgR3ZIdHRwQ2xpZW50KTtcbiJdfQ==
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.GvHttpClient=void 0;const e=require("lit");require("./gv-schema-form"),require("./gv-resizable-views"),require("./gv-documentation"),require("../molecules/gv-table"),require("../atoms/gv-button"),require("../molecules/gv-option"),require("../atoms/gv-switch"),require("../atoms/gv-icon");const s=require("../mixins/keyboard-element"),t=require("../styles/empty"),i=require("../lib/http-client-schema-form"),o=require("../lib/events"),r=require("../lib/http"),n=require("lit-html/directives/repeat");class d extends((0,s.KeyboardElement)(e.LitElement)){static get properties(){return{response:{type:Object},path:{type:String},method:{type:String},loading:{type:Boolean}}}constructor(){super(),this.response=void 0,this.loading=!1,this.path=void 0,this.method=void 0,this.request={method:"GET",path:"/"}}_sendRequest(){(0,o.dispatchCustomEvent)(this,"send",{request:this.request})}_updateRequest(e){this.isFormValid=e.detail.validation.valid,this.request=e.detail.values,this.requestUpdate()}render(){return e.html`<div class="container"><div class="request"><div class="top-bar">Request</div><div class="request-form"><gv-schema-form .schema="${i.httpClientSchemaForm}" id="request-form" @gv-schema-form:change="${this._updateRequest}"></gv-schema-form><gv-button class="request-form-button" icon-right="content:send" .disabled="${!1===this.isFormValid||!0===this.loading}" @gv-button:click="${this._sendRequest}">Send</gv-button></div></div><div class="response">${this.loading||this.response?"":this._renderEmptyResponse()} ${this.loading?this._renderLoading():""} ${this.response?this._renderDebugResponse():""}</div></div>`}_renderEmptyResponse(){return e.html`<div class="empty-response"><gv-icon class="empty-response-icon" shape="editor:format_align_left"></gv-icon><div>Define and run the request you want to test!</div></div>`}_renderLoading(){return e.html`<div class="loading"><gv-icon class="loading-icon" shape="communication:sending"></gv-icon><div>Request in progress!</div></div>`}_renderDebugResponse(){let s=this.response.body,t="text";if(this.response.headers){const e=Object.entries(this.response.headers).find((([e,s])=>"content-type"===e.toLowerCase())),i=e?e[1].split(";")[0]:void 0;"text/html"===i?(t="htmlmixed",s=this.response.body):"application/json"===i&&(t="application/json",s=JSON.stringify(JSON.parse(this.response.body),null,2))}const i={lineNumbers:!0,mode:t};return e.html`${this._renderResponseHeader()}<div class="response-headers">Headers</div><div class="response-headers-content">${(0,n.repeat)(Object.keys(this.response.headers),(s=>e.html`<div><code>${s}: ${this.response.headers[s]}</code></div>`))}</div><div class="response-body">Body</div><div class="code-container"><gv-code .value="${s}" .options="${i}" readonly="readonly"></gv-code></div>`}_renderResponseHeader(){const s=200<=this.response.statusCode&&this.response.statusCode<300,t=400<=this.response.statusCode&&this.response.statusCode<600;return e.html`<div class="top-bar"><div class="response-row-item">Response</div>${this.method?e.html`<div class="response-row-item-method">${this.method}</div>`:""} ${this.path?e.html`<div class="response-row-item">${this.path}</div>`:""} ${this.response.statusCode?e.html`<div class="response-row-item"><gv-state ?success="${s}" ?error="${t}">${this.response.statusCode} - ${r.statusCode[this.response.statusCode].description}</gv-state></div>`:""}</div>`}static get styles(){return[t.empty,e.css`:host{box-sizing:border-box;height:100%;width:100%;display:block}.container{display:flex;flex-direction:row;height:100%}.request{width:40%;height:100%}.request-form{padding:8px;display:flex;flex-direction:column}.request-form-button{margin-top:16px}.response{border-left:1px solid #d9d9d9;border-right:1px solid #d9d9d9;height:100%;width:60%;overflow:hidden}.top-bar{background-color:#f5f5f5}.response-row-item{margin-right:16px}.response-row-item-method{margin-right:4px;font-weight:700}.response-body,.response-headers,.status-code,.top-bar{font-size:16px;height:40px;display:flex;flex-direction:row;align-items:center;padding:0 16px;border-bottom:1px solid #d9d9d9}.response-headers-content{padding:16px;border-bottom:1px solid #d9d9d9;max-height:40%}.empty-response,.loading{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;font-size:16px}.empty-response-icon,.loading-icon{--gv-icon--s:128px;--gv-icon--c:var(--gv-theme-color-dark)}.code-container{height:100%;overflow:auto}`]}}exports.GvHttpClient=d,window.customElements.define("gv-http-client",d);
@@ -1,142 +1 @@
1
- /*
2
- * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { LitElement, html, css } from 'lit';
17
- import '../molecules/gv-nav';
18
- import { isSameRoutes } from '../lib/utils';
19
- import { classMap } from 'lit/directives/class-map';
20
- import { withResizeObserver } from '../mixins/with-resize-observer';
21
- /**
22
- * A menu
23
- *
24
- * ## Details
25
- * * has @theme facet
26
- *
27
- * @fires gv-link:click - Custom event when link click
28
- *
29
- * @slot top - The content on top of menu
30
- * @slot right - The content at right
31
- * @slot right-transition - The content at right with transition
32
- *
33
- * @attr {Array} routes - definition of routes [{active: Boolean, icon: String, path: String, title: Promise<String>]
34
- * @cssprop {Color} [--gv-menu--c=var(--gv-theme-font-color-light, #ffffff)] - Color
35
- * @cssprop {Color} [--gv-menu--bgc=var(--gv-theme-color-dark, #28444f)] - Background color.
36
- * @cssprop {Color} [--gv-menu-link-active--bdc=var(--gv-theme-color-light, #86c3d0)] - Border bottom color of active link.
37
- * @cssprop {String} [--gv-menu-link-active--bds=solid] - Border bottom style of active link.
38
- * @cssprop {Length} [--gv-menu-link-active--bdw=0 0 3px 0] - Border bottom width of active link.
39
- * @cssprop {Color} [--gv-menu-link-active--bgc=transparent] - Active background color
40
- * @cssprop {Color} [--gv-menu-link--bgc=transparent] - Background color
41
- * @cssprop {Length} [--gv-menu-link-a--pv=0px] - Link vertical padding
42
- */
43
-
44
- export class GvMenu extends withResizeObserver(LitElement) {
45
- static get properties() {
46
- return {
47
- /** @required **/
48
- routes: {
49
- type: Array
50
- },
51
- sticky: {
52
- type: Boolean,
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
- }
67
- };
68
- }
69
-
70
- static get styles() {
71
- return [// language=css
72
- css`:host{--gv-link--c:var(--gv-menu--c, var(--gv-theme-font-color-light, #ffffff));--gv-link-active--c:var(--gv-menu--c, var(--gv-theme-font-color-light, #ffffff));--gv-link--bgc:var(--gv-menu-link--bgc, transparent);--gv-link-active--bgc:var(--gv-menu-link-active--bgc, transparent);--gv-link-active--bdc:var(--gv-menu-link-active--bdc, var(--gv-theme-color-light, #86c3d0));--gv-link-active--bds:var(--gv-menu-link-active--bds, solid);--gv-link-active--bdw:var(--gv-menu-link-active--bdw, 0 0 3px 0);--pr:var(--gv-theme-layout--pr, 4rem);--pl:var(--gv-theme-layout--pl, 4rem);box-sizing:border-box;display:block;font-size:var(--gv-theme-font-size-s,12px)}:host([sticky]) gv-nav{line-height:14px;--gv-link-icon--s:20px}:host([sticky]) .has-header gv-nav{line-height:34px}:host([sticky]) ::slotted([slot=top]){transition:height 250ms ease-in-out}:host([w-lt-1024]){--pr:5px;--pl:5px}:host([w-lt-768]) .nav-container{width:100%;padding-left:var(--pl);--gv-link-a--pv:var(--gv-menu-link-a--pv, 0px)}:host([w-lt-580]) .nav-container{flex:auto;padding-left:0}:host([w-lt-580]) gv-nav{flex:auto}:host([w-lt-580]) .right{flex:auto}:host([w-lt-380]) .nav-container{display:flex;flex-direction:column-reverse}:host([w-lt-380]) gv-nav{align-self:flex-start;flex:1}:host([w-lt-380]) .right{align-self:flex-end;flex:1;width:100%;padding-right:0}gv-nav{display:table-cell;line-height:50px;vertical-align:middle}.nav-container{display:grid;grid-template-columns:auto auto;background-color:var(--gv-menu--bgc,var(--gv-theme-color-dark,#28444f));color:var(--gv-menu--c,var(--gv-theme-font-color-light,#fff))}.has-header .nav-container{width:calc(100% - 10rem);padding-left:10rem;--gv-link-a--pv:0}:host([sticky]) .has-header .nav-container{width:calc(100% - 5rem);padding-left:5rem;transition:all 250ms ease-in-out}.right{display:flex;padding-right:var(--pr);justify-content:center;flex-direction:column}gv-nav{padding-left:var(--pl);transition:width 250ms ease-in-out}slot[name=right-transition],slot[name=right]{display:flex;justify-content:flex-end;width:100%}.right ::slotted([slot=right-transition]),.right ::slotted([slot=right]){align-self:center}.right ::slotted([slot=right-transition]){transition:width 250ms ease 250ms;width:70%}.right:focus-within ::slotted([slot=right-transition]){animation:slide 250ms 250ms;transition:width 250ms ease-in-out 250ms;width:100%}.right ::slotted([slot=right]){--gv-button--p:7px 16px;--gv-button--fz:15px}`];
73
- }
74
-
75
- constructor() {
76
- super();
77
- /** @protected */
78
-
79
- this._routes = [];
80
- this.sticky = false;
81
- this.breakpoints = {
82
- // ceiled width with 275px tiles and 1rem (16px) gap
83
- width: [380, 580, 768, 1024]
84
- };
85
- }
86
-
87
- set routes(candidate) {
88
- if (candidate) {
89
- Promise.resolve(candidate).then(candidates => {
90
- if (candidates) {
91
- Promise.all(candidates).then(futureRoutes => {
92
- if (!isSameRoutes(this._routes, futureRoutes)) {
93
- this._routes = futureRoutes;
94
- }
95
- });
96
- } else {
97
- this._routes = [];
98
- }
99
- });
100
- } else {
101
- this._routes = [];
102
- }
103
- }
104
-
105
- onResize({
106
- width
107
- }) {
108
- if (width <= 1024) {
109
- this._small = true;
110
- } else {
111
- this._small = false;
112
- }
113
- }
114
-
115
- render() {
116
- return html` <div class="${classMap({
117
- 'has-header': this._hasHeader
118
- })}"> <slot name="top"></slot> <div class="nav-container"> <gv-nav .routes="${this._routes}" ?small="${this._small}"></gv-nav> <div class="right"><slot name="right-transition"></slot><slot name="right"></slot></div> </div> </div> `;
119
- }
120
-
121
- updated(changedProperties) {
122
- super.updated(changedProperties);
123
- let _header = false;
124
-
125
- for (const node of this.childNodes) {
126
- if (node.nodeType === 1) {
127
- const child = node.nodeName.toLowerCase() === 'gv-header' ? node : node.querySelector('gv-header');
128
-
129
- if (child) {
130
- child.sticky = this.sticky;
131
- _header = true;
132
- break;
133
- }
134
- }
135
- }
136
-
137
- this._hasHeader = _header;
138
- }
139
-
140
- }
141
- window.customElements.define('gv-menu', GvMenu);
142
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1tZW51LmpzIl0sIm5hbWVzIjpbIkxpdEVsZW1lbnQiLCJodG1sIiwiY3NzIiwiaXNTYW1lUm91dGVzIiwiY2xhc3NNYXAiLCJ3aXRoUmVzaXplT2JzZXJ2ZXIiLCJHdk1lbnUiLCJwcm9wZXJ0aWVzIiwicm91dGVzIiwidHlwZSIsIkFycmF5Iiwic3RpY2t5IiwiQm9vbGVhbiIsInJlZmxlY3QiLCJfc21hbGwiLCJhdHRyaWJ1dGUiLCJfcm91dGVzIiwiX2hhc0hlYWRlciIsInN0eWxlcyIsImNvbnN0cnVjdG9yIiwiYnJlYWtwb2ludHMiLCJ3aWR0aCIsImNhbmRpZGF0ZSIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsImNhbmRpZGF0ZXMiLCJhbGwiLCJmdXR1cmVSb3V0ZXMiLCJvblJlc2l6ZSIsInJlbmRlciIsInVwZGF0ZWQiLCJjaGFuZ2VkUHJvcGVydGllcyIsIl9oZWFkZXIiLCJub2RlIiwiY2hpbGROb2RlcyIsIm5vZGVUeXBlIiwiY2hpbGQiLCJub2RlTmFtZSIsInRvTG93ZXJDYXNlIiwicXVlcnlTZWxlY3RvciIsIndpbmRvdyIsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxVQUFULEVBQXFCQyxJQUFyQixFQUEyQkMsR0FBM0IsUUFBc0MsS0FBdEM7QUFDQSxPQUFPLHFCQUFQO0FBQ0EsU0FBU0MsWUFBVCxRQUE2QixjQUE3QjtBQUNBLFNBQVNDLFFBQVQsUUFBeUIsMEJBQXpCO0FBQ0EsU0FBU0Msa0JBQVQsUUFBbUMsZ0NBQW5DO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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QSxJQUFJLENBQUNNLGFBQUwsQ0FBbUIsV0FBbkIsQ0FBbkU7O0FBQ0EsWUFBSUgsS0FBSixFQUFXO0FBQ1RBLFVBQUFBLEtBQUssQ0FBQzFCLE1BQU4sR0FBZSxLQUFLQSxNQUFwQjtBQUNBc0IsVUFBQUEsT0FBTyxHQUFHLElBQVY7QUFDQTtBQUNEO0FBQ0Y7QUFDRjs7QUFDRCxTQUFLaEIsVUFBTCxHQUFrQmdCLE9BQWxCO0FBQ0Q7O0FBeE53RDtBQTJOM0RRLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQkMsTUFBdEIsQ0FBNkIsU0FBN0IsRUFBd0NyQyxNQUF4QyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBMaXRFbGVtZW50LCBodG1sLCBjc3MgfSBmcm9tICdsaXQnO1xuaW1wb3J0ICcuLi9tb2xlY3VsZXMvZ3YtbmF2JztcbmltcG9ydCB7IGlzU2FtZVJvdXRlcyB9IGZyb20gJy4uL2xpYi91dGlscyc7XG5pbXBvcnQgeyBjbGFzc01hcCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL2NsYXNzLW1hcCc7XG5pbXBvcnQgeyB3aXRoUmVzaXplT2JzZXJ2ZXIgfSBmcm9tICcuLi9taXhpbnMvd2l0aC1yZXNpemUtb2JzZXJ2ZXInO1xuXG4vKipcbiAqIEEgbWVudVxuICpcbiAqICMjIERldGFpbHNcbiAqICogaGFzIEB0aGVtZSBmYWNldFxuICpcbiAqIEBmaXJlcyBndi1saW5rOmNsaWNrIC0gQ3VzdG9tIGV2ZW50IHdoZW4gbGluayBjbGlja1xuICpcbiAqIEBzbG90IHRvcCAtIFRoZSBjb250ZW50IG9uIHRvcCBvZiBtZW51XG4gKiBAc2xvdCByaWdodCAtIFRoZSBjb250ZW50IGF0IHJpZ2h0XG4gKiBAc2xvdCByaWdodC10cmFuc2l0aW9uIC0gVGhlIGNvbnRlbnQgYXQgcmlnaHQgd2l0aCB0cmFuc2l0aW9uXG4gKlxuICogQGF0dHIge0FycmF5fSByb3V0ZXMgLSBkZWZpbml0aW9uIG9mIHJvdXRlcyBbe2FjdGl2ZTogQm9vbGVhbiwgaWNvbjogU3RyaW5nLCBwYXRoOiBTdHJpbmcsIHRpdGxlOiBQcm9taXNlPFN0cmluZz5dXG4gKiBAY3NzcHJvcCB7Q29sb3J9IFstLWd2LW1lbnUtLWM9dmFyKC0tZ3YtdGhlbWUtZm9udC1jb2xvci1saWdodCwgI2ZmZmZmZildIC0gQ29sb3JcbiAqIEBjc3Nwcm9wIHtDb2xvcn0gWy0tZ3YtbWVudS0tYmdjPXZhcigtLWd2LXRoZW1lLWNvbG9yLWRhcmssICMyODQ0NGYpXSAtIEJhY2tncm91bmQgY29sb3IuXG4gKiBAY3NzcHJvcCB7Q29sb3J9IFstLWd2LW1lbnUtbGluay1hY3RpdmUtLWJkYz12YXIoLS1ndi10aGVtZS1jb2xvci1saWdodCwgIzg2YzNkMCldIC0gQm9yZGVyIGJvdHRvbSBjb2xvciBvZiBhY3RpdmUgbGluay5cbiAqIEBjc3Nwcm9wIHtTdHJpbmd9IFstLWd2LW1lbnUtbGluay1hY3RpdmUtLWJkcz1zb2xpZF0gLSBCb3JkZXIgYm90dG9tIHN0eWxlIG9mIGFjdGl2ZSBsaW5rLlxuICogQGNzc3Byb3Age0xlbmd0aH0gWy0tZ3YtbWVudS1saW5rLWFjdGl2ZS0tYmR3PTAgMCAzcHggMF0gLSBCb3JkZXIgYm90dG9tIHdpZHRoIG9mIGFjdGl2ZSBsaW5rLlxuICogQGNzc3Byb3Age0NvbG9yfSBbLS1ndi1tZW51LWxpbmstYWN0aXZlLS1iZ2M9dHJhbnNwYXJlbnRdIC0gQWN0aXZlIGJhY2tncm91bmQgY29sb3JcbiAqIEBjc3Nwcm9wIHtDb2xvcn0gWy0tZ3YtbWVudS1saW5rLS1iZ2M9dHJhbnNwYXJlbnRdIC0gQmFja2dyb3VuZCBjb2xvclxuICogQGNzc3Byb3Age0xlbmd0aH0gWy0tZ3YtbWVudS1saW5rLWEtLXB2PTBweF0gLSBMaW5rIHZlcnRpY2FsIHBhZGRpbmdcbiAqL1xuZXhwb3J0IGNsYXNzIEd2TWVudSBleHRlbmRzIHdpdGhSZXNpemVPYnNlcnZlcihMaXRFbGVtZW50KSB7XG4gIHN0YXRpYyBnZXQgcHJvcGVydGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLyoqIEByZXF1aXJlZCAqKi9cbiAgICAgIHJvdXRlczogeyB0eXBlOiBBcnJheSB9LFxuICAgICAgc3RpY2t5OiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIF9zbWFsbDogeyB0eXBlOiBCb29sZWFuLCBhdHRyaWJ1dGU6IGZhbHNlIH0sXG4gICAgICBfcm91dGVzOiB7IHR5cGU6IEFycmF5LCBhdHRyaWJ1dGU6IGZhbHNlIH0sXG4gICAgICBfaGFzSGVhZGVyOiB7IHR5cGU6IEJvb2xlYW4sIGF0dHJpYnV0ZTogZmFsc2UgfSxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGdldCBzdHlsZXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC8vIGxhbmd1YWdlPWNzc1xuICAgICAgY3NzYFxuICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgLS1ndi1saW5rLS1jOiB2YXIoLS1ndi1tZW51LS1jLCB2YXIoLS1ndi10aGVtZS1mb250LWNvbG9yLWxpZ2h0LCAjZmZmZmZmKSk7XG4gICAgICAgICAgLS1ndi1saW5rLWFjdGl2ZS0tYzogdmFyKC0tZ3YtbWVudS0tYywgdmFyKC0tZ3YtdGhlbWUtZm9udC1jb2xvci1saWdodCwgI2ZmZmZmZikpO1xuICAgICAgICAgIC0tZ3YtbGluay0tYmdjOiB2YXIoLS1ndi1tZW51LWxpbmstLWJnYywgdHJhbnNwYXJlbnQpO1xuICAgICAgICAgIC0tZ3YtbGluay1hY3RpdmUtLWJnYzogdmFyKC0tZ3YtbWVudS1saW5rLWFjdGl2ZS0tYmdjLCB0cmFuc3BhcmVudCk7XG4gICAgICAgICAgLS1ndi1saW5rLWFjdGl2ZS0tYmRjOiB2YXIoLS1ndi1tZW51LWxpbmstYWN0aXZlLS1iZGMsIHZhcigtLWd2LXRoZW1lLWNvbG9yLWxpZ2h0LCAjODZjM2QwKSk7XG4gICAgICAgICAgLS1ndi1saW5rLWFjdGl2ZS0tYmRzOiB2YXIoLS1ndi1tZW51LWxpbmstYWN0aXZlLS1iZHMsIHNvbGlkKTtcbiAgICAgICAgICAtLWd2LWxpbmstYWN0aXZlLS1iZHc6IHZhcigtLWd2LW1lbnUtbGluay1hY3RpdmUtLWJkdywgMCAwIDNweCAwKTtcbiAgICAgICAgICAtLXByOiB2YXIoLS1ndi10aGVtZS1sYXlvdXQtLXByLCA0cmVtKTtcbiAgICAgICAgICAtLXBsOiB2YXIoLS1ndi10aGVtZS1sYXlvdXQtLXBsLCA0cmVtKTtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tZ3YtdGhlbWUtZm9udC1zaXplLXMsIDEycHgpO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3N0aWNreV0pIGd2LW5hdiB7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDE0cHg7XG4gICAgICAgICAgLS1ndi1saW5rLWljb24tLXM6IDIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbc3RpY2t5XSkgLmhhcy1oZWFkZXIgZ3YtbmF2IHtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMzRweDtcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFtzdGlja3ldKSA6OnNsb3R0ZWQoW3Nsb3Q9J3RvcCddKSB7XG4gICAgICAgICAgdHJhbnNpdGlvbjogaGVpZ2h0IDI1MG1zIGVhc2UtaW4tb3V0O1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3ctbHQtMTAyNF0pIHtcbiAgICAgICAgICAtLXByOiA1cHg7XG4gICAgICAgICAgLS1wbDogNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3ctbHQtNzY4XSkgLm5hdi1jb250YWluZXIge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIHBhZGRpbmctbGVmdDogdmFyKC0tcGwpO1xuICAgICAgICAgIC0tZ3YtbGluay1hLS1wdjogdmFyKC0tZ3YtbWVudS1saW5rLWEtLXB2LCAwcHgpO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3ctbHQtNTgwXSkgLm5hdi1jb250YWluZXIge1xuICAgICAgICAgIGZsZXg6IGF1dG87XG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3ctbHQtNTgwXSkgZ3YtbmF2IHtcbiAgICAgICAgICBmbGV4OiBhdXRvO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3ctbHQtNTgwXSkgLnJpZ2h0IHtcbiAgICAgICAgICBmbGV4OiBhdXRvO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3ctbHQtMzgwXSkgLm5hdi1jb250YWluZXIge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3ctbHQtMzgwXSkgZ3YtbmF2IHtcbiAgICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbdy1sdC0zODBdKSAucmlnaHQge1xuICAgICAgICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kO1xuICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGd2LW5hdiB7XG4gICAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgICAgICBsaW5lLWhlaWdodDogNTBweDtcbiAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICB9XG5cbiAgICAgICAgLm5hdi1jb250YWluZXIge1xuICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIGF1dG87XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZ3YtbWVudS0tYmdjLCB2YXIoLS1ndi10aGVtZS1jb2xvci1kYXJrLCAjMjg0NDRmKSk7XG4gICAgICAgICAgY29sb3I6IHZhcigtLWd2LW1lbnUtLWMsIHZhcigtLWd2LXRoZW1lLWZvbnQtY29sb3ItbGlnaHQsICNmZmZmZmYpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oYXMtaGVhZGVyIC5uYXYtY29udGFpbmVyIHtcbiAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gMTByZW0pO1xuICAgICAgICAgIHBhZGRpbmctbGVmdDogMTByZW07XG4gICAgICAgICAgLS1ndi1saW5rLWEtLXB2OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3N0aWNreV0pIC5oYXMtaGVhZGVyIC5uYXYtY29udGFpbmVyIHtcbiAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gNXJlbSk7XG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiA1cmVtO1xuICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAyNTBtcyBlYXNlLWluLW91dDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5yaWdodCB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1wcik7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGd2LW5hdiB7XG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1wbCk7XG4gICAgICAgICAgdHJhbnNpdGlvbjogd2lkdGggMjUwbXMgZWFzZS1pbi1vdXQ7XG4gICAgICAgIH1cblxuICAgICAgICBzbG90W25hbWU9J3JpZ2h0LXRyYW5zaXRpb24nXSxcbiAgICAgICAgc2xvdFtuYW1lPSdyaWdodCddIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAucmlnaHQgOjpzbG90dGVkKFtzbG90PSdyaWdodCddKSxcbiAgICAgICAgLnJpZ2h0IDo6c2xvdHRlZChbc2xvdD0ncmlnaHQtdHJhbnNpdGlvbiddKSB7XG4gICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLnJpZ2h0IDo6c2xvdHRlZChbc2xvdD0ncmlnaHQtdHJhbnNpdGlvbiddKSB7XG4gICAgICAgICAgdHJhbnNpdGlvbjogd2lkdGggMjUwbXMgZWFzZSAyNTBtcztcbiAgICAgICAgICB3aWR0aDogNzAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLnJpZ2h0OmZvY3VzLXdpdGhpbiA6OnNsb3R0ZWQoW3Nsb3Q9J3JpZ2h0LXRyYW5zaXRpb24nXSkge1xuICAgICAgICAgIGFuaW1hdGlvbjogc2xpZGUgMjUwbXMgMjUwbXM7XG4gICAgICAgICAgdHJhbnNpdGlvbjogd2lkdGggMjUwbXMgZWFzZS1pbi1vdXQgMjUwbXM7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAucmlnaHQgOjpzbG90dGVkKFtzbG90PSdyaWdodCddKSB7XG4gICAgICAgICAgLS1ndi1idXR0b24tLXA6IDdweCAxNnB4O1xuICAgICAgICAgIC0tZ3YtYnV0dG9uLS1mejogMTVweDtcbiAgICAgICAgfVxuICAgICAgYCxcbiAgICBdO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIHRoaXMuX3JvdXRlcyA9IFtdO1xuICAgIHRoaXMuc3RpY2t5ID0gZmFsc2U7XG4gICAgdGhpcy5icmVha3BvaW50cyA9IHtcbiAgICAgIC8vIGNlaWxlZCB3aWR0aCB3aXRoIDI3NXB4IHRpbGVzIGFuZCAxcmVtICgxNnB4KSBnYXBcbiAgICAgIHdpZHRoOiBbMzgwLCA1ODAsIDc2OCwgMTAyNF0sXG4gICAgfTtcbiAgfVxuXG4gIHNldCByb3V0ZXMoY2FuZGlkYXRlKSB7XG4gICAgaWYgKGNhbmRpZGF0ZSkge1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKGNhbmRpZGF0ZSkudGhlbigoY2FuZGlkYXRlcykgPT4ge1xuICAgICAgICBpZiAoY2FuZGlkYXRlcykge1xuICAgICAgICAgIFByb21pc2UuYWxsKGNhbmRpZGF0ZXMpLnRoZW4oKGZ1dHVyZVJvdXRlcykgPT4ge1xuICAgICAgICAgICAgaWYgKCFpc1NhbWVSb3V0ZXModGhpcy5fcm91dGVzLCBmdXR1cmVSb3V0ZXMpKSB7XG4gICAgICAgICAgICAgIHRoaXMuX3JvdXRlcyA9IGZ1dHVyZVJvdXRlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9yb3V0ZXMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3JvdXRlcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIG9uUmVzaXplKHsgd2lkdGggfSkge1xuICAgIGlmICh3aWR0aCA8PSAxMDI0KSB7XG4gICAgICB0aGlzLl9zbWFsbCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NtYWxsID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cIiR7Y2xhc3NNYXAoeyAnaGFzLWhlYWRlcic6IHRoaXMuX2hhc0hlYWRlciB9KX1cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInRvcFwiPjwvc2xvdD5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1jb250YWluZXJcIj5cbiAgICAgICAgICA8Z3YtbmF2IC5yb3V0ZXM9XCIke3RoaXMuX3JvdXRlc31cIiA/c21hbGw9XCIke3RoaXMuX3NtYWxsfVwiPjwvZ3YtbmF2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPjxzbG90IG5hbWU9XCJyaWdodC10cmFuc2l0aW9uXCI+PC9zbG90PjxzbG90IG5hbWU9XCJyaWdodFwiPjwvc2xvdD48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG5cbiAgdXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcykge1xuICAgIHN1cGVyLnVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIGxldCBfaGVhZGVyID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCBub2RlIG9mIHRoaXMuY2hpbGROb2Rlcykge1xuICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgICAgY29uc3QgY2hpbGQgPSBub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdndi1oZWFkZXInID8gbm9kZSA6IG5vZGUucXVlcnlTZWxlY3RvcignZ3YtaGVhZGVyJyk7XG4gICAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICAgIGNoaWxkLnN0aWNreSA9IHRoaXMuc3RpY2t5O1xuICAgICAgICAgIF9oZWFkZXIgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2hhc0hlYWRlciA9IF9oZWFkZXI7XG4gIH1cbn1cblxud2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZ3YtbWVudScsIEd2TWVudSk7XG4iXX0=
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.GvMenu=void 0;const t=require("lit");require("../molecules/gv-nav");const e=require("../lib/utils"),i=require("lit/directives/class-map"),s=require("../mixins/with-resize-observer");class r extends((0,s.withResizeObserver)(t.LitElement)){static get properties(){return{routes:{type:Array},sticky:{type:Boolean,reflect:!0},_small:{type:Boolean,attribute:!1},_routes:{type:Array,attribute:!1},_hasHeader:{type:Boolean,attribute:!1}}}static get styles(){return[t.css`:host{--gv-link--c:var(--gv-menu--c, var(--gv-theme-font-color-light, #ffffff));--gv-link-active--c:var(--gv-menu--c, var(--gv-theme-font-color-light, #ffffff));--gv-link--bgc:var(--gv-menu-link--bgc, transparent);--gv-link-active--bgc:var(--gv-menu-link-active--bgc, transparent);--gv-link-active--bdc:var(--gv-menu-link-active--bdc, var(--gv-theme-color-light, #86c3d0));--gv-link-active--bds:var(--gv-menu-link-active--bds, solid);--gv-link-active--bdw:var(--gv-menu-link-active--bdw, 0 0 3px 0);--pr:var(--gv-theme-layout--pr, 4rem);--pl:var(--gv-theme-layout--pl, 4rem);box-sizing:border-box;display:block;font-size:var(--gv-theme-font-size-s,12px)}:host([sticky]) gv-nav{line-height:14px;--gv-link-icon--s:20px}:host([sticky]) .has-header gv-nav{line-height:34px}:host([sticky]) ::slotted([slot=top]){transition:height 250ms ease-in-out}:host([w-lt-1024]){--pr:5px;--pl:5px}:host([w-lt-768]) .nav-container{width:100%;padding-left:var(--pl);--gv-link-a--pv:var(--gv-menu-link-a--pv, 0px)}:host([w-lt-580]) .nav-container{flex:auto;padding-left:0}:host([w-lt-580]) gv-nav{flex:auto}:host([w-lt-580]) .right{flex:auto}:host([w-lt-380]) .nav-container{display:flex;flex-direction:column-reverse}:host([w-lt-380]) gv-nav{align-self:flex-start;flex:1}:host([w-lt-380]) .right{align-self:flex-end;flex:1;width:100%;padding-right:0}gv-nav{display:table-cell;line-height:50px;vertical-align:middle}.nav-container{display:grid;grid-template-columns:auto auto;background-color:var(--gv-menu--bgc,var(--gv-theme-color-dark,#28444f));color:var(--gv-menu--c,var(--gv-theme-font-color-light,#fff))}.has-header .nav-container{width:calc(100% - 10rem);padding-left:10rem;--gv-link-a--pv:0}:host([sticky]) .has-header .nav-container{width:calc(100% - 5rem);padding-left:5rem;transition:all 250ms ease-in-out}.right{display:flex;padding-right:var(--pr);justify-content:center;flex-direction:column}gv-nav{padding-left:var(--pl);transition:width 250ms ease-in-out}slot[name=right-transition],slot[name=right]{display:flex;justify-content:flex-end;width:100%}.right ::slotted([slot=right-transition]),.right ::slotted([slot=right]){align-self:center}.right ::slotted([slot=right-transition]){transition:width 250ms ease 250ms;width:70%}.right:focus-within ::slotted([slot=right-transition]){animation:slide 250ms 250ms;transition:width 250ms ease-in-out 250ms;width:100%}.right ::slotted([slot=right]){--gv-button--p:7px 16px;--gv-button--fz:15px}`]}constructor(){super(),this._routes=[],this.sticky=!1,this.breakpoints={width:[380,580,768,1024]}}set routes(t){t?Promise.resolve(t).then((t=>{t?Promise.all(t).then((t=>{(0,e.isSameRoutes)(this._routes,t)||(this._routes=t)})):this._routes=[]})):this._routes=[]}onResize({width:t}){this._small=t<=1024}render(){return t.html`<div class="${(0,i.classMap)({"has-header":this._hasHeader})}"><slot name="top"></slot><div class="nav-container"><gv-nav .routes="${this._routes}" ?small="${this._small}"></gv-nav><div class="right"><slot name="right-transition"></slot><slot name="right"></slot></div></div></div>`}updated(t){super.updated(t);let e=!1;for(const t of this.childNodes)if(1===t.nodeType){const i="gv-header"===t.nodeName.toLowerCase()?t:t.querySelector("gv-header");if(i){i.sticky=this.sticky,e=!0;break}}this._hasHeader=e}}exports.GvMenu=r,window.customElements.define("gv-menu",r);
@@ -1,130 +1 @@
1
- /*
2
- * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { css, html, LitElement } from 'lit';
17
- import { dispatchCustomEvent } from '../lib/events';
18
- /**
19
- * The newsletter subscription page
20
- *
21
- * @fires gv-newsletter-subscription:subscribe - Custom event when link click
22
- * @fires gv-newsletter-subscription:skip - Custom event when link click
23
- *
24
- * @attr {String} title - The title of newsletter subscription container
25
- * @attr {String} header - The header of newsletter subscription container
26
- * @attr {String} placeholder - The placeholder used for the email input
27
- * @attr {String} subscribeLabel - The text of the subscribe button
28
- * @attr {String} skipLabel - The text of the skip button
29
- * @attr {Array} taglines - The taglines to promote the newsletter subscription
30
- * @attr {String} email - The email value
31
- * @attr {Boolean} disabled - The disabled state of email input
32
- * @attr {String} githubUrl - The url to github page
33
- * @attr {String} twitterUrl - The url to twitter page
34
- * @attr {String} linkedinUrl - The url to linkedin page
35
- *
36
- */
37
-
38
- export class GvNewsletterSubscription extends LitElement {
39
- static get properties() {
40
- return {
41
- title: {
42
- type: String
43
- },
44
- header: {
45
- type: String
46
- },
47
- placeholder: {
48
- type: String
49
- },
50
- subscribeLabel: {
51
- type: String,
52
- attribute: 'subscribe-label'
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
- }
83
- };
84
- }
85
-
86
- static get styles() {
87
- return [// language=css
88
- css`:host{box-sizing:border-box;margin:.2rem}.newsletter-container{display:flex;flex-direction:column;align-items:center;justify-content:space-between;max-width:680px;box-shadow:0 0 20px 0 rgba(0,0,0,.2),0 5px 5px 0 rgba(0,0,0,.24);padding:25px 20px 5px 20px}.newsletter__header{text-transform:uppercase;font-style:oblique;text-align:center;font-size:16px;font-weight:700;padding:5px 35px;color:var(--gv-theme-neutral-color-lightest,#fff);background-color:var(--gv-theme-color-light,#86c3d0)}.newsletter__title{display:flex;flex-direction:column;align-items:center;font-size:20px;text-transform:uppercase;padding:20px;color:var(--gv-theme-color-light,#86c3d0)}.newsletter__title-highlight{font-size:30px}.newsletter__email{display:flex;flex-direction:column;width:50%}.newsletter__taglines{display:flex;flex-direction:row;justify-content:space-between;align-items:center;text-align:center;text-transform:uppercase;font-size:14px;height:20%;margin-top:20px;padding:10px 0;color:var(--gv-theme-color-darker,#383e3f);border-bottom:solid 1px var(--gv-theme-color-darker,#383e3f)}.newsletter__tagline{display:flex;flex-basis:100%;flex-direction:column;justify-content:center;align-items:center;height:100%;font-weight:700;padding:0 15px;border-right:solid 1px var(--gv-theme-color-darker,#383e3f)}.newsletter__tagline.last{border-right:none}.newsletter__tagline-text{width:100%}.newsletter__skip{margin-top:20px}.social{width:100%;display:flex;flex-direction:row;justify-content:flex-end}.social-link{--gv-icon--c:var(--gv-theme-color-light, #86c3d0);--gv-icon--s:32px}`];
89
- }
90
-
91
- constructor() {
92
- super();
93
- this.header = 'Customers process over 1 billion requests through the gravitee.io gateway in just one week';
94
- this.title = 'Community of api masters';
95
- this.placeholder = 'Enter your email';
96
- this.subscribeLabel = 'Become an API master now';
97
- this.taglines = ['New release monthly updates', 'Free trial of Gravitee.IO enterprise', 'Share your experiences with other members'];
98
- this.skipLabel = 'Skip';
99
- this.email = '';
100
- this.disabled = false;
101
- this._invalid = true;
102
- this.githubUrl = 'https://github.com/gravitee-io';
103
- this.twitterUrl = 'https://twitter.com/GraviteeIO';
104
- this.linkedinUrl = 'https://www.linkedin.com/company/gravitee-io/';
105
- }
106
-
107
- render() {
108
- return html` <div class="newsletter-container"> <div class="newsletter__header"> ${this.header} </div> <div class="newsletter__title"> <span>Join the</span> <span class="newsletter__title-highlight">${this.title}</span> <span>Today</span> </div> <div class="newsletter__email"> <gv-input id="email" name="email" @gv-input:submit="${this._onSubscribe}" @gv-input:input="${this._onInputChange}" type="email" required .value="${this.email}" .disabled="${this.disabled}" placeholder="${this.placeholder}"></gv-input> <gv-button @click="${this._onSubscribe}" id="email-submit" provider="graviteeio_am" icon-right="navigation:angle-right" .disabled="${!this.disabled && this._invalid}"> ${this.subscribeLabel} </gv-button> </div> ${this.taglines.length > 0 ? html` <div class="newsletter__taglines"> ${this.taglines.map((item, i, arr) => html` <div class="newsletter__tagline ${i === arr.length - 1 ? 'last' : ''}"> <div class="newsletter__tagline-text">${item}</div> </div> `)} </div>` : ''} <div class="newsletter__skip"> <gv-button @click="${this._onSkip}" provider="graviteeio_am" icon-right="navigation:angle-right" small outlined> ${this.skipLabel} </gv-button> </div> <div class="social"> <gv-button class="social-link" link icon="thirdparty:github" .href="${this.githubUrl}" @gv-button:click="${this._navigateSocial.bind(this, this.githubUrl)}"> </gv-button> <gv-button class="social-link" link icon="thirdparty:twitter" .href="${this.twitterUrl}" @gv-button:click="${this._navigateSocial.bind(this, this.twitterUrl)}"> </gv-button> <gv-button class="social-link" link icon="thirdparty:linkedin" .href="${this.linkedinUrl}" @gv-button:click="${this._navigateSocial.bind(this, this.linkedinUrl)}"> </gv-button> </div> </div> `;
109
- }
110
-
111
- _onSubscribe() {
112
- dispatchCustomEvent(this, 'subscribe', this.email);
113
- }
114
-
115
- _onSkip() {
116
- dispatchCustomEvent(this, 'skip');
117
- }
118
-
119
- _navigateSocial(url) {
120
- window.open(url, '_blank');
121
- }
122
-
123
- _onInputChange(e) {
124
- this._invalid = e.target.invalid;
125
- this.email = e.detail;
126
- }
127
-
128
- }
129
- 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
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.GvNewsletterSubscription=void 0;const t=require("lit"),e=require("../lib/events");class i extends t.LitElement{static get properties(){return{title:{type:String},header:{type:String},placeholder:{type:String},subscribeLabel:{type:String,attribute:"subscribe-label"},skipLabel:{type:String,attribute:"skip-label"},taglines:{type:Array},email:{type:String},disabled:{type:Boolean},githubUrl:{type:String,attribute:"github-url"},twitterUrl:{type:String,attribute:"twitter-url"},linkedinUrl:{type:String,attribute:"linkedin-url"},_invalid:{type:Boolean,attribute:!1}}}static get styles(){return[t.css`:host{box-sizing:border-box;margin:.2rem}.newsletter-container{display:flex;flex-direction:column;align-items:center;justify-content:space-between;max-width:680px;box-shadow:0 0 20px 0 rgba(0,0,0,.2),0 5px 5px 0 rgba(0,0,0,.24);padding:25px 20px 5px 20px}.newsletter__header{text-transform:uppercase;font-style:oblique;text-align:center;font-size:16px;font-weight:700;padding:5px 35px;color:var(--gv-theme-neutral-color-lightest,#fff);background-color:var(--gv-theme-color-light,#86c3d0)}.newsletter__title{display:flex;flex-direction:column;align-items:center;font-size:20px;text-transform:uppercase;padding:20px;color:var(--gv-theme-color-light,#86c3d0)}.newsletter__title-highlight{font-size:30px}.newsletter__email{display:flex;flex-direction:column;width:50%}.newsletter__taglines{display:flex;flex-direction:row;justify-content:space-between;align-items:center;text-align:center;text-transform:uppercase;font-size:14px;height:20%;margin-top:20px;padding:10px 0;color:var(--gv-theme-color-darker,#383e3f);border-bottom:solid 1px var(--gv-theme-color-darker,#383e3f)}.newsletter__tagline{display:flex;flex-basis:100%;flex-direction:column;justify-content:center;align-items:center;height:100%;font-weight:700;padding:0 15px;border-right:solid 1px var(--gv-theme-color-darker,#383e3f)}.newsletter__tagline.last{border-right:none}.newsletter__tagline-text{width:100%}.newsletter__skip{margin-top:20px}.social{width:100%;display:flex;flex-direction:row;justify-content:flex-end}.social-link{--gv-icon--c:var(--gv-theme-color-light, #86c3d0);--gv-icon--s:32px}`]}constructor(){super(),this.header="Customers process over 1 billion requests through the gravitee.io gateway in just one week",this.title="Community of api masters",this.placeholder="Enter your email",this.subscribeLabel="Become an API master now",this.taglines=["New release monthly updates","Free trial of Gravitee.IO enterprise","Share your experiences with other members"],this.skipLabel="Skip",this.email="",this.disabled=!1,this._invalid=!0,this.githubUrl="https://github.com/gravitee-io",this.twitterUrl="https://twitter.com/GraviteeIO",this.linkedinUrl="https://www.linkedin.com/company/gravitee-io/"}render(){return t.html`<div class="newsletter-container"><div class="newsletter__header">${this.header}</div><div class="newsletter__title"><span>Join the</span> <span class="newsletter__title-highlight">${this.title}</span> <span>Today</span></div><div class="newsletter__email"><gv-input id="email" name="email" @gv-input:submit="${this._onSubscribe}" @gv-input:input="${this._onInputChange}" type="email" required .value="${this.email}" .disabled="${this.disabled}" placeholder="${this.placeholder}"></gv-input><gv-button @click="${this._onSubscribe}" id="email-submit" provider="graviteeio_am" icon-right="navigation:angle-right" .disabled="${!this.disabled&&this._invalid}">${this.subscribeLabel}</gv-button></div>${this.taglines.length>0?t.html`<div class="newsletter__taglines">${this.taglines.map(((e,i,s)=>t.html`<div class="newsletter__tagline ${i===s.length-1?"last":""}"><div class="newsletter__tagline-text">${e}</div></div>`))}</div>`:""}<div class="newsletter__skip"><gv-button @click="${this._onSkip}" provider="graviteeio_am" icon-right="navigation:angle-right" small outlined>${this.skipLabel}</gv-button></div><div class="social"><gv-button class="social-link" link icon="thirdparty:github" .href="${this.githubUrl}" @gv-button:click="${this._navigateSocial.bind(this,this.githubUrl)}"></gv-button><gv-button class="social-link" link icon="thirdparty:twitter" .href="${this.twitterUrl}" @gv-button:click="${this._navigateSocial.bind(this,this.twitterUrl)}"></gv-button><gv-button class="social-link" link icon="thirdparty:linkedin" .href="${this.linkedinUrl}" @gv-button:click="${this._navigateSocial.bind(this,this.linkedinUrl)}"></gv-button></div></div>`}_onSubscribe(){(0,e.dispatchCustomEvent)(this,"subscribe",this.email)}_onSkip(){(0,e.dispatchCustomEvent)(this,"skip")}_navigateSocial(t){window.open(t,"_blank")}_onInputChange(t){this._invalid=t.target.invalid,this.email=t.detail}}exports.GvNewsletterSubscription=i,window.customElements.define("gv-newsletter-subscription",i);