@gravitee/ui-components 3.25.3 → 3.25.4-yarn-d0ed047
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 +21 -18
- package/src/atoms/gv-autocomplete.d.ts +104 -0
- package/src/atoms/gv-autocomplete.js +339 -353
- package/src/atoms/gv-autocomplete.js.map +1 -0
- package/src/atoms/gv-button.d.ts +109 -0
- package/src/atoms/gv-button.js +315 -152
- package/src/atoms/gv-button.js.map +1 -0
- package/src/atoms/gv-checkbox.d.ts +114 -0
- package/src/atoms/gv-checkbox.js +128 -78
- package/src/atoms/gv-checkbox.js.map +1 -0
- package/src/atoms/gv-date-picker-calendar.d.ts +190 -0
- package/src/atoms/gv-date-picker-calendar.js +699 -699
- package/src/atoms/gv-date-picker-calendar.js.map +1 -0
- package/src/atoms/gv-date-picker-cell.d.ts +80 -0
- package/src/atoms/gv-date-picker-cell.js +117 -108
- package/src/atoms/gv-date-picker-cell.js.map +1 -0
- package/src/atoms/gv-date-picker.d.ts +194 -0
- package/src/atoms/gv-date-picker.js +549 -442
- package/src/atoms/gv-date-picker.js.map +1 -0
- package/src/atoms/gv-file-upload.d.ts +64 -0
- package/src/atoms/gv-file-upload.js +288 -196
- package/src/atoms/gv-file-upload.js.map +1 -0
- package/src/atoms/gv-icon.d.ts +26 -0
- package/src/atoms/gv-icon.js +59 -47
- package/src/atoms/gv-icon.js.map +1 -0
- package/src/atoms/gv-image.d.ts +45 -0
- package/src/atoms/gv-image.js +93 -66
- package/src/atoms/gv-image.js.map +1 -0
- package/src/atoms/gv-input-message.d.ts +20 -0
- package/src/atoms/gv-input-message.js +49 -29
- package/src/atoms/gv-input-message.js.map +1 -0
- package/src/atoms/gv-input.d.ts +246 -0
- package/src/atoms/gv-input.js +400 -421
- package/src/atoms/gv-input.js.map +1 -0
- package/src/atoms/gv-link.d.ts +67 -0
- package/src/atoms/gv-link.js +143 -70
- package/src/atoms/gv-link.js.map +1 -0
- package/src/atoms/gv-message.d.ts +23 -0
- package/src/atoms/gv-message.js +98 -41
- package/src/atoms/gv-message.js.map +1 -0
- package/src/atoms/gv-metric.d.ts +32 -0
- package/src/atoms/gv-metric.js +74 -29
- package/src/atoms/gv-metric.js.map +1 -0
- package/src/atoms/gv-relative-time.d.ts +45 -0
- package/src/atoms/gv-relative-time.js +107 -148
- package/src/atoms/gv-relative-time.js.map +1 -0
- package/src/atoms/gv-select-native.d.ts +174 -0
- package/src/atoms/gv-select-native.js +289 -194
- package/src/atoms/gv-select-native.js.map +1 -0
- package/src/atoms/gv-select.d.ts +71 -0
- package/src/atoms/gv-select.js +323 -226
- package/src/atoms/gv-select.js.map +1 -0
- package/src/atoms/gv-spinner.d.ts +10 -0
- package/src/atoms/gv-spinner.js +29 -10
- package/src/atoms/gv-spinner.js.map +1 -0
- package/src/atoms/gv-state.d.ts +50 -0
- package/src/atoms/gv-state.js +76 -39
- package/src/atoms/gv-state.js.map +1 -0
- package/src/atoms/gv-switch.d.ts +60 -0
- package/src/atoms/gv-switch.js +187 -74
- package/src/atoms/gv-switch.js.map +1 -0
- package/src/atoms/gv-tag.d.ts +69 -0
- package/src/atoms/gv-tag.js +92 -45
- package/src/atoms/gv-tag.js.map +1 -0
- package/src/atoms/gv-text.d.ts +110 -0
- package/src/atoms/gv-text.js +105 -51
- package/src/atoms/gv-text.js.map +1 -0
- package/src/charts/gv-chart-bar.d.ts +50 -0
- package/src/charts/gv-chart-bar.js +64 -69
- package/src/charts/gv-chart-bar.js.map +1 -0
- package/src/charts/gv-chart-gauge.d.ts +58 -0
- package/src/charts/gv-chart-gauge.js +58 -62
- package/src/charts/gv-chart-gauge.js.map +1 -0
- package/src/charts/gv-chart-histogram.d.ts +48 -0
- package/src/charts/gv-chart-histogram.js +46 -58
- package/src/charts/gv-chart-histogram.js.map +1 -0
- package/src/charts/gv-chart-line.d.ts +52 -0
- package/src/charts/gv-chart-line.js +173 -189
- package/src/charts/gv-chart-line.js.map +1 -0
- package/src/charts/gv-chart-map.d.ts +50 -0
- package/src/charts/gv-chart-map.js +73 -75
- package/src/charts/gv-chart-map.js.map +1 -0
- package/src/charts/gv-chart-pie.d.ts +50 -0
- package/src/charts/gv-chart-pie.js +52 -57
- package/src/charts/gv-chart-pie.js.map +1 -0
- package/src/index.d.ts +77 -0
- package/src/index.js +1 -1
- package/src/index.js.map +1 -0
- package/src/lib/cron-expression.d.ts +1 -0
- package/src/lib/cron-expression.js +143 -176
- package/src/lib/cron-expression.js.map +1 -0
- package/src/lib/date.d.ts +1 -0
- package/src/lib/date.js +26 -35
- package/src/lib/date.js.map +1 -0
- package/src/lib/events.d.ts +1 -0
- package/src/lib/events.js +10 -11
- package/src/lib/events.js.map +1 -0
- package/src/lib/http-client-schema-form.d.ts +68 -0
- package/src/lib/http-client-schema-form.js +50 -50
- package/src/lib/http-client-schema-form.js.map +1 -0
- package/src/lib/http.d.ts +222 -0
- package/src/lib/http.js +221 -221
- package/src/lib/http.js.map +1 -0
- package/src/lib/i18n.d.ts +30 -0
- package/src/lib/i18n.js +40 -57
- package/src/lib/i18n.js.map +1 -0
- package/src/lib/item.d.ts +12 -0
- package/src/lib/item.js +66 -74
- package/src/lib/item.js.map +1 -0
- package/src/lib/properties.d.ts +42 -0
- package/src/lib/properties.js +110 -162
- package/src/lib/properties.js.map +1 -0
- package/src/lib/schema-form.d.ts +5 -0
- package/src/lib/schema-form.js +13 -16
- package/src/lib/schema-form.js.map +1 -0
- package/src/lib/studio.d.ts +2 -0
- package/src/lib/studio.js +116 -65
- package/src/lib/studio.js.map +1 -0
- package/src/lib/style.d.ts +6 -0
- package/src/lib/style.js +18 -19
- package/src/lib/style.js.map +1 -0
- package/src/lib/text-format.d.ts +6 -0
- package/src/lib/text-format.js +45 -55
- package/src/lib/text-format.js.map +1 -0
- package/src/lib/theme.d.ts +4 -0
- package/src/lib/theme.js +38 -43
- package/src/lib/theme.js.map +1 -0
- package/src/lib/utils.d.ts +9 -0
- package/src/lib/utils.js +72 -75
- package/src/lib/utils.js.map +1 -0
- package/src/mixins/chart-element.d.ts +39 -0
- package/src/mixins/chart-element.js +118 -106
- package/src/mixins/chart-element.js.map +1 -0
- package/src/mixins/input-element.d.ts +64 -0
- package/src/mixins/input-element.js +111 -131
- package/src/mixins/input-element.js.map +1 -0
- package/src/mixins/item-resource.d.ts +56 -0
- package/src/mixins/item-resource.js +76 -95
- package/src/mixins/item-resource.js.map +1 -0
- package/src/mixins/keyboard-element.d.ts +25 -0
- package/src/mixins/keyboard-element.js +44 -51
- package/src/mixins/keyboard-element.js.map +1 -0
- package/src/mixins/update-after-browser.d.ts +11 -0
- package/src/mixins/update-after-browser.js +10 -12
- package/src/mixins/update-after-browser.js.map +1 -0
- package/src/mixins/with-resize-observer.d.ts +12 -0
- package/src/mixins/with-resize-observer.js +46 -61
- package/src/mixins/with-resize-observer.js.map +1 -0
- package/src/mixins/with-skeleton-attribute.d.ts +35 -0
- package/src/mixins/with-skeleton-attribute.js +80 -88
- package/src/mixins/with-skeleton-attribute.js.map +1 -0
- package/src/molecules/gv-card-full.d.ts +78 -0
- package/src/molecules/gv-card-full.js +160 -47
- package/src/molecules/gv-card-full.js.map +1 -0
- package/src/molecules/gv-card-list.d.ts +33 -0
- package/src/molecules/gv-card-list.js +65 -47
- package/src/molecules/gv-card-list.js.map +1 -0
- package/src/molecules/gv-card.d.ts +65 -0
- package/src/molecules/gv-card.js +94 -22
- package/src/molecules/gv-card.js.map +1 -0
- package/src/molecules/gv-category-list.d.ts +17 -0
- package/src/molecules/gv-category-list.js +23 -15
- package/src/molecules/gv-category-list.js.map +1 -0
- package/src/molecules/gv-category.d.ts +64 -0
- package/src/molecules/gv-category.js +117 -43
- package/src/molecules/gv-category.js.map +1 -0
- package/src/molecules/gv-code.d.ts +192 -0
- package/src/molecules/gv-code.js +258 -220
- package/src/molecules/gv-code.js.map +1 -0
- package/src/molecules/gv-confirm.d.ts +60 -0
- package/src/molecules/gv-confirm.js +131 -113
- package/src/molecules/gv-confirm.js.map +1 -0
- package/src/molecules/gv-cron-editor.d.ts +115 -0
- package/src/molecules/gv-cron-editor.js +597 -375
- package/src/molecules/gv-cron-editor.js.map +1 -0
- package/src/molecules/gv-dropdown-menu.d.ts +28 -0
- package/src/molecules/gv-dropdown-menu.js +77 -52
- package/src/molecules/gv-dropdown-menu.js.map +1 -0
- package/src/molecules/gv-expandable.d.ts +37 -0
- package/src/molecules/gv-expandable.js +77 -54
- package/src/molecules/gv-expandable.js.map +1 -0
- package/src/molecules/gv-expression-language.d.ts +150 -0
- package/src/molecules/gv-expression-language.js +212 -256
- package/src/molecules/gv-expression-language.js.map +1 -0
- package/src/molecules/gv-identity-picture.d.ts +44 -0
- package/src/molecules/gv-identity-picture.js +102 -87
- package/src/molecules/gv-identity-picture.js.map +1 -0
- package/src/molecules/gv-list.d.ts +124 -0
- package/src/molecules/gv-list.js +167 -87
- package/src/molecules/gv-list.js.map +1 -0
- package/src/molecules/gv-metrics.d.ts +65 -0
- package/src/molecules/gv-metrics.js +103 -105
- package/src/molecules/gv-metrics.js.map +1 -0
- package/src/molecules/gv-modal.d.ts +64 -0
- package/src/molecules/gv-modal.js +157 -99
- package/src/molecules/gv-modal.js.map +1 -0
- package/src/molecules/gv-nav.d.ts +41 -0
- package/src/molecules/gv-nav.js +134 -123
- package/src/molecules/gv-nav.js.map +1 -0
- package/src/molecules/gv-option.d.ts +65 -0
- package/src/molecules/gv-option.js +177 -115
- package/src/molecules/gv-option.js.map +1 -0
- package/src/molecules/gv-plans.d.ts +73 -0
- package/src/molecules/gv-plans.js +327 -232
- package/src/molecules/gv-plans.js.map +1 -0
- package/src/molecules/gv-popover.d.ts +91 -0
- package/src/molecules/gv-popover.js +265 -172
- package/src/molecules/gv-popover.js.map +1 -0
- package/src/molecules/gv-promote.d.ts +108 -0
- package/src/molecules/gv-promote.js +152 -39
- package/src/molecules/gv-promote.js.map +1 -0
- package/src/molecules/gv-rating-list.d.ts +77 -0
- package/src/molecules/gv-rating-list.js +287 -184
- package/src/molecules/gv-rating-list.js.map +1 -0
- package/src/molecules/gv-rating.d.ts +55 -0
- package/src/molecules/gv-rating.js +187 -152
- package/src/molecules/gv-rating.js.map +1 -0
- package/src/molecules/gv-row-expandable.d.ts +8 -0
- package/src/molecules/gv-row-expandable.js +18 -14
- package/src/molecules/gv-row-expandable.js.map +1 -0
- package/src/molecules/gv-row.d.ts +37 -0
- package/src/molecules/gv-row.js +164 -42
- package/src/molecules/gv-row.js.map +1 -0
- package/src/molecules/gv-stats.d.ts +53 -0
- package/src/molecules/gv-stats.js +70 -55
- package/src/molecules/gv-stats.js.map +1 -0
- package/src/molecules/gv-stepper.d.ts +46 -0
- package/src/molecules/gv-stepper.js +225 -94
- package/src/molecules/gv-stepper.js.map +1 -0
- package/src/molecules/gv-table.d.ts +159 -0
- package/src/molecules/gv-table.js +530 -460
- package/src/molecules/gv-table.js.map +1 -0
- package/src/molecules/gv-tree.d.ts +44 -0
- package/src/molecules/gv-tree.js +189 -77
- package/src/molecules/gv-tree.js.map +1 -0
- package/src/organisms/gv-documentation.d.ts +52 -0
- package/src/organisms/gv-documentation.js +155 -81
- package/src/organisms/gv-documentation.js.map +1 -0
- package/src/organisms/gv-header.d.ts +60 -0
- package/src/organisms/gv-header.js +227 -80
- package/src/organisms/gv-header.js.map +1 -0
- package/src/organisms/gv-http-client.d.ts +57 -0
- package/src/organisms/gv-http-client.js +203 -83
- package/src/organisms/gv-http-client.js.map +1 -0
- package/src/organisms/gv-menu.d.ts +74 -0
- package/src/organisms/gv-menu.js +206 -89
- package/src/organisms/gv-menu.js.map +1 -0
- package/src/organisms/gv-newsletter-subscription.d.ts +82 -0
- package/src/organisms/gv-newsletter-subscription.js +212 -83
- package/src/organisms/gv-newsletter-subscription.js.map +1 -0
- package/src/organisms/gv-pagination.d.ts +63 -0
- package/src/organisms/gv-pagination.js +134 -124
- package/src/organisms/gv-pagination.js.map +1 -0
- package/src/organisms/gv-properties.d.ts +229 -0
- package/src/organisms/gv-properties.js +778 -616
- package/src/organisms/gv-properties.js.map +1 -0
- package/src/organisms/gv-resizable-views.d.ts +33 -0
- package/src/organisms/gv-resizable-views.js +334 -140
- package/src/organisms/gv-resizable-views.js.map +1 -0
- package/src/organisms/gv-resources.d.ts +125 -0
- package/src/organisms/gv-resources.js +434 -365
- package/src/organisms/gv-resources.js.map +1 -0
- package/src/organisms/gv-schema-form-array.d.ts +55 -0
- package/src/organisms/gv-schema-form-array.js +196 -98
- package/src/organisms/gv-schema-form-array.js.map +1 -0
- package/src/organisms/gv-schema-form-control-object.d.ts +64 -0
- package/src/organisms/gv-schema-form-control-object.js +110 -108
- package/src/organisms/gv-schema-form-control-object.js.map +1 -0
- package/src/organisms/gv-schema-form-control.d.ts +90 -0
- package/src/organisms/gv-schema-form-control.js +353 -349
- package/src/organisms/gv-schema-form-control.js.map +1 -0
- package/src/organisms/gv-schema-form.d.ts +156 -0
- package/src/organisms/gv-schema-form.js +611 -556
- package/src/organisms/gv-schema-form.js.map +1 -0
- package/src/organisms/gv-tabs.d.ts +56 -0
- package/src/organisms/gv-tabs.js +149 -125
- package/src/organisms/gv-tabs.js.map +1 -0
- package/src/organisms/gv-user-menu.d.ts +56 -0
- package/src/organisms/gv-user-menu.js +244 -94
- package/src/organisms/gv-user-menu.js.map +1 -0
- package/src/organisms/gv-vertical-menu.d.ts +28 -0
- package/src/organisms/gv-vertical-menu.js +84 -46
- package/src/organisms/gv-vertical-menu.js.map +1 -0
- package/src/policy-studio/gv-flow-step.d.ts +142 -0
- package/src/policy-studio/gv-flow-step.js +390 -250
- package/src/policy-studio/gv-flow-step.js.map +1 -0
- package/src/policy-studio/gv-flow.d.ts +89 -0
- package/src/policy-studio/gv-flow.js +512 -358
- package/src/policy-studio/gv-flow.js.map +1 -0
- package/src/policy-studio/gv-policy-studio-menu.d.ts +94 -0
- package/src/policy-studio/gv-policy-studio-menu.js +657 -403
- package/src/policy-studio/gv-policy-studio-menu.js.map +1 -0
- package/src/policy-studio/gv-policy-studio.d.ts +464 -0
- package/src/policy-studio/gv-policy-studio.js +1531 -1599
- package/src/policy-studio/gv-policy-studio.js.map +1 -0
- package/src/styles/empty.d.ts +1 -0
- package/src/styles/empty.js +21 -4
- package/src/styles/empty.js.map +1 -0
- package/src/styles/input.d.ts +1 -0
- package/src/styles/input.js +247 -3
- package/src/styles/input.js.map +1 -0
- package/src/styles/link.d.ts +1 -0
- package/src/styles/link.js +16 -3
- package/src/styles/link.js.map +1 -0
- package/src/styles/shapes.d.ts +2 -0
- package/src/styles/shapes.js +1 -1
- package/src/styles/shapes.js.map +1 -0
- package/src/styles/skeleton.d.ts +1 -0
- package/src/styles/skeleton.js +37 -3
- package/src/styles/skeleton.js.map +1 -0
- package/src/styles/zoom.d.ts +1 -0
- package/src/styles/zoom.js +24 -3
- package/src/styles/zoom.js.map +1 -0
- package/src/theme/gv-theme.d.ts +81 -0
- package/src/theme/gv-theme.js +115 -81
- package/src/theme/gv-theme.js.map +1 -0
- package/wc/gv-autocomplete.d.ts +1 -0
- package/wc/gv-autocomplete.js +2 -1
- package/wc/gv-autocomplete.js.map +1 -0
- package/wc/gv-button.d.ts +1 -0
- package/wc/gv-button.js +2 -1
- package/wc/gv-button.js.map +1 -0
- package/wc/gv-card-full.d.ts +1 -0
- package/wc/gv-card-full.js +2 -1
- package/wc/gv-card-full.js.map +1 -0
- package/wc/gv-card-list.d.ts +1 -0
- package/wc/gv-card-list.js +2 -1
- package/wc/gv-card-list.js.map +1 -0
- package/wc/gv-card.d.ts +1 -0
- package/wc/gv-card.js +2 -1
- package/wc/gv-card.js.map +1 -0
- package/wc/gv-category-list.d.ts +1 -0
- package/wc/gv-category-list.js +2 -1
- package/wc/gv-category-list.js.map +1 -0
- package/wc/gv-category.d.ts +1 -0
- package/wc/gv-category.js +2 -1
- package/wc/gv-category.js.map +1 -0
- package/wc/gv-chart-bar.d.ts +1 -0
- package/wc/gv-chart-bar.js +2 -1
- package/wc/gv-chart-bar.js.map +1 -0
- package/wc/gv-chart-gauge.d.ts +1 -0
- package/wc/gv-chart-gauge.js +2 -1
- package/wc/gv-chart-gauge.js.map +1 -0
- package/wc/gv-chart-histogram.d.ts +1 -0
- package/wc/gv-chart-histogram.js +2 -1
- package/wc/gv-chart-histogram.js.map +1 -0
- package/wc/gv-chart-line.d.ts +1 -0
- package/wc/gv-chart-line.js +2 -1
- package/wc/gv-chart-line.js.map +1 -0
- package/wc/gv-chart-map.d.ts +1 -0
- package/wc/gv-chart-map.js +2 -1
- package/wc/gv-chart-map.js.map +1 -0
- package/wc/gv-chart-pie.d.ts +1 -0
- package/wc/gv-chart-pie.js +2 -1
- package/wc/gv-chart-pie.js.map +1 -0
- package/wc/gv-checkbox.d.ts +1 -0
- package/wc/gv-checkbox.js +2 -1
- package/wc/gv-checkbox.js.map +1 -0
- package/wc/gv-code.d.ts +1 -0
- package/wc/gv-code.js +2 -1
- package/wc/gv-code.js.map +1 -0
- package/wc/gv-confirm.d.ts +1 -0
- package/wc/gv-confirm.js +2 -1
- package/wc/gv-confirm.js.map +1 -0
- package/wc/gv-cron-editor.d.ts +1 -0
- package/wc/gv-cron-editor.js +2 -1
- package/wc/gv-cron-editor.js.map +1 -0
- package/wc/gv-date-picker-calendar.d.ts +1 -0
- package/wc/gv-date-picker-calendar.js +2 -1
- package/wc/gv-date-picker-calendar.js.map +1 -0
- package/wc/gv-date-picker-cell.d.ts +1 -0
- package/wc/gv-date-picker-cell.js +2 -1
- package/wc/gv-date-picker-cell.js.map +1 -0
- package/wc/gv-date-picker.d.ts +1 -0
- package/wc/gv-date-picker.js +2 -1
- package/wc/gv-date-picker.js.map +1 -0
- package/wc/gv-documentation.d.ts +1 -0
- package/wc/gv-documentation.js +2 -1
- package/wc/gv-documentation.js.map +1 -0
- package/wc/gv-dropdown-menu.d.ts +1 -0
- package/wc/gv-dropdown-menu.js +2 -1
- package/wc/gv-dropdown-menu.js.map +1 -0
- package/wc/gv-expandable.d.ts +1 -0
- package/wc/gv-expandable.js +2 -1
- package/wc/gv-expandable.js.map +1 -0
- package/wc/gv-expression-language.d.ts +1 -0
- package/wc/gv-expression-language.js +2 -1
- package/wc/gv-expression-language.js.map +1 -0
- package/wc/gv-file-upload.d.ts +1 -0
- package/wc/gv-file-upload.js +2 -1
- package/wc/gv-file-upload.js.map +1 -0
- package/wc/gv-flow-step.d.ts +1 -0
- package/wc/gv-flow-step.js +2 -1
- package/wc/gv-flow-step.js.map +1 -0
- package/wc/gv-flow.d.ts +1 -0
- package/wc/gv-flow.js +2 -1
- package/wc/gv-flow.js.map +1 -0
- package/wc/gv-header.d.ts +1 -0
- package/wc/gv-header.js +2 -1
- package/wc/gv-header.js.map +1 -0
- package/wc/gv-http-client.d.ts +1 -0
- package/wc/gv-http-client.js +2 -1
- package/wc/gv-http-client.js.map +1 -0
- package/wc/gv-icon.d.ts +1 -0
- package/wc/gv-icon.js +2 -1
- package/wc/gv-icon.js.map +1 -0
- package/wc/gv-identity-picture.d.ts +1 -0
- package/wc/gv-identity-picture.js +2 -1
- package/wc/gv-identity-picture.js.map +1 -0
- package/wc/gv-image.d.ts +1 -0
- package/wc/gv-image.js +2 -1
- package/wc/gv-image.js.map +1 -0
- package/wc/gv-input-message.d.ts +1 -0
- package/wc/gv-input-message.js +2 -1
- package/wc/gv-input-message.js.map +1 -0
- package/wc/gv-input.d.ts +1 -0
- package/wc/gv-input.js +2 -1
- package/wc/gv-input.js.map +1 -0
- package/wc/gv-link.d.ts +1 -0
- package/wc/gv-link.js +2 -1
- package/wc/gv-link.js.map +1 -0
- package/wc/gv-list.d.ts +1 -0
- package/wc/gv-list.js +2 -1
- package/wc/gv-list.js.map +1 -0
- package/wc/gv-menu.d.ts +1 -0
- package/wc/gv-menu.js +2 -1
- package/wc/gv-menu.js.map +1 -0
- package/wc/gv-message.d.ts +1 -0
- package/wc/gv-message.js +2 -1
- package/wc/gv-message.js.map +1 -0
- package/wc/gv-metric.d.ts +1 -0
- package/wc/gv-metric.js +2 -1
- package/wc/gv-metric.js.map +1 -0
- package/wc/gv-metrics.d.ts +1 -0
- package/wc/gv-metrics.js +2 -1
- package/wc/gv-metrics.js.map +1 -0
- package/wc/gv-modal.d.ts +1 -0
- package/wc/gv-modal.js +2 -1
- package/wc/gv-modal.js.map +1 -0
- package/wc/gv-nav.d.ts +1 -0
- package/wc/gv-nav.js +2 -1
- package/wc/gv-nav.js.map +1 -0
- package/wc/gv-newsletter-subscription.d.ts +1 -0
- package/wc/gv-newsletter-subscription.js +2 -1
- package/wc/gv-newsletter-subscription.js.map +1 -0
- package/wc/gv-option.d.ts +1 -0
- package/wc/gv-option.js +2 -1
- package/wc/gv-option.js.map +1 -0
- package/wc/gv-pagination.d.ts +1 -0
- package/wc/gv-pagination.js +2 -1
- package/wc/gv-pagination.js.map +1 -0
- package/wc/gv-plans.d.ts +1 -0
- package/wc/gv-plans.js +2 -1
- package/wc/gv-plans.js.map +1 -0
- package/wc/gv-policy-studio-menu.d.ts +1 -0
- package/wc/gv-policy-studio-menu.js +2 -1
- package/wc/gv-policy-studio-menu.js.map +1 -0
- package/wc/gv-policy-studio.d.ts +1 -0
- package/wc/gv-policy-studio.js +2 -1
- package/wc/gv-policy-studio.js.map +1 -0
- package/wc/gv-popover.d.ts +1 -0
- package/wc/gv-popover.js +2 -1
- package/wc/gv-popover.js.map +1 -0
- package/wc/gv-promote.d.ts +1 -0
- package/wc/gv-promote.js +2 -1
- package/wc/gv-promote.js.map +1 -0
- package/wc/gv-properties.d.ts +1 -0
- package/wc/gv-properties.js +2 -1
- package/wc/gv-properties.js.map +1 -0
- package/wc/gv-rating-list.d.ts +1 -0
- package/wc/gv-rating-list.js +2 -1
- package/wc/gv-rating-list.js.map +1 -0
- package/wc/gv-rating.d.ts +1 -0
- package/wc/gv-rating.js +2 -1
- package/wc/gv-rating.js.map +1 -0
- package/wc/gv-relative-time.d.ts +1 -0
- package/wc/gv-relative-time.js +2 -1
- package/wc/gv-relative-time.js.map +1 -0
- package/wc/gv-resizable-views.d.ts +1 -0
- package/wc/gv-resizable-views.js +2 -1
- package/wc/gv-resizable-views.js.map +1 -0
- package/wc/gv-resources.d.ts +1 -0
- package/wc/gv-resources.js +2 -1
- package/wc/gv-resources.js.map +1 -0
- package/wc/gv-row-expandable.d.ts +1 -0
- package/wc/gv-row-expandable.js +2 -1
- package/wc/gv-row-expandable.js.map +1 -0
- package/wc/gv-row.d.ts +1 -0
- package/wc/gv-row.js +2 -1
- package/wc/gv-row.js.map +1 -0
- package/wc/gv-schema-form-array.d.ts +1 -0
- package/wc/gv-schema-form-array.js +2 -1
- package/wc/gv-schema-form-array.js.map +1 -0
- package/wc/gv-schema-form-control-object.d.ts +1 -0
- package/wc/gv-schema-form-control-object.js +2 -1
- package/wc/gv-schema-form-control-object.js.map +1 -0
- package/wc/gv-schema-form-control.d.ts +1 -0
- package/wc/gv-schema-form-control.js +2 -1
- package/wc/gv-schema-form-control.js.map +1 -0
- package/wc/gv-schema-form.d.ts +1 -0
- package/wc/gv-schema-form.js +2 -1
- package/wc/gv-schema-form.js.map +1 -0
- package/wc/gv-select-native.d.ts +1 -0
- package/wc/gv-select-native.js +2 -1
- package/wc/gv-select-native.js.map +1 -0
- package/wc/gv-select.d.ts +1 -0
- package/wc/gv-select.js +2 -1
- package/wc/gv-select.js.map +1 -0
- package/wc/gv-spinner.d.ts +1 -0
- package/wc/gv-spinner.js +2 -1
- package/wc/gv-spinner.js.map +1 -0
- package/wc/gv-state.d.ts +1 -0
- package/wc/gv-state.js +2 -1
- package/wc/gv-state.js.map +1 -0
- package/wc/gv-stats.d.ts +1 -0
- package/wc/gv-stats.js +2 -1
- package/wc/gv-stats.js.map +1 -0
- package/wc/gv-stepper.d.ts +1 -0
- package/wc/gv-stepper.js +2 -1
- package/wc/gv-stepper.js.map +1 -0
- package/wc/gv-switch.d.ts +1 -0
- package/wc/gv-switch.js +2 -1
- package/wc/gv-switch.js.map +1 -0
- package/wc/gv-table.d.ts +1 -0
- package/wc/gv-table.js +2 -1
- package/wc/gv-table.js.map +1 -0
- package/wc/gv-tabs.d.ts +1 -0
- package/wc/gv-tabs.js +2 -1
- package/wc/gv-tabs.js.map +1 -0
- package/wc/gv-tag.d.ts +1 -0
- package/wc/gv-tag.js +2 -1
- package/wc/gv-tag.js.map +1 -0
- package/wc/gv-text.d.ts +1 -0
- package/wc/gv-text.js +2 -1
- package/wc/gv-text.js.map +1 -0
- package/wc/gv-theme.d.ts +1 -0
- package/wc/gv-theme.js +2 -1
- package/wc/gv-theme.js.map +1 -0
- package/wc/gv-tree.d.ts +1 -0
- package/wc/gv-tree.js +2 -1
- package/wc/gv-tree.js.map +1 -0
- package/wc/gv-user-menu.d.ts +1 -0
- package/wc/gv-user-menu.js +2 -1
- package/wc/gv-user-menu.js.map +1 -0
- package/wc/gv-vertical-menu.d.ts +1 -0
- package/wc/gv-vertical-menu.js +2 -1
- package/wc/gv-vertical-menu.js.map +1 -0
|
@@ -40,607 +40,662 @@ import './gv-schema-form-control';
|
|
|
40
40
|
* @cssprop {Color} [--gv-schema-form--bgc=#ffffff] - Background color
|
|
41
41
|
* @cssprop {Length} [--gv-schema-form-control--m=0.4rem] - Control margin
|
|
42
42
|
*/
|
|
43
|
-
|
|
44
43
|
export class GvSchemaForm extends LitElement {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
type: Boolean,
|
|
65
|
-
attribute: 'has-header'
|
|
66
|
-
},
|
|
67
|
-
_confirm: {
|
|
68
|
-
type: Object
|
|
69
|
-
},
|
|
70
|
-
_values: {
|
|
71
|
-
type: Object,
|
|
72
|
-
attribute: false
|
|
73
|
-
},
|
|
74
|
-
dirty: {
|
|
75
|
-
type: Boolean,
|
|
76
|
-
reflect: true
|
|
77
|
-
},
|
|
78
|
-
hideDeprecated: {
|
|
79
|
-
type: Boolean,
|
|
80
|
-
attribute: 'hide-deprecated'
|
|
81
|
-
},
|
|
82
|
-
validateOnRender: {
|
|
83
|
-
type: Boolean,
|
|
84
|
-
attribute: 'validate-on-render'
|
|
85
|
-
},
|
|
86
|
-
_validatorResults: {
|
|
87
|
-
type: Object
|
|
88
|
-
},
|
|
89
|
-
skeleton: {
|
|
90
|
-
type: Boolean,
|
|
91
|
-
reflect: true
|
|
92
|
-
},
|
|
93
|
-
_touch: {
|
|
94
|
-
type: Boolean
|
|
95
|
-
},
|
|
96
|
-
readonly: {
|
|
97
|
-
type: Boolean,
|
|
98
|
-
reflect: true
|
|
99
|
-
},
|
|
100
|
-
scrollable: {
|
|
101
|
-
type: Boolean,
|
|
102
|
-
reflect: true
|
|
103
|
-
},
|
|
104
|
-
groups: {
|
|
105
|
-
type: Array
|
|
106
|
-
}
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
constructor() {
|
|
111
|
-
super();
|
|
112
|
-
this.hideDeprecated = false;
|
|
113
|
-
this._values = {};
|
|
114
|
-
this.submitLabel = 'Ok';
|
|
115
|
-
this.hasHeader = false;
|
|
116
|
-
this.hasFooter = false;
|
|
117
|
-
this._touch = false;
|
|
118
|
-
this._validator = new Validator();
|
|
119
|
-
this._validatorResults = {};
|
|
120
|
-
this._ignoreProperties = [];
|
|
121
|
-
this._dynamicControls = [];
|
|
122
|
-
this._dynamicAttributes = ['disabled', 'required', 'hidden'];
|
|
123
|
-
this.groups = null;
|
|
124
|
-
this.addEventListener('gv-schema-form-control:default-value', this._onDefaultValue.bind(this));
|
|
125
|
-
this.addEventListener('gv-schema-form-control:change', this._onChange.bind(this));
|
|
126
|
-
this.addEventListener('gv-schema-form-control:control-ready', this._onControlReady.bind(this));
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
set values(values) {
|
|
130
|
-
if (!deepEqual(this._values, values)) {
|
|
131
|
-
if (values) {
|
|
132
|
-
this._initialValues = { ...values
|
|
44
|
+
static get properties() {
|
|
45
|
+
return {
|
|
46
|
+
schema: { type: Object },
|
|
47
|
+
errors: { type: Object },
|
|
48
|
+
values: { type: Object },
|
|
49
|
+
submitLabel: { type: String },
|
|
50
|
+
hasFooter: { type: Boolean, attribute: 'has-footer' },
|
|
51
|
+
hasHeader: { type: Boolean, attribute: 'has-header' },
|
|
52
|
+
_confirm: { type: Object },
|
|
53
|
+
_values: { type: Object, attribute: false },
|
|
54
|
+
dirty: { type: Boolean, reflect: true },
|
|
55
|
+
hideDeprecated: { type: Boolean, attribute: 'hide-deprecated' },
|
|
56
|
+
validateOnRender: { type: Boolean, attribute: 'validate-on-render' },
|
|
57
|
+
_validatorResults: { type: Object },
|
|
58
|
+
skeleton: { type: Boolean, reflect: true },
|
|
59
|
+
_touch: { type: Boolean },
|
|
60
|
+
readonly: { type: Boolean, reflect: true },
|
|
61
|
+
scrollable: { type: Boolean, reflect: true },
|
|
62
|
+
groups: { type: Array },
|
|
133
63
|
};
|
|
134
|
-
} else {
|
|
135
|
-
this._initialValues = {};
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
this._values = deepClone(this._initialValues);
|
|
139
64
|
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
_onReset() {
|
|
158
|
-
this.reset();
|
|
159
|
-
dispatchCustomEvent(this, 'reset');
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
requestValidation() {
|
|
163
|
-
clearTimeout(this._validateTimeout);
|
|
164
|
-
this._validateTimeout = setTimeout(() => {
|
|
165
|
-
this.validate();
|
|
166
|
-
|
|
167
|
-
this._updateActions();
|
|
168
|
-
}, 350);
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
submit() {
|
|
172
|
-
this._onSubmit();
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
_onSubmit() {
|
|
176
|
-
const validatorResults = this.validate();
|
|
177
|
-
|
|
178
|
-
if (this.isValid()) {
|
|
179
|
-
this._initialValues = deepClone(this._values);
|
|
180
|
-
this.dirty = false;
|
|
181
|
-
this._touch = false;
|
|
182
|
-
dispatchCustomEvent(this, 'submit', {
|
|
183
|
-
values: this._values,
|
|
184
|
-
validatorResults
|
|
185
|
-
});
|
|
186
|
-
} else {
|
|
187
|
-
dispatchCustomEvent(this, 'error', {
|
|
188
|
-
values: this._values,
|
|
189
|
-
validatorResults
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
_setDirty(dirty = true) {
|
|
195
|
-
this.dirty = !!dirty;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
_setTouch(touch = true) {
|
|
199
|
-
this._touch = !!touch;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
confirm() {
|
|
203
|
-
if (this.isTouch()) {
|
|
204
|
-
if (this._confirm && this._confirm.promise) {
|
|
205
|
-
return this._confirm.promise;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
const promise = new Promise((resolve, reject) => this._confirm = {
|
|
209
|
-
resolve,
|
|
210
|
-
reject
|
|
211
|
-
});
|
|
212
|
-
this._confirm.promise = promise;
|
|
213
|
-
return promise;
|
|
65
|
+
constructor() {
|
|
66
|
+
super();
|
|
67
|
+
this.hideDeprecated = false;
|
|
68
|
+
this._values = {};
|
|
69
|
+
this.submitLabel = 'Ok';
|
|
70
|
+
this.hasHeader = false;
|
|
71
|
+
this.hasFooter = false;
|
|
72
|
+
this._touch = false;
|
|
73
|
+
this._validator = new Validator();
|
|
74
|
+
this._validatorResults = {};
|
|
75
|
+
this._ignoreProperties = [];
|
|
76
|
+
this._dynamicControls = [];
|
|
77
|
+
this._dynamicAttributes = ['disabled', 'required', 'hidden'];
|
|
78
|
+
this.groups = null;
|
|
79
|
+
this.addEventListener('gv-schema-form-control:default-value', this._onDefaultValue.bind(this));
|
|
80
|
+
this.addEventListener('gv-schema-form-control:change', this._onChange.bind(this));
|
|
81
|
+
this.addEventListener('gv-schema-form-control:control-ready', this._onControlReady.bind(this));
|
|
214
82
|
}
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
this._onReset();
|
|
226
|
-
|
|
227
|
-
this.requestUpdate();
|
|
228
|
-
this.updateComplete.then(() => {
|
|
229
|
-
resolve(this);
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
_onConfirmEdit() {
|
|
234
|
-
this._confirm.reject(this);
|
|
235
|
-
|
|
236
|
-
this._confirm = null;
|
|
237
|
-
|
|
238
|
-
this._updateChildren(this.validateOnRender);
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
_getSubmitBtn() {
|
|
242
|
-
return this.shadowRoot.querySelector('#submit');
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
_getResetBtn() {
|
|
246
|
-
return this.shadowRoot.querySelector('#reset');
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
_dispatchChange() {
|
|
250
|
-
clearTimeout(this._changeTimeout);
|
|
251
|
-
this._changeTimeout = setTimeout(() => {
|
|
252
|
-
dispatchCustomEvent(this, 'change', {
|
|
253
|
-
target: this,
|
|
254
|
-
values: this._values,
|
|
255
|
-
validation: this._validatorResults
|
|
256
|
-
});
|
|
257
|
-
}, 50);
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
_onDefaultValue({
|
|
261
|
-
detail: {
|
|
262
|
-
currentTarget,
|
|
263
|
-
value,
|
|
264
|
-
control
|
|
83
|
+
set values(values) {
|
|
84
|
+
if (!deepEqual(this._values, values)) {
|
|
85
|
+
if (values) {
|
|
86
|
+
this._initialValues = { ...values };
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
this._initialValues = {};
|
|
90
|
+
}
|
|
91
|
+
this._values = deepClone(this._initialValues);
|
|
92
|
+
}
|
|
265
93
|
}
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
value = parseInt(value, 10);
|
|
94
|
+
get values() {
|
|
95
|
+
return this._values;
|
|
269
96
|
}
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
value,
|
|
278
|
-
control
|
|
279
|
-
}
|
|
280
|
-
}) {
|
|
281
|
-
this._setTouch(true);
|
|
282
|
-
|
|
283
|
-
if (control.type === 'integer') {
|
|
284
|
-
if (typeof value === 'string' && value.trim().length === 0) {
|
|
285
|
-
value = null;
|
|
286
|
-
} else {
|
|
287
|
-
const intValue = Number(value).valueOf();
|
|
288
|
-
|
|
289
|
-
if (!isNaN(intValue)) {
|
|
290
|
-
value = intValue;
|
|
291
|
-
} else {
|
|
292
|
-
value = null;
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
} else if (control.type === 'array' && value.length === 0) {
|
|
296
|
-
value = null;
|
|
297
|
-
} else if (control.type === 'string' && value.trim().length === 0 && !control.enum) {
|
|
298
|
-
value = null;
|
|
299
|
-
} else if (control.type === 'object') {
|
|
300
|
-
if (Object.keys(value).length === 0) {
|
|
301
|
-
value = null;
|
|
302
|
-
}
|
|
97
|
+
reset(values = null) {
|
|
98
|
+
this._values = deepClone(values || this._initialValues);
|
|
99
|
+
this._touch = false;
|
|
100
|
+
this._setDirty(false);
|
|
101
|
+
this.getControls().forEach((s) => {
|
|
102
|
+
s.requestUpdate();
|
|
103
|
+
});
|
|
303
104
|
}
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
} else {
|
|
308
|
-
set(this._values, currentTarget.id, value);
|
|
105
|
+
_onReset() {
|
|
106
|
+
this.reset();
|
|
107
|
+
dispatchCustomEvent(this, 'reset');
|
|
309
108
|
}
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
109
|
+
requestValidation() {
|
|
110
|
+
clearTimeout(this._validateTimeout);
|
|
111
|
+
this._validateTimeout = setTimeout(() => {
|
|
112
|
+
this.validate();
|
|
113
|
+
this._updateActions();
|
|
114
|
+
}, 350);
|
|
115
|
+
}
|
|
116
|
+
submit() {
|
|
117
|
+
this._onSubmit();
|
|
118
|
+
}
|
|
119
|
+
_onSubmit() {
|
|
120
|
+
const validatorResults = this.validate();
|
|
121
|
+
if (this.isValid()) {
|
|
122
|
+
this._initialValues = deepClone(this._values);
|
|
123
|
+
this.dirty = false;
|
|
124
|
+
this._touch = false;
|
|
125
|
+
dispatchCustomEvent(this, 'submit', { values: this._values, validatorResults });
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
dispatchCustomEvent(this, 'error', { values: this._values, validatorResults });
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
_setDirty(dirty = true) {
|
|
132
|
+
this.dirty = !!dirty;
|
|
133
|
+
}
|
|
134
|
+
_setTouch(touch = true) {
|
|
135
|
+
this._touch = !!touch;
|
|
136
|
+
}
|
|
137
|
+
confirm() {
|
|
138
|
+
if (this.isTouch()) {
|
|
139
|
+
if (this._confirm && this._confirm.promise) {
|
|
140
|
+
return this._confirm.promise;
|
|
141
|
+
}
|
|
142
|
+
const promise = new Promise((resolve, reject) => (this._confirm = { resolve, reject }));
|
|
143
|
+
this._confirm.promise = promise;
|
|
144
|
+
return promise;
|
|
145
|
+
}
|
|
146
|
+
return Promise.resolve();
|
|
147
|
+
}
|
|
148
|
+
_onConfirmReset() {
|
|
149
|
+
const { resolve } = this._confirm;
|
|
150
|
+
this._confirm = null;
|
|
151
|
+
this._onReset();
|
|
152
|
+
this.requestUpdate();
|
|
153
|
+
this.updateComplete.then(() => {
|
|
154
|
+
resolve(this);
|
|
332
155
|
});
|
|
333
|
-
} else if (this._hasCondition(control)) {
|
|
334
|
-
this._dynamicControls.push(controlElement);
|
|
335
|
-
|
|
336
|
-
this._updateDynamicControl(controlElement);
|
|
337
|
-
}
|
|
338
156
|
}
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
if (attribute === 'hidden') {
|
|
360
|
-
this._ignoreProperties.push(controlElement.id);
|
|
361
|
-
}
|
|
362
|
-
} else {
|
|
363
|
-
controlElement.removeAttribute(attribute);
|
|
157
|
+
_onConfirmEdit() {
|
|
158
|
+
this._confirm.reject(this);
|
|
159
|
+
this._confirm = null;
|
|
160
|
+
this._updateChildren(this.validateOnRender);
|
|
161
|
+
}
|
|
162
|
+
_getSubmitBtn() {
|
|
163
|
+
return this.shadowRoot.querySelector('#submit');
|
|
164
|
+
}
|
|
165
|
+
_getResetBtn() {
|
|
166
|
+
return this.shadowRoot.querySelector('#reset');
|
|
167
|
+
}
|
|
168
|
+
_dispatchChange() {
|
|
169
|
+
clearTimeout(this._changeTimeout);
|
|
170
|
+
this._changeTimeout = setTimeout(() => {
|
|
171
|
+
dispatchCustomEvent(this, 'change', { target: this, values: this._values, validation: this._validatorResults });
|
|
172
|
+
}, 50);
|
|
173
|
+
}
|
|
174
|
+
_onDefaultValue({ detail: { currentTarget, value, control } }) {
|
|
175
|
+
if (control.type === 'integer' && value != null && ((value.trim && value.length > 0) || value.length > 0)) {
|
|
176
|
+
value = parseInt(value, 10);
|
|
364
177
|
}
|
|
365
|
-
|
|
178
|
+
set(this._values, currentTarget.id, value);
|
|
366
179
|
}
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
180
|
+
_onChange({ detail: { currentTarget, value, control } }) {
|
|
181
|
+
this._setTouch(true);
|
|
182
|
+
if (control.type === 'integer') {
|
|
183
|
+
if (typeof value === 'string' && value.trim().length === 0) {
|
|
184
|
+
value = null;
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
const intValue = Number(value).valueOf();
|
|
188
|
+
if (!isNaN(intValue)) {
|
|
189
|
+
value = intValue;
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
value = null;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
else if (control.type === 'array' && value.length === 0) {
|
|
197
|
+
value = null;
|
|
198
|
+
}
|
|
199
|
+
else if (control.type === 'string' && value.trim().length === 0 && !control.enum) {
|
|
200
|
+
value = null;
|
|
201
|
+
}
|
|
202
|
+
else if (control.type === 'object') {
|
|
203
|
+
if (Object.keys(value).length === 0) {
|
|
204
|
+
value = null;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
if (value == null) {
|
|
208
|
+
del(this._values, currentTarget.id);
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
set(this._values, currentTarget.id, value);
|
|
212
|
+
}
|
|
213
|
+
this._updateDynamicControls();
|
|
214
|
+
this._validatorResults = this.validate();
|
|
215
|
+
this.dirty = true;
|
|
216
|
+
this._updateActions();
|
|
217
|
+
this._dispatchChange();
|
|
392
218
|
}
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
219
|
+
_onControlReady(e) {
|
|
220
|
+
e.stopPropagation();
|
|
221
|
+
e.preventDefault();
|
|
222
|
+
const controlElement = e.detail.control;
|
|
223
|
+
const control = controlElement.control;
|
|
224
|
+
if (control['x-schema-form']) {
|
|
225
|
+
if (control['x-schema-form'].event) {
|
|
226
|
+
const event = control['x-schema-form'].event;
|
|
227
|
+
dispatchCustomEvent(this, event.name, { ...event, ...e.detail });
|
|
228
|
+
}
|
|
229
|
+
else if (this._hasCondition(control)) {
|
|
230
|
+
this._dynamicControls.push(controlElement);
|
|
231
|
+
this._updateDynamicControl(controlElement);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
403
234
|
}
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
if (control['x-schema-form'] == null || control['x-schema-form'][conditionKey] == null) {
|
|
410
|
-
return false;
|
|
235
|
+
_updateDynamicControls() {
|
|
236
|
+
this._ignoreProperties = [];
|
|
237
|
+
this._dynamicControls.forEach((controlElement) => {
|
|
238
|
+
this._updateDynamicControl(controlElement);
|
|
239
|
+
});
|
|
411
240
|
}
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
241
|
+
_updateDynamicControl(controlElement) {
|
|
242
|
+
const control = controlElement.control;
|
|
243
|
+
if (control['x-schema-form']) {
|
|
244
|
+
this._dynamicAttributes.forEach((attribute) => {
|
|
245
|
+
const is = this._evaluateCondition(control, attribute);
|
|
246
|
+
if (is) {
|
|
247
|
+
controlElement.setAttribute(attribute, '');
|
|
248
|
+
if (attribute === 'hidden') {
|
|
249
|
+
this._ignoreProperties.push(controlElement.id);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
controlElement.removeAttribute(attribute);
|
|
254
|
+
}
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
return null;
|
|
417
258
|
}
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
259
|
+
async performUpdate() {
|
|
260
|
+
await Promise.all(this.getControls().map((e) => e.updateComplete));
|
|
261
|
+
this.getControls().forEach((s) => {
|
|
262
|
+
s.requestUpdate();
|
|
263
|
+
});
|
|
264
|
+
super.performUpdate();
|
|
423
265
|
}
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
default:
|
|
449
|
-
console.warn(`Unsupported operator '${operator}' on disable condition`);
|
|
450
|
-
result = false;
|
|
451
|
-
break;
|
|
452
|
-
}
|
|
266
|
+
_renderControl(key) {
|
|
267
|
+
// This is require to clean cache of <gv-schema-form-control>
|
|
268
|
+
const control = { ...this.schema.properties[key] };
|
|
269
|
+
const isRequired = (this.schema.required && this.schema.required.includes(key)) || this._evaluateCondition(control, 'required');
|
|
270
|
+
const isDisabled = (this.schema.disabled && this.schema.disabled.includes(key)) || this._evaluateCondition(control, 'disabled');
|
|
271
|
+
const isHidden = this._evaluateCondition(control, 'hidden');
|
|
272
|
+
if (isHidden) {
|
|
273
|
+
this._ignoreProperties.push(key);
|
|
274
|
+
}
|
|
275
|
+
const isReadonly = this.readonly || control.readOnly === true;
|
|
276
|
+
const isWriteOnly = control.writeOnly === true;
|
|
277
|
+
const value = get(this._values, key);
|
|
278
|
+
return html `<gv-schema-form-control
|
|
279
|
+
.id="${key}"
|
|
280
|
+
.errors="${this.errors}"
|
|
281
|
+
.control="${control}"
|
|
282
|
+
.skeleton="${this.skeleton}"
|
|
283
|
+
.value="${value}"
|
|
284
|
+
?readonly="${isReadonly}"
|
|
285
|
+
?writeonly="${isWriteOnly}"
|
|
286
|
+
?required="${isRequired}"
|
|
287
|
+
?disabled="${isDisabled}"
|
|
288
|
+
?hidden="${isHidden}"
|
|
289
|
+
></gv-schema-form-control>`;
|
|
453
290
|
}
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
return !this._evaluateEqualsCondition(control, condition);
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
_evaluateEqualsCondition(control, condition) {
|
|
463
|
-
const operator = Object.keys(condition)[0];
|
|
464
|
-
const operands = condition[operator];
|
|
465
|
-
const modelAttributes = Object.keys(operands);
|
|
466
|
-
return modelAttributes.map(modelAttribute => {
|
|
467
|
-
const testValue = operands[modelAttribute];
|
|
468
|
-
let value = get(this._values, modelAttribute);
|
|
469
|
-
|
|
470
|
-
if (value == null && control.type === 'string') {
|
|
471
|
-
value = '';
|
|
472
|
-
}
|
|
473
|
-
|
|
474
|
-
if (Array.isArray(testValue)) {
|
|
475
|
-
return testValue.includes(value);
|
|
476
|
-
}
|
|
477
|
-
|
|
478
|
-
return value === testValue;
|
|
479
|
-
}).reduce((acc, current) => acc || current);
|
|
480
|
-
}
|
|
481
|
-
|
|
482
|
-
_evaluateNotDefCondition(control, condition) {
|
|
483
|
-
const operator = Object.keys(condition)[0];
|
|
484
|
-
const modelAttribute = condition[operator];
|
|
485
|
-
return get(this._values, modelAttribute) === undefined || get(this._values, modelAttribute) === null;
|
|
486
|
-
}
|
|
487
|
-
|
|
488
|
-
_evaluateDefCondition(control, condition) {
|
|
489
|
-
return !this._evaluateNotDefCondition(control, condition);
|
|
490
|
-
}
|
|
491
|
-
|
|
492
|
-
_renderPart() {
|
|
493
|
-
if (this._confirm) {
|
|
494
|
-
return html`<div class="confirm-box"> <div class="error">The configuration is not valid and cannot be saved.</div> <div class="confirm-box_actions"> <gv-button @gv-button:click="${this._onConfirmReset}" outlined icon="general:update" danger>Lose changes</gv-button> <gv-button @gv-button:click="${this._onConfirmEdit}" icon="design:edit">Edit</gv-button> </div> </div>`;
|
|
291
|
+
_hasCondition(control) {
|
|
292
|
+
if (control['x-schema-form']) {
|
|
293
|
+
return this._dynamicAttributes.find((condition) => control['x-schema-form'][condition] != null) != null;
|
|
294
|
+
}
|
|
295
|
+
return false;
|
|
495
296
|
}
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
297
|
+
_evaluateCondition(control, conditionKey) {
|
|
298
|
+
if (control['x-schema-form'] == null || control['x-schema-form'][conditionKey] == null) {
|
|
299
|
+
return false;
|
|
300
|
+
}
|
|
301
|
+
const condition = control['x-schema-form'][conditionKey];
|
|
302
|
+
if (typeof condition === 'boolean') {
|
|
303
|
+
return condition;
|
|
304
|
+
}
|
|
305
|
+
if (!Array.isArray(condition)) {
|
|
306
|
+
// condition isn't an array, ignore the condition
|
|
307
|
+
console.warn(`'${conditionKey}' attribute of 'x-schema-form' should be an array`);
|
|
308
|
+
return false;
|
|
309
|
+
}
|
|
310
|
+
let result = true;
|
|
311
|
+
for (const operation of condition) {
|
|
312
|
+
// operation only have one operator with a single object containing operand values
|
|
313
|
+
const operator = Object.keys(operation)[0];
|
|
314
|
+
switch (operator) {
|
|
315
|
+
case '$neq':
|
|
316
|
+
result = result && this._evaluateNotEqualsCondition(control, operation);
|
|
317
|
+
break;
|
|
318
|
+
case '$eq':
|
|
319
|
+
result = result && this._evaluateEqualsCondition(control, operation);
|
|
320
|
+
break;
|
|
321
|
+
case '$nodef':
|
|
322
|
+
result = result && this._evaluateNotDefCondition(control, operation);
|
|
323
|
+
break;
|
|
324
|
+
case '$def':
|
|
325
|
+
result = result && this._evaluateDefCondition(control, operation);
|
|
326
|
+
break;
|
|
327
|
+
default:
|
|
328
|
+
console.warn(`Unsupported operator '${operator}' on disable condition`);
|
|
329
|
+
result = false;
|
|
330
|
+
break;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
return result;
|
|
334
|
+
}
|
|
335
|
+
_evaluateNotEqualsCondition(control, condition) {
|
|
336
|
+
return !this._evaluateEqualsCondition(control, condition);
|
|
337
|
+
}
|
|
338
|
+
_evaluateEqualsCondition(control, condition) {
|
|
339
|
+
const operator = Object.keys(condition)[0];
|
|
340
|
+
const operands = condition[operator];
|
|
341
|
+
const modelAttributes = Object.keys(operands);
|
|
342
|
+
return modelAttributes
|
|
343
|
+
.map((modelAttribute) => {
|
|
344
|
+
const testValue = operands[modelAttribute];
|
|
345
|
+
let value = get(this._values, modelAttribute);
|
|
346
|
+
if (value == null && control.type === 'string') {
|
|
347
|
+
value = '';
|
|
348
|
+
}
|
|
349
|
+
if (Array.isArray(testValue)) {
|
|
350
|
+
return testValue.includes(value);
|
|
351
|
+
}
|
|
352
|
+
return value === testValue;
|
|
353
|
+
})
|
|
354
|
+
.reduce((acc, current) => acc || current);
|
|
355
|
+
}
|
|
356
|
+
_evaluateNotDefCondition(control, condition) {
|
|
357
|
+
const operator = Object.keys(condition)[0];
|
|
358
|
+
const modelAttribute = condition[operator];
|
|
359
|
+
return get(this._values, modelAttribute) === undefined || get(this._values, modelAttribute) === null;
|
|
360
|
+
}
|
|
361
|
+
_evaluateDefCondition(control, condition) {
|
|
362
|
+
return !this._evaluateNotDefCondition(control, condition);
|
|
363
|
+
}
|
|
364
|
+
_renderPart() {
|
|
365
|
+
if (this._confirm) {
|
|
366
|
+
return html `<div class="confirm-box">
|
|
367
|
+
<div class="error">The configuration is not valid and cannot be saved.</div>
|
|
368
|
+
<div class="confirm-box_actions">
|
|
369
|
+
<gv-button @gv-button:click="${this._onConfirmReset}" outlined icon="general:update" danger>Lose changes</gv-button>
|
|
370
|
+
<gv-button @gv-button:click="${this._onConfirmEdit}" icon="design:edit">Edit</gv-button>
|
|
371
|
+
</div>
|
|
372
|
+
</div>`;
|
|
373
|
+
}
|
|
374
|
+
const keys = this.schema.properties ? Object.keys(this.schema.properties) : [];
|
|
375
|
+
this._ignoreProperties = [];
|
|
376
|
+
if (this.groups) {
|
|
377
|
+
// Remove undefined group items
|
|
378
|
+
const groupsCleaned = this.groups.reduce((prev, group) => {
|
|
379
|
+
const itemsExistingInSchemaKeys = keys.filter((key) => [...(group.items || [])].includes(key));
|
|
380
|
+
prev.push({
|
|
381
|
+
...group,
|
|
382
|
+
items: itemsExistingInSchemaKeys || [],
|
|
383
|
+
});
|
|
384
|
+
return prev;
|
|
385
|
+
}, []);
|
|
386
|
+
// Add non grouped items inside default group
|
|
387
|
+
const defaultGroup = groupsCleaned.find((g) => g.default) || { default: true, items: [] };
|
|
388
|
+
const zipGroupedItems = groupsCleaned.reduce((prev, group) => [...prev, ...group.items], []);
|
|
389
|
+
defaultGroup.items = keys.filter((key) => !zipGroupedItems.includes(key));
|
|
390
|
+
return repeat(groupsCleaned, (group) => html `${group.name
|
|
391
|
+
? html `<h2 class="group-title">${group.name}</h2>
|
|
392
|
+
${repeat(group.items, (key) => this._renderControl(key))}`
|
|
393
|
+
: repeat(group.items, (key) => this._renderControl(key))} `);
|
|
394
|
+
}
|
|
395
|
+
return html `${repeat([1], () => repeat(keys, (key) => key, (key) => this._renderControl(key)))}`;
|
|
396
|
+
}
|
|
397
|
+
getControls() {
|
|
398
|
+
return Array.from(this.shadowRoot.querySelectorAll('gv-schema-form-control'));
|
|
399
|
+
}
|
|
400
|
+
getControl(id) {
|
|
401
|
+
return this.shadowRoot.querySelector(`[id="${id}"]`);
|
|
402
|
+
}
|
|
403
|
+
_getErrors() {
|
|
404
|
+
return (this._validatorResults.errors || []).filter((error) => {
|
|
405
|
+
let id = `${error.property.replace('instance.', '')}`;
|
|
406
|
+
if (!Array.isArray(error.argument)) {
|
|
407
|
+
id = `${id}.${error.argument}`;
|
|
408
|
+
}
|
|
409
|
+
const errorKey = `x-schema-form.errors.${id}.${error.name}`;
|
|
410
|
+
const errorMessage = get(this.schema, errorKey);
|
|
411
|
+
if (errorMessage) {
|
|
412
|
+
error.message = errorMessage;
|
|
413
|
+
}
|
|
414
|
+
return !this._ignoreProperties.includes(id);
|
|
506
415
|
});
|
|
507
|
-
return prev;
|
|
508
|
-
}, []); // Add non grouped items inside default group
|
|
509
|
-
|
|
510
|
-
const defaultGroup = groupsCleaned.find(g => g.default) || {
|
|
511
|
-
default: true,
|
|
512
|
-
items: []
|
|
513
|
-
};
|
|
514
|
-
const zipGroupedItems = groupsCleaned.reduce((prev, group) => [...prev, ...group.items], []);
|
|
515
|
-
defaultGroup.items = keys.filter(key => !zipGroupedItems.includes(key));
|
|
516
|
-
return repeat(groupsCleaned, group => html`${group.name ? html`<h2 class="group-title">${group.name}</h2> ${repeat(group.items, key => this._renderControl(key))}` : repeat(group.items, key => this._renderControl(key))} `);
|
|
517
416
|
}
|
|
417
|
+
validate() {
|
|
418
|
+
if (this.schema) {
|
|
419
|
+
// Additional properties should not block the validation of the form
|
|
420
|
+
this._validatorResults = this._validator.validate(this._values, { ...this.schema, additionalProperties: {} });
|
|
421
|
+
this.errors = this._getErrors();
|
|
422
|
+
}
|
|
423
|
+
return this._validatorResults;
|
|
424
|
+
}
|
|
425
|
+
isValid() {
|
|
426
|
+
if (this._validatorResults.valid) {
|
|
427
|
+
return true;
|
|
428
|
+
}
|
|
429
|
+
return this._getErrors() === 0;
|
|
430
|
+
}
|
|
431
|
+
isTouch() {
|
|
432
|
+
return this._touch || (this.dirty && this.validateOnRender);
|
|
433
|
+
}
|
|
434
|
+
canSubmit() {
|
|
435
|
+
return this.isTouch() && this.isValid();
|
|
436
|
+
}
|
|
437
|
+
_updateActions() {
|
|
438
|
+
const submitBtn = this._getSubmitBtn();
|
|
439
|
+
if (submitBtn != null) {
|
|
440
|
+
if (this.canSubmit()) {
|
|
441
|
+
this._getSubmitBtn().removeAttribute('disabled');
|
|
442
|
+
}
|
|
443
|
+
else {
|
|
444
|
+
this._getSubmitBtn().setAttribute('disabled', true);
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
const resetBtn = this._getResetBtn();
|
|
448
|
+
if (resetBtn != null) {
|
|
449
|
+
if (this.dirty) {
|
|
450
|
+
resetBtn.removeAttribute('disabled');
|
|
451
|
+
}
|
|
452
|
+
else {
|
|
453
|
+
resetBtn.setAttribute('disabled', true);
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
_updateChildren(withValidation) {
|
|
458
|
+
if (withValidation) {
|
|
459
|
+
this._validatorResults = {};
|
|
460
|
+
this.errors = null;
|
|
461
|
+
this.requestValidation();
|
|
462
|
+
}
|
|
463
|
+
else {
|
|
464
|
+
this._updateActionsTimeout = setTimeout(() => this._updateActions(), 0);
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
async updated(changedProperties) {
|
|
468
|
+
clearTimeout(this._updateActionsTimeout);
|
|
469
|
+
if (changedProperties.has('_values')) {
|
|
470
|
+
this.getControls().forEach((control) => {
|
|
471
|
+
control.value = get(this._values, control.id);
|
|
472
|
+
});
|
|
473
|
+
}
|
|
474
|
+
this._updateChildren(this.validateOnRender && (changedProperties.has('_values') || changedProperties.has('schema')));
|
|
475
|
+
}
|
|
476
|
+
async getUpdateComplete() {
|
|
477
|
+
const result = await super.getUpdateComplete();
|
|
478
|
+
await Promise.all(this.getControls().map((e) => e.updateComplete));
|
|
479
|
+
return result;
|
|
480
|
+
}
|
|
481
|
+
render() {
|
|
482
|
+
return html `<form class="${classMap({ scrollable: this.scrollable })}">
|
|
483
|
+
<div class="${classMap({ container: true, confirm: this._confirm })}">
|
|
484
|
+
${this.hasHeader === true
|
|
485
|
+
? html `
|
|
486
|
+
<div class="header">
|
|
487
|
+
<div class="${classMap({ title: true, center: this.hasHeader && !this.hasFooter })}">
|
|
488
|
+
<slot name="title"></slot>
|
|
489
|
+
</div>
|
|
490
|
+
<div class="left">
|
|
491
|
+
<slot name="header-left"></slot>
|
|
492
|
+
</div>
|
|
493
|
+
${this.readonly === true || this.hasFooter === true
|
|
494
|
+
? ''
|
|
495
|
+
: html `<div class="right">
|
|
496
|
+
<gv-button
|
|
497
|
+
id="reset"
|
|
498
|
+
outlined
|
|
499
|
+
small
|
|
500
|
+
@gv-button:click="${this._onReset}"
|
|
501
|
+
icon="general:update"
|
|
502
|
+
title="Reset"
|
|
503
|
+
></gv-button>
|
|
504
|
+
<gv-button
|
|
505
|
+
id="submit"
|
|
506
|
+
small
|
|
507
|
+
@gv-button:click="${this._onSubmit}"
|
|
508
|
+
icon="code:check"
|
|
509
|
+
.title="${this.submitLabel}"
|
|
510
|
+
></gv-button>
|
|
511
|
+
</div> `}
|
|
512
|
+
</div>
|
|
513
|
+
`
|
|
514
|
+
: ''}
|
|
515
|
+
<div class="content">${this.schema != null ? this._renderPart() : html ``}</div>
|
|
516
|
+
${this.hasFooter === true && this.readonly !== true
|
|
517
|
+
? html `
|
|
518
|
+
<div class="footer">
|
|
519
|
+
<div class="left"></div>
|
|
520
|
+
<div class="right">
|
|
521
|
+
<gv-button id="reset" outlined @gv-button:click="${this._onReset}" icon="general:update" title="Reset">Reset</gv-button>
|
|
522
|
+
<gv-button id="submit" @gv-button:click="${this._onSubmit}" icon="code:check" .title="${this.submitLabel}"
|
|
523
|
+
>${this.submitLabel}</gv-button
|
|
524
|
+
>
|
|
525
|
+
</div>
|
|
526
|
+
</div>
|
|
527
|
+
`
|
|
528
|
+
: ''}
|
|
529
|
+
</div>
|
|
530
|
+
</form>`;
|
|
531
|
+
}
|
|
532
|
+
static get styles() {
|
|
533
|
+
return [
|
|
534
|
+
empty,
|
|
535
|
+
// language=CSS
|
|
536
|
+
css `
|
|
537
|
+
:host {
|
|
538
|
+
box-sizing: border-box;
|
|
539
|
+
margin: 0.2rem;
|
|
540
|
+
--bgc: var(--gv-schema-form--bgc, #ffffff);
|
|
541
|
+
}
|
|
518
542
|
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
return Array.from(this.shadowRoot.querySelectorAll('gv-schema-form-control'));
|
|
524
|
-
}
|
|
543
|
+
form {
|
|
544
|
+
display: flex;
|
|
545
|
+
flex-direction: column;
|
|
546
|
+
}
|
|
525
547
|
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
548
|
+
form.scrollable {
|
|
549
|
+
position: absolute;
|
|
550
|
+
width: 100%;
|
|
551
|
+
top: 0;
|
|
552
|
+
bottom: 0;
|
|
553
|
+
left: 0;
|
|
554
|
+
}
|
|
529
555
|
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
let id = `${error.property.replace('instance.', '')}`;
|
|
556
|
+
.container {
|
|
557
|
+
flex-grow: 1;
|
|
533
558
|
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
559
|
+
background-color: var(--bgc);
|
|
560
|
+
display: flex;
|
|
561
|
+
flex-direction: column;
|
|
537
562
|
|
|
538
|
-
|
|
539
|
-
|
|
563
|
+
/* for Firefox */
|
|
564
|
+
min-height: 0;
|
|
565
|
+
}
|
|
540
566
|
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
567
|
+
.header,
|
|
568
|
+
.footer,
|
|
569
|
+
.content {
|
|
570
|
+
background-color: var(--bgc);
|
|
571
|
+
}
|
|
544
572
|
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
573
|
+
.content {
|
|
574
|
+
flex-grow: 1;
|
|
575
|
+
display: flex;
|
|
576
|
+
flex-direction: column;
|
|
577
|
+
align-self: center;
|
|
578
|
+
width: 100%;
|
|
548
579
|
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
this._validatorResults = this._validator.validate(this._values, { ...this.schema,
|
|
553
|
-
additionalProperties: {}
|
|
554
|
-
});
|
|
555
|
-
this.errors = this._getErrors();
|
|
556
|
-
}
|
|
580
|
+
/* for Firefox */
|
|
581
|
+
min-height: 0;
|
|
582
|
+
}
|
|
557
583
|
|
|
558
|
-
|
|
559
|
-
|
|
584
|
+
.content > gv-schema-form-control {
|
|
585
|
+
align-self: center;
|
|
586
|
+
width: 100%;
|
|
587
|
+
}
|
|
560
588
|
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
}
|
|
589
|
+
form.scrollable .content {
|
|
590
|
+
overflow: auto;
|
|
591
|
+
}
|
|
565
592
|
|
|
566
|
-
|
|
567
|
-
|
|
593
|
+
form.scrollable .content > gv-schema-form-control,
|
|
594
|
+
form.scrollable .content > .group-title {
|
|
595
|
+
max-width: 775px;
|
|
596
|
+
width: 95%;
|
|
597
|
+
}
|
|
568
598
|
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
599
|
+
.header,
|
|
600
|
+
.footer {
|
|
601
|
+
display: flex;
|
|
602
|
+
box-sizing: border-box;
|
|
603
|
+
min-height: 45px;
|
|
604
|
+
--gv-icon--s: 26px;
|
|
605
|
+
--gv-icon--c: #bfbfbf;
|
|
606
|
+
align-items: center;
|
|
607
|
+
padding: 0 0.5rem;
|
|
608
|
+
position: relative;
|
|
609
|
+
}
|
|
572
610
|
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
611
|
+
.header {
|
|
612
|
+
border-bottom: 1px solid #d9d9d9;
|
|
613
|
+
}
|
|
576
614
|
|
|
577
|
-
|
|
578
|
-
|
|
615
|
+
.footer {
|
|
616
|
+
display: flex;
|
|
617
|
+
justify-content: space-between;
|
|
618
|
+
padding: 1rem;
|
|
619
|
+
border-top: 1px solid #d9d9d9;
|
|
620
|
+
}
|
|
579
621
|
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
} else {
|
|
584
|
-
this._getSubmitBtn().setAttribute('disabled', true);
|
|
585
|
-
}
|
|
586
|
-
}
|
|
622
|
+
form.scrollable .footer {
|
|
623
|
+
justify-content: center;
|
|
624
|
+
}
|
|
587
625
|
|
|
588
|
-
|
|
626
|
+
.footer .left,
|
|
627
|
+
.footer .right {
|
|
628
|
+
max-width: 400px;
|
|
629
|
+
}
|
|
589
630
|
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
631
|
+
.header .left,
|
|
632
|
+
.footer .left,
|
|
633
|
+
.header .right,
|
|
634
|
+
.footer .right {
|
|
635
|
+
display: flex;
|
|
636
|
+
flex: 1;
|
|
637
|
+
z-index: 10;
|
|
638
|
+
align-items: center;
|
|
639
|
+
}
|
|
598
640
|
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
this.requestValidation();
|
|
604
|
-
} else {
|
|
605
|
-
this._updateActionsTimeout = setTimeout(() => this._updateActions(), 0);
|
|
606
|
-
}
|
|
607
|
-
}
|
|
641
|
+
.header .right,
|
|
642
|
+
.footer .right {
|
|
643
|
+
justify-content: flex-end;
|
|
644
|
+
}
|
|
608
645
|
|
|
609
|
-
|
|
610
|
-
|
|
646
|
+
.header .title {
|
|
647
|
+
color: #28444f;
|
|
648
|
+
font-size: 18px;
|
|
649
|
+
display: flex;
|
|
650
|
+
width: 100%;
|
|
651
|
+
align-items: center;
|
|
652
|
+
}
|
|
611
653
|
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
654
|
+
.header .title.center {
|
|
655
|
+
position: absolute;
|
|
656
|
+
top: 0;
|
|
657
|
+
left: 0;
|
|
658
|
+
bottom: 0;
|
|
659
|
+
justify-content: center;
|
|
660
|
+
}
|
|
617
661
|
|
|
618
|
-
|
|
619
|
-
|
|
662
|
+
.confirm-box {
|
|
663
|
+
height: 100%;
|
|
664
|
+
padding: 1rem;
|
|
665
|
+
font-style: italic;
|
|
666
|
+
display: flex;
|
|
667
|
+
flex-direction: column;
|
|
620
668
|
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
}
|
|
669
|
+
justify-content: center;
|
|
670
|
+
align-items: center;
|
|
671
|
+
text-align: center;
|
|
672
|
+
}
|
|
626
673
|
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
})}"> <div class="${classMap({
|
|
631
|
-
container: true,
|
|
632
|
-
confirm: this._confirm
|
|
633
|
-
})}"> ${this.hasHeader === true ? html` <div class="header"> <div class="${classMap({
|
|
634
|
-
title: true,
|
|
635
|
-
center: this.hasHeader && !this.hasFooter
|
|
636
|
-
})}"> <slot name="title"></slot> </div> <div class="left"> <slot name="header-left"></slot> </div> ${this.readonly === true || this.hasFooter === true ? '' : html`<div class="right"> <gv-button id="reset" outlined small @gv-button:click="${this._onReset}" icon="general:update" title="Reset"></gv-button> <gv-button id="submit" small @gv-button:click="${this._onSubmit}" icon="code:check" .title="${this.submitLabel}"></gv-button> </div> `} </div> ` : ''} <div class="content">${this.schema != null ? this._renderPart() : html``}</div> ${this.hasFooter === true && this.readonly !== true ? html` <div class="footer"> <div class="left"></div> <div class="right"> <gv-button id="reset" outlined @gv-button:click="${this._onReset}" icon="general:update" title="Reset">Reset</gv-button> <gv-button id="submit" @gv-button:click="${this._onSubmit}" icon="code:check" .title="${this.submitLabel}">${this.submitLabel}</gv-button> </div> </div> ` : ''} </div> </form>`;
|
|
637
|
-
}
|
|
674
|
+
.confirm-box_actions {
|
|
675
|
+
padding: 1rem 0;
|
|
676
|
+
}
|
|
638
677
|
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
678
|
+
.confirm .header .left,
|
|
679
|
+
.confirm .header .right,
|
|
680
|
+
.confirm .footer .left,
|
|
681
|
+
.confirm .footer .right {
|
|
682
|
+
display: none;
|
|
683
|
+
}
|
|
643
684
|
|
|
685
|
+
.group-title {
|
|
686
|
+
align-self: center;
|
|
687
|
+
width: 100%;
|
|
688
|
+
color: var(--gv-theme-font-color-dark);
|
|
689
|
+
font-size: 21px;
|
|
690
|
+
font-weight: 600;
|
|
691
|
+
padding-bottom: 0.3em;
|
|
692
|
+
border-bottom: 1px solid var(--gv-theme-font-color-dark);
|
|
693
|
+
margin-top: 24px;
|
|
694
|
+
margin-bottom: 16px;
|
|
695
|
+
}
|
|
696
|
+
`,
|
|
697
|
+
];
|
|
698
|
+
}
|
|
644
699
|
}
|
|
645
700
|
window.customElements.define('gv-schema-form', GvSchemaForm);
|
|
646
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1zY2hlbWEtZm9ybS5qcyJdLCJuYW1lcyI6WyJMaXRFbGVtZW50IiwiaHRtbCIsImNzcyIsImdldCIsInNldCIsImRlbCIsImRpc3BhdGNoQ3VzdG9tRXZlbnQiLCJkZWVwQ2xvbmUiLCJkZWVwRXF1YWwiLCJjbGFzc01hcCIsInJlcGVhdCIsIlZhbGlkYXRvciIsImVtcHR5IiwiR3ZTY2hlbWFGb3JtIiwicHJvcGVydGllcyIsInNjaGVtYSIsInR5cGUiLCJPYmplY3QiLCJlcnJvcnMiLCJ2YWx1ZXMiLCJzdWJtaXRMYWJlbCIsIlN0cmluZyIsImhhc0Zvb3RlciIsIkJvb2xlYW4iLCJhdHRyaWJ1dGUiLCJoYXNIZWFkZXIiLCJfY29uZmlybSIsIl92YWx1ZXMiLCJkaXJ0eSIsInJlZmxlY3QiLCJoaWRlRGVwcmVjYXRlZCIsInZhbGlkYXRlT25SZW5kZXIiLCJfdmFsaWRhdG9yUmVzdWx0cyIsInNrZWxldG9uIiwiX3RvdWNoIiwicmVhZG9ubHkiLCJzY3JvbGxhYmxlIiwiZ3JvdXBzIiwiQXJyYXkiLCJjb25zdHJ1Y3RvciIsIl92YWxpZGF0b3IiLCJfaWdub3JlUHJvcGVydGllcyIsIl9keW5hbWljQ29udHJvbHMiLCJfZHluYW1pY0F0dHJpYnV0ZXMiLCJhZGRFdmVudExpc3RlbmVyIiwiX29uRGVmYXVsdFZhbHVlIiwiYmluZCIsIl9vbkNoYW5nZSIsIl9vbkNvbnRyb2xSZWFkeSIsIl9pbml0aWFsVmFsdWVzIiwicmVzZXQiLCJfc2V0RGlydHkiLCJnZXRDb250cm9scyIsImZvckVhY2giLCJzIiwicmVxdWVzdFVwZGF0ZSIsIl9vblJlc2V0IiwicmVxdWVzdFZhbGlkYXRpb24iLCJjbGVhclRpbWVvdXQiLCJfdmFsaWRhdGVUaW1lb3V0Iiwic2V0VGltZW91dCIsInZhbGlkYXRlIiwiX3VwZGF0ZUFjdGlvbnMiLCJzdWJtaXQiLCJfb25TdWJtaXQiLCJ2YWxpZGF0b3JSZXN1bHRzIiwiaXNWYWxpZCIsIl9zZXRUb3VjaCIsInRvdWNoIiwiY29uZmlybSIsImlzVG91Y2giLCJwcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJfb25Db25maXJtUmVzZXQiLCJ1cGRhdGVDb21wbGV0ZSIsInRoZW4iLCJfb25Db25maXJtRWRpdCIsIl91cGRhdGVDaGlsZHJlbiIsIl9nZXRTdWJtaXRCdG4iLCJzaGFkb3dSb290IiwicXVlcnlTZWxlY3RvciIsIl9nZXRSZXNldEJ0biIsIl9kaXNwYXRjaENoYW5nZSIsIl9jaGFuZ2VUaW1lb3V0IiwidGFyZ2V0IiwidmFsaWRhdGlvbiIsImRldGFpbCIsImN1cnJlbnRUYXJnZXQiLCJ2YWx1ZSIsImNvbnRyb2wiLCJ0cmltIiwibGVuZ3RoIiwicGFyc2VJbnQiLCJpZCIsImludFZhbHVlIiwiTnVtYmVyIiwidmFsdWVPZiIsImlzTmFOIiwiZW51bSIsImtleXMiLCJfdXBkYXRlRHluYW1pY0NvbnRyb2xzIiwiZSIsInN0b3BQcm9wYWdhdGlvbiIsInByZXZlbnREZWZhdWx0IiwiY29udHJvbEVsZW1lbnQiLCJldmVudCIsIm5hbWUiLCJfaGFzQ29uZGl0aW9uIiwicHVzaCIsIl91cGRhdGVEeW5hbWljQ29udHJvbCIsImlzIiwiX2V2YWx1YXRlQ29uZGl0aW9uIiwic2V0QXR0cmlidXRlIiwicmVtb3ZlQXR0cmlidXRlIiwicGVyZm9ybVVwZGF0ZSIsImFsbCIsIm1hcCIsIl9yZW5kZXJDb250cm9sIiwia2V5IiwiaXNSZXF1aXJlZCIsInJlcXVpcmVkIiwiaW5jbHVkZXMiLCJpc0Rpc2FibGVkIiwiZGlzYWJsZWQiLCJpc0hpZGRlbiIsImlzUmVhZG9ubHkiLCJyZWFkT25seSIsImlzV3JpdGVPbmx5Iiwid3JpdGVPbmx5IiwiZmluZCIsImNvbmRpdGlvbiIsImNvbmRpdGlvbktleSIsImlzQXJyYXkiLCJjb25zb2xlIiwid2FybiIsInJlc3VsdCIsIm9wZXJhdGlvbiIsIm9wZXJhdG9yIiwiX2V2YWx1YXRlTm90RXF1YWxzQ29uZGl0aW9uIiwiX2V2YWx1YXRlRXF1YWxzQ29uZGl0aW9uIiwiX2V2YWx1YXRlTm90RGVmQ29uZGl0aW9uIiwiX2V2YWx1YXRlRGVmQ29uZGl0aW9uIiwib3BlcmFuZHMiLCJtb2RlbEF0dHJpYnV0ZXMiLCJtb2RlbEF0dHJpYnV0ZSIsInRlc3RWYWx1ZSIsInJlZHVjZSIsImFjYyIsImN1cnJlbnQiLCJ1bmRlZmluZWQiLCJfcmVuZGVyUGFydCIsImdyb3Vwc0NsZWFuZWQiLCJwcmV2IiwiZ3JvdXAiLCJpdGVtc0V4aXN0aW5nSW5TY2hlbWFLZXlzIiwiZmlsdGVyIiwiaXRlbXMiLCJkZWZhdWx0R3JvdXAiLCJnIiwiZGVmYXVsdCIsInppcEdyb3VwZWRJdGVtcyIsImZyb20iLCJxdWVyeVNlbGVjdG9yQWxsIiwiZ2V0Q29udHJvbCIsIl9nZXRFcnJvcnMiLCJlcnJvciIsInByb3BlcnR5IiwicmVwbGFjZSIsImFyZ3VtZW50IiwiZXJyb3JLZXkiLCJlcnJvck1lc3NhZ2UiLCJtZXNzYWdlIiwiYWRkaXRpb25hbFByb3BlcnRpZXMiLCJ2YWxpZCIsImNhblN1Ym1pdCIsInN1Ym1pdEJ0biIsInJlc2V0QnRuIiwid2l0aFZhbGlkYXRpb24iLCJfdXBkYXRlQWN0aW9uc1RpbWVvdXQiLCJ1cGRhdGVkIiwiY2hhbmdlZFByb3BlcnRpZXMiLCJoYXMiLCJnZXRVcGRhdGVDb21wbGV0ZSIsInJlbmRlciIsImNvbnRhaW5lciIsInRpdGxlIiwiY2VudGVyIiwic3R5bGVzIiwid2luZG93IiwiY3VzdG9tRWxlbWVudHMiLCJkZWZpbmUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLFVBQVQsRUFBcUJDLElBQXJCLEVBQTJCQyxHQUEzQixRQUFzQyxLQUF0QztBQUNBLFNBQVNDLEdBQVQsRUFBY0MsR0FBZCxFQUFtQkMsR0FBbkIsUUFBOEIsYUFBOUI7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TUFBQUEsTUFBTSxFQUFFLEtBQUtuSyxTQUFMLElBQWtCLENBQUMsS0FBS0g7QUFBL0MsS0FBRCxDQUZ0QixtR0FRRSxLQUFLYSxRQUFMLEtBQWtCLElBQWxCLElBQTBCLEtBQUtiLFNBQUwsS0FBbUIsSUFBN0MsR0FDRSxFQURGLEdBRUVyQixJQUFJLDhFQUtvQixLQUFLdUQsUUFMekIscUdBWW9CLEtBQUtRLFNBWnpCLCtCQWNVLEtBQUs1QyxXQWRmLHdCQVZSLFVBRE4sR0E4QkUsRUFoQ0cseUJBaUNnQixLQUFLTCxNQUFMLElBQWUsSUFBZixHQUFzQixLQUFLeUksV0FBTCxFQUF0QixHQUEyQ3ZKLElBQUksRUFqQy9ELFVBa0NMLEtBQUtxQixTQUFMLEtBQW1CLElBQW5CLElBQTJCLEtBQUthLFFBQUwsS0FBa0IsSUFBN0MsR0FDRWxDLElBQUksdUhBSXFELEtBQUt1RCxRQUoxRCxvR0FLNkMsS0FBS1EsU0FMbEQsK0JBSzBGLEtBQUs1QyxXQUwvRixLQU1PLEtBQUtBLFdBTlosNkJBRE4sR0FZRSxFQTlDRyxpQkFBWDtBQWlERDs7QUFFZ0IsYUFBTnlLLE1BQU0sR0FBRztBQUNsQixXQUFPLENBQ0xqTCxLQURLLEVBRUw7QUFDQVYsSUFBQUEsR0FBRyxpMkRBSEUsQ0FBUDtBQXFLRDs7QUFoc0IwQztBQW1zQjdDNEwsTUFBTSxDQUFDQyxjQUFQLENBQXNCQyxNQUF0QixDQUE2QixnQkFBN0IsRUFBK0NuTCxZQUEvQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBMaXRFbGVtZW50LCBodG1sLCBjc3MgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgZ2V0LCBzZXQsIGRlbCB9IGZyb20gJ29iamVjdC1wYXRoJztcbmltcG9ydCB7IGRpc3BhdGNoQ3VzdG9tRXZlbnQgfSBmcm9tICcuLi9saWIvZXZlbnRzJztcbmltcG9ydCB7IGRlZXBDbG9uZSwgZGVlcEVxdWFsIH0gZnJvbSAnLi4vbGliL3V0aWxzJztcbmltcG9ydCB7IGNsYXNzTWFwIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvY2xhc3MtbWFwJztcbmltcG9ydCB7IHJlcGVhdCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlcGVhdCc7XG5pbXBvcnQgeyBWYWxpZGF0b3IgfSBmcm9tICdqc29uc2NoZW1hJztcbmltcG9ydCB7IGVtcHR5IH0gZnJvbSAnLi4vc3R5bGVzL2VtcHR5JztcbmltcG9ydCAnLi9ndi1zY2hlbWEtZm9ybS1jb250cm9sJztcblxuLyoqXG4gKiBTY2hlbWEgZm9ybSBjb21wb25lbnRcbiAqXG4gKiBAZmlyZXMgZ3Ytc2NoZW1hLWZvcm06c3VibWl0IC0gZXZlbnQgd2hlbiB1c2VyIHN1Ym1pdCB2YWxpZCBmb3JtXG4gKiBAZmlyZXMgZ3Ytc2NoZW1hLWZvcm06ZXJyb3IgLSBldmVudCB3aGVuIHVzZXIgc3VibWl0IGludmFsaWQgZm9ybVxuICogQGZpcmVzIGd2LXNjaGVtYS1mb3JtOmNoYW5nZSAtIGV2ZW50IHdoZW4gd2hlbiBmb3JtIGNoYW5nZVxuICogQGZpcmVzIGd2LXNjaGVtYS1mb3JtOmNhbmNlbCAtIGV2ZW50IHdoZW4gdXNlciBjYW5jZWwgZm9ybVxuICpcbiAqIEBhdHRyIHtPYmplY3R9IHNjaGVtYSAtIHRoZSBzY2hlbWEgZm9ybSBjb25maWd1cmF0aW9uXG4gKiBAYXR0ciB7T2JqZWN0fSB2YWx1ZXMgLSB0aGUgdmFsdWVzIG9mIGZpZWxkc1xuICogQGF0dHIge09iamVjdH0gZXJyb3JzIC0gdGhlIG1hcCBvZiBlcnJvcnMgYnkgaW5wdXQga2V5XG4gKiBAYXR0ciB7Qm9vbGVhbn0gdmFsaWRhdGUgLSB0byBmb3JjZSB2YWxpZGF0aW9uIG9uIGZpcnN0IHJlbmRlclxuICogQGF0dHIge0Jvb2xlYW59IHJlYWRvbmx5IC0gdHJ1ZSBpZiByZWFkb25seVxuICogQGF0dHIge0Jvb2xlYW59IHNjcm9sbGFibGUgLSB1c2VmdWwgZm9yIG1ha2luZyBjb250ZW50IHNjcm9sbGFibGUgd2l0aCBmaXhlZCBoZWFkZXJzIC8gZm9vdGVyc1xuICpcbiAqIEBjc3Nwcm9wIHtDb2xvcn0gWy0tZ3Ytc2NoZW1hLWZvcm0tLWJnYz0jZmZmZmZmXSAtIEJhY2tncm91bmQgY29sb3JcbiAqIEBjc3Nwcm9wIHtMZW5ndGh9IFstLWd2LXNjaGVtYS1mb3JtLWNvbnRyb2wtLW09MC40cmVtXSAtIENvbnRyb2wgbWFyZ2luXG4gKi9cbmV4cG9ydCBjbGFzcyBHdlNjaGVtYUZvcm0gZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgc3RhdGljIGdldCBwcm9wZXJ0aWVzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzY2hlbWE6IHsgdHlwZTogT2JqZWN0IH0sXG4gICAgICBlcnJvcnM6IHsgdHlwZTogT2JqZWN0IH0sXG4gICAgICB2YWx1ZXM6IHsgdHlwZTogT2JqZWN0IH0sXG4gICAgICBzdWJtaXRMYWJlbDogeyB0eXBlOiBTdHJpbmcgfSxcbiAgICAgIGhhc0Zvb3RlcjogeyB0eXBlOiBCb29sZWFuLCBhdHRyaWJ1dGU6ICdoYXMtZm9vdGVyJyB9LFxuICAgICAgaGFzSGVhZGVyOiB7IHR5cGU6IEJvb2xlYW4sIGF0dHJpYnV0ZTogJ2hhcy1oZWFkZXInIH0sXG4gICAgICBfY29uZmlybTogeyB0eXBlOiBPYmplY3QgfSxcbiAgICAgIF92YWx1ZXM6IHsgdHlwZTogT2JqZWN0LCBhdHRyaWJ1dGU6IGZhbHNlIH0sXG4gICAgICBkaXJ0eTogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBoaWRlRGVwcmVjYXRlZDogeyB0eXBlOiBCb29sZWFuLCBhdHRyaWJ1dGU6ICdoaWRlLWRlcHJlY2F0ZWQnIH0sXG4gICAgICB2YWxpZGF0ZU9uUmVuZGVyOiB7IHR5cGU6IEJvb2xlYW4sIGF0dHJpYnV0ZTogJ3ZhbGlkYXRlLW9uLXJlbmRlcicgfSxcbiAgICAgIF92YWxpZGF0b3JSZXN1bHRzOiB7IHR5cGU6IE9iamVjdCB9LFxuICAgICAgc2tlbGV0b246IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgX3RvdWNoOiB7IHR5cGU6IEJvb2xlYW4gfSxcbiAgICAgIHJlYWRvbmx5OiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHNjcm9sbGFibGU6IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgZ3JvdXBzOiB7IHR5cGU6IEFycmF5IH0sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5oaWRlRGVwcmVjYXRlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3ZhbHVlcyA9IHt9O1xuICAgIHRoaXMuc3VibWl0TGFiZWwgPSAnT2snO1xuICAgIHRoaXMuaGFzSGVhZGVyID0gZmFsc2U7XG4gICAgdGhpcy5oYXNGb290ZXIgPSBmYWxzZTtcbiAgICB0aGlzLl90b3VjaCA9IGZhbHNlO1xuICAgIHRoaXMuX3ZhbGlkYXRvciA9IG5ldyBWYWxpZGF0b3IoKTtcbiAgICB0aGlzLl92YWxpZGF0b3JSZXN1bHRzID0ge307XG4gICAgdGhpcy5faWdub3JlUHJvcGVydGllcyA9IFtdO1xuICAgIHRoaXMuX2R5bmFtaWNDb250cm9scyA9IFtdO1xuICAgIHRoaXMuX2R5bmFtaWNBdHRyaWJ1dGVzID0gWydkaXNhYmxlZCcsICdyZXF1aXJlZCcsICdoaWRkZW4nXTtcbiAgICB0aGlzLmdyb3VwcyA9IG51bGw7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdndi1zY2hlbWEtZm9ybS1jb250cm9sOmRlZmF1bHQtdmFsdWUnLCB0aGlzLl9vbkRlZmF1bHRWYWx1ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2d2LXNjaGVtYS1mb3JtLWNvbnRyb2w6Y2hhbmdlJywgdGhpcy5fb25DaGFuZ2UuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdndi1zY2hlbWEtZm9ybS1jb250cm9sOmNvbnRyb2wtcmVhZHknLCB0aGlzLl9vbkNvbnRyb2xSZWFkeS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHNldCB2YWx1ZXModmFsdWVzKSB7XG4gICAgaWYgKCFkZWVwRXF1YWwodGhpcy5fdmFsdWVzLCB2YWx1ZXMpKSB7XG4gICAgICBpZiAodmFsdWVzKSB7XG4gICAgICAgIHRoaXMuX2luaXRpYWxWYWx1ZXMgPSB7IC4uLnZhbHVlcyB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faW5pdGlhbFZhbHVlcyA9IHt9O1xuICAgICAgfVxuICAgICAgdGhpcy5fdmFsdWVzID0gZGVlcENsb25lKHRoaXMuX2luaXRpYWxWYWx1ZXMpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB2YWx1ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlcztcbiAgfVxuXG4gIHJlc2V0KHZhbHVlcyA9IG51bGwpIHtcbiAgICB0aGlzLl92YWx1ZXMgPSBkZWVwQ2xvbmUodmFsdWVzIHx8IHRoaXMuX2luaXRpYWxWYWx1ZXMpO1xuICAgIHRoaXMuX3RvdWNoID0gZmFsc2U7XG4gICAgdGhpcy5fc2V0RGlydHkoZmFsc2UpO1xuICAgIHRoaXMuZ2V0Q29udHJvbHMoKS5mb3JFYWNoKChzKSA9PiB7XG4gICAgICBzLnJlcXVlc3RVcGRhdGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIF9vblJlc2V0KCkge1xuICAgIHRoaXMucmVzZXQoKTtcbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdyZXNldCcpO1xuICB9XG5cbiAgcmVxdWVzdFZhbGlkYXRpb24oKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3ZhbGlkYXRlVGltZW91dCk7XG4gICAgdGhpcy5fdmFsaWRhdGVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnZhbGlkYXRlKCk7XG4gICAgICB0aGlzLl91cGRhdGVBY3Rpb25zKCk7XG4gICAgfSwgMzUwKTtcbiAgfVxuXG4gIHN1Ym1pdCgpIHtcbiAgICB0aGlzLl9vblN1Ym1pdCgpO1xuICB9XG5cbiAgX29uU3VibWl0KCkge1xuICAgIGNvbnN0IHZhbGlkYXRvclJlc3VsdHMgPSB0aGlzLnZhbGlkYXRlKCk7XG4gICAgaWYgKHRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICB0aGlzLl9pbml0aWFsVmFsdWVzID0gZGVlcENsb25lKHRoaXMuX3ZhbHVlcyk7XG4gICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XG4gICAgICB0aGlzLl90b3VjaCA9IGZhbHNlO1xuICAgICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnc3VibWl0JywgeyB2YWx1ZXM6IHRoaXMuX3ZhbHVlcywgdmFsaWRhdG9yUmVzdWx0cyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnZXJyb3InLCB7IHZhbHVlczogdGhpcy5fdmFsdWVzLCB2YWxpZGF0b3JSZXN1bHRzIH0pO1xuICAgIH1cbiAgfVxuXG4gIF9zZXREaXJ0eShkaXJ0eSA9IHRydWUpIHtcbiAgICB0aGlzLmRpcnR5ID0gISFkaXJ0eTtcbiAgfVxuXG4gIF9zZXRUb3VjaCh0b3VjaCA9IHRydWUpIHtcbiAgICB0aGlzLl90b3VjaCA9ICEhdG91Y2g7XG4gIH1cblxuICBjb25maXJtKCkge1xuICAgIGlmICh0aGlzLmlzVG91Y2goKSkge1xuICAgICAgaWYgKHRoaXMuX2NvbmZpcm0gJiYgdGhpcy5fY29uZmlybS5wcm9taXNlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25maXJtLnByb21pc2U7XG4gICAgICB9XG4gICAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gKHRoaXMuX2NvbmZpcm0gPSB7IHJlc29sdmUsIHJlamVjdCB9KSk7XG4gICAgICB0aGlzLl9jb25maXJtLnByb21pc2UgPSBwcm9taXNlO1xuICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIF9vbkNvbmZpcm1SZXNldCgpIHtcbiAgICBjb25zdCB7IHJlc29sdmUgfSA9IHRoaXMuX2NvbmZpcm07XG4gICAgdGhpcy5fY29uZmlybSA9IG51bGw7XG4gICAgdGhpcy5fb25SZXNldCgpO1xuICAgIHRoaXMucmVxdWVzdFVwZGF0ZSgpO1xuICAgIHRoaXMudXBkYXRlQ29tcGxldGUudGhlbigoKSA9PiB7XG4gICAgICByZXNvbHZlKHRoaXMpO1xuICAgIH0pO1xuICB9XG5cbiAgX29uQ29uZmlybUVkaXQoKSB7XG4gICAgdGhpcy5fY29uZmlybS5yZWplY3QodGhpcyk7XG4gICAgdGhpcy5fY29uZmlybSA9IG51bGw7XG4gICAgdGhpcy5fdXBkYXRlQ2hpbGRyZW4odGhpcy52YWxpZGF0ZU9uUmVuZGVyKTtcbiAgfVxuXG4gIF9nZXRTdWJtaXRCdG4oKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcjc3VibWl0Jyk7XG4gIH1cblxuICBfZ2V0UmVzZXRCdG4oKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcjcmVzZXQnKTtcbiAgfVxuXG4gIF9kaXNwYXRjaENoYW5nZSgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fY2hhbmdlVGltZW91dCk7XG4gICAgdGhpcy5fY2hhbmdlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnY2hhbmdlJywgeyB0YXJnZXQ6IHRoaXMsIHZhbHVlczogdGhpcy5fdmFsdWVzLCB2YWxpZGF0aW9uOiB0aGlzLl92YWxpZGF0b3JSZXN1bHRzIH0pO1xuICAgIH0sIDUwKTtcbiAgfVxuXG4gIF9vbkRlZmF1bHRWYWx1ZSh7IGRldGFpbDogeyBjdXJyZW50VGFyZ2V0LCB2YWx1ZSwgY29udHJvbCB9IH0pIHtcbiAgICBpZiAoY29udHJvbC50eXBlID09PSAnaW50ZWdlcicgJiYgdmFsdWUgIT0gbnVsbCAmJiAoKHZhbHVlLnRyaW0gJiYgdmFsdWUubGVuZ3RoID4gMCkgfHwgdmFsdWUubGVuZ3RoID4gMCkpIHtcbiAgICAgIHZhbHVlID0gcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgICB9XG4gICAgc2V0KHRoaXMuX3ZhbHVlcywgY3VycmVudFRhcmdldC5pZCwgdmFsdWUpO1xuICB9XG5cbiAgX29uQ2hhbmdlKHsgZGV0YWlsOiB7IGN1cnJlbnRUYXJnZXQsIHZhbHVlLCBjb250cm9sIH0gfSkge1xuICAgIHRoaXMuX3NldFRvdWNoKHRydWUpO1xuICAgIGlmIChjb250cm9sLnR5cGUgPT09ICdpbnRlZ2VyJykge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB2YWx1ZSA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpbnRWYWx1ZSA9IE51bWJlcih2YWx1ZSkudmFsdWVPZigpO1xuICAgICAgICBpZiAoIWlzTmFOKGludFZhbHVlKSkge1xuICAgICAgICAgIHZhbHVlID0gaW50VmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFsdWUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjb250cm9sLnR5cGUgPT09ICdhcnJheScgJiYgdmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICB2YWx1ZSA9IG51bGw7XG4gICAgfSBlbHNlIGlmIChjb250cm9sLnR5cGUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKS5sZW5ndGggPT09IDAgJiYgIWNvbnRyb2wuZW51bSkge1xuICAgICAgdmFsdWUgPSBudWxsO1xuICAgIH0gZWxzZSBpZiAoY29udHJvbC50eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgaWYgKE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdmFsdWUgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgZGVsKHRoaXMuX3ZhbHVlcywgY3VycmVudFRhcmdldC5pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldCh0aGlzLl92YWx1ZXMsIGN1cnJlbnRUYXJnZXQuaWQsIHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLl91cGRhdGVEeW5hbWljQ29udHJvbHMoKTtcbiAgICB0aGlzLl92YWxpZGF0b3JSZXN1bHRzID0gdGhpcy52YWxpZGF0ZSgpO1xuICAgIHRoaXMuZGlydHkgPSB0cnVlO1xuICAgIHRoaXMuX3VwZGF0ZUFjdGlvbnMoKTtcbiAgICB0aGlzLl9kaXNwYXRjaENoYW5nZSgpO1xuICB9XG5cbiAgX29uQ29udHJvbFJlYWR5KGUpIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCBjb250cm9sRWxlbWVudCA9IGUuZGV0YWlsLmNvbnRyb2w7XG4gICAgY29uc3QgY29udHJvbCA9IGNvbnRyb2xFbGVtZW50LmNvbnRyb2w7XG4gICAgaWYgKGNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXSkge1xuICAgICAgaWYgKGNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS5ldmVudCkge1xuICAgICAgICBjb25zdCBldmVudCA9IGNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS5ldmVudDtcbiAgICAgICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCBldmVudC5uYW1lLCB7IC4uLmV2ZW50LCAuLi5lLmRldGFpbCB9KTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5faGFzQ29uZGl0aW9uKGNvbnRyb2wpKSB7XG4gICAgICAgIHRoaXMuX2R5bmFtaWNDb250cm9scy5wdXNoKGNvbnRyb2xFbGVtZW50KTtcbiAgICAgICAgdGhpcy5fdXBkYXRlRHluYW1pY0NvbnRyb2woY29udHJvbEVsZW1lbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF91cGRhdGVEeW5hbWljQ29udHJvbHMoKSB7XG4gICAgdGhpcy5faWdub3JlUHJvcGVydGllcyA9IFtdO1xuICAgIHRoaXMuX2R5bmFtaWNDb250cm9scy5mb3JFYWNoKChjb250cm9sRWxlbWVudCkgPT4ge1xuICAgICAgdGhpcy5fdXBkYXRlRHluYW1pY0NvbnRyb2woY29udHJvbEVsZW1lbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgX3VwZGF0ZUR5bmFtaWNDb250cm9sKGNvbnRyb2xFbGVtZW50KSB7XG4gICAgY29uc3QgY29udHJvbCA9IGNvbnRyb2xFbGVtZW50LmNvbnRyb2w7XG4gICAgaWYgKGNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXSkge1xuICAgICAgdGhpcy5fZHluYW1pY0F0dHJpYnV0ZXMuZm9yRWFjaCgoYXR0cmlidXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzID0gdGhpcy5fZXZhbHVhdGVDb25kaXRpb24oY29udHJvbCwgYXR0cmlidXRlKTtcbiAgICAgICAgaWYgKGlzKSB7XG4gICAgICAgICAgY29udHJvbEVsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZSwgJycpO1xuICAgICAgICAgIGlmIChhdHRyaWJ1dGUgPT09ICdoaWRkZW4nKSB7XG4gICAgICAgICAgICB0aGlzLl9pZ25vcmVQcm9wZXJ0aWVzLnB1c2goY29udHJvbEVsZW1lbnQuaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250cm9sRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXN5bmMgcGVyZm9ybVVwZGF0ZSgpIHtcbiAgICBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmdldENvbnRyb2xzKCkubWFwKChlKSA9PiBlLnVwZGF0ZUNvbXBsZXRlKSk7XG4gICAgdGhpcy5nZXRDb250cm9scygpLmZvckVhY2goKHMpID0+IHtcbiAgICAgIHMucmVxdWVzdFVwZGF0ZSgpO1xuICAgIH0pO1xuICAgIHN1cGVyLnBlcmZvcm1VcGRhdGUoKTtcbiAgfVxuXG4gIF9yZW5kZXJDb250cm9sKGtleSkge1xuICAgIC8vIFRoaXMgaXMgcmVxdWlyZSB0byBjbGVhbiBjYWNoZSBvZiA8Z3Ytc2NoZW1hLWZvcm0tY29udHJvbD5cbiAgICBjb25zdCBjb250cm9sID0geyAuLi50aGlzLnNjaGVtYS5wcm9wZXJ0aWVzW2tleV0gfTtcbiAgICBjb25zdCBpc1JlcXVpcmVkID0gKHRoaXMuc2NoZW1hLnJlcXVpcmVkICYmIHRoaXMuc2NoZW1hLnJlcXVpcmVkLmluY2x1ZGVzKGtleSkpIHx8IHRoaXMuX2V2YWx1YXRlQ29uZGl0aW9uKGNvbnRyb2wsICdyZXF1aXJlZCcpO1xuICAgIGNvbnN0IGlzRGlzYWJsZWQgPSAodGhpcy5zY2hlbWEuZGlzYWJsZWQgJiYgdGhpcy5zY2hlbWEuZGlzYWJsZWQuaW5jbHVkZXMoa2V5KSkgfHwgdGhpcy5fZXZhbHVhdGVDb25kaXRpb24oY29udHJvbCwgJ2Rpc2FibGVkJyk7XG4gICAgY29uc3QgaXNIaWRkZW4gPSB0aGlzLl9ldmFsdWF0ZUNvbmRpdGlvbihjb250cm9sLCAnaGlkZGVuJyk7XG4gICAgaWYgKGlzSGlkZGVuKSB7XG4gICAgICB0aGlzLl9pZ25vcmVQcm9wZXJ0aWVzLnB1c2goa2V5KTtcbiAgICB9XG4gICAgY29uc3QgaXNSZWFkb25seSA9IHRoaXMucmVhZG9ubHkgfHwgY29udHJvbC5yZWFkT25seSA9PT0gdHJ1ZTtcbiAgICBjb25zdCBpc1dyaXRlT25seSA9IGNvbnRyb2wud3JpdGVPbmx5ID09PSB0cnVlO1xuICAgIGNvbnN0IHZhbHVlID0gZ2V0KHRoaXMuX3ZhbHVlcywga2V5KTtcbiAgICByZXR1cm4gaHRtbGA8Z3Ytc2NoZW1hLWZvcm0tY29udHJvbFxuICAgICAgLmlkPVwiJHtrZXl9XCJcbiAgICAgIC5lcnJvcnM9XCIke3RoaXMuZXJyb3JzfVwiXG4gICAgICAuY29udHJvbD1cIiR7Y29udHJvbH1cIlxuICAgICAgLnNrZWxldG9uPVwiJHt0aGlzLnNrZWxldG9ufVwiXG4gICAgICAudmFsdWU9XCIke3ZhbHVlfVwiXG4gICAgICA/cmVhZG9ubHk9XCIke2lzUmVhZG9ubHl9XCJcbiAgICAgID93cml0ZW9ubHk9XCIke2lzV3JpdGVPbmx5fVwiXG4gICAgICA/cmVxdWlyZWQ9XCIke2lzUmVxdWlyZWR9XCJcbiAgICAgID9kaXNhYmxlZD1cIiR7aXNEaXNhYmxlZH1cIlxuICAgICAgP2hpZGRlbj1cIiR7aXNIaWRkZW59XCJcbiAgICA+PC9ndi1zY2hlbWEtZm9ybS1jb250cm9sPmA7XG4gIH1cblxuICBfaGFzQ29uZGl0aW9uKGNvbnRyb2wpIHtcbiAgICBpZiAoY29udHJvbFsneC1zY2hlbWEtZm9ybSddKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZHluYW1pY0F0dHJpYnV0ZXMuZmluZCgoY29uZGl0aW9uKSA9PiBjb250cm9sWyd4LXNjaGVtYS1mb3JtJ11bY29uZGl0aW9uXSAhPSBudWxsKSAhPSBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBfZXZhbHVhdGVDb25kaXRpb24oY29udHJvbCwgY29uZGl0aW9uS2V5KSB7XG4gICAgaWYgKGNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXSA9PSBudWxsIHx8IGNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXVtjb25kaXRpb25LZXldID09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgY29uZGl0aW9uID0gY29udHJvbFsneC1zY2hlbWEtZm9ybSddW2NvbmRpdGlvbktleV07XG4gICAgaWYgKHR5cGVvZiBjb25kaXRpb24gPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIGNvbmRpdGlvbjtcbiAgICB9XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbmRpdGlvbikpIHtcbiAgICAgIC8vIGNvbmRpdGlvbiBpc24ndCBhbiBhcnJheSwgaWdub3JlIHRoZSBjb25kaXRpb25cbiAgICAgIGNvbnNvbGUud2FybihgJyR7Y29uZGl0aW9uS2V5fScgYXR0cmlidXRlIG9mICd4LXNjaGVtYS1mb3JtJyBzaG91bGQgYmUgYW4gYXJyYXlgKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBsZXQgcmVzdWx0ID0gdHJ1ZTtcbiAgICBmb3IgKGNvbnN0IG9wZXJhdGlvbiBvZiBjb25kaXRpb24pIHtcbiAgICAgIC8vIG9wZXJhdGlvbiBvbmx5IGhhdmUgb25lIG9wZXJhdG9yIHdpdGggYSBzaW5nbGUgb2JqZWN0IGNvbnRhaW5pbmcgb3BlcmFuZCB2YWx1ZXNcbiAgICAgIGNvbnN0IG9wZXJhdG9yID0gT2JqZWN0LmtleXMob3BlcmF0aW9uKVswXTtcblxuICAgICAgc3dpdGNoIChvcGVyYXRvcikge1xuICAgICAgICBjYXNlICckbmVxJzpcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQgJiYgdGhpcy5fZXZhbHVhdGVOb3RFcXVhbHNDb25kaXRpb24oY29udHJvbCwgb3BlcmF0aW9uKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnJGVxJzpcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQgJiYgdGhpcy5fZXZhbHVhdGVFcXVhbHNDb25kaXRpb24oY29udHJvbCwgb3BlcmF0aW9uKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnJG5vZGVmJzpcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQgJiYgdGhpcy5fZXZhbHVhdGVOb3REZWZDb25kaXRpb24oY29udHJvbCwgb3BlcmF0aW9uKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnJGRlZic6XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICYmIHRoaXMuX2V2YWx1YXRlRGVmQ29uZGl0aW9uKGNvbnRyb2wsIG9wZXJhdGlvbik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY29uc29sZS53YXJuKGBVbnN1cHBvcnRlZCBvcGVyYXRvciAnJHtvcGVyYXRvcn0nIG9uIGRpc2FibGUgY29uZGl0aW9uYCk7XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIF9ldmFsdWF0ZU5vdEVxdWFsc0NvbmRpdGlvbihjb250cm9sLCBjb25kaXRpb24pIHtcbiAgICByZXR1cm4gIXRoaXMuX2V2YWx1YXRlRXF1YWxzQ29uZGl0aW9uKGNvbnRyb2wsIGNvbmRpdGlvbik7XG4gIH1cblxuICBfZXZhbHVhdGVFcXVhbHNDb25kaXRpb24oY29udHJvbCwgY29uZGl0aW9uKSB7XG4gICAgY29uc3Qgb3BlcmF0b3IgPSBPYmplY3Qua2V5cyhjb25kaXRpb24pWzBdO1xuICAgIGNvbnN0IG9wZXJhbmRzID0gY29uZGl0aW9uW29wZXJhdG9yXTtcbiAgICBjb25zdCBtb2RlbEF0dHJpYnV0ZXMgPSBPYmplY3Qua2V5cyhvcGVyYW5kcyk7XG4gICAgcmV0dXJuIG1vZGVsQXR0cmlidXRlc1xuICAgICAgLm1hcCgobW9kZWxBdHRyaWJ1dGUpID0+IHtcbiAgICAgICAgY29uc3QgdGVzdFZhbHVlID0gb3BlcmFuZHNbbW9kZWxBdHRyaWJ1dGVdO1xuICAgICAgICBsZXQgdmFsdWUgPSBnZXQodGhpcy5fdmFsdWVzLCBtb2RlbEF0dHJpYnV0ZSk7XG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsICYmIGNvbnRyb2wudHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB2YWx1ZSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRlc3RWYWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gdGVzdFZhbHVlLmluY2x1ZGVzKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWUgPT09IHRlc3RWYWx1ZTtcbiAgICAgIH0pXG4gICAgICAucmVkdWNlKChhY2MsIGN1cnJlbnQpID0+IGFjYyB8fCBjdXJyZW50KTtcbiAgfVxuXG4gIF9ldmFsdWF0ZU5vdERlZkNvbmRpdGlvbihjb250cm9sLCBjb25kaXRpb24pIHtcbiAgICBjb25zdCBvcGVyYXRvciA9IE9iamVjdC5rZXlzKGNvbmRpdGlvbilbMF07XG4gICAgY29uc3QgbW9kZWxBdHRyaWJ1dGUgPSBjb25kaXRpb25bb3BlcmF0b3JdO1xuICAgIHJldHVybiBnZXQodGhpcy5fdmFsdWVzLCBtb2RlbEF0dHJpYnV0ZSkgPT09IHVuZGVmaW5lZCB8fCBnZXQodGhpcy5fdmFsdWVzLCBtb2RlbEF0dHJpYnV0ZSkgPT09IG51bGw7XG4gIH1cblxuICBfZXZhbHVhdGVEZWZDb25kaXRpb24oY29udHJvbCwgY29uZGl0aW9uKSB7XG4gICAgcmV0dXJuICF0aGlzLl9ldmFsdWF0ZU5vdERlZkNvbmRpdGlvbihjb250cm9sLCBjb25kaXRpb24pO1xuICB9XG5cbiAgX3JlbmRlclBhcnQoKSB7XG4gICAgaWYgKHRoaXMuX2NvbmZpcm0pIHtcbiAgICAgIHJldHVybiBodG1sYDxkaXYgY2xhc3M9XCJjb25maXJtLWJveFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3JcIj5UaGUgY29uZmlndXJhdGlvbiBpcyBub3QgdmFsaWQgYW5kIGNhbm5vdCBiZSBzYXZlZC48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpcm0tYm94X2FjdGlvbnNcIj5cbiAgICAgICAgICA8Z3YtYnV0dG9uIEBndi1idXR0b246Y2xpY2s9XCIke3RoaXMuX29uQ29uZmlybVJlc2V0fVwiIG91dGxpbmVkIGljb249XCJnZW5lcmFsOnVwZGF0ZVwiIGRhbmdlcj5Mb3NlIGNoYW5nZXM8L2d2LWJ1dHRvbj5cbiAgICAgICAgICA8Z3YtYnV0dG9uIEBndi1idXR0b246Y2xpY2s9XCIke3RoaXMuX29uQ29uZmlybUVkaXR9XCIgaWNvbj1cImRlc2lnbjplZGl0XCI+RWRpdDwvZ3YtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PmA7XG4gICAgfVxuICAgIGNvbnN0IGtleXMgPSB0aGlzLnNjaGVtYS5wcm9wZXJ0aWVzID8gT2JqZWN0LmtleXModGhpcy5zY2hlbWEucHJvcGVydGllcykgOiBbXTtcbiAgICB0aGlzLl9pZ25vcmVQcm9wZXJ0aWVzID0gW107XG5cbiAgICBpZiAodGhpcy5ncm91cHMpIHtcbiAgICAgIC8vIFJlbW92ZSB1bmRlZmluZWQgZ3JvdXAgaXRlbXNcbiAgICAgIGNvbnN0IGdyb3Vwc0NsZWFuZWQgPSB0aGlzLmdyb3Vwcy5yZWR1Y2UoKHByZXYsIGdyb3VwKSA9PiB7XG4gICAgICAgIGNvbnN0IGl0ZW1zRXhpc3RpbmdJblNjaGVtYUtleXMgPSBrZXlzLmZpbHRlcigoa2V5KSA9PiBbLi4uKGdyb3VwLml0ZW1zIHx8IFtdKV0uaW5jbHVkZXMoa2V5KSk7XG4gICAgICAgIHByZXYucHVzaCh7XG4gICAgICAgICAgLi4uZ3JvdXAsXG4gICAgICAgICAgaXRlbXM6IGl0ZW1zRXhpc3RpbmdJblNjaGVtYUtleXMgfHwgW10sXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgIH0sIFtdKTtcblxuICAgICAgLy8gQWRkIG5vbiBncm91cGVkIGl0ZW1zIGluc2lkZSBkZWZhdWx0IGdyb3VwXG4gICAgICBjb25zdCBkZWZhdWx0R3JvdXAgPSBncm91cHNDbGVhbmVkLmZpbmQoKGcpID0+IGcuZGVmYXVsdCkgfHwgeyBkZWZhdWx0OiB0cnVlLCBpdGVtczogW10gfTtcbiAgICAgIGNvbnN0IHppcEdyb3VwZWRJdGVtcyA9IGdyb3Vwc0NsZWFuZWQucmVkdWNlKChwcmV2LCBncm91cCkgPT4gWy4uLnByZXYsIC4uLmdyb3VwLml0ZW1zXSwgW10pO1xuICAgICAgZGVmYXVsdEdyb3VwLml0ZW1zID0ga2V5cy5maWx0ZXIoKGtleSkgPT4gIXppcEdyb3VwZWRJdGVtcy5pbmNsdWRlcyhrZXkpKTtcblxuICAgICAgcmV0dXJuIHJlcGVhdChcbiAgICAgICAgZ3JvdXBzQ2xlYW5lZCxcbiAgICAgICAgKGdyb3VwKSA9PlxuICAgICAgICAgIGh0bWxgJHtncm91cC5uYW1lXG4gICAgICAgICAgICA/IGh0bWxgPGgyIGNsYXNzPVwiZ3JvdXAtdGl0bGVcIj4ke2dyb3VwLm5hbWV9PC9oMj5cbiAgICAgICAgICAgICAgICAke3JlcGVhdChncm91cC5pdGVtcywgKGtleSkgPT4gdGhpcy5fcmVuZGVyQ29udHJvbChrZXkpKX1gXG4gICAgICAgICAgICA6IHJlcGVhdChncm91cC5pdGVtcywgKGtleSkgPT4gdGhpcy5fcmVuZGVyQ29udHJvbChrZXkpKX0gYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGh0bWxgJHtyZXBlYXQoWzFdLCAoKSA9PlxuICAgICAgcmVwZWF0KFxuICAgICAgICBrZXlzLFxuICAgICAgICAoa2V5KSA9PiBrZXksXG4gICAgICAgIChrZXkpID0+IHRoaXMuX3JlbmRlckNvbnRyb2woa2V5KSxcbiAgICAgICksXG4gICAgKX1gO1xuICB9XG5cbiAgZ2V0Q29udHJvbHMoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2d2LXNjaGVtYS1mb3JtLWNvbnRyb2wnKSk7XG4gIH1cblxuICBnZXRDb250cm9sKGlkKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKGBbaWQ9XCIke2lkfVwiXWApO1xuICB9XG5cbiAgX2dldEVycm9ycygpIHtcbiAgICByZXR1cm4gKHRoaXMuX3ZhbGlkYXRvclJlc3VsdHMuZXJyb3JzIHx8IFtdKS5maWx0ZXIoKGVycm9yKSA9PiB7XG4gICAgICBsZXQgaWQgPSBgJHtlcnJvci5wcm9wZXJ0eS5yZXBsYWNlKCdpbnN0YW5jZS4nLCAnJyl9YDtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShlcnJvci5hcmd1bWVudCkpIHtcbiAgICAgICAgaWQgPSBgJHtpZH0uJHtlcnJvci5hcmd1bWVudH1gO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlcnJvcktleSA9IGB4LXNjaGVtYS1mb3JtLmVycm9ycy4ke2lkfS4ke2Vycm9yLm5hbWV9YDtcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGdldCh0aGlzLnNjaGVtYSwgZXJyb3JLZXkpO1xuICAgICAgaWYgKGVycm9yTWVzc2FnZSkge1xuICAgICAgICBlcnJvci5tZXNzYWdlID0gZXJyb3JNZXNzYWdlO1xuICAgICAgfVxuICAgICAgcmV0dXJuICF0aGlzLl9pZ25vcmVQcm9wZXJ0aWVzLmluY2x1ZGVzKGlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRlKCkge1xuICAgIGlmICh0aGlzLnNjaGVtYSkge1xuICAgICAgLy8gQWRkaXRpb25hbCBwcm9wZXJ0aWVzIHNob3VsZCBub3QgYmxvY2sgdGhlIHZhbGlkYXRpb24gb2YgdGhlIGZvcm1cbiAgICAgIHRoaXMuX3ZhbGlkYXRvclJlc3VsdHMgPSB0aGlzLl92YWxpZGF0b3IudmFsaWRhdGUodGhpcy5fdmFsdWVzLCB7IC4uLnRoaXMuc2NoZW1hLCBhZGRpdGlvbmFsUHJvcGVydGllczoge30gfSk7XG4gICAgICB0aGlzLmVycm9ycyA9IHRoaXMuX2dldEVycm9ycygpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fdmFsaWRhdG9yUmVzdWx0cztcbiAgfVxuXG4gIGlzVmFsaWQoKSB7XG4gICAgaWYgKHRoaXMuX3ZhbGlkYXRvclJlc3VsdHMudmFsaWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZ2V0RXJyb3JzKCkgPT09IDA7XG4gIH1cblxuICBpc1RvdWNoKCkge1xuICAgIHJldHVybiB0aGlzLl90b3VjaCB8fCAodGhpcy5kaXJ0eSAmJiB0aGlzLnZhbGlkYXRlT25SZW5kZXIpO1xuICB9XG5cbiAgY2FuU3VibWl0KCkge1xuICAgIHJldHVybiB0aGlzLmlzVG91Y2goKSAmJiB0aGlzLmlzVmFsaWQoKTtcbiAgfVxuXG4gIF91cGRhdGVBY3Rpb25zKCkge1xuICAgIGNvbnN0IHN1Ym1pdEJ0biA9IHRoaXMuX2dldFN1Ym1pdEJ0bigpO1xuICAgIGlmIChzdWJtaXRCdG4gIT0gbnVsbCkge1xuICAgICAgaWYgKHRoaXMuY2FuU3VibWl0KCkpIHtcbiAgICAgICAgdGhpcy5fZ2V0U3VibWl0QnRuKCkucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlZCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fZ2V0U3VibWl0QnRuKCkuc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsIHRydWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCByZXNldEJ0biA9IHRoaXMuX2dldFJlc2V0QnRuKCk7XG4gICAgaWYgKHJlc2V0QnRuICE9IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLmRpcnR5KSB7XG4gICAgICAgIHJlc2V0QnRuLnJlbW92ZUF0dHJpYnV0ZSgnZGlzYWJsZWQnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc2V0QnRuLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfdXBkYXRlQ2hpbGRyZW4od2l0aFZhbGlkYXRpb24pIHtcbiAgICBpZiAod2l0aFZhbGlkYXRpb24pIHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRvclJlc3VsdHMgPSB7fTtcbiAgICAgIHRoaXMuZXJyb3JzID0gbnVsbDtcbiAgICAgIHRoaXMucmVxdWVzdFZhbGlkYXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdXBkYXRlQWN0aW9uc1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX3VwZGF0ZUFjdGlvbnMoKSwgMCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcykge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl91cGRhdGVBY3Rpb25zVGltZW91dCk7XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnX3ZhbHVlcycpKSB7XG4gICAgICB0aGlzLmdldENvbnRyb2xzKCkuZm9yRWFjaCgoY29udHJvbCkgPT4ge1xuICAgICAgICBjb250cm9sLnZhbHVlID0gZ2V0KHRoaXMuX3ZhbHVlcywgY29udHJvbC5pZCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5fdXBkYXRlQ2hpbGRyZW4odGhpcy52YWxpZGF0ZU9uUmVuZGVyICYmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ192YWx1ZXMnKSB8fCBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3NjaGVtYScpKSk7XG4gIH1cblxuICBhc3luYyBnZXRVcGRhdGVDb21wbGV0ZSgpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzdXBlci5nZXRVcGRhdGVDb21wbGV0ZSgpO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKHRoaXMuZ2V0Q29udHJvbHMoKS5tYXAoKGUpID0+IGUudXBkYXRlQ29tcGxldGUpKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiBodG1sYDxmb3JtIGNsYXNzPVwiJHtjbGFzc01hcCh7IHNjcm9sbGFibGU6IHRoaXMuc2Nyb2xsYWJsZSB9KX1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCIke2NsYXNzTWFwKHsgY29udGFpbmVyOiB0cnVlLCBjb25maXJtOiB0aGlzLl9jb25maXJtIH0pfVwiPlxuICAgICAgICAke3RoaXMuaGFzSGVhZGVyID09PSB0cnVlXG4gICAgICAgICAgPyBodG1sYFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiR7Y2xhc3NNYXAoeyB0aXRsZTogdHJ1ZSwgY2VudGVyOiB0aGlzLmhhc0hlYWRlciAmJiAhdGhpcy5oYXNGb290ZXIgfSl9XCI+XG4gICAgICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwidGl0bGVcIj48L3Nsb3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXItbGVmdFwiPjwvc2xvdD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAke3RoaXMucmVhZG9ubHkgPT09IHRydWUgfHwgdGhpcy5oYXNGb290ZXIgPT09IHRydWVcbiAgICAgICAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgICAgICAgIDogaHRtbGA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8Z3YtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cInJlc2V0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dGxpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICBzbWFsbFxuICAgICAgICAgICAgICAgICAgICAgICAgQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fb25SZXNldH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImdlbmVyYWw6dXBkYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiUmVzZXRcIlxuICAgICAgICAgICAgICAgICAgICAgID48L2d2LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8Z3YtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzbWFsbFxuICAgICAgICAgICAgICAgICAgICAgICAgQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fb25TdWJtaXR9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJjb2RlOmNoZWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC50aXRsZT1cIiR7dGhpcy5zdWJtaXRMYWJlbH1cIlxuICAgICAgICAgICAgICAgICAgICAgID48L2d2LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IGB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgYFxuICAgICAgICAgIDogJyd9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+JHt0aGlzLnNjaGVtYSAhPSBudWxsID8gdGhpcy5fcmVuZGVyUGFydCgpIDogaHRtbGBgfTwvZGl2PlxuICAgICAgICAke3RoaXMuaGFzRm9vdGVyID09PSB0cnVlICYmIHRoaXMucmVhZG9ubHkgIT09IHRydWVcbiAgICAgICAgICA/IGh0bWxgXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICAgICAgICAgICAgPGd2LWJ1dHRvbiBpZD1cInJlc2V0XCIgb3V0bGluZWQgQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fb25SZXNldH1cIiBpY29uPVwiZ2VuZXJhbDp1cGRhdGVcIiB0aXRsZT1cIlJlc2V0XCI+UmVzZXQ8L2d2LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxndi1idXR0b24gaWQ9XCJzdWJtaXRcIiBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLl9vblN1Ym1pdH1cIiBpY29uPVwiY29kZTpjaGVja1wiIC50aXRsZT1cIiR7dGhpcy5zdWJtaXRMYWJlbH1cIlxuICAgICAgICAgICAgICAgICAgICA+JHt0aGlzLnN1Ym1pdExhYmVsfTwvZ3YtYnV0dG9uXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgYFxuICAgICAgICAgIDogJyd9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+YDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc3R5bGVzKCkge1xuICAgIHJldHVybiBbXG4gICAgICBlbXB0eSxcbiAgICAgIC8vIGxhbmd1YWdlPUNTU1xuICAgICAgY3NzYFxuICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBtYXJnaW46IDAuMnJlbTtcbiAgICAgICAgICAtLWJnYzogdmFyKC0tZ3Ytc2NoZW1hLWZvcm0tLWJnYywgI2ZmZmZmZik7XG4gICAgICAgIH1cblxuICAgICAgICBmb3JtIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIH1cblxuICAgICAgICBmb3JtLnNjcm9sbGFibGUge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY29udGFpbmVyIHtcbiAgICAgICAgICBmbGV4LWdyb3c6IDE7XG5cbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iZ2MpO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgICAgICAgIC8qIGZvciBGaXJlZm94ICovXG4gICAgICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkZXIsXG4gICAgICAgIC5mb290ZXIsXG4gICAgICAgIC5jb250ZW50IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iZ2MpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbnRlbnQge1xuICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgLyogZm9yIEZpcmVmb3ggKi9cbiAgICAgICAgICBtaW4taGVpZ2h0OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbnRlbnQgPiBndi1zY2hlbWEtZm9ybS1jb250cm9sIHtcbiAgICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICBmb3JtLnNjcm9sbGFibGUgLmNvbnRlbnQge1xuICAgICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9ybS5zY3JvbGxhYmxlIC5jb250ZW50ID4gZ3Ytc2NoZW1hLWZvcm0tY29udHJvbCxcbiAgICAgICAgZm9ybS5zY3JvbGxhYmxlIC5jb250ZW50ID4gLmdyb3VwLXRpdGxlIHtcbiAgICAgICAgICBtYXgtd2lkdGg6IDc3NXB4O1xuICAgICAgICAgIHdpZHRoOiA5NSU7XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGVyLFxuICAgICAgICAuZm9vdGVyIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgbWluLWhlaWdodDogNDVweDtcbiAgICAgICAgICAtLWd2LWljb24tLXM6IDI2cHg7XG4gICAgICAgICAgLS1ndi1pY29uLS1jOiAjYmZiZmJmO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgcGFkZGluZzogMCAwLjVyZW07XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlYWRlciB7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkOWQ5ZDk7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9vdGVyIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZDlkOWQ5O1xuICAgICAgICB9XG5cbiAgICAgICAgZm9ybS5zY3JvbGxhYmxlIC5mb290ZXIge1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvb3RlciAubGVmdCxcbiAgICAgICAgLmZvb3RlciAucmlnaHQge1xuICAgICAgICAgIG1heC13aWR0aDogNDAwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGVyIC5sZWZ0LFxuICAgICAgICAuZm9vdGVyIC5sZWZ0LFxuICAgICAgICAuaGVhZGVyIC5yaWdodCxcbiAgICAgICAgLmZvb3RlciAucmlnaHQge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlYWRlciAucmlnaHQsXG4gICAgICAgIC5mb290ZXIgLnJpZ2h0IHtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlYWRlciAudGl0bGUge1xuICAgICAgICAgIGNvbG9yOiAjMjg0NDRmO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGVyIC50aXRsZS5jZW50ZXIge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAuY29uZmlybS1ib3gge1xuICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb25maXJtLWJveF9hY3Rpb25zIHtcbiAgICAgICAgICBwYWRkaW5nOiAxcmVtIDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY29uZmlybSAuaGVhZGVyIC5sZWZ0LFxuICAgICAgICAuY29uZmlybSAuaGVhZGVyIC5yaWdodCxcbiAgICAgICAgLmNvbmZpcm0gLmZvb3RlciAubGVmdCxcbiAgICAgICAgLmNvbmZpcm0gLmZvb3RlciAucmlnaHQge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAuZ3JvdXAtdGl0bGUge1xuICAgICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tZ3YtdGhlbWUtZm9udC1jb2xvci1kYXJrKTtcbiAgICAgICAgICBmb250LXNpemU6IDIxcHg7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMC4zZW07XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWd2LXRoZW1lLWZvbnQtY29sb3ItZGFyayk7XG4gICAgICAgICAgbWFyZ2luLXRvcDogMjRweDtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgICB9XG4gICAgICBgLFxuICAgIF07XG4gIH1cbn1cblxud2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZ3Ytc2NoZW1hLWZvcm0nLCBHdlNjaGVtYUZvcm0pO1xuIl19
|
|
701
|
+
//# sourceMappingURL=gv-schema-form.js.map
|