@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.
- package/package.json +13 -4
- package/src/atoms/gv-autocomplete.js +1 -437
- package/src/atoms/gv-button.js +1 -235
- package/src/atoms/gv-checkbox.js +1 -129
- package/src/atoms/gv-date-picker-calendar.js +1 -813
- package/src/atoms/gv-date-picker-cell.js +1 -166
- package/src/atoms/gv-date-picker.js +1 -532
- package/src/atoms/gv-file-upload.js +1 -257
- package/src/atoms/gv-icon.js +1 -82
- package/src/atoms/gv-image.js +1 -109
- package/src/atoms/gv-input-message.js +1 -59
- package/src/atoms/gv-input.js +1 -530
- package/src/atoms/gv-link.js +1 -132
- package/src/atoms/gv-message.js +1 -77
- package/src/atoms/gv-metric.js +1 -68
- package/src/atoms/gv-relative-time.js +1 -185
- package/src/atoms/gv-select-native.js +1 -269
- package/src/atoms/gv-select.js +1 -317
- package/src/atoms/gv-spinner.js +1 -36
- package/src/atoms/gv-state.js +1 -89
- package/src/atoms/gv-switch.js +1 -123
- package/src/atoms/gv-tag.js +1 -116
- package/src/atoms/gv-text.js +1 -107
- package/src/charts/gv-chart-bar.js +1 -107
- package/src/charts/gv-chart-gauge.js +1 -97
- package/src/charts/gv-chart-histogram.js +1 -91
- package/src/charts/gv-chart-line.js +1 -235
- package/src/charts/gv-chart-map.js +1 -114
- package/src/charts/gv-chart-pie.js +1 -95
- package/src/index.js +1 -78
- package/src/lib/cron-expression.js +1 -210
- package/src/lib/date.js +1 -53
- package/src/lib/events.js +1 -28
- package/src/lib/http-client-schema-form.js +1 -68
- package/src/lib/http.js +1 -238
- package/src/lib/i18n.js +1 -111
- package/src/lib/item.js +1 -119
- package/src/lib/properties.js +1 -224
- package/src/lib/schema-form.js +1 -43
- package/src/lib/studio.js +1 -94
- package/src/lib/style.js +1 -41
- package/src/lib/text-format.js +1 -76
- package/src/lib/theme.js +1 -66
- package/src/lib/utils.js +1 -110
- package/src/mixins/chart-element.js +1 -142
- package/src/mixins/input-element.js +1 -157
- package/src/mixins/item-resource.js +1 -122
- package/src/mixins/keyboard-element.js +1 -70
- package/src/mixins/update-after-browser.js +1 -33
- package/src/mixins/with-resize-observer.js +1 -78
- package/src/mixins/with-skeleton-attribute.js +1 -118
- package/src/molecules/gv-card-full.js +1 -97
- package/src/molecules/gv-card-list.js +1 -84
- package/src/molecules/gv-card.js +1 -59
- package/src/molecules/gv-category-list.js +1 -49
- package/src/molecules/gv-category.js +1 -90
- package/src/molecules/gv-code.js +1 -297
- package/src/molecules/gv-confirm.js +1 -158
- package/src/molecules/gv-cron-editor.js +1 -464
- package/src/molecules/gv-dropdown-menu.js +1 -84
- package/src/molecules/gv-expandable.js +1 -94
- package/src/molecules/gv-expression-language.js +1 -308
- package/src/molecules/gv-identity-picture.js +1 -125
- package/src/molecules/gv-list.js +1 -135
- package/src/molecules/gv-metrics.js +1 -150
- package/src/molecules/gv-modal.js +1 -146
- package/src/molecules/gv-nav.js +1 -170
- package/src/molecules/gv-option.js +1 -169
- package/src/molecules/gv-plans.js +1 -306
- package/src/molecules/gv-popover.js +1 -231
- package/src/molecules/gv-promote.js +1 -91
- package/src/molecules/gv-rating-list.js +1 -239
- package/src/molecules/gv-rating.js +1 -200
- package/src/molecules/gv-row-expandable.js +1 -39
- package/src/molecules/gv-row.js +1 -84
- package/src/molecules/gv-stats.js +1 -96
- package/src/molecules/gv-stepper.js +1 -144
- package/src/molecules/gv-table.js +1 -575
- package/src/molecules/gv-tree.js +1 -127
- package/src/organisms/gv-documentation.js +1 -132
- package/src/organisms/gv-header.js +1 -130
- package/src/organisms/gv-http-client.js +1 -139
- package/src/organisms/gv-menu.js +1 -142
- package/src/organisms/gv-newsletter-subscription.js +1 -130
- package/src/organisms/gv-pagination.js +1 -170
- package/src/organisms/gv-properties.js +1 -699
- package/src/organisms/gv-resizable-views.js +1 -178
- package/src/organisms/gv-resources.js +1 -428
- package/src/organisms/gv-schema-form-array.js +1 -140
- package/src/organisms/gv-schema-form-control-object.js +1 -140
- package/src/organisms/gv-schema-form-control.js +1 -416
- package/src/organisms/gv-schema-form.js +1 -646
- package/src/organisms/gv-tabs.js +1 -178
- package/src/organisms/gv-user-menu.js +1 -149
- package/src/organisms/gv-vertical-menu.js +1 -82
- package/src/policy-studio/gv-flow-step.js +1 -304
- package/src/policy-studio/gv-flow.js +1 -442
- package/src/policy-studio/gv-policy-studio-menu.js +1 -436
- package/src/policy-studio/gv-policy-studio.js +1 -1778
- package/src/styles/empty.js +1 -19
- package/src/styles/input.js +1 -19
- package/src/styles/link.js +1 -19
- package/src/styles/shapes.js +1 -18
- package/src/styles/skeleton.js +1 -19
- package/src/styles/zoom.js +1 -19
- package/src/theme/gv-theme.js +1 -164
- package/wc/gv-autocomplete.js +1 -1
- package/wc/gv-button.js +1 -1
- package/wc/gv-card-full.js +1 -1
- package/wc/gv-card-list.js +1 -1
- package/wc/gv-card.js +1 -1
- package/wc/gv-category-list.js +1 -1
- package/wc/gv-category.js +1 -1
- package/wc/gv-chart-bar.js +1 -1
- package/wc/gv-chart-gauge.js +1 -1
- package/wc/gv-chart-histogram.js +1 -1
- package/wc/gv-chart-line.js +1 -1
- package/wc/gv-chart-map.js +1 -1
- package/wc/gv-chart-pie.js +1 -1
- package/wc/gv-checkbox.js +1 -1
- package/wc/gv-code.js +1 -1
- package/wc/gv-confirm.js +1 -1
- package/wc/gv-cron-editor.js +1 -1
- package/wc/gv-date-picker-calendar.js +1 -1
- package/wc/gv-date-picker-cell.js +1 -1
- package/wc/gv-date-picker.js +1 -1
- package/wc/gv-documentation.js +1 -1
- package/wc/gv-dropdown-menu.js +1 -1
- package/wc/gv-expandable.js +1 -1
- package/wc/gv-expression-language.js +1 -1
- package/wc/gv-file-upload.js +1 -1
- package/wc/gv-flow-step.js +1 -1
- package/wc/gv-flow.js +1 -1
- package/wc/gv-header.js +1 -1
- package/wc/gv-http-client.js +1 -1
- package/wc/gv-icon.js +1 -1
- package/wc/gv-identity-picture.js +1 -1
- package/wc/gv-image.js +1 -1
- package/wc/gv-input-message.js +1 -1
- package/wc/gv-input.js +1 -1
- package/wc/gv-link.js +1 -1
- package/wc/gv-list.js +1 -1
- package/wc/gv-menu.js +1 -1
- package/wc/gv-message.js +1 -1
- package/wc/gv-metric.js +1 -1
- package/wc/gv-metrics.js +1 -1
- package/wc/gv-modal.js +1 -1
- package/wc/gv-nav.js +1 -1
- package/wc/gv-newsletter-subscription.js +1 -1
- package/wc/gv-option.js +1 -1
- package/wc/gv-pagination.js +1 -1
- package/wc/gv-plans.js +1 -1
- package/wc/gv-policy-studio-menu.js +1 -1
- package/wc/gv-policy-studio.js +1 -1
- package/wc/gv-popover.js +1 -1
- package/wc/gv-promote.js +1 -1
- package/wc/gv-properties.js +1 -1
- package/wc/gv-rating-list.js +1 -1
- package/wc/gv-rating.js +1 -1
- package/wc/gv-relative-time.js +1 -1
- package/wc/gv-resizable-views.js +1 -1
- package/wc/gv-resources.js +1 -1
- package/wc/gv-row-expandable.js +1 -1
- package/wc/gv-row.js +1 -1
- package/wc/gv-schema-form-array.js +1 -1
- package/wc/gv-schema-form-control-object.js +1 -1
- package/wc/gv-schema-form-control.js +1 -1
- package/wc/gv-schema-form.js +1 -1
- package/wc/gv-select-native.js +1 -1
- package/wc/gv-select.js +1 -1
- package/wc/gv-spinner.js +1 -1
- package/wc/gv-state.js +1 -1
- package/wc/gv-stats.js +1 -1
- package/wc/gv-stepper.js +1 -1
- package/wc/gv-switch.js +1 -1
- package/wc/gv-table.js +1 -1
- package/wc/gv-tabs.js +1 -1
- package/wc/gv-tag.js +1 -1
- package/wc/gv-text.js +1 -1
- package/wc/gv-theme.js +1 -1
- package/wc/gv-tree.js +1 -1
- package/wc/gv-user-menu.js +1 -1
- package/wc/gv-vertical-menu.js +1 -1
|
@@ -1,84 +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, LitElement, html } from 'lit';
|
|
17
|
-
/**
|
|
18
|
-
* Dropdown menu
|
|
19
|
-
*
|
|
20
|
-
* @slot - The element which must be clicked to open the actions
|
|
21
|
-
* @slot actions - Element that contains actions
|
|
22
|
-
*
|
|
23
|
-
* @attr {Boolean} open - true, if menu should be open
|
|
24
|
-
* @attr {Boolean} right - true, if actions should at right of container when opened
|
|
25
|
-
*/
|
|
26
|
-
|
|
27
|
-
export class GvDropdownMenu extends LitElement {
|
|
28
|
-
static get properties() {
|
|
29
|
-
return {
|
|
30
|
-
open: {
|
|
31
|
-
type: Boolean,
|
|
32
|
-
reflect: true
|
|
33
|
-
},
|
|
34
|
-
right: {
|
|
35
|
-
type: Boolean,
|
|
36
|
-
reflect: true
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
static get styles() {
|
|
42
|
-
return [// language=CSS
|
|
43
|
-
css`:host{box-sizing:border-box;display:block}.actions{position:absolute;background-color:#fff;transition:all .3s ease-in-out;border-style:solid;border-color:#bfbfbf;border-width:var(--gv-dropdown-menu--bdw,1px 1px 1px 1px);z-index:201;padding:var(--gv-dropdown-menu--p,.5rem);visibility:hidden;opacity:0;display:grid;grid-gap:var(--gv-dropdown-menu--gg,.2rem);bottom:0;top:0}:host([open]) .actions{opacity:1;visibility:visible;cursor:pointer}:host([right]) .actions{right:0}`];
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
constructor() {
|
|
47
|
-
super();
|
|
48
|
-
this.open = false;
|
|
49
|
-
this.right = false;
|
|
50
|
-
this._handleDocumentClick = this._onDocumentClick.bind(this);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
connectedCallback() {
|
|
54
|
-
super.connectedCallback();
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
disconnectedCallback() {
|
|
58
|
-
window.removeEventListener('click', this._handleDocumentClick);
|
|
59
|
-
super.disconnectedCallback();
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
_onDocumentClick() {
|
|
63
|
-
this.open = false;
|
|
64
|
-
window.removeEventListener('click', this._handleDocumentClick);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
toggle() {
|
|
68
|
-
this.open = !this.open;
|
|
69
|
-
setTimeout(() => {
|
|
70
|
-
if (this.open) {
|
|
71
|
-
window.addEventListener('click', this._handleDocumentClick);
|
|
72
|
-
} else {
|
|
73
|
-
window.removeEventListener('click', this._handleDocumentClick);
|
|
74
|
-
}
|
|
75
|
-
}, 0);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
render() {
|
|
79
|
-
return html`<div class="box"> <slot @click="${this.toggle}"></slot> <div class="actions"> <slot name="action" class="action"></slot> </div> </div>`;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
window.customElements.define('gv-dropdown-menu', GvDropdownMenu);
|
|
84
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL21vbGVjdWxlcy9ndi1kcm9wZG93bi1tZW51LmpzIl0sIm5hbWVzIjpbImNzcyIsIkxpdEVsZW1lbnQiLCJodG1sIiwiR3ZEcm9wZG93bk1lbnUiLCJwcm9wZXJ0aWVzIiwib3BlbiIsInR5cGUiLCJCb29sZWFuIiwicmVmbGVjdCIsInJpZ2h0Iiwic3R5bGVzIiwiY29uc3RydWN0b3IiLCJfaGFuZGxlRG9jdW1lbnRDbGljayIsIl9vbkRvY3VtZW50Q2xpY2siLCJiaW5kIiwiY29ubmVjdGVkQ2FsbGJhY2siLCJkaXNjb25uZWN0ZWRDYWxsYmFjayIsIndpbmRvdyIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ0b2dnbGUiLCJzZXRUaW1lb3V0IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbmRlciIsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxHQUFULEVBQWNDLFVBQWQsRUFBMEJDLElBQTFCLFFBQXNDLEtBQXRDO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE9BQU8sTUFBTUMsY0FBTixTQUE2QkYsVUFBN0IsQ0FBd0M7QUFDeEIsYUFBVkcsVUFBVSxHQUFHO0FBQ3RCLFdBQU87QUFDTEMsTUFBQUEsSUFBSSxFQUFFO0FBQUVDLFFBQUFBLElBQUksRUFBRUMsT0FBUjtBQUFpQkMsUUFBQUEsT0FBTyxFQUFFO0FBQTFCLE9BREQ7QUFFTEMsTUFBQUEsS0FBSyxFQUFFO0FBQUVILFFBQUFBLElBQUksRUFBRUMsT0FBUjtBQUFpQkMsUUFBQUEsT0FBTyxFQUFFO0FBQTFCO0FBRkYsS0FBUDtBQUlEOztBQUVnQixhQUFORSxNQUFNLEdBQUc7QUFDbEIsV0FBTyxDQUNMO0FBQ0FWLElBQUFBLEdBQUcseWRBRkUsQ0FBUDtBQW9DRDs7QUFFRFcsRUFBQUEsV0FBVyxHQUFHO0FBQ1o7QUFDQSxTQUFLTixJQUFMLEdBQVksS0FBWjtBQUNBLFNBQUtJLEtBQUwsR0FBYSxLQUFiO0FBQ0EsU0FBS0csb0JBQUwsR0FBNEIsS0FBS0MsZ0JBQUwsQ0FBc0JDLElBQXRCLENBQTJCLElBQTNCLENBQTVCO0FBQ0Q7O0FBRURDLEVBQUFBLGlCQUFpQixHQUFHO0FBQ2xCLFVBQU1BLGlCQUFOO0FBQ0Q7O0FBRURDLEVBQUFBLG9CQUFvQixHQUFHO0FBQ3JCQyxJQUFBQSxNQUFNLENBQUNDLG1CQUFQLENBQTJCLE9BQTNCLEVBQW9DLEtBQUtOLG9CQUF6QztBQUNBLFVBQU1JLG9CQUFOO0FBQ0Q7O0FBRURILEVBQUFBLGdCQUFnQixHQUFHO0FBQ2pCLFNBQUtSLElBQUwsR0FBWSxLQUFaO0FBQ0FZLElBQUFBLE1BQU0sQ0FBQ0MsbUJBQVAsQ0FBMkIsT0FBM0IsRUFBb0MsS0FBS04sb0JBQXpDO0FBQ0Q7O0FBRURPLEVBQUFBLE1BQU0sR0FBRztBQUNQLFNBQUtkLElBQUwsR0FBWSxDQUFDLEtBQUtBLElBQWxCO0FBQ0FlLElBQUFBLFVBQVUsQ0FBQyxNQUFNO0FBQ2YsVUFBSSxLQUFLZixJQUFULEVBQWU7QUFDYlksUUFBQUEsTUFBTSxDQUFDSSxnQkFBUCxDQUF3QixPQUF4QixFQUFpQyxLQUFLVCxvQkFBdEM7QUFDRCxPQUZELE1BRU87QUFDTEssUUFBQUEsTUFBTSxDQUFDQyxtQkFBUCxDQUEyQixPQUEzQixFQUFvQyxLQUFLTixvQkFBekM7QUFDRDtBQUNGLEtBTlMsRUFNUCxDQU5PLENBQVY7QUFPRDs7QUFFRFUsRUFBQUEsTUFBTSxHQUFHO0FBQ1AsV0FBT3BCLElBQUksbUNBQ08sS0FBS2lCLE1BRFosMEZBQVg7QUFNRDs7QUF0RjRDO0FBeUYvQ0YsTUFBTSxDQUFDTSxjQUFQLENBQXNCQyxNQUF0QixDQUE2QixrQkFBN0IsRUFBaURyQixjQUFqRCIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBjc3MsIExpdEVsZW1lbnQsIGh0bWwgfSBmcm9tICdsaXQnO1xuXG4vKipcbiAqIERyb3Bkb3duIG1lbnVcbiAqXG4gKiBAc2xvdCAtIFRoZSBlbGVtZW50IHdoaWNoIG11c3QgYmUgY2xpY2tlZCB0byBvcGVuIHRoZSBhY3Rpb25zXG4gKiBAc2xvdCBhY3Rpb25zIC0gRWxlbWVudCB0aGF0IGNvbnRhaW5zIGFjdGlvbnNcbiAqXG4gKiBAYXR0ciB7Qm9vbGVhbn0gb3BlbiAtIHRydWUsIGlmIG1lbnUgc2hvdWxkIGJlIG9wZW5cbiAqIEBhdHRyIHtCb29sZWFufSByaWdodCAtIHRydWUsIGlmIGFjdGlvbnMgc2hvdWxkIGF0IHJpZ2h0IG9mIGNvbnRhaW5lciB3aGVuIG9wZW5lZFxuICovXG5leHBvcnQgY2xhc3MgR3ZEcm9wZG93bk1lbnUgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgc3RhdGljIGdldCBwcm9wZXJ0aWVzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBvcGVuOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHJpZ2h0OiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGdldCBzdHlsZXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC8vIGxhbmd1YWdlPUNTU1xuICAgICAgY3NzYFxuICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgIC5hY3Rpb25zIHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDMwMG1zIGVhc2UtaW4tb3V0O1xuICAgICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICAgICAgYm9yZGVyLWNvbG9yOiAjYmZiZmJmO1xuICAgICAgICAgIGJvcmRlci13aWR0aDogdmFyKC0tZ3YtZHJvcGRvd24tbWVudS0tYmR3LCAxcHggMXB4IDFweCAxcHgpO1xuICAgICAgICAgIHotaW5kZXg6IDIwMTtcbiAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1ndi1kcm9wZG93bi1tZW51LS1wLCAwLjVyZW0pO1xuICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgZ3JpZC1nYXA6IHZhcigtLWd2LWRyb3Bkb3duLW1lbnUtLWdnLCAwLjJyZW0pO1xuICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICB0b3A6IDA7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbb3Blbl0pIC5hY3Rpb25zIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3JpZ2h0XSkgLmFjdGlvbnMge1xuICAgICAgICAgIHJpZ2h0OiAwcHg7XG4gICAgICAgIH1cbiAgICAgIGAsXG4gICAgXTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgdGhpcy5yaWdodCA9IGZhbHNlO1xuICAgIHRoaXMuX2hhbmRsZURvY3VtZW50Q2xpY2sgPSB0aGlzLl9vbkRvY3VtZW50Q2xpY2suYmluZCh0aGlzKTtcbiAgfVxuXG4gIGNvbm5lY3RlZENhbGxiYWNrKCkge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gIH1cblxuICBkaXNjb25uZWN0ZWRDYWxsYmFjaygpIHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLl9oYW5kbGVEb2N1bWVudENsaWNrKTtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICB9XG5cbiAgX29uRG9jdW1lbnRDbGljaygpIHtcbiAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLl9oYW5kbGVEb2N1bWVudENsaWNrKTtcbiAgfVxuXG4gIHRvZ2dsZSgpIHtcbiAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMub3Blbikge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLl9oYW5kbGVEb2N1bWVudENsaWNrKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuX2hhbmRsZURvY3VtZW50Q2xpY2spO1xuICAgICAgfVxuICAgIH0sIDApO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiBodG1sYDxkaXYgY2xhc3M9XCJib3hcIj5cbiAgICAgIDxzbG90IEBjbGljaz1cIiR7dGhpcy50b2dnbGV9XCI+PC9zbG90PlxuICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cImFjdGlvblwiIGNsYXNzPVwiYWN0aW9uXCI+PC9zbG90PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+YDtcbiAgfVxufVxuXG53aW5kb3cuY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdndi1kcm9wZG93bi1tZW51JywgR3ZEcm9wZG93bk1lbnUpO1xuIl19
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:!0}),exports.GvDropdownMenu=void 0;const e=require("lit");class t extends e.LitElement{static get properties(){return{open:{type:Boolean,reflect:!0},right:{type:Boolean,reflect:!0}}}static get styles(){return[e.css`:host{box-sizing:border-box;display:block}.actions{position:absolute;background-color:#fff;transition:all .3s ease-in-out;border-style:solid;border-color:#bfbfbf;border-width:var(--gv-dropdown-menu--bdw,1px 1px 1px 1px);z-index:201;padding:var(--gv-dropdown-menu--p,.5rem);visibility:hidden;opacity:0;display:grid;grid-gap:var(--gv-dropdown-menu--gg,.2rem);bottom:0;top:0}:host([open]) .actions{opacity:1;visibility:visible;cursor:pointer}:host([right]) .actions{right:0}`]}constructor(){super(),this.open=!1,this.right=!1,this._handleDocumentClick=this._onDocumentClick.bind(this)}connectedCallback(){super.connectedCallback()}disconnectedCallback(){window.removeEventListener("click",this._handleDocumentClick),super.disconnectedCallback()}_onDocumentClick(){this.open=!1,window.removeEventListener("click",this._handleDocumentClick)}toggle(){this.open=!this.open,setTimeout((()=>{this.open?window.addEventListener("click",this._handleDocumentClick):window.removeEventListener("click",this._handleDocumentClick)}),0)}render(){return e.html`<div class="box"><slot @click="${this.toggle}"></slot><div class="actions"><slot name="action" class="action"></slot></div></div>`}}exports.GvDropdownMenu=t,window.customElements.define("gv-dropdown-menu",t);
|
|
@@ -1,94 +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 { link } from '../styles/link';
|
|
18
|
-
import { classMap } from 'lit/directives/class-map';
|
|
19
|
-
import { dispatchCustomEvent } from '../lib/events';
|
|
20
|
-
/**
|
|
21
|
-
* Expandable component
|
|
22
|
-
*
|
|
23
|
-
* @fires gv-expandable:toggle - When user toggle
|
|
24
|
-
*
|
|
25
|
-
* @attr {Boolean} open - When true, opens details by default
|
|
26
|
-
* @attr {String} icon - An icon to show open feature
|
|
27
|
-
* @attr {String} icon-opened - An icon to show close feature
|
|
28
|
-
* @attr {Boolean} clickable - When true, details is clickable like summary
|
|
29
|
-
*
|
|
30
|
-
* @cssprop {String} [--gv-expandable--bdb=var(--gv-expandable--bdb, thin solid var(--gv-theme-color, #5a7684)] - Border bottom
|
|
31
|
-
*/
|
|
32
|
-
|
|
33
|
-
export class GvExpandable extends LitElement {
|
|
34
|
-
constructor() {
|
|
35
|
-
super();
|
|
36
|
-
this.open = false;
|
|
37
|
-
this.icon = 'navigation:angle-left';
|
|
38
|
-
this.iconOpened = 'navigation:angle-down';
|
|
39
|
-
this.clickable = false;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
static get properties() {
|
|
43
|
-
return {
|
|
44
|
-
open: {
|
|
45
|
-
type: Boolean,
|
|
46
|
-
reflect: true
|
|
47
|
-
},
|
|
48
|
-
icon: {
|
|
49
|
-
type: String
|
|
50
|
-
},
|
|
51
|
-
iconOpened: {
|
|
52
|
-
type: String,
|
|
53
|
-
attribute: 'icon-opened'
|
|
54
|
-
},
|
|
55
|
-
clickable: {
|
|
56
|
-
type: Boolean
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
static get styles() {
|
|
62
|
-
return [link, // language=CSS
|
|
63
|
-
css`:host{box-sizing:border-box}.box{padding:.2rem;line-height:23px;border-bottom:var(--gv-expandable--bdb,thin solid var(--gv-theme-color,#5a7684))}:host([open]) .details{visibility:visible;opacity:1;height:auto;overflow:visible}.details{display:block;overflow:hidden;opacity:0;visibility:hidden;transition:all 150ms ease-in-out;height:0}.summary{display:flex;flex-direction:row;align-content:center;justify-content:space-between}.expand{align-self:center;margin-left:5px;--gv-icon--s:16px}`];
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
_onClick(event) {
|
|
67
|
-
if (!this.clickable) {
|
|
68
|
-
const summary = this.shadowRoot.querySelector('.summary');
|
|
69
|
-
|
|
70
|
-
if (!summary.contains(event.target) && event.target.slot !== 'summary') {
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
this.open = !this.open;
|
|
76
|
-
dispatchCustomEvent(this, 'toggle', {
|
|
77
|
-
open: this.open
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
render() {
|
|
82
|
-
const icon = this.open ? this.iconOpened : this.icon;
|
|
83
|
-
return html`<div class="${classMap({
|
|
84
|
-
box: true,
|
|
85
|
-
link: this.clickable
|
|
86
|
-
})}" @click="${this._onClick}"> <div class="${classMap({
|
|
87
|
-
summary: true,
|
|
88
|
-
link: !this.clickable
|
|
89
|
-
})}"> <slot name="summary"></slot> <gv-icon shape="${icon}" class="expand"></gv-icon> </div> <slot name="details" class="details"></slot> </div>`;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
window.customElements.define('gv-expandable', GvExpandable);
|
|
94
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL21vbGVjdWxlcy9ndi1leHBhbmRhYmxlLmpzIl0sIm5hbWVzIjpbImNzcyIsImh0bWwiLCJMaXRFbGVtZW50IiwibGluayIsImNsYXNzTWFwIiwiZGlzcGF0Y2hDdXN0b21FdmVudCIsIkd2RXhwYW5kYWJsZSIsImNvbnN0cnVjdG9yIiwib3BlbiIsImljb24iLCJpY29uT3BlbmVkIiwiY2xpY2thYmxlIiwicHJvcGVydGllcyIsInR5cGUiLCJCb29sZWFuIiwicmVmbGVjdCIsIlN0cmluZyIsImF0dHJpYnV0ZSIsInN0eWxlcyIsIl9vbkNsaWNrIiwiZXZlbnQiLCJzdW1tYXJ5Iiwic2hhZG93Um9vdCIsInF1ZXJ5U2VsZWN0b3IiLCJjb250YWlucyIsInRhcmdldCIsInNsb3QiLCJyZW5kZXIiLCJib3giLCJ3aW5kb3ciLCJjdXN0b21FbGVtZW50cyIsImRlZmluZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsR0FBVCxFQUFjQyxJQUFkLEVBQW9CQyxVQUFwQixRQUFzQyxLQUF0QztBQUNBLFNBQVNDLElBQVQsUUFBcUIsZ0JBQXJCO0FBQ0EsU0FBU0MsUUFBVCxRQUF5QiwwQkFBekI7QUFDQSxTQUFTQyxtQkFBVCxRQUFvQyxlQUFwQztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxPQUFPLE1BQU1DLFlBQU4sU0FBMkJKLFVBQTNCLENBQXNDO0FBQzNDSyxFQUFBQSxXQUFXLEdBQUc7QUFDWjtBQUNBLFNBQUtDLElBQUwsR0FBWSxLQUFaO0FBQ0EsU0FBS0MsSUFBTCxHQUFZLHVCQUFaO0FBQ0EsU0FBS0MsVUFBTCxHQUFrQix1QkFBbEI7QUFDQSxTQUFLQyxTQUFMLEdBQWlCLEtBQWpCO0FBQ0Q7O0FBRW9CLGFBQVZDLFVBQVUsR0FBRztBQUN0QixXQUFPO0FBQ0xKLE1BQUFBLElBQUksRUFBRTtBQUFFSyxRQUFBQSxJQUFJLEVBQUVDLE9BQVI7QUFBaUJDLFFBQUFBLE9BQU8sRUFBRTtBQUExQixPQUREO0FBRUxOLE1BQUFBLElBQUksRUFBRTtBQUFFSSxRQUFBQSxJQUFJLEVBQUVHO0FBQVIsT0FGRDtBQUdMTixNQUFBQSxVQUFVLEVBQUU7QUFBRUcsUUFBQUEsSUFBSSxFQUFFRyxNQUFSO0FBQWdCQyxRQUFBQSxTQUFTLEVBQUU7QUFBM0IsT0FIUDtBQUlMTixNQUFBQSxTQUFTLEVBQUU7QUFBRUUsUUFBQUEsSUFBSSxFQUFFQztBQUFSO0FBSk4sS0FBUDtBQU1EOztBQUVnQixhQUFOSSxNQUFNLEdBQUc7QUFDbEIsV0FBTyxDQUNMZixJQURLLEVBRUw7QUFDQUgsSUFBQUEsR0FBRyx5ZUFIRSxDQUFQO0FBNENEOztBQUVEbUIsRUFBQUEsUUFBUSxDQUFDQyxLQUFELEVBQVE7QUFDZCxRQUFJLENBQUMsS0FBS1QsU0FBVixFQUFxQjtBQUNuQixZQUFNVSxPQUFPLEdBQUcsS0FBS0MsVUFBTCxDQUFnQkMsYUFBaEIsQ0FBOEIsVUFBOUIsQ0FBaEI7O0FBQ0EsVUFBSSxDQUFDRixPQUFPLENBQUNHLFFBQVIsQ0FBaUJKLEtBQUssQ0FBQ0ssTUFBdkIsQ0FBRCxJQUFtQ0wsS0FBSyxDQUFDSyxNQUFOLENBQWFDLElBQWIsS0FBc0IsU0FBN0QsRUFBd0U7QUFDdEU7QUFDRDtBQUNGOztBQUNELFNBQUtsQixJQUFMLEdBQVksQ0FBQyxLQUFLQSxJQUFsQjtBQUNBSCxJQUFBQSxtQkFBbUIsQ0FBQyxJQUFELEVBQU8sUUFBUCxFQUFpQjtBQUFFRyxNQUFBQSxJQUFJLEVBQUUsS0FBS0E7QUFBYixLQUFqQixDQUFuQjtBQUNEOztBQUVEbUIsRUFBQUEsTUFBTSxHQUFHO0FBQ1AsVUFBTWxCLElBQUksR0FBRyxLQUFLRCxJQUFMLEdBQVksS0FBS0UsVUFBakIsR0FBOEIsS0FBS0QsSUFBaEQ7QUFDQSxXQUFPUixJQUFJLGVBQWVHLFFBQVEsQ0FBQztBQUFFd0IsTUFBQUEsR0FBRyxFQUFFLElBQVA7QUFBYXpCLE1BQUFBLElBQUksRUFBRSxLQUFLUTtBQUF4QixLQUFELENBQXZCLGFBQXdFLEtBQUtRLFFBQTdFLGtCQUNLZixRQUFRLENBQUM7QUFBRWlCLE1BQUFBLE9BQU8sRUFBRSxJQUFYO0FBQWlCbEIsTUFBQUEsSUFBSSxFQUFFLENBQUMsS0FBS1E7QUFBN0IsS0FBRCxDQURiLG1EQUlXRixJQUpYLHdGQUFYO0FBUUQ7O0FBdEYwQztBQXlGN0NvQixNQUFNLENBQUNDLGNBQVAsQ0FBc0JDLE1BQXRCLENBQTZCLGVBQTdCLEVBQThDekIsWUFBOUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgY3NzLCBodG1sLCBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGxpbmsgfSBmcm9tICcuLi9zdHlsZXMvbGluayc7XG5pbXBvcnQgeyBjbGFzc01hcCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL2NsYXNzLW1hcCc7XG5pbXBvcnQgeyBkaXNwYXRjaEN1c3RvbUV2ZW50IH0gZnJvbSAnLi4vbGliL2V2ZW50cyc7XG5cbi8qKlxuICogRXhwYW5kYWJsZSBjb21wb25lbnRcbiAqXG4gKiBAZmlyZXMgZ3YtZXhwYW5kYWJsZTp0b2dnbGUgLSBXaGVuIHVzZXIgdG9nZ2xlXG4gKlxuICogQGF0dHIge0Jvb2xlYW59IG9wZW4gLSBXaGVuIHRydWUsIG9wZW5zIGRldGFpbHMgYnkgZGVmYXVsdFxuICogQGF0dHIge1N0cmluZ30gaWNvbiAtIEFuIGljb24gdG8gc2hvdyBvcGVuIGZlYXR1cmVcbiAqIEBhdHRyIHtTdHJpbmd9IGljb24tb3BlbmVkIC0gIEFuIGljb24gdG8gc2hvdyBjbG9zZSBmZWF0dXJlXG4gKiBAYXR0ciB7Qm9vbGVhbn0gY2xpY2thYmxlIC0gV2hlbiB0cnVlLCBkZXRhaWxzIGlzIGNsaWNrYWJsZSBsaWtlIHN1bW1hcnlcbiAqXG4gKiBAY3NzcHJvcCB7U3RyaW5nfSBbLS1ndi1leHBhbmRhYmxlLS1iZGI9dmFyKC0tZ3YtZXhwYW5kYWJsZS0tYmRiLCB0aGluIHNvbGlkIHZhcigtLWd2LXRoZW1lLWNvbG9yLCAjNWE3Njg0KV0gLSBCb3JkZXIgYm90dG9tXG4gKi9cbmV4cG9ydCBjbGFzcyBHdkV4cGFuZGFibGUgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmljb24gPSAnbmF2aWdhdGlvbjphbmdsZS1sZWZ0JztcbiAgICB0aGlzLmljb25PcGVuZWQgPSAnbmF2aWdhdGlvbjphbmdsZS1kb3duJztcbiAgICB0aGlzLmNsaWNrYWJsZSA9IGZhbHNlO1xuICB9XG5cbiAgc3RhdGljIGdldCBwcm9wZXJ0aWVzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBvcGVuOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIGljb246IHsgdHlwZTogU3RyaW5nIH0sXG4gICAgICBpY29uT3BlbmVkOiB7IHR5cGU6IFN0cmluZywgYXR0cmlidXRlOiAnaWNvbi1vcGVuZWQnIH0sXG4gICAgICBjbGlja2FibGU6IHsgdHlwZTogQm9vbGVhbiB9LFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZ2V0IHN0eWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgbGluayxcbiAgICAgIC8vIGxhbmd1YWdlPUNTU1xuICAgICAgY3NzYFxuICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5ib3gge1xuICAgICAgICAgIHBhZGRpbmc6IDAuMnJlbTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMjNweDtcbiAgICAgICAgICBib3JkZXItYm90dG9tOiB2YXIoLS1ndi1leHBhbmRhYmxlLS1iZGIsIHRoaW4gc29saWQgdmFyKC0tZ3YtdGhlbWUtY29sb3IsICM1YTc2ODQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFtvcGVuXSkgLmRldGFpbHMge1xuICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgIH1cblxuICAgICAgICAuZGV0YWlscyB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMTUwbXMgZWFzZS1pbi1vdXQ7XG4gICAgICAgICAgaGVpZ2h0OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLnN1bW1hcnkge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICB9XG5cbiAgICAgICAgLmV4cGFuZCB7XG4gICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgICAgICAgLS1ndi1pY29uLS1zOiAxNnB4O1xuICAgICAgICB9XG4gICAgICBgLFxuICAgIF07XG4gIH1cblxuICBfb25DbGljayhldmVudCkge1xuICAgIGlmICghdGhpcy5jbGlja2FibGUpIHtcbiAgICAgIGNvbnN0IHN1bW1hcnkgPSB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignLnN1bW1hcnknKTtcbiAgICAgIGlmICghc3VtbWFyeS5jb250YWlucyhldmVudC50YXJnZXQpICYmIGV2ZW50LnRhcmdldC5zbG90ICE9PSAnc3VtbWFyeScpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xuICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ3RvZ2dsZScsIHsgb3BlbjogdGhpcy5vcGVuIH0pO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IGljb24gPSB0aGlzLm9wZW4gPyB0aGlzLmljb25PcGVuZWQgOiB0aGlzLmljb247XG4gICAgcmV0dXJuIGh0bWxgPGRpdiBjbGFzcz1cIiR7Y2xhc3NNYXAoeyBib3g6IHRydWUsIGxpbms6IHRoaXMuY2xpY2thYmxlIH0pfVwiIEBjbGljaz0ke3RoaXMuX29uQ2xpY2t9PlxuICAgICAgPGRpdiBjbGFzcz1cIiR7Y2xhc3NNYXAoeyBzdW1tYXJ5OiB0cnVlLCBsaW5rOiAhdGhpcy5jbGlja2FibGUgfSl9XCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzdW1tYXJ5XCI+PC9zbG90PlxuXG4gICAgICAgIDxndi1pY29uIHNoYXBlPVwiJHtpY29ufVwiIGNsYXNzPVwiZXhwYW5kXCI+PC9ndi1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgICA8c2xvdCBuYW1lPVwiZGV0YWlsc1wiIGNsYXNzPVwiZGV0YWlsc1wiPjwvc2xvdD5cbiAgICA8L2Rpdj5gO1xuICB9XG59XG5cbndpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ2d2LWV4cGFuZGFibGUnLCBHdkV4cGFuZGFibGUpO1xuIl19
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:!0}),exports.GvExpandable=void 0;const e=require("lit"),i=require("../styles/link"),t=require("lit/directives/class-map"),s=require("../lib/events");class n extends e.LitElement{constructor(){super(),this.open=!1,this.icon="navigation:angle-left",this.iconOpened="navigation:angle-down",this.clickable=!1}static get properties(){return{open:{type:Boolean,reflect:!0},icon:{type:String},iconOpened:{type:String,attribute:"icon-opened"},clickable:{type:Boolean}}}static get styles(){return[i.link,e.css`:host{box-sizing:border-box}.box{padding:.2rem;line-height:23px;border-bottom:var(--gv-expandable--bdb,thin solid var(--gv-theme-color,#5a7684))}:host([open]) .details{visibility:visible;opacity:1;height:auto;overflow:visible}.details{display:block;overflow:hidden;opacity:0;visibility:hidden;transition:all 150ms ease-in-out;height:0}.summary{display:flex;flex-direction:row;align-content:center;justify-content:space-between}.expand{align-self:center;margin-left:5px;--gv-icon--s:16px}`]}_onClick(e){if(!this.clickable){if(!this.shadowRoot.querySelector(".summary").contains(e.target)&&"summary"!==e.target.slot)return}this.open=!this.open,(0,s.dispatchCustomEvent)(this,"toggle",{open:this.open})}render(){const i=this.open?this.iconOpened:this.icon;return e.html`<div class="${(0,t.classMap)({box:!0,link:this.clickable})}" @click="${this._onClick}"><div class="${(0,t.classMap)({summary:!0,link:!this.clickable})}"><slot name="summary"></slot><gv-icon shape="${i}" class="expand"></gv-icon></div><slot name="details" class="details"></slot></div>`}}exports.GvExpandable=n,window.customElements.define("gv-expandable",n);
|
|
@@ -1,308 +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 { GvCode } from '../molecules/gv-code';
|
|
17
|
-
import { dispatchCustomEvent } from '../lib/events';
|
|
18
|
-
import { pickedCompletion, startCompletion } from '@codemirror/autocomplete';
|
|
19
|
-
import { keymap } from '@codemirror/view';
|
|
20
|
-
import { EditorSelection, Prec } from '@codemirror/state';
|
|
21
|
-
import { get } from 'object-path';
|
|
22
|
-
/**
|
|
23
|
-
* Expression Language component
|
|
24
|
-
*
|
|
25
|
-
* @fires gv-expression-language:input - input events with the `value` on `detail`
|
|
26
|
-
* @fires gv-expression-language:ready - event dispatch when component is ready
|
|
27
|
-
* @fires gv-expression-language:clipboard-copy - event dispatch when component the `value` has been copied to clipboard
|
|
28
|
-
*
|
|
29
|
-
* @attr {String} label - code language
|
|
30
|
-
* @attr {String} value - code content to be highlighted
|
|
31
|
-
* @attr {options} Object - options based on codemirror
|
|
32
|
-
* @attr {String} placeholder - an example value to display in the input when empty
|
|
33
|
-
* @attr {Number} rows - number of rows of the text element
|
|
34
|
-
* @attr {Boolean} large - for a large input (only if the field has one row)
|
|
35
|
-
* @attr {Boolean} medium - for a medium input (only if the field has one row) (Default)
|
|
36
|
-
* @attr {Boolean} small - for a small input (only if the field has one row)
|
|
37
|
-
* @attr {Object} grammar - The grammar for Expression Language support
|
|
38
|
-
*
|
|
39
|
-
* @attr {Boolean} [clipboard=false]- true if field has clipboard button
|
|
40
|
-
* @attr {Boolean} [autofocus=false] - true to put the focus on the input
|
|
41
|
-
* @attr {Boolean} [readonly=false] - true if field is readonly mode
|
|
42
|
-
*/
|
|
43
|
-
|
|
44
|
-
export class GvExpressionLanguage extends GvCode {
|
|
45
|
-
static get properties() {
|
|
46
|
-
return { ...super.properties,
|
|
47
|
-
grammar: {
|
|
48
|
-
type: Object
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
firstUpdated() {
|
|
54
|
-
super.firstUpdated();
|
|
55
|
-
dispatchCustomEvent(this, 'ready', {
|
|
56
|
-
currentTarget: this
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
getExtensions() {
|
|
61
|
-
return [Prec.high(this.insertELKeymap())];
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
insertELKeymap() {
|
|
65
|
-
return keymap.of([{
|
|
66
|
-
key: 'Ctrl-Shift-e',
|
|
67
|
-
mac: 'Cmd-Shift-e',
|
|
68
|
-
|
|
69
|
-
run(view) {
|
|
70
|
-
view.dispatch(view.state.changeByRange(range => ({
|
|
71
|
-
changes: [{
|
|
72
|
-
from: range.from,
|
|
73
|
-
to: range.to,
|
|
74
|
-
insert: '{#}'
|
|
75
|
-
}],
|
|
76
|
-
range: EditorSelection.range(range.from + 2, range.from + 2)
|
|
77
|
-
})));
|
|
78
|
-
startCompletion(view);
|
|
79
|
-
return true;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
}]);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
buildMethods(type) {
|
|
86
|
-
const modelType = this.getModelType(type);
|
|
87
|
-
return modelType.methods.map(({
|
|
88
|
-
name,
|
|
89
|
-
params = [],
|
|
90
|
-
returnType
|
|
91
|
-
}) => {
|
|
92
|
-
const command = `${name}()`;
|
|
93
|
-
const displayParams = params.map(p => `${p.type} ${p.name}`);
|
|
94
|
-
const label = `${name}(${displayParams.join(', ')})`;
|
|
95
|
-
const detail = `return ${returnType}`;
|
|
96
|
-
return {
|
|
97
|
-
type: 'method',
|
|
98
|
-
command,
|
|
99
|
-
apply: (view, completion, from, to) => {
|
|
100
|
-
const anchor = from + name.length + 1;
|
|
101
|
-
view.dispatch({
|
|
102
|
-
changes: {
|
|
103
|
-
from,
|
|
104
|
-
to,
|
|
105
|
-
insert: completion.command
|
|
106
|
-
},
|
|
107
|
-
selection: {
|
|
108
|
-
anchor
|
|
109
|
-
},
|
|
110
|
-
userEvent: 'input.complete',
|
|
111
|
-
annotations: pickedCompletion.of(view)
|
|
112
|
-
});
|
|
113
|
-
},
|
|
114
|
-
label,
|
|
115
|
-
detail
|
|
116
|
-
};
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
findBestAutocompleteHandler(completionContext) {
|
|
121
|
-
return this.expressionLanguageCompletionHandlers.filter(handler => this.grammar != null && handler.supportEL === true || handler.supportEL !== true).map(handler => {
|
|
122
|
-
const match = handler.expr ? completionContext.matchBefore(handler.expr) : true;
|
|
123
|
-
return {
|
|
124
|
-
handler,
|
|
125
|
-
match
|
|
126
|
-
};
|
|
127
|
-
}).find(({
|
|
128
|
-
match,
|
|
129
|
-
expr
|
|
130
|
-
}) => match);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
getModelType(typeId) {
|
|
134
|
-
if (this.grammar != null) {
|
|
135
|
-
return get(this.grammar, `_types.${typeId}`);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
return null;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
isMap(typeId) {
|
|
142
|
-
return ['Map', 'HttpHeaders', 'MultiValueMap'].includes(typeId);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
getEnum(typeId) {
|
|
146
|
-
if (this.grammar != null) {
|
|
147
|
-
return get(this.grammar, `_enums.${typeId}`);
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
return [''];
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
convertType(type) {
|
|
154
|
-
if (type) {
|
|
155
|
-
const lowerType = type.toLowerCase();
|
|
156
|
-
|
|
157
|
-
if (lowerType === 'string') {
|
|
158
|
-
return 'text';
|
|
159
|
-
} else if (lowerType === 'httpheaders' || lowerType === 'multivaluemap') {
|
|
160
|
-
return 'type';
|
|
161
|
-
} else if (lowerType === 'int' || lowerType === 'long') {
|
|
162
|
-
return 'variable';
|
|
163
|
-
} else if (lowerType.includes('[]')) {
|
|
164
|
-
return 'enum';
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
return 'variable';
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
get expressionLanguageCompletionHandlers() {
|
|
172
|
-
return [{
|
|
173
|
-
expr: /{#[a-z]*/,
|
|
174
|
-
supportEL: true,
|
|
175
|
-
|
|
176
|
-
run(completionContext, match) {
|
|
177
|
-
const prefix = match.text.replaceAll('{#', '');
|
|
178
|
-
const from = completionContext.pos - prefix.length;
|
|
179
|
-
const options = Object.keys(this.grammar).filter(command => !command.startsWith('_') && command.startsWith(prefix)).map(command => {
|
|
180
|
-
return {
|
|
181
|
-
type: 'variable',
|
|
182
|
-
command,
|
|
183
|
-
apply: command,
|
|
184
|
-
label: command
|
|
185
|
-
};
|
|
186
|
-
});
|
|
187
|
-
return {
|
|
188
|
-
from,
|
|
189
|
-
options
|
|
190
|
-
};
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
}, {
|
|
194
|
-
expr: /{#[a-z]*.[a-zA-Z]*/,
|
|
195
|
-
supportEL: true,
|
|
196
|
-
|
|
197
|
-
run(completionContext, match) {
|
|
198
|
-
const tokens = match.text.split('.');
|
|
199
|
-
const key = tokens[0].replaceAll('{#', '');
|
|
200
|
-
const prefix = tokens[1];
|
|
201
|
-
let candidate = this.grammar[key][prefix];
|
|
202
|
-
let options = [];
|
|
203
|
-
let from = completionContext.pos;
|
|
204
|
-
|
|
205
|
-
if (candidate) {
|
|
206
|
-
if (this.isMap(candidate._type)) {
|
|
207
|
-
options = this.getEnum(candidate._type).map(value => {
|
|
208
|
-
const type = this.convertType(candidate._type);
|
|
209
|
-
const command = `['${value}'][0]`;
|
|
210
|
-
return {
|
|
211
|
-
type,
|
|
212
|
-
command,
|
|
213
|
-
apply: command,
|
|
214
|
-
label: value
|
|
215
|
-
};
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
} else {
|
|
219
|
-
from -= prefix.length;
|
|
220
|
-
candidate = this.grammar[key];
|
|
221
|
-
|
|
222
|
-
if (candidate._type) {
|
|
223
|
-
options = this.buildMethods(candidate._type);
|
|
224
|
-
} else {
|
|
225
|
-
options = Object.keys(candidate).filter(command => !command.startsWith('_') && command.startsWith(prefix)).map(command => ({
|
|
226
|
-
type: this.convertType(candidate[command]._type),
|
|
227
|
-
command,
|
|
228
|
-
apply: command,
|
|
229
|
-
label: command
|
|
230
|
-
}));
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
return {
|
|
235
|
-
from,
|
|
236
|
-
options
|
|
237
|
-
};
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
}, {
|
|
241
|
-
expr: /{#[a-z]*.[a-zA-Z]*.[a-zA-Z]*/,
|
|
242
|
-
supportEL: true,
|
|
243
|
-
|
|
244
|
-
run(completionContext, match) {
|
|
245
|
-
const tokens = match.text.split('.');
|
|
246
|
-
const key = tokens[0].replaceAll('{#', '');
|
|
247
|
-
const word = tokens[1];
|
|
248
|
-
const prefix = tokens[2];
|
|
249
|
-
const candidate = this.grammar[key][word];
|
|
250
|
-
let options = [];
|
|
251
|
-
let from = completionContext.pos;
|
|
252
|
-
|
|
253
|
-
if (candidate) {
|
|
254
|
-
if (this.isMap(candidate._type)) {
|
|
255
|
-
options = this.getEnum(candidate._type).filter(command => !command.startsWith('_') && command.startsWith(prefix)).map(label => {
|
|
256
|
-
const type = this.convertType(candidate._type);
|
|
257
|
-
return {
|
|
258
|
-
type,
|
|
259
|
-
command: `['${label}'][0]`,
|
|
260
|
-
|
|
261
|
-
apply(view, completion, _from, to) {
|
|
262
|
-
from = _from - prefix.length - 1;
|
|
263
|
-
view.dispatch({
|
|
264
|
-
changes: {
|
|
265
|
-
from,
|
|
266
|
-
to,
|
|
267
|
-
insert: completion.command
|
|
268
|
-
},
|
|
269
|
-
selection: {
|
|
270
|
-
anchor: from + completion.command.length
|
|
271
|
-
},
|
|
272
|
-
userEvent: 'input.complete',
|
|
273
|
-
annotations: pickedCompletion.of(view)
|
|
274
|
-
});
|
|
275
|
-
},
|
|
276
|
-
|
|
277
|
-
label
|
|
278
|
-
};
|
|
279
|
-
});
|
|
280
|
-
} else {
|
|
281
|
-
if (candidate._type) {
|
|
282
|
-
options = this.buildMethods(candidate._type);
|
|
283
|
-
} else {
|
|
284
|
-
from -= prefix.length;
|
|
285
|
-
options = Object.keys(candidate).filter(command => command.startsWith(prefix)).map(command => {
|
|
286
|
-
return {
|
|
287
|
-
type: this.convertType(candidate[command]._type),
|
|
288
|
-
command,
|
|
289
|
-
apply: command,
|
|
290
|
-
label: command
|
|
291
|
-
};
|
|
292
|
-
});
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
return {
|
|
298
|
-
from,
|
|
299
|
-
options
|
|
300
|
-
};
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
}, this.defaultCompletionHandler];
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
}
|
|
307
|
-
window.customElements.define('gv-expression-language', GvExpressionLanguage);
|
|
308
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL21vbGVjdWxlcy9ndi1leHByZXNzaW9uLWxhbmd1YWdlLmpzIl0sIm5hbWVzIjpbIkd2Q29kZSIsImRpc3BhdGNoQ3VzdG9tRXZlbnQiLCJwaWNrZWRDb21wbGV0aW9uIiwic3RhcnRDb21wbGV0aW9uIiwia2V5bWFwIiwiRWRpdG9yU2VsZWN0aW9uIiwiUHJlYyIsImdldCIsIkd2RXhwcmVzc2lvbkxhbmd1YWdlIiwicHJvcGVydGllcyIsImdyYW1tYXIiLCJ0eXBlIiwiT2JqZWN0IiwiZmlyc3RVcGRhdGVkIiwiY3VycmVudFRhcmdldCIsImdldEV4dGVuc2lvbnMiLCJoaWdoIiwiaW5zZXJ0RUxLZXltYXAiLCJvZiIsImtleSIsIm1hYyIsInJ1biIsInZpZXciLCJkaXNwYXRjaCIsInN0YXRlIiwiY2hhbmdlQnlSYW5nZSIsInJhbmdlIiwiY2hhbmdlcyIsImZyb20iLCJ0byIsImluc2VydCIsImJ1aWxkTWV0aG9kcyIsIm1vZGVsVHlwZSIsImdldE1vZGVsVHlwZSIsIm1ldGhvZHMiLCJtYXAiLCJuYW1lIiwicGFyYW1zIiwicmV0dXJuVHlwZSIsImNvbW1hbmQiLCJkaXNwbGF5UGFyYW1zIiwicCIsImxhYmVsIiwiam9pbiIsImRldGFpbCIsImFwcGx5IiwiY29tcGxldGlvbiIsImFuY2hvciIsImxlbmd0aCIsInNlbGVjdGlvbiIsInVzZXJFdmVudCIsImFubm90YXRpb25zIiwiZmluZEJlc3RBdXRvY29tcGxldGVIYW5kbGVyIiwiY29tcGxldGlvbkNvbnRleHQiLCJleHByZXNzaW9uTGFuZ3VhZ2VDb21wbGV0aW9uSGFuZGxlcnMiLCJmaWx0ZXIiLCJoYW5kbGVyIiwic3VwcG9ydEVMIiwibWF0Y2giLCJleHByIiwibWF0Y2hCZWZvcmUiLCJmaW5kIiwidHlwZUlkIiwiaXNNYXAiLCJpbmNsdWRlcyIsImdldEVudW0iLCJjb252ZXJ0VHlwZSIsImxvd2VyVHlwZSIsInRvTG93ZXJDYXNlIiwicHJlZml4IiwidGV4dCIsInJlcGxhY2VBbGwiLCJwb3MiLCJvcHRpb25zIiwia2V5cyIsInN0YXJ0c1dpdGgiLCJ0b2tlbnMiLCJzcGxpdCIsImNhbmRpZGF0ZSIsIl90eXBlIiwidmFsdWUiLCJ3b3JkIiwiX2Zyb20iLCJkZWZhdWx0Q29tcGxldGlvbkhhbmRsZXIiLCJ3aW5kb3ciLCJjdXN0b21FbGVtZW50cyIsImRlZmluZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsTUFBVCxRQUF1QixzQkFBdkI7QUFDQSxTQUFTQyxtQkFBVCxRQUFvQyxlQUFwQztBQUNBLFNBQVNDLGdCQUFULEVBQTJCQyxlQUEzQixRQUFrRCwwQkFBbEQ7QUFDQSxTQUFTQyxNQUFULFFBQXVCLGtCQUF2QjtBQUNBLFNBQVNDLGVBQVQsRUFBMEJDLElBQTFCLFFBQXNDLG1CQUF0QztBQUNBLFNBQVNDLEdBQVQsUUFBb0IsYUFBcEI7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxvQkFBTixTQUFtQ1IsTUFBbkMsQ0FBMEM7QUFDMUIsYUFBVlMsVUFBVSxHQUFHO0FBQ3RCLFdBQU8sRUFDTCxHQUFHLE1BQU1BLFVBREo7QUFFTEMsTUFBQUEsT0FBTyxFQUFFO0FBQUVDLFFBQUFBLElBQUksRUFBRUM7QUFBUjtBQUZKLEtBQVA7QUFJRDs7QUFFREMsRUFBQUEsWUFBWSxHQUFHO0FBQ2IsVUFBTUEsWUFBTjtBQUNBWixJQUFBQSxtQkFBbUIsQ0FBQyxJQUFELEVBQU8sT0FBUCxFQUFnQjtBQUFFYSxNQUFBQSxhQUFhLEVBQUU7QUFBakIsS0FBaEIsQ0FBbkI7QUFDRDs7QUFFREMsRUFBQUEsYUFBYSxHQUFHO0FBQ2QsV0FBTyxDQUFDVCxJQUFJLENBQUNVLElBQUwsQ0FBVSxLQUFLQyxjQUFMLEVBQVYsQ0FBRCxDQUFQO0FBQ0Q7O0FBRURBLEVBQUFBLGNBQWMsR0FBRztBQUNmLFdBQU9iLE1BQU0sQ0FBQ2MsRUFBUCxDQUFVLENBQ2Y7QUFDRUMsTUFBQUEsR0FBRyxFQUFFLGNBRFA7QUFFRUMsTUFBQUEsR0FBRyxFQUFFLGFBRlA7O0FBR0VDLE1BQUFBLEdBQUcsQ0FBQ0MsSUFBRCxFQUFPO0FBQ1JBLFFBQUFBLElBQUksQ0FBQ0MsUUFBTCxDQUNFRCxJQUFJLENBQUNFLEtBQUwsQ0FBV0MsYUFBWCxDQUEwQkMsS0FBRCxLQUFZO0FBQ25DQyxVQUFBQSxPQUFPLEVBQUUsQ0FBQztBQUFFQyxZQUFBQSxJQUFJLEVBQUVGLEtBQUssQ0FBQ0UsSUFBZDtBQUFvQkMsWUFBQUEsRUFBRSxFQUFFSCxLQUFLLENBQUNHLEVBQTlCO0FBQWtDQyxZQUFBQSxNQUFNLEVBQUU7QUFBMUMsV0FBRCxDQUQwQjtBQUVuQ0osVUFBQUEsS0FBSyxFQUFFckIsZUFBZSxDQUFDcUIsS0FBaEIsQ0FBc0JBLEtBQUssQ0FBQ0UsSUFBTixHQUFhLENBQW5DLEVBQXNDRixLQUFLLENBQUNFLElBQU4sR0FBYSxDQUFuRDtBQUY0QixTQUFaLENBQXpCLENBREY7QUFNQXpCLFFBQUFBLGVBQWUsQ0FBQ21CLElBQUQsQ0FBZjtBQUNBLGVBQU8sSUFBUDtBQUNEOztBQVpILEtBRGUsQ0FBVixDQUFQO0FBZ0JEOztBQUVEUyxFQUFBQSxZQUFZLENBQUNwQixJQUFELEVBQU87QUFDakIsVUFBTXFCLFNBQVMsR0FBRyxLQUFLQyxZQUFMLENBQWtCdEIsSUFBbEIsQ0FBbEI7QUFDQSxXQUFPcUIsU0FBUyxDQUFDRSxPQUFWLENBQWtCQyxHQUFsQixDQUFzQixDQUFDO0FBQUVDLE1BQUFBLElBQUY7QUFBUUMsTUFBQUEsTUFBTSxHQUFHLEVBQWpCO0FBQXFCQyxNQUFBQTtBQUFyQixLQUFELEtBQXVDO0FBQ2xFLFlBQU1DLE9BQU8sR0FBSSxHQUFFSCxJQUFLLElBQXhCO0FBQ0EsWUFBTUksYUFBYSxHQUFHSCxNQUFNLENBQUNGLEdBQVAsQ0FBWU0sQ0FBRCxJQUFRLEdBQUVBLENBQUMsQ0FBQzlCLElBQUssSUFBRzhCLENBQUMsQ0FBQ0wsSUFBSyxFQUF0QyxDQUF0QjtBQUNBLFlBQU1NLEtBQUssR0FBSSxHQUFFTixJQUFLLElBQUdJLGFBQWEsQ0FBQ0csSUFBZCxDQUFtQixJQUFuQixDQUF5QixHQUFsRDtBQUNBLFlBQU1DLE1BQU0sR0FBSSxVQUFTTixVQUFXLEVBQXBDO0FBQ0EsYUFBTztBQUNMM0IsUUFBQUEsSUFBSSxFQUFFLFFBREQ7QUFFTDRCLFFBQUFBLE9BRks7QUFHTE0sUUFBQUEsS0FBSyxFQUFFLENBQUN2QixJQUFELEVBQU93QixVQUFQLEVBQW1CbEIsSUFBbkIsRUFBeUJDLEVBQXpCLEtBQWdDO0FBQ3JDLGdCQUFNa0IsTUFBTSxHQUFHbkIsSUFBSSxHQUFHUSxJQUFJLENBQUNZLE1BQVosR0FBcUIsQ0FBcEM7QUFDQTFCLFVBQUFBLElBQUksQ0FBQ0MsUUFBTCxDQUFjO0FBQ1pJLFlBQUFBLE9BQU8sRUFBRTtBQUFFQyxjQUFBQSxJQUFGO0FBQVFDLGNBQUFBLEVBQVI7QUFBWUMsY0FBQUEsTUFBTSxFQUFFZ0IsVUFBVSxDQUFDUDtBQUEvQixhQURHO0FBRVpVLFlBQUFBLFNBQVMsRUFBRTtBQUFFRixjQUFBQTtBQUFGLGFBRkM7QUFHWkcsWUFBQUEsU0FBUyxFQUFFLGdCQUhDO0FBSVpDLFlBQUFBLFdBQVcsRUFBRWpELGdCQUFnQixDQUFDZ0IsRUFBakIsQ0FBb0JJLElBQXBCO0FBSkQsV0FBZDtBQU1ELFNBWEk7QUFZTG9CLFFBQUFBLEtBWks7QUFhTEUsUUFBQUE7QUFiSyxPQUFQO0FBZUQsS0FwQk0sQ0FBUDtBQXFCRDs7QUFFRFEsRUFBQUEsMkJBQTJCLENBQUNDLGlCQUFELEVBQW9CO0FBQzdDLFdBQU8sS0FBS0Msb0NBQUwsQ0FDSkMsTUFESSxDQUNJQyxPQUFELElBQWMsS0FBSzlDLE9BQUwsSUFBZ0IsSUFBaEIsSUFBd0I4QyxPQUFPLENBQUNDLFNBQVIsS0FBc0IsSUFBL0MsSUFBd0RELE9BQU8sQ0FBQ0MsU0FBUixLQUFzQixJQUQ5RixFQUVKdEIsR0FGSSxDQUVDcUIsT0FBRCxJQUFhO0FBQ2hCLFlBQU1FLEtBQUssR0FBR0YsT0FBTyxDQUFDRyxJQUFSLEdBQWVOLGlCQUFpQixDQUFDTyxXQUFsQixDQUE4QkosT0FBTyxDQUFDRyxJQUF0QyxDQUFmLEdBQTZELElBQTNFO0FBQ0EsYUFBTztBQUFFSCxRQUFBQSxPQUFGO0FBQVdFLFFBQUFBO0FBQVgsT0FBUDtBQUNELEtBTEksRUFNSkcsSUFOSSxDQU1DLENBQUM7QUFBRUgsTUFBQUEsS0FBRjtBQUFTQyxNQUFBQTtBQUFULEtBQUQsS0FBcUJELEtBTnRCLENBQVA7QUFPRDs7QUFFRHpCLEVBQUFBLFlBQVksQ0FBQzZCLE1BQUQsRUFBUztBQUNuQixRQUFJLEtBQUtwRCxPQUFMLElBQWdCLElBQXBCLEVBQTBCO0FBQ3hCLGFBQU9ILEdBQUcsQ0FBQyxLQUFLRyxPQUFOLEVBQWdCLFVBQVNvRCxNQUFPLEVBQWhDLENBQVY7QUFDRDs7QUFDRCxXQUFPLElBQVA7QUFDRDs7QUFFREMsRUFBQUEsS0FBSyxDQUFDRCxNQUFELEVBQVM7QUFDWixXQUFPLENBQUMsS0FBRCxFQUFRLGFBQVIsRUFBdUIsZUFBdkIsRUFBd0NFLFFBQXhDLENBQWlERixNQUFqRCxDQUFQO0FBQ0Q7O0FBRURHLEVBQUFBLE9BQU8sQ0FBQ0gsTUFBRCxFQUFTO0FBQ2QsUUFBSSxLQUFLcEQsT0FBTCxJQUFnQixJQUFwQixFQUEwQjtBQUN4QixhQUFPSCxHQUFHLENBQUMsS0FBS0csT0FBTixFQUFnQixVQUFTb0QsTUFBTyxFQUFoQyxDQUFWO0FBQ0Q7O0FBQ0QsV0FBTyxDQUFDLEVBQUQsQ0FBUDtBQUNEOztBQUVESSxFQUFBQSxXQUFXLENBQUN2RCxJQUFELEVBQU87QUFDaEIsUUFBSUEsSUFBSixFQUFVO0FBQ1IsWUFBTXdELFNBQVMsR0FBR3hELElBQUksQ0FBQ3lELFdBQUwsRUFBbEI7O0FBQ0EsVUFBSUQsU0FBUyxLQUFLLFFBQWxCLEVBQTRCO0FBQzFCLGVBQU8sTUFBUDtBQUNELE9BRkQsTUFFTyxJQUFJQSxTQUFTLEtBQUssYUFBZCxJQUErQkEsU0FBUyxLQUFLLGVBQWpELEVBQWtFO0FBQ3ZFLGVBQU8sTUFBUDtBQUNELE9BRk0sTUFFQSxJQUFJQSxTQUFTLEtBQUssS0FBZCxJQUF1QkEsU0FBUyxLQUFLLE1BQXpDLEVBQWlEO0FBQ3RELGVBQU8sVUFBUDtBQUNELE9BRk0sTUFFQSxJQUFJQSxTQUFTLENBQUNILFFBQVYsQ0FBbUIsSUFBbkIsQ0FBSixFQUE4QjtBQUNuQyxlQUFPLE1BQVA7QUFDRDtBQUNGOztBQUNELFdBQU8sVUFBUDtBQUNEOztBQUV1QyxNQUFwQ1Ysb0NBQW9DLEdBQUc7QUFDekMsV0FBTyxDQUNMO0FBQ0VLLE1BQUFBLElBQUksRUFBRSxVQURSO0FBRUVGLE1BQUFBLFNBQVMsRUFBRSxJQUZiOztBQUdFcEMsTUFBQUEsR0FBRyxDQUFDZ0MsaUJBQUQsRUFBb0JLLEtBQXBCLEVBQTJCO0FBQzVCLGNBQU1XLE1BQU0sR0FBR1gsS0FBSyxDQUFDWSxJQUFOLENBQVdDLFVBQVgsQ0FBc0IsSUFBdEIsRUFBNEIsRUFBNUIsQ0FBZjtBQUNBLGNBQU0zQyxJQUFJLEdBQUd5QixpQkFBaUIsQ0FBQ21CLEdBQWxCLEdBQXdCSCxNQUFNLENBQUNyQixNQUE1QztBQUNBLGNBQU15QixPQUFPLEdBQUc3RCxNQUFNLENBQUM4RCxJQUFQLENBQVksS0FBS2hFLE9BQWpCLEVBQ2I2QyxNQURhLENBQ0xoQixPQUFELElBQWEsQ0FBQ0EsT0FBTyxDQUFDb0MsVUFBUixDQUFtQixHQUFuQixDQUFELElBQTRCcEMsT0FBTyxDQUFDb0MsVUFBUixDQUFtQk4sTUFBbkIsQ0FEbkMsRUFFYmxDLEdBRmEsQ0FFUkksT0FBRCxJQUFhO0FBQ2hCLGlCQUFPO0FBQ0w1QixZQUFBQSxJQUFJLEVBQUUsVUFERDtBQUVMNEIsWUFBQUEsT0FGSztBQUdMTSxZQUFBQSxLQUFLLEVBQUVOLE9BSEY7QUFJTEcsWUFBQUEsS0FBSyxFQUFFSDtBQUpGLFdBQVA7QUFNRCxTQVRhLENBQWhCO0FBVUEsZUFBTztBQUFFWCxVQUFBQSxJQUFGO0FBQVE2QyxVQUFBQTtBQUFSLFNBQVA7QUFDRDs7QUFqQkgsS0FESyxFQW9CTDtBQUNFZCxNQUFBQSxJQUFJLEVBQUUsb0JBRFI7QUFFRUYsTUFBQUEsU0FBUyxFQUFFLElBRmI7O0FBR0VwQyxNQUFBQSxHQUFHLENBQUNnQyxpQkFBRCxFQUFvQkssS0FBcEIsRUFBMkI7QUFDNUIsY0FBTWtCLE1BQU0sR0FBR2xCLEtBQUssQ0FBQ1ksSUFBTixDQUFXTyxLQUFYLENBQWlCLEdBQWpCLENBQWY7QUFDQSxjQUFNMUQsR0FBRyxHQUFHeUQsTUFBTSxDQUFDLENBQUQsQ0FBTixDQUFVTCxVQUFWLENBQXFCLElBQXJCLEVBQTJCLEVBQTNCLENBQVo7QUFDQSxjQUFNRixNQUFNLEdBQUdPLE1BQU0sQ0FBQyxDQUFELENBQXJCO0FBQ0EsWUFBSUUsU0FBUyxHQUFHLEtBQUtwRSxPQUFMLENBQWFTLEdBQWIsRUFBa0JrRCxNQUFsQixDQUFoQjtBQUNBLFlBQUlJLE9BQU8sR0FBRyxFQUFkO0FBQ0EsWUFBSTdDLElBQUksR0FBR3lCLGlCQUFpQixDQUFDbUIsR0FBN0I7O0FBQ0EsWUFBSU0sU0FBSixFQUFlO0FBQ2IsY0FBSSxLQUFLZixLQUFMLENBQVdlLFNBQVMsQ0FBQ0MsS0FBckIsQ0FBSixFQUFpQztBQUMvQk4sWUFBQUEsT0FBTyxHQUFHLEtBQUtSLE9BQUwsQ0FBYWEsU0FBUyxDQUFDQyxLQUF2QixFQUE4QjVDLEdBQTlCLENBQW1DNkMsS0FBRCxJQUFXO0FBQ3JELG9CQUFNckUsSUFBSSxHQUFHLEtBQUt1RCxXQUFMLENBQWlCWSxTQUFTLENBQUNDLEtBQTNCLENBQWI7QUFDQSxvQkFBTXhDLE9BQU8sR0FBSSxLQUFJeUMsS0FBTSxPQUEzQjtBQUNBLHFCQUFPO0FBQ0xyRSxnQkFBQUEsSUFESztBQUVMNEIsZ0JBQUFBLE9BRks7QUFHTE0sZ0JBQUFBLEtBQUssRUFBRU4sT0FIRjtBQUlMRyxnQkFBQUEsS0FBSyxFQUFFc0M7QUFKRixlQUFQO0FBTUQsYUFUUyxDQUFWO0FBVUQ7QUFDRixTQWJELE1BYU87QUFDTHBELFVBQUFBLElBQUksSUFBSXlDLE1BQU0sQ0FBQ3JCLE1BQWY7QUFDQThCLFVBQUFBLFNBQVMsR0FBRyxLQUFLcEUsT0FBTCxDQUFhUyxHQUFiLENBQVo7O0FBQ0EsY0FBSTJELFNBQVMsQ0FBQ0MsS0FBZCxFQUFxQjtBQUNuQk4sWUFBQUEsT0FBTyxHQUFHLEtBQUsxQyxZQUFMLENBQWtCK0MsU0FBUyxDQUFDQyxLQUE1QixDQUFWO0FBQ0QsV0FGRCxNQUVPO0FBQ0xOLFlBQUFBLE9BQU8sR0FBRzdELE1BQU0sQ0FBQzhELElBQVAsQ0FBWUksU0FBWixFQUNQdkIsTUFETyxDQUNDaEIsT0FBRCxJQUFhLENBQUNBLE9BQU8sQ0FBQ29DLFVBQVIsQ0FBbUIsR0FBbkIsQ0FBRCxJQUE0QnBDLE9BQU8sQ0FBQ29DLFVBQVIsQ0FBbUJOLE1BQW5CLENBRHpDLEVBRVBsQyxHQUZPLENBRUZJLE9BQUQsS0FBYztBQUNqQjVCLGNBQUFBLElBQUksRUFBRSxLQUFLdUQsV0FBTCxDQUFpQlksU0FBUyxDQUFDdkMsT0FBRCxDQUFULENBQW1Cd0MsS0FBcEMsQ0FEVztBQUVqQnhDLGNBQUFBLE9BRmlCO0FBR2pCTSxjQUFBQSxLQUFLLEVBQUVOLE9BSFU7QUFJakJHLGNBQUFBLEtBQUssRUFBRUg7QUFKVSxhQUFkLENBRkcsQ0FBVjtBQVFEO0FBQ0Y7O0FBQ0QsZUFBTztBQUFFWCxVQUFBQSxJQUFGO0FBQVE2QyxVQUFBQTtBQUFSLFNBQVA7QUFDRDs7QUF4Q0gsS0FwQkssRUE4REw7QUFDRWQsTUFBQUEsSUFBSSxFQUFFLDhCQURSO0FBRUVGLE1BQUFBLFNBQVMsRUFBRSxJQUZiOztBQUdFcEMsTUFBQUEsR0FBRyxDQUFDZ0MsaUJBQUQsRUFBb0JLLEtBQXBCLEVBQTJCO0FBQzVCLGNBQU1rQixNQUFNLEdBQUdsQixLQUFLLENBQUNZLElBQU4sQ0FBV08sS0FBWCxDQUFpQixHQUFqQixDQUFmO0FBQ0EsY0FBTTFELEdBQUcsR0FBR3lELE1BQU0sQ0FBQyxDQUFELENBQU4sQ0FBVUwsVUFBVixDQUFxQixJQUFyQixFQUEyQixFQUEzQixDQUFaO0FBQ0EsY0FBTVUsSUFBSSxHQUFHTCxNQUFNLENBQUMsQ0FBRCxDQUFuQjtBQUNBLGNBQU1QLE1BQU0sR0FBR08sTUFBTSxDQUFDLENBQUQsQ0FBckI7QUFDQSxjQUFNRSxTQUFTLEdBQUcsS0FBS3BFLE9BQUwsQ0FBYVMsR0FBYixFQUFrQjhELElBQWxCLENBQWxCO0FBQ0EsWUFBSVIsT0FBTyxHQUFHLEVBQWQ7QUFDQSxZQUFJN0MsSUFBSSxHQUFHeUIsaUJBQWlCLENBQUNtQixHQUE3Qjs7QUFDQSxZQUFJTSxTQUFKLEVBQWU7QUFDYixjQUFJLEtBQUtmLEtBQUwsQ0FBV2UsU0FBUyxDQUFDQyxLQUFyQixDQUFKLEVBQWlDO0FBQy9CTixZQUFBQSxPQUFPLEdBQUcsS0FBS1IsT0FBTCxDQUFhYSxTQUFTLENBQUNDLEtBQXZCLEVBQ1B4QixNQURPLENBQ0NoQixPQUFELElBQWEsQ0FBQ0EsT0FBTyxDQUFDb0MsVUFBUixDQUFtQixHQUFuQixDQUFELElBQTRCcEMsT0FBTyxDQUFDb0MsVUFBUixDQUFtQk4sTUFBbkIsQ0FEekMsRUFFUGxDLEdBRk8sQ0FFRk8sS0FBRCxJQUFXO0FBQ2Qsb0JBQU0vQixJQUFJLEdBQUcsS0FBS3VELFdBQUwsQ0FBaUJZLFNBQVMsQ0FBQ0MsS0FBM0IsQ0FBYjtBQUNBLHFCQUFPO0FBQ0xwRSxnQkFBQUEsSUFESztBQUVMNEIsZ0JBQUFBLE9BQU8sRUFBRyxLQUFJRyxLQUFNLE9BRmY7O0FBR0xHLGdCQUFBQSxLQUFLLENBQUN2QixJQUFELEVBQU93QixVQUFQLEVBQW1Cb0MsS0FBbkIsRUFBMEJyRCxFQUExQixFQUE4QjtBQUNqQ0Qsa0JBQUFBLElBQUksR0FBR3NELEtBQUssR0FBR2IsTUFBTSxDQUFDckIsTUFBZixHQUF3QixDQUEvQjtBQUNBMUIsa0JBQUFBLElBQUksQ0FBQ0MsUUFBTCxDQUFjO0FBQ1pJLG9CQUFBQSxPQUFPLEVBQUU7QUFBRUMsc0JBQUFBLElBQUY7QUFBUUMsc0JBQUFBLEVBQVI7QUFBWUMsc0JBQUFBLE1BQU0sRUFBRWdCLFVBQVUsQ0FBQ1A7QUFBL0IscUJBREc7QUFFWlUsb0JBQUFBLFNBQVMsRUFBRTtBQUFFRixzQkFBQUEsTUFBTSxFQUFFbkIsSUFBSSxHQUFHa0IsVUFBVSxDQUFDUCxPQUFYLENBQW1CUztBQUFwQyxxQkFGQztBQUdaRSxvQkFBQUEsU0FBUyxFQUFFLGdCQUhDO0FBSVpDLG9CQUFBQSxXQUFXLEVBQUVqRCxnQkFBZ0IsQ0FBQ2dCLEVBQWpCLENBQW9CSSxJQUFwQjtBQUpELG1CQUFkO0FBTUQsaUJBWEk7O0FBWUxvQixnQkFBQUE7QUFaSyxlQUFQO0FBY0QsYUFsQk8sQ0FBVjtBQW1CRCxXQXBCRCxNQW9CTztBQUNMLGdCQUFJb0MsU0FBUyxDQUFDQyxLQUFkLEVBQXFCO0FBQ25CTixjQUFBQSxPQUFPLEdBQUcsS0FBSzFDLFlBQUwsQ0FBa0IrQyxTQUFTLENBQUNDLEtBQTVCLENBQVY7QUFDRCxhQUZELE1BRU87QUFDTG5ELGNBQUFBLElBQUksSUFBSXlDLE1BQU0sQ0FBQ3JCLE1BQWY7QUFDQXlCLGNBQUFBLE9BQU8sR0FBRzdELE1BQU0sQ0FBQzhELElBQVAsQ0FBWUksU0FBWixFQUNQdkIsTUFETyxDQUNDaEIsT0FBRCxJQUFhQSxPQUFPLENBQUNvQyxVQUFSLENBQW1CTixNQUFuQixDQURiLEVBRVBsQyxHQUZPLENBRUZJLE9BQUQsSUFBYTtBQUNoQix1QkFBTztBQUNMNUIsa0JBQUFBLElBQUksRUFBRSxLQUFLdUQsV0FBTCxDQUFpQlksU0FBUyxDQUFDdkMsT0FBRCxDQUFULENBQW1Cd0MsS0FBcEMsQ0FERDtBQUVMeEMsa0JBQUFBLE9BRks7QUFHTE0sa0JBQUFBLEtBQUssRUFBRU4sT0FIRjtBQUlMRyxrQkFBQUEsS0FBSyxFQUFFSDtBQUpGLGlCQUFQO0FBTUQsZUFUTyxDQUFWO0FBVUQ7QUFDRjtBQUNGOztBQUNELGVBQU87QUFBRVgsVUFBQUEsSUFBRjtBQUFRNkMsVUFBQUE7QUFBUixTQUFQO0FBQ0Q7O0FBbkRILEtBOURLLEVBbUhMLEtBQUtVLHdCQW5IQSxDQUFQO0FBcUhEOztBQS9OOEM7QUFrT2pEQyxNQUFNLENBQUNDLGNBQVAsQ0FBc0JDLE1BQXRCLENBQTZCLHdCQUE3QixFQUF1RDlFLG9CQUF2RCIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBHdkNvZGUgfSBmcm9tICcuLi9tb2xlY3VsZXMvZ3YtY29kZSc7XG5pbXBvcnQgeyBkaXNwYXRjaEN1c3RvbUV2ZW50IH0gZnJvbSAnLi4vbGliL2V2ZW50cyc7XG5pbXBvcnQgeyBwaWNrZWRDb21wbGV0aW9uLCBzdGFydENvbXBsZXRpb24gfSBmcm9tICdAY29kZW1pcnJvci9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsga2V5bWFwIH0gZnJvbSAnQGNvZGVtaXJyb3Ivdmlldyc7XG5pbXBvcnQgeyBFZGl0b3JTZWxlY3Rpb24sIFByZWMgfSBmcm9tICdAY29kZW1pcnJvci9zdGF0ZSc7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICdvYmplY3QtcGF0aCc7XG5cbi8qKlxuICogRXhwcmVzc2lvbiBMYW5ndWFnZSBjb21wb25lbnRcbiAqXG4gKiBAZmlyZXMgZ3YtZXhwcmVzc2lvbi1sYW5ndWFnZTppbnB1dCAtIGlucHV0IGV2ZW50cyB3aXRoIHRoZSBgdmFsdWVgIG9uIGBkZXRhaWxgXG4gKiBAZmlyZXMgZ3YtZXhwcmVzc2lvbi1sYW5ndWFnZTpyZWFkeSAtIGV2ZW50IGRpc3BhdGNoIHdoZW4gY29tcG9uZW50IGlzIHJlYWR5XG4gKiBAZmlyZXMgZ3YtZXhwcmVzc2lvbi1sYW5ndWFnZTpjbGlwYm9hcmQtY29weSAtIGV2ZW50IGRpc3BhdGNoIHdoZW4gY29tcG9uZW50IHRoZSBgdmFsdWVgIGhhcyBiZWVuIGNvcGllZCB0byBjbGlwYm9hcmRcbiAqXG4gKiBAYXR0ciB7U3RyaW5nfSBsYWJlbCAtIGNvZGUgbGFuZ3VhZ2VcbiAqIEBhdHRyIHtTdHJpbmd9IHZhbHVlIC0gY29kZSBjb250ZW50IHRvIGJlIGhpZ2hsaWdodGVkXG4gKiBAYXR0ciB7b3B0aW9uc30gT2JqZWN0IC0gb3B0aW9ucyBiYXNlZCBvbiBjb2RlbWlycm9yXG4gKiBAYXR0ciB7U3RyaW5nfSBwbGFjZWhvbGRlciAtIGFuIGV4YW1wbGUgdmFsdWUgdG8gZGlzcGxheSBpbiB0aGUgaW5wdXQgd2hlbiBlbXB0eVxuICogQGF0dHIge051bWJlcn0gcm93cyAtIG51bWJlciBvZiByb3dzIG9mIHRoZSB0ZXh0IGVsZW1lbnRcbiAqIEBhdHRyIHtCb29sZWFufSBsYXJnZSAtIGZvciBhIGxhcmdlIGlucHV0IChvbmx5IGlmIHRoZSBmaWVsZCBoYXMgb25lIHJvdylcbiAqIEBhdHRyIHtCb29sZWFufSBtZWRpdW0gLSBmb3IgYSBtZWRpdW0gaW5wdXQgKG9ubHkgaWYgdGhlIGZpZWxkIGhhcyBvbmUgcm93KSAoRGVmYXVsdClcbiAqIEBhdHRyIHtCb29sZWFufSBzbWFsbCAtIGZvciBhIHNtYWxsIGlucHV0IChvbmx5IGlmIHRoZSBmaWVsZCBoYXMgb25lIHJvdylcbiAqIEBhdHRyIHtPYmplY3R9IGdyYW1tYXIgLSBUaGUgZ3JhbW1hciBmb3IgRXhwcmVzc2lvbiBMYW5ndWFnZSBzdXBwb3J0XG4gKlxuICogQGF0dHIge0Jvb2xlYW59IFtjbGlwYm9hcmQ9ZmFsc2VdLSB0cnVlIGlmIGZpZWxkIGhhcyBjbGlwYm9hcmQgYnV0dG9uXG4gKiBAYXR0ciB7Qm9vbGVhbn0gW2F1dG9mb2N1cz1mYWxzZV0gLSB0cnVlIHRvIHB1dCB0aGUgZm9jdXMgb24gdGhlIGlucHV0XG4gKiBAYXR0ciB7Qm9vbGVhbn0gW3JlYWRvbmx5PWZhbHNlXSAtIHRydWUgaWYgZmllbGQgaXMgcmVhZG9ubHkgbW9kZVxuICovXG5leHBvcnQgY2xhc3MgR3ZFeHByZXNzaW9uTGFuZ3VhZ2UgZXh0ZW5kcyBHdkNvZGUge1xuICBzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLnByb3BlcnRpZXMsXG4gICAgICBncmFtbWFyOiB7IHR5cGU6IE9iamVjdCB9LFxuICAgIH07XG4gIH1cblxuICBmaXJzdFVwZGF0ZWQoKSB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKCk7XG4gICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAncmVhZHknLCB7IGN1cnJlbnRUYXJnZXQ6IHRoaXMgfSk7XG4gIH1cblxuICBnZXRFeHRlbnNpb25zKCkge1xuICAgIHJldHVybiBbUHJlYy5oaWdoKHRoaXMuaW5zZXJ0RUxLZXltYXAoKSldO1xuICB9XG5cbiAgaW5zZXJ0RUxLZXltYXAoKSB7XG4gICAgcmV0dXJuIGtleW1hcC5vZihbXG4gICAgICB7XG4gICAgICAgIGtleTogJ0N0cmwtU2hpZnQtZScsXG4gICAgICAgIG1hYzogJ0NtZC1TaGlmdC1lJyxcbiAgICAgICAgcnVuKHZpZXcpIHtcbiAgICAgICAgICB2aWV3LmRpc3BhdGNoKFxuICAgICAgICAgICAgdmlldy5zdGF0ZS5jaGFuZ2VCeVJhbmdlKChyYW5nZSkgPT4gKHtcbiAgICAgICAgICAgICAgY2hhbmdlczogW3sgZnJvbTogcmFuZ2UuZnJvbSwgdG86IHJhbmdlLnRvLCBpbnNlcnQ6ICd7I30nIH1dLFxuICAgICAgICAgICAgICByYW5nZTogRWRpdG9yU2VsZWN0aW9uLnJhbmdlKHJhbmdlLmZyb20gKyAyLCByYW5nZS5mcm9tICsgMiksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgKTtcbiAgICAgICAgICBzdGFydENvbXBsZXRpb24odmlldyk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF0pO1xuICB9XG5cbiAgYnVpbGRNZXRob2RzKHR5cGUpIHtcbiAgICBjb25zdCBtb2RlbFR5cGUgPSB0aGlzLmdldE1vZGVsVHlwZSh0eXBlKTtcbiAgICByZXR1cm4gbW9kZWxUeXBlLm1ldGhvZHMubWFwKCh7IG5hbWUsIHBhcmFtcyA9IFtdLCByZXR1cm5UeXBlIH0pID0+IHtcbiAgICAgIGNvbnN0IGNvbW1hbmQgPSBgJHtuYW1lfSgpYDtcbiAgICAgIGNvbnN0IGRpc3BsYXlQYXJhbXMgPSBwYXJhbXMubWFwKChwKSA9PiBgJHtwLnR5cGV9ICR7cC5uYW1lfWApO1xuICAgICAgY29uc3QgbGFiZWwgPSBgJHtuYW1lfSgke2Rpc3BsYXlQYXJhbXMuam9pbignLCAnKX0pYDtcbiAgICAgIGNvbnN0IGRldGFpbCA9IGByZXR1cm4gJHtyZXR1cm5UeXBlfWA7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAnbWV0aG9kJyxcbiAgICAgICAgY29tbWFuZCxcbiAgICAgICAgYXBwbHk6ICh2aWV3LCBjb21wbGV0aW9uLCBmcm9tLCB0bykgPT4ge1xuICAgICAgICAgIGNvbnN0IGFuY2hvciA9IGZyb20gKyBuYW1lLmxlbmd0aCArIDE7XG4gICAgICAgICAgdmlldy5kaXNwYXRjaCh7XG4gICAgICAgICAgICBjaGFuZ2VzOiB7IGZyb20sIHRvLCBpbnNlcnQ6IGNvbXBsZXRpb24uY29tbWFuZCB9LFxuICAgICAgICAgICAgc2VsZWN0aW9uOiB7IGFuY2hvciB9LFxuICAgICAgICAgICAgdXNlckV2ZW50OiAnaW5wdXQuY29tcGxldGUnLFxuICAgICAgICAgICAgYW5ub3RhdGlvbnM6IHBpY2tlZENvbXBsZXRpb24ub2YodmlldyksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGxhYmVsLFxuICAgICAgICBkZXRhaWwsXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgZmluZEJlc3RBdXRvY29tcGxldGVIYW5kbGVyKGNvbXBsZXRpb25Db250ZXh0KSB7XG4gICAgcmV0dXJuIHRoaXMuZXhwcmVzc2lvbkxhbmd1YWdlQ29tcGxldGlvbkhhbmRsZXJzXG4gICAgICAuZmlsdGVyKChoYW5kbGVyKSA9PiAodGhpcy5ncmFtbWFyICE9IG51bGwgJiYgaGFuZGxlci5zdXBwb3J0RUwgPT09IHRydWUpIHx8IGhhbmRsZXIuc3VwcG9ydEVMICE9PSB0cnVlKVxuICAgICAgLm1hcCgoaGFuZGxlcikgPT4ge1xuICAgICAgICBjb25zdCBtYXRjaCA9IGhhbmRsZXIuZXhwciA/IGNvbXBsZXRpb25Db250ZXh0Lm1hdGNoQmVmb3JlKGhhbmRsZXIuZXhwcikgOiB0cnVlO1xuICAgICAgICByZXR1cm4geyBoYW5kbGVyLCBtYXRjaCB9O1xuICAgICAgfSlcbiAgICAgIC5maW5kKCh7IG1hdGNoLCBleHByIH0pID0+IG1hdGNoKTtcbiAgfVxuXG4gIGdldE1vZGVsVHlwZSh0eXBlSWQpIHtcbiAgICBpZiAodGhpcy5ncmFtbWFyICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBnZXQodGhpcy5ncmFtbWFyLCBgX3R5cGVzLiR7dHlwZUlkfWApO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlzTWFwKHR5cGVJZCkge1xuICAgIHJldHVybiBbJ01hcCcsICdIdHRwSGVhZGVycycsICdNdWx0aVZhbHVlTWFwJ10uaW5jbHVkZXModHlwZUlkKTtcbiAgfVxuXG4gIGdldEVudW0odHlwZUlkKSB7XG4gICAgaWYgKHRoaXMuZ3JhbW1hciAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gZ2V0KHRoaXMuZ3JhbW1hciwgYF9lbnVtcy4ke3R5cGVJZH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIFsnJ107XG4gIH1cblxuICBjb252ZXJ0VHlwZSh0eXBlKSB7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgIGNvbnN0IGxvd2VyVHlwZSA9IHR5cGUudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChsb3dlclR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiAndGV4dCc7XG4gICAgICB9IGVsc2UgaWYgKGxvd2VyVHlwZSA9PT0gJ2h0dHBoZWFkZXJzJyB8fCBsb3dlclR5cGUgPT09ICdtdWx0aXZhbHVlbWFwJykge1xuICAgICAgICByZXR1cm4gJ3R5cGUnO1xuICAgICAgfSBlbHNlIGlmIChsb3dlclR5cGUgPT09ICdpbnQnIHx8IGxvd2VyVHlwZSA9PT0gJ2xvbmcnKSB7XG4gICAgICAgIHJldHVybiAndmFyaWFibGUnO1xuICAgICAgfSBlbHNlIGlmIChsb3dlclR5cGUuaW5jbHVkZXMoJ1tdJykpIHtcbiAgICAgICAgcmV0dXJuICdlbnVtJztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICd2YXJpYWJsZSc7XG4gIH1cblxuICBnZXQgZXhwcmVzc2lvbkxhbmd1YWdlQ29tcGxldGlvbkhhbmRsZXJzKCkge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIGV4cHI6IC97I1thLXpdKi8sXG4gICAgICAgIHN1cHBvcnRFTDogdHJ1ZSxcbiAgICAgICAgcnVuKGNvbXBsZXRpb25Db250ZXh0LCBtYXRjaCkge1xuICAgICAgICAgIGNvbnN0IHByZWZpeCA9IG1hdGNoLnRleHQucmVwbGFjZUFsbCgneyMnLCAnJyk7XG4gICAgICAgICAgY29uc3QgZnJvbSA9IGNvbXBsZXRpb25Db250ZXh0LnBvcyAtIHByZWZpeC5sZW5ndGg7XG4gICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IE9iamVjdC5rZXlzKHRoaXMuZ3JhbW1hcilcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbW1hbmQpID0+ICFjb21tYW5kLnN0YXJ0c1dpdGgoJ18nKSAmJiBjb21tYW5kLnN0YXJ0c1dpdGgocHJlZml4KSlcbiAgICAgICAgICAgIC5tYXAoKGNvbW1hbmQpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAndmFyaWFibGUnLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQsXG4gICAgICAgICAgICAgICAgYXBwbHk6IGNvbW1hbmQsXG4gICAgICAgICAgICAgICAgbGFiZWw6IGNvbW1hbmQsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4geyBmcm9tLCBvcHRpb25zIH07XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBleHByOiAveyNbYS16XSouW2EtekEtWl0qLyxcbiAgICAgICAgc3VwcG9ydEVMOiB0cnVlLFxuICAgICAgICBydW4oY29tcGxldGlvbkNvbnRleHQsIG1hdGNoKSB7XG4gICAgICAgICAgY29uc3QgdG9rZW5zID0gbWF0Y2gudGV4dC5zcGxpdCgnLicpO1xuICAgICAgICAgIGNvbnN0IGtleSA9IHRva2Vuc1swXS5yZXBsYWNlQWxsKCd7IycsICcnKTtcbiAgICAgICAgICBjb25zdCBwcmVmaXggPSB0b2tlbnNbMV07XG4gICAgICAgICAgbGV0IGNhbmRpZGF0ZSA9IHRoaXMuZ3JhbW1hcltrZXldW3ByZWZpeF07XG4gICAgICAgICAgbGV0IG9wdGlvbnMgPSBbXTtcbiAgICAgICAgICBsZXQgZnJvbSA9IGNvbXBsZXRpb25Db250ZXh0LnBvcztcbiAgICAgICAgICBpZiAoY2FuZGlkYXRlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc01hcChjYW5kaWRhdGUuX3R5cGUpKSB7XG4gICAgICAgICAgICAgIG9wdGlvbnMgPSB0aGlzLmdldEVudW0oY2FuZGlkYXRlLl90eXBlKS5tYXAoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHlwZSA9IHRoaXMuY29udmVydFR5cGUoY2FuZGlkYXRlLl90eXBlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21tYW5kID0gYFsnJHt2YWx1ZX0nXVswXWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICAgICAgICBjb21tYW5kLFxuICAgICAgICAgICAgICAgICAgYXBwbHk6IGNvbW1hbmQsXG4gICAgICAgICAgICAgICAgICBsYWJlbDogdmFsdWUsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZyb20gLT0gcHJlZml4Lmxlbmd0aDtcbiAgICAgICAgICAgIGNhbmRpZGF0ZSA9IHRoaXMuZ3JhbW1hcltrZXldO1xuICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS5fdHlwZSkge1xuICAgICAgICAgICAgICBvcHRpb25zID0gdGhpcy5idWlsZE1ldGhvZHMoY2FuZGlkYXRlLl90eXBlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG9wdGlvbnMgPSBPYmplY3Qua2V5cyhjYW5kaWRhdGUpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoY29tbWFuZCkgPT4gIWNvbW1hbmQuc3RhcnRzV2l0aCgnXycpICYmIGNvbW1hbmQuc3RhcnRzV2l0aChwcmVmaXgpKVxuICAgICAgICAgICAgICAgIC5tYXAoKGNvbW1hbmQpID0+ICh7XG4gICAgICAgICAgICAgICAgICB0eXBlOiB0aGlzLmNvbnZlcnRUeXBlKGNhbmRpZGF0ZVtjb21tYW5kXS5fdHlwZSksXG4gICAgICAgICAgICAgICAgICBjb21tYW5kLFxuICAgICAgICAgICAgICAgICAgYXBwbHk6IGNvbW1hbmQsXG4gICAgICAgICAgICAgICAgICBsYWJlbDogY29tbWFuZCxcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7IGZyb20sIG9wdGlvbnMgfTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGV4cHI6IC97I1thLXpdKi5bYS16QS1aXSouW2EtekEtWl0qLyxcbiAgICAgICAgc3VwcG9ydEVMOiB0cnVlLFxuICAgICAgICBydW4oY29tcGxldGlvbkNvbnRleHQsIG1hdGNoKSB7XG4gICAgICAgICAgY29uc3QgdG9rZW5zID0gbWF0Y2gudGV4dC5zcGxpdCgnLicpO1xuICAgICAgICAgIGNvbnN0IGtleSA9IHRva2Vuc1swXS5yZXBsYWNlQWxsKCd7IycsICcnKTtcbiAgICAgICAgICBjb25zdCB3b3JkID0gdG9rZW5zWzFdO1xuICAgICAgICAgIGNvbnN0IHByZWZpeCA9IHRva2Vuc1syXTtcbiAgICAgICAgICBjb25zdCBjYW5kaWRhdGUgPSB0aGlzLmdyYW1tYXJba2V5XVt3b3JkXTtcbiAgICAgICAgICBsZXQgb3B0aW9ucyA9IFtdO1xuICAgICAgICAgIGxldCBmcm9tID0gY29tcGxldGlvbkNvbnRleHQucG9zO1xuICAgICAgICAgIGlmIChjYW5kaWRhdGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzTWFwKGNhbmRpZGF0ZS5fdHlwZSkpIHtcbiAgICAgICAgICAgICAgb3B0aW9ucyA9IHRoaXMuZ2V0RW51bShjYW5kaWRhdGUuX3R5cGUpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoY29tbWFuZCkgPT4gIWNvbW1hbmQuc3RhcnRzV2l0aCgnXycpICYmIGNvbW1hbmQuc3RhcnRzV2l0aChwcmVmaXgpKVxuICAgICAgICAgICAgICAgIC5tYXAoKGxhYmVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gdGhpcy5jb252ZXJ0VHlwZShjYW5kaWRhdGUuX3R5cGUpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZDogYFsnJHtsYWJlbH0nXVswXWAsXG4gICAgICAgICAgICAgICAgICAgIGFwcGx5KHZpZXcsIGNvbXBsZXRpb24sIF9mcm9tLCB0bykge1xuICAgICAgICAgICAgICAgICAgICAgIGZyb20gPSBfZnJvbSAtIHByZWZpeC5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgICAgICAgIHZpZXcuZGlzcGF0Y2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlczogeyBmcm9tLCB0bywgaW5zZXJ0OiBjb21wbGV0aW9uLmNvbW1hbmQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbjogeyBhbmNob3I6IGZyb20gKyBjb21wbGV0aW9uLmNvbW1hbmQubGVuZ3RoIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyRXZlbnQ6ICdpbnB1dC5jb21wbGV0ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uczogcGlja2VkQ29tcGxldGlvbi5vZih2aWV3KSxcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS5fdHlwZSkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB0aGlzLmJ1aWxkTWV0aG9kcyhjYW5kaWRhdGUuX3R5cGUpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZyb20gLT0gcHJlZml4Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICBvcHRpb25zID0gT2JqZWN0LmtleXMoY2FuZGlkYXRlKVxuICAgICAgICAgICAgICAgICAgLmZpbHRlcigoY29tbWFuZCkgPT4gY29tbWFuZC5zdGFydHNXaXRoKHByZWZpeCkpXG4gICAgICAgICAgICAgICAgICAubWFwKChjb21tYW5kKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogdGhpcy5jb252ZXJ0VHlwZShjYW5kaWRhdGVbY29tbWFuZF0uX3R5cGUpLFxuICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQsXG4gICAgICAgICAgICAgICAgICAgICAgYXBwbHk6IGNvbW1hbmQsXG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGNvbW1hbmQsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4geyBmcm9tLCBvcHRpb25zIH07XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdGhpcy5kZWZhdWx0Q29tcGxldGlvbkhhbmRsZXIsXG4gICAgXTtcbiAgfVxufVxuXG53aW5kb3cuY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdndi1leHByZXNzaW9uLWxhbmd1YWdlJywgR3ZFeHByZXNzaW9uTGFuZ3VhZ2UpO1xuIl19
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:!0}),exports.GvExpressionLanguage=void 0;const e=require("../molecules/gv-code"),t=require("../lib/events"),r=require("@codemirror/autocomplete"),a=require("@codemirror/view"),s=require("@codemirror/state"),n=require("object-path");class p extends e.GvCode{static get properties(){return{...super.properties,grammar:{type:Object}}}firstUpdated(){super.firstUpdated(),(0,t.dispatchCustomEvent)(this,"ready",{currentTarget:this})}getExtensions(){return[s.Prec.high(this.insertELKeymap())]}insertELKeymap(){return a.keymap.of([{key:"Ctrl-Shift-e",mac:"Cmd-Shift-e",run:e=>(e.dispatch(e.state.changeByRange((e=>({changes:[{from:e.from,to:e.to,insert:"{#}"}],range:s.EditorSelection.range(e.from+2,e.from+2)})))),(0,r.startCompletion)(e),!0)}])}buildMethods(e){return this.getModelType(e).methods.map((({name:e,params:t=[],returnType:a})=>{const s=`${e}()`,n=t.map((e=>`${e.type} ${e.name}`));return{type:"method",command:s,apply:(t,a,s,n)=>{const p=s+e.length+1;t.dispatch({changes:{from:s,to:n,insert:a.command},selection:{anchor:p},userEvent:"input.complete",annotations:r.pickedCompletion.of(t)})},label:`${e}(${n.join(", ")})`,detail:`return ${a}`}}))}findBestAutocompleteHandler(e){return this.expressionLanguageCompletionHandlers.filter((e=>null!=this.grammar&&!0===e.supportEL||!0!==e.supportEL)).map((t=>({handler:t,match:!t.expr||e.matchBefore(t.expr)}))).find((({match:e,expr:t})=>e))}getModelType(e){return null!=this.grammar?(0,n.get)(this.grammar,`_types.${e}`):null}isMap(e){return["Map","HttpHeaders","MultiValueMap"].includes(e)}getEnum(e){return null!=this.grammar?(0,n.get)(this.grammar,`_enums.${e}`):[""]}convertType(e){if(e){const t=e.toLowerCase();if("string"===t)return"text";if("httpheaders"===t||"multivaluemap"===t)return"type";if("int"===t||"long"===t)return"variable";if(t.includes("[]"))return"enum"}return"variable"}get expressionLanguageCompletionHandlers(){return[{expr:/{#[a-z]*/,supportEL:!0,run(e,t){const r=t.text.replaceAll("{#","");return{from:e.pos-r.length,options:Object.keys(this.grammar).filter((e=>!e.startsWith("_")&&e.startsWith(r))).map((e=>({type:"variable",command:e,apply:e,label:e})))}}},{expr:/{#[a-z]*.[a-zA-Z]*/,supportEL:!0,run(e,t){const r=t.text.split("."),a=r[0].replaceAll("{#",""),s=r[1];let n=this.grammar[a][s],p=[],i=e.pos;return n?this.isMap(n._type)&&(p=this.getEnum(n._type).map((e=>{const t=`['${e}'][0]`;return{type:this.convertType(n._type),command:t,apply:t,label:e}}))):(i-=s.length,n=this.grammar[a],p=n._type?this.buildMethods(n._type):Object.keys(n).filter((e=>!e.startsWith("_")&&e.startsWith(s))).map((e=>({type:this.convertType(n[e]._type),command:e,apply:e,label:e})))),{from:i,options:p}}},{expr:/{#[a-z]*.[a-zA-Z]*.[a-zA-Z]*/,supportEL:!0,run(e,t){const a=t.text.split("."),s=a[0].replaceAll("{#",""),n=a[1],p=a[2],i=this.grammar[s][n];let o=[],l=e.pos;return i&&(this.isMap(i._type)?o=this.getEnum(i._type).filter((e=>!e.startsWith("_")&&e.startsWith(p))).map((e=>({type:this.convertType(i._type),command:`['${e}'][0]`,apply(e,t,a,s){l=a-p.length-1,e.dispatch({changes:{from:l,to:s,insert:t.command},selection:{anchor:l+t.command.length},userEvent:"input.complete",annotations:r.pickedCompletion.of(e)})},label:e}))):i._type?o=this.buildMethods(i._type):(l-=p.length,o=Object.keys(i).filter((e=>e.startsWith(p))).map((e=>({type:this.convertType(i[e]._type),command:e,apply:e,label:e}))))),{from:l,options:o}}},this.defaultCompletionHandler]}}exports.GvExpressionLanguage=p,window.customElements.define("gv-expression-language",p);
|