@gravitee/ui-components 3.24.5 → 3.25.0-fix-gvcode-15ce1d2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/CHANGELOG.md +1270 -0
  2. package/LICENSE.txt +202 -0
  3. package/README.md +195 -0
  4. package/assets/i18n/en.json +3 -0
  5. package/assets/i18n/fr.json +3 -0
  6. package/assets/icons/design.svg +1 -1
  7. package/package.json +1 -1
  8. package/src/.eslintrc.js +19 -0
  9. package/src/atoms/gv-autocomplete.js +156 -132
  10. package/src/atoms/gv-button.js +248 -73
  11. package/src/atoms/gv-checkbox.js +103 -45
  12. package/src/atoms/gv-date-picker-calendar.js +393 -312
  13. package/src/atoms/gv-date-picker-cell.js +81 -57
  14. package/src/atoms/gv-date-picker.js +319 -180
  15. package/src/atoms/gv-file-upload.js +195 -85
  16. package/src/atoms/gv-icon.js +34 -13
  17. package/src/atoms/gv-image.js +66 -31
  18. package/src/atoms/gv-input-message.js +37 -12
  19. package/src/atoms/gv-input.js +148 -117
  20. package/src/atoms/gv-link.js +125 -47
  21. package/src/atoms/gv-message.js +69 -18
  22. package/src/atoms/gv-metric.js +68 -19
  23. package/src/atoms/gv-relative-time.js +38 -67
  24. package/src/atoms/gv-select-native.js +215 -96
  25. package/src/atoms/gv-select.js +230 -110
  26. package/src/atoms/gv-spinner.js +26 -5
  27. package/src/atoms/gv-state.js +66 -25
  28. package/src/atoms/gv-switch.js +160 -40
  29. package/src/atoms/gv-tag.js +78 -26
  30. package/src/atoms/gv-text.js +83 -22
  31. package/src/charts/gv-chart-bar.js +18 -22
  32. package/src/charts/gv-chart-gauge.js +31 -28
  33. package/src/charts/gv-chart-histogram.js +10 -18
  34. package/src/charts/gv-chart-line.js +59 -70
  35. package/src/charts/gv-chart-map.js +42 -44
  36. package/src/charts/gv-chart-pie.js +14 -18
  37. package/src/index.js +0 -1
  38. package/src/lib/cron-expression.js +35 -40
  39. package/src/lib/date.js +1 -10
  40. package/src/lib/events.js +1 -3
  41. package/src/lib/http-client-schema-form.js +12 -13
  42. package/src/lib/http.js +56 -57
  43. package/src/lib/i18n.js +22 -30
  44. package/src/lib/item.js +12 -13
  45. package/src/lib/properties.js +42 -77
  46. package/src/lib/schema-form.js +5 -4
  47. package/src/lib/studio.js +60 -13
  48. package/src/lib/style.js +8 -8
  49. package/src/lib/text-format.js +7 -14
  50. package/src/lib/theme.js +5 -8
  51. package/src/lib/utils.js +18 -17
  52. package/src/mixins/chart-element.js +54 -31
  53. package/src/mixins/input-element.js +47 -60
  54. package/src/mixins/item-resource.js +32 -34
  55. package/src/mixins/keyboard-element.js +5 -6
  56. package/src/mixins/update-after-browser.js +1 -4
  57. package/src/mixins/with-resize-observer.js +13 -23
  58. package/src/mixins/with-skeleton-attribute.js +48 -54
  59. package/src/molecules/gv-card-full.js +147 -26
  60. package/src/molecules/gv-card-list.js +42 -13
  61. package/src/molecules/gv-card.js +91 -17
  62. package/src/molecules/gv-category-list.js +17 -6
  63. package/src/molecules/gv-category.js +103 -23
  64. package/src/molecules/gv-code.js +143 -81
  65. package/src/molecules/gv-confirm.js +71 -41
  66. package/src/molecules/gv-cron-editor.js +389 -143
  67. package/src/molecules/gv-dropdown-menu.js +46 -14
  68. package/src/molecules/gv-expandable.js +59 -31
  69. package/src/molecules/gv-expression-language.js +138 -176
  70. package/src/molecules/gv-identity-picture.js +65 -42
  71. package/src/molecules/gv-list.js +134 -42
  72. package/src/molecules/gv-metrics.js +49 -37
  73. package/src/molecules/gv-modal.js +95 -28
  74. package/src/molecules/gv-nav.js +75 -49
  75. package/src/molecules/gv-option.js +130 -57
  76. package/src/molecules/gv-plans.js +209 -86
  77. package/src/molecules/gv-popover.js +177 -57
  78. package/src/molecules/gv-promote.js +146 -28
  79. package/src/molecules/gv-rating-list.js +195 -69
  80. package/src/molecules/gv-rating.js +105 -52
  81. package/src/molecules/gv-row-expandable.js +11 -5
  82. package/src/molecules/gv-row.js +147 -21
  83. package/src/molecules/gv-stats.js +48 -23
  84. package/src/molecules/gv-stepper.js +187 -43
  85. package/src/molecules/gv-table.js +309 -199
  86. package/src/molecules/gv-tree.js +156 -33
  87. package/src/organisms/gv-documentation.js +128 -45
  88. package/src/organisms/gv-header.js +195 -37
  89. package/src/organisms/gv-http-client.js +168 -32
  90. package/src/organisms/gv-menu.js +158 -37
  91. package/src/organisms/gv-newsletter-subscription.js +189 -48
  92. package/src/organisms/gv-pagination.js +77 -49
  93. package/src/organisms/gv-properties.js +492 -271
  94. package/src/organisms/gv-resizable-views.js +259 -41
  95. package/src/organisms/gv-resources.js +275 -168
  96. package/src/organisms/gv-schema-form-array.js +159 -49
  97. package/src/organisms/gv-schema-form-control-object.js +73 -59
  98. package/src/organisms/gv-schema-form-control.js +134 -107
  99. package/src/organisms/gv-schema-form.js +324 -195
  100. package/src/organisms/gv-tabs.js +98 -66
  101. package/src/organisms/gv-user-menu.js +201 -36
  102. package/src/organisms/gv-vertical-menu.js +61 -20
  103. package/src/policy-studio/gv-flow-step.js +266 -105
  104. package/src/policy-studio/gv-flow.js +304 -125
  105. package/src/policy-studio/gv-policy-studio-menu.js +471 -157
  106. package/src/policy-studio/gv-policy-studio.js +777 -686
  107. package/src/styles/empty.js +20 -3
  108. package/src/styles/input.js +247 -3
  109. package/src/styles/link.js +16 -3
  110. package/src/styles/shapes.js +0 -1
  111. package/src/styles/skeleton.js +37 -3
  112. package/src/styles/zoom.js +24 -3
  113. package/src/theme/definition.json +1762 -0
  114. package/src/theme/gv-theme.js +60 -21
@@ -15,7 +15,7 @@
15
15
  */
16
16
  // This comes from the fact that parseInt trims characters coming
17
17
  // after digits and consider it a valid int, so `1*` becomes `1`.
18
- const safeParseInt = value => {
18
+ const safeParseInt = (value) => {
19
19
  if (/^\d+$/.test(value)) {
20
20
  return Number(value);
21
21
  } else {
@@ -23,11 +23,11 @@ const safeParseInt = value => {
23
23
  }
24
24
  };
25
25
 
26
- const isWildcard = value => {
26
+ const isWildcard = (value) => {
27
27
  return value === '*';
28
28
  };
29
29
 
30
- const isQuestionMark = value => {
30
+ const isQuestionMark = (value) => {
31
31
  return value === '?';
32
32
  };
33
33
 
@@ -37,22 +37,19 @@ const isInRange = (value, start, stop) => {
37
37
 
38
38
  const isValidRange = (value, start, stop) => {
39
39
  const sides = value.split('-');
40
-
41
40
  switch (sides.length) {
42
41
  case 1:
43
42
  return isWildcard(value) || isInRange(safeParseInt(value), start, stop);
44
-
45
43
  case 2:
46
44
  // eslint-disable-next-line no-case-declarations
47
- const [small, big] = sides.map(side => safeParseInt(side));
45
+ const [small, big] = sides.map((side) => safeParseInt(side));
48
46
  return small <= big && isInRange(small, start, stop) && isInRange(big, start, stop);
49
-
50
47
  default:
51
48
  return false;
52
49
  }
53
50
  };
54
51
 
55
- const isValidStep = value => {
52
+ const isValidStep = (value) => {
56
53
  return value === undefined || value.search(/[^\d]/) === -1;
57
54
  };
58
55
 
@@ -62,38 +59,38 @@ const validateForRange = (value, start, stop) => {
62
59
  }
63
60
 
64
61
  const list = value.split(',');
65
- return list.every(condition => {
66
- const splits = condition.split('/'); // Prevents `*/ * * * *` from being accepted.
67
-
62
+ return list.every((condition) => {
63
+ const splits = condition.split('/');
64
+ // Prevents `*/ * * * *` from being accepted.
68
65
  if (condition.trim().endsWith('/')) {
69
66
  return false;
70
- } // Prevents `*/*/* * * * *` from being accepted
71
-
67
+ }
72
68
 
69
+ // Prevents `*/*/* * * * *` from being accepted
73
70
  if (splits.length > 2) {
74
71
  return false;
75
- } // If we don't have a `/`, right will be undefined which is considered a valid step if we don't a `/`.
76
-
72
+ }
77
73
 
74
+ // If we don't have a `/`, right will be undefined which is considered a valid step if we don't a `/`.
78
75
  const [left, right] = splits;
79
76
  return isValidRange(left, start, stop) && isValidStep(right);
80
77
  });
81
78
  };
82
79
 
83
- const hasValidSeconds = seconds => {
80
+ const hasValidSeconds = (seconds) => {
84
81
  return validateForRange(seconds, 0, 59);
85
82
  };
86
83
 
87
- const hasValidMinutes = minutes => {
84
+ const hasValidMinutes = (minutes) => {
88
85
  return validateForRange(minutes, 0, 59);
89
86
  };
90
87
 
91
- const hasValidHours = hours => {
88
+ const hasValidHours = (hours) => {
92
89
  return validateForRange(hours, 0, 23);
93
90
  };
94
91
 
95
92
  const hasValidDays = (days, allowBlankDay) => {
96
- return allowBlankDay && isQuestionMark(days) || validateForRange(days, 1, 31);
93
+ return (allowBlankDay && isQuestionMark(days)) || validateForRange(days, 1, 31);
97
94
  };
98
95
 
99
96
  const monthAlias = {
@@ -108,7 +105,7 @@ const monthAlias = {
108
105
  sep: '9',
109
106
  oct: '10',
110
107
  nov: '11',
111
- dec: '12'
108
+ dec: '12',
112
109
  };
113
110
 
114
111
  const hasValidMonths = (months, alias) => {
@@ -118,10 +115,10 @@ const hasValidMonths = (months, alias) => {
118
115
  }
119
116
 
120
117
  if (alias) {
121
- const remappedMonths = months.toLowerCase().replace(/[a-z]{3}/g, match => {
118
+ const remappedMonths = months.toLowerCase().replace(/[a-z]{3}/g, (match) => {
122
119
  return monthAlias[match] === undefined ? match : monthAlias[match];
123
- }); // If any invalid alias was used, it won't pass the other checks as there will be non-numeric values in the months
124
-
120
+ });
121
+ // If any invalid alias was used, it won't pass the other checks as there will be non-numeric values in the months
125
122
  return validateForRange(remappedMonths, 1, 12);
126
123
  }
127
124
 
@@ -135,7 +132,7 @@ const weekdaysAlias = {
135
132
  wed: '3',
136
133
  thu: '4',
137
134
  fri: '5',
138
- sat: '6'
135
+ sat: '6',
139
136
  };
140
137
 
141
138
  const hasValidWeekdays = (weekdays, alias, allowBlankDay, allowSevenAsSunday) => {
@@ -144,18 +141,18 @@ const hasValidWeekdays = (weekdays, alias, allowBlankDay, allowSevenAsSunday) =>
144
141
  return true;
145
142
  } else if (!allowBlankDay && isQuestionMark(weekdays)) {
146
143
  return false;
147
- } // Prevents alias to be used as steps
148
-
144
+ }
149
145
 
146
+ // Prevents alias to be used as steps
150
147
  if (weekdays.search(/\/[a-zA-Z]/) !== -1) {
151
148
  return false;
152
149
  }
153
150
 
154
151
  if (alias) {
155
- const remappedWeekdays = weekdays.toLowerCase().replace(/[a-z]{3}/g, match => {
152
+ const remappedWeekdays = weekdays.toLowerCase().replace(/[a-z]{3}/g, (match) => {
156
153
  return weekdaysAlias[match] === undefined ? match : weekdaysAlias[match];
157
- }); // If any invalid alias was used, it won't pass the other checks as there will be non-numeric values in the weekdays
158
-
154
+ });
155
+ // If any invalid alias was used, it won't pass the other checks as there will be non-numeric values in the weekdays
159
156
  return validateForRange(remappedWeekdays, 0, allowSevenAsSunday ? 7 : 6);
160
157
  }
161
158
 
@@ -166,7 +163,7 @@ const hasCompatibleDayFormat = (days, weekdays, allowBlankDay) => {
166
163
  return !(allowBlankDay && isQuestionMark(days) && isQuestionMark(weekdays));
167
164
  };
168
165
 
169
- const split = cron => {
166
+ const split = (cron) => {
170
167
  return cron.trim().split(/\s+/);
171
168
  };
172
169
 
@@ -174,12 +171,12 @@ const defaultOptions = {
174
171
  alias: false,
175
172
  seconds: false,
176
173
  allowBlankDay: false,
177
- allowSevenAsSunday: false
174
+ allowSevenAsSunday: false,
178
175
  };
176
+
179
177
  export const isValidCron = (cron, options) => {
180
- options = { ...defaultOptions,
181
- ...options
182
- };
178
+ options = { ...defaultOptions, ...options };
179
+
183
180
  const splits = split(cron);
184
181
 
185
182
  if (splits.length > (options.seconds ? 6 : 5) || splits.length < 5) {
@@ -187,17 +184,15 @@ export const isValidCron = (cron, options) => {
187
184
  }
188
185
 
189
186
  const checks = [];
190
-
191
187
  if (splits.length === 6) {
192
188
  const seconds = splits.shift();
193
-
194
189
  if (seconds) {
195
190
  checks.push(hasValidSeconds(seconds));
196
191
  }
197
- } // We could only check the steps gradually and return false on the first invalid block,
198
- // However, this won't have any performance impact so why bother for now.
199
-
192
+ }
200
193
 
194
+ // We could only check the steps gradually and return false on the first invalid block,
195
+ // However, this won't have any performance impact so why bother for now.
201
196
  const [minutes, hours, days, months, weekdays] = splits;
202
197
  checks.push(hasValidMinutes(minutes));
203
198
  checks.push(hasValidHours(hours));
@@ -205,6 +200,6 @@ export const isValidCron = (cron, options) => {
205
200
  checks.push(hasValidMonths(months, options.alias));
206
201
  checks.push(hasValidWeekdays(weekdays, options.alias, options.allowBlankDay, options.allowSevenAsSunday));
207
202
  checks.push(hasCompatibleDayFormat(days, weekdays, options.allowBlankDay));
203
+
208
204
  return checks.every(Boolean);
209
205
  };
210
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL2xpYi9jcm9uLWV4cHJlc3Npb24uanMiXSwibmFtZXMiOlsic2FmZVBhcnNlSW50IiwidmFsdWUiLCJ0ZXN0IiwiTnVtYmVyIiwiTmFOIiwiaXNXaWxkY2FyZCIsImlzUXVlc3Rpb25NYXJrIiwiaXNJblJhbmdlIiwic3RhcnQiLCJzdG9wIiwiaXNWYWxpZFJhbmdlIiwic2lkZXMiLCJzcGxpdCIsImxlbmd0aCIsInNtYWxsIiwiYmlnIiwibWFwIiwic2lkZSIsImlzVmFsaWRTdGVwIiwidW5kZWZpbmVkIiwic2VhcmNoIiwidmFsaWRhdGVGb3JSYW5nZSIsImxpc3QiLCJldmVyeSIsImNvbmRpdGlvbiIsInNwbGl0cyIsInRyaW0iLCJlbmRzV2l0aCIsImxlZnQiLCJyaWdodCIsImhhc1ZhbGlkU2Vjb25kcyIsInNlY29uZHMiLCJoYXNWYWxpZE1pbnV0ZXMiLCJtaW51dGVzIiwiaGFzVmFsaWRIb3VycyIsImhvdXJzIiwiaGFzVmFsaWREYXlzIiwiZGF5cyIsImFsbG93QmxhbmtEYXkiLCJtb250aEFsaWFzIiwiamFuIiwiZmViIiwibWFyIiwiYXByIiwibWF5IiwianVuIiwianVsIiwiYXVnIiwic2VwIiwib2N0Iiwibm92IiwiZGVjIiwiaGFzVmFsaWRNb250aHMiLCJtb250aHMiLCJhbGlhcyIsInJlbWFwcGVkTW9udGhzIiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwibWF0Y2giLCJ3ZWVrZGF5c0FsaWFzIiwic3VuIiwibW9uIiwidHVlIiwid2VkIiwidGh1IiwiZnJpIiwic2F0IiwiaGFzVmFsaWRXZWVrZGF5cyIsIndlZWtkYXlzIiwiYWxsb3dTZXZlbkFzU3VuZGF5IiwicmVtYXBwZWRXZWVrZGF5cyIsImhhc0NvbXBhdGlibGVEYXlGb3JtYXQiLCJjcm9uIiwiZGVmYXVsdE9wdGlvbnMiLCJpc1ZhbGlkQ3JvbiIsIm9wdGlvbnMiLCJjaGVja3MiLCJzaGlmdCIsInB1c2gi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QUNFLElBQVAsQ0FBWTFCLGNBQWMsQ0FBQ0MsTUFBRCxFQUFTc0IsT0FBTyxDQUFDckIsS0FBakIsQ0FBMUI7QUFDQXNCLEVBQUFBLE1BQU0sQ0FBQ0UsSUFBUCxDQUFZWCxnQkFBZ0IsQ0FBQ0MsUUFBRCxFQUFXTyxPQUFPLENBQUNyQixLQUFuQixFQUEwQnFCLE9BQU8sQ0FBQ3JDLGFBQWxDLEVBQWlEcUMsT0FBTyxDQUFDTixrQkFBekQsQ0FBNUI7QUFDQU8sRUFBQUEsTUFBTSxDQUFDRSxJQUFQLENBQVlQLHNCQUFzQixDQUFDbEMsSUFBRCxFQUFPK0IsUUFBUCxFQUFpQk8sT0FBTyxDQUFDckMsYUFBekIsQ0FBbEM7QUFFQSxTQUFPc0MsTUFBTSxDQUFDckQsS0FBUCxDQUFhd0QsT0FBYixDQUFQO0FBQ0QsQ0E1Qk0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLy8gVGhpcyBjb21lcyBmcm9tIHRoZSBmYWN0IHRoYXQgcGFyc2VJbnQgdHJpbXMgY2hhcmFjdGVycyBjb21pbmdcbi8vIGFmdGVyIGRpZ2l0cyBhbmQgY29uc2lkZXIgaXQgYSB2YWxpZCBpbnQsIHNvIGAxKmAgYmVjb21lcyBgMWAuXG5jb25zdCBzYWZlUGFyc2VJbnQgPSAodmFsdWUpID0+IHtcbiAgaWYgKC9eXFxkKyQvLnRlc3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIE51bWJlcih2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIE5hTjtcbiAgfVxufTtcblxuY29uc3QgaXNXaWxkY2FyZCA9ICh2YWx1ZSkgPT4ge1xuICByZXR1cm4gdmFsdWUgPT09ICcqJztcbn07XG5cbmNvbnN0IGlzUXVlc3Rpb25NYXJrID0gKHZhbHVlKSA9PiB7XG4gIHJldHVybiB2YWx1ZSA9PT0gJz8nO1xufTtcblxuY29uc3QgaXNJblJhbmdlID0gKHZhbHVlLCBzdGFydCwgc3RvcCkgPT4ge1xuICByZXR1cm4gdmFsdWUgPj0gc3RhcnQgJiYgdmFsdWUgPD0gc3RvcDtcbn07XG5cbmNvbnN0IGlzVmFsaWRSYW5nZSA9ICh2YWx1ZSwgc3RhcnQsIHN0b3ApID0+IHtcbiAgY29uc3Qgc2lkZXMgPSB2YWx1ZS5zcGxpdCgnLScpO1xuICBzd2l0Y2ggKHNpZGVzLmxlbmd0aCkge1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiBpc1dpbGRjYXJkKHZhbHVlKSB8fCBpc0luUmFuZ2Uoc2FmZVBhcnNlSW50KHZhbHVlKSwgc3RhcnQsIHN0b3ApO1xuICAgIGNhc2UgMjpcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jYXNlLWRlY2xhcmF0aW9uc1xuICAgICAgY29uc3QgW3NtYWxsLCBiaWddID0gc2lkZXMubWFwKChzaWRlKSA9PiBzYWZlUGFyc2VJbnQoc2lkZSkpO1xuICAgICAgcmV0dXJuIHNtYWxsIDw9IGJpZyAmJiBpc0luUmFuZ2Uoc21hbGwsIHN0YXJ0LCBzdG9wKSAmJiBpc0luUmFuZ2UoYmlnLCBzdGFydCwgc3RvcCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxuY29uc3QgaXNWYWxpZFN0ZXAgPSAodmFsdWUpID0+IHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUuc2VhcmNoKC9bXlxcZF0vKSA9PT0gLTE7XG59O1xuXG5jb25zdCB2YWxpZGF0ZUZvclJhbmdlID0gKHZhbHVlLCBzdGFydCwgc3RvcCkgPT4ge1xuICBpZiAodmFsdWUuc2VhcmNoKC9bXlxcZC0sLypdLykgIT09IC0xKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgbGlzdCA9IHZhbHVlLnNwbGl0KCcsJyk7XG4gIHJldHVybiBsaXN0LmV2ZXJ5KChjb25kaXRpb24pID0+IHtcbiAgICBjb25zdCBzcGxpdHMgPSBjb25kaXRpb24uc3BsaXQoJy8nKTtcbiAgICAvLyBQcmV2ZW50cyBgKi8gKiAqICogKmAgZnJvbSBiZWluZyBhY2NlcHRlZC5cbiAgICBpZiAoY29uZGl0aW9uLnRyaW0oKS5lbmRzV2l0aCgnLycpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gUHJldmVudHMgYCovKi8qICogKiAqICpgIGZyb20gYmVpbmcgYWNjZXB0ZWRcbiAgICBpZiAoc3BsaXRzLmxlbmd0aCA+IDIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgYC9gLCByaWdodCB3aWxsIGJlIHVuZGVmaW5lZCB3aGljaCBpcyBjb25zaWRlcmVkIGEgdmFsaWQgc3RlcCBpZiB3ZSBkb24ndCBhIGAvYC5cbiAgICBjb25zdCBbbGVmdCwgcmlnaHRdID0gc3BsaXRzO1xuICAgIHJldHVybiBpc1ZhbGlkUmFuZ2UobGVmdCwgc3RhcnQsIHN0b3ApICYmIGlzVmFsaWRTdGVwKHJpZ2h0KTtcbiAgfSk7XG59O1xuXG5jb25zdCBoYXNWYWxpZFNlY29uZHMgPSAoc2Vjb25kcykgPT4ge1xuICByZXR1cm4gdmFsaWRhdGVGb3JSYW5nZShzZWNvbmRzLCAwLCA1OSk7XG59O1xuXG5jb25zdCBoYXNWYWxpZE1pbnV0ZXMgPSAobWludXRlcykgPT4ge1xuICByZXR1cm4gdmFsaWRhdGVGb3JSYW5nZShtaW51dGVzLCAwLCA1OSk7XG59O1xuXG5jb25zdCBoYXNWYWxpZEhvdXJzID0gKGhvdXJzKSA9PiB7XG4gIHJldHVybiB2YWxpZGF0ZUZvclJhbmdlKGhvdXJzLCAwLCAyMyk7XG59O1xuXG5jb25zdCBoYXNWYWxpZERheXMgPSAoZGF5cywgYWxsb3dCbGFua0RheSkgPT4ge1xuICByZXR1cm4gKGFsbG93QmxhbmtEYXkgJiYgaXNRdWVzdGlvbk1hcmsoZGF5cykpIHx8IHZhbGlkYXRlRm9yUmFuZ2UoZGF5cywgMSwgMzEpO1xufTtcblxuY29uc3QgbW9udGhBbGlhcyA9IHtcbiAgamFuOiAnMScsXG4gIGZlYjogJzInLFxuICBtYXI6ICczJyxcbiAgYXByOiAnNCcsXG4gIG1heTogJzUnLFxuICBqdW46ICc2JyxcbiAganVsOiAnNycsXG4gIGF1ZzogJzgnLFxuICBzZXA6ICc5JyxcbiAgb2N0OiAnMTAnLFxuICBub3Y6ICcxMScsXG4gIGRlYzogJzEyJyxcbn07XG5cbmNvbnN0IGhhc1ZhbGlkTW9udGhzID0gKG1vbnRocywgYWxpYXMpID0+IHtcbiAgLy8gUHJldmVudHMgYWxpYXMgdG8gYmUgdXNlZCBhcyBzdGVwc1xuICBpZiAobW9udGhzLnNlYXJjaCgvXFwvW2EtekEtWl0vKSAhPT0gLTEpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoYWxpYXMpIHtcbiAgICBjb25zdCByZW1hcHBlZE1vbnRocyA9IG1vbnRocy50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1thLXpdezN9L2csIChtYXRjaCkgPT4ge1xuICAgICAgcmV0dXJuIG1vbnRoQWxpYXNbbWF0Y2hdID09PSB1bmRlZmluZWQgPyBtYXRjaCA6IG1vbnRoQWxpYXNbbWF0Y2hdO1xuICAgIH0pO1xuICAgIC8vIElmIGFueSBpbnZhbGlkIGFsaWFzIHdhcyB1c2VkLCBpdCB3b24ndCBwYXNzIHRoZSBvdGhlciBjaGVja3MgYXMgdGhlcmUgd2lsbCBiZSBub24tbnVtZXJpYyB2YWx1ZXMgaW4gdGhlIG1vbnRoc1xuICAgIHJldHVybiB2YWxpZGF0ZUZvclJhbmdlKHJlbWFwcGVkTW9udGhzLCAxLCAxMik7XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVGb3JSYW5nZShtb250aHMsIDEsIDEyKTtcbn07XG5cbmNvbnN0IHdlZWtkYXlzQWxpYXMgPSB7XG4gIHN1bjogJzAnLFxuICBtb246ICcxJyxcbiAgdHVlOiAnMicsXG4gIHdlZDogJzMnLFxuICB0aHU6ICc0JyxcbiAgZnJpOiAnNScsXG4gIHNhdDogJzYnLFxufTtcblxuY29uc3QgaGFzVmFsaWRXZWVrZGF5cyA9ICh3ZWVrZGF5cywgYWxpYXMsIGFsbG93QmxhbmtEYXksIGFsbG93U2V2ZW5Bc1N1bmRheSkgPT4ge1xuICAvLyBJZiB0aGVyZSBpcyBhIHF1ZXN0aW9uIG1hcmssIGNoZWNrcyBpZiB0aGUgYWxsb3dCbGFua0RheSBmbGFnIGlzIHNldFxuICBpZiAoYWxsb3dCbGFua0RheSAmJiBpc1F1ZXN0aW9uTWFyayh3ZWVrZGF5cykpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmICghYWxsb3dCbGFua0RheSAmJiBpc1F1ZXN0aW9uTWFyayh3ZWVrZGF5cykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBQcmV2ZW50cyBhbGlhcyB0byBiZSB1c2VkIGFzIHN0ZXBzXG4gIGlmICh3ZWVrZGF5cy5zZWFyY2goL1xcL1thLXpBLVpdLykgIT09IC0xKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGFsaWFzKSB7XG4gICAgY29uc3QgcmVtYXBwZWRXZWVrZGF5cyA9IHdlZWtkYXlzLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW2Etel17M30vZywgKG1hdGNoKSA9PiB7XG4gICAgICByZXR1cm4gd2Vla2RheXNBbGlhc1ttYXRjaF0gPT09IHVuZGVmaW5lZCA/IG1hdGNoIDogd2Vla2RheXNBbGlhc1ttYXRjaF07XG4gICAgfSk7XG4gICAgLy8gSWYgYW55IGludmFsaWQgYWxpYXMgd2FzIHVzZWQsIGl0IHdvbid0IHBhc3MgdGhlIG90aGVyIGNoZWNrcyBhcyB0aGVyZSB3aWxsIGJlIG5vbi1udW1lcmljIHZhbHVlcyBpbiB0aGUgd2Vla2RheXNcbiAgICByZXR1cm4gdmFsaWRhdGVGb3JSYW5nZShyZW1hcHBlZFdlZWtkYXlzLCAwLCBhbGxvd1NldmVuQXNTdW5kYXkgPyA3IDogNik7XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVGb3JSYW5nZSh3ZWVrZGF5cywgMCwgYWxsb3dTZXZlbkFzU3VuZGF5ID8gNyA6IDYpO1xufTtcblxuY29uc3QgaGFzQ29tcGF0aWJsZURheUZvcm1hdCA9IChkYXlzLCB3ZWVrZGF5cywgYWxsb3dCbGFua0RheSkgPT4ge1xuICByZXR1cm4gIShhbGxvd0JsYW5rRGF5ICYmIGlzUXVlc3Rpb25NYXJrKGRheXMpICYmIGlzUXVlc3Rpb25NYXJrKHdlZWtkYXlzKSk7XG59O1xuXG5jb25zdCBzcGxpdCA9IChjcm9uKSA9PiB7XG4gIHJldHVybiBjcm9uLnRyaW0oKS5zcGxpdCgvXFxzKy8pO1xufTtcblxuY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gIGFsaWFzOiBmYWxzZSxcbiAgc2Vjb25kczogZmFsc2UsXG4gIGFsbG93QmxhbmtEYXk6IGZhbHNlLFxuICBhbGxvd1NldmVuQXNTdW5kYXk6IGZhbHNlLFxufTtcblxuZXhwb3J0IGNvbnN0IGlzVmFsaWRDcm9uID0gKGNyb24sIG9wdGlvbnMpID0+IHtcbiAgb3B0aW9ucyA9IHsgLi4uZGVmYXVsdE9wdGlvbnMsIC4uLm9wdGlvbnMgfTtcblxuICBjb25zdCBzcGxpdHMgPSBzcGxpdChjcm9uKTtcblxuICBpZiAoc3BsaXRzLmxlbmd0aCA+IChvcHRpb25zLnNlY29uZHMgPyA2IDogNSkgfHwgc3BsaXRzLmxlbmd0aCA8IDUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBjaGVja3MgPSBbXTtcbiAgaWYgKHNwbGl0cy5sZW5ndGggPT09IDYpIHtcbiAgICBjb25zdCBzZWNvbmRzID0gc3BsaXRzLnNoaWZ0KCk7XG4gICAgaWYgKHNlY29uZHMpIHtcbiAgICAgIGNoZWNrcy5wdXNoKGhhc1ZhbGlkU2Vjb25kcyhzZWNvbmRzKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gV2UgY291bGQgb25seSBjaGVjayB0aGUgc3RlcHMgZ3JhZHVhbGx5IGFuZCByZXR1cm4gZmFsc2Ugb24gdGhlIGZpcnN0IGludmFsaWQgYmxvY2ssXG4gIC8vIEhvd2V2ZXIsIHRoaXMgd29uJ3QgaGF2ZSBhbnkgcGVyZm9ybWFuY2UgaW1wYWN0IHNvIHdoeSBib3RoZXIgZm9yIG5vdy5cbiAgY29uc3QgW21pbnV0ZXMsIGhvdXJzLCBkYXlzLCBtb250aHMsIHdlZWtkYXlzXSA9IHNwbGl0cztcbiAgY2hlY2tzLnB1c2goaGFzVmFsaWRNaW51dGVzKG1pbnV0ZXMpKTtcbiAgY2hlY2tzLnB1c2goaGFzVmFsaWRIb3Vycyhob3VycykpO1xuICBjaGVja3MucHVzaChoYXNWYWxpZERheXMoZGF5cywgb3B0aW9ucy5hbGxvd0JsYW5rRGF5KSk7XG4gIGNoZWNrcy5wdXNoKGhhc1ZhbGlkTW9udGhzKG1vbnRocywgb3B0aW9ucy5hbGlhcykpO1xuICBjaGVja3MucHVzaChoYXNWYWxpZFdlZWtkYXlzKHdlZWtkYXlzLCBvcHRpb25zLmFsaWFzLCBvcHRpb25zLmFsbG93QmxhbmtEYXksIG9wdGlvbnMuYWxsb3dTZXZlbkFzU3VuZGF5KSk7XG4gIGNoZWNrcy5wdXNoKGhhc0NvbXBhdGlibGVEYXlGb3JtYXQoZGF5cywgd2Vla2RheXMsIG9wdGlvbnMuYWxsb3dCbGFua0RheSkpO1xuXG4gIHJldHVybiBjaGVja3MuZXZlcnkoQm9vbGVhbik7XG59O1xuIl19
package/src/lib/date.js CHANGED
@@ -17,37 +17,28 @@ export function isInvalid(date, min, max, noTime = true, disabledDates = []) {
17
17
  if (date) {
18
18
  if (min) {
19
19
  const minDate = new Date(min * 1000);
20
-
21
20
  if (noTime) {
22
21
  minDate.setHours(0, 0);
23
22
  }
24
-
25
23
  minDate.setSeconds(0, 0);
26
-
27
24
  if (date < minDate.getTime() / 1000) {
28
25
  return true;
29
26
  }
30
27
  }
31
-
32
28
  if (max) {
33
29
  const maxDate = new Date(max * 1000);
34
-
35
30
  if (noTime) {
36
31
  maxDate.setHours(23, 59);
37
32
  }
38
-
39
33
  maxDate.setSeconds(59, 59);
40
-
41
34
  if (date > maxDate.getTime() / 1000) {
42
35
  return true;
43
36
  }
44
37
  }
45
38
 
46
- if (disabledDates.findIndex(disabledDay => parseInt(disabledDay, 10) === date) !== -1) {
39
+ if (disabledDates.findIndex((disabledDay) => parseInt(disabledDay, 10) === date) !== -1) {
47
40
  return true;
48
41
  }
49
42
  }
50
-
51
43
  return false;
52
44
  }
53
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL2xpYi9kYXRlLmpzIl0sIm5hbWVzIjpbImlzSW52YWxpZCIsImRhdGUiLCJtaW4iLCJtYXgiLCJub1RpbWUiLCJkaXNhYmxlZERhdGVzIiwibWluRGF0ZSIsIkRhdGUiLCJzZXRIb3VycyIsInNldFNlY29uZHMiLCJnZXRUaW1lIiwibWF4RGF0ZSIsImZpbmRJbmRleCIsImRpc2FibGVkRGF5IiwicGFyc2VJbnQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sU0FBU0EsU0FBVCxDQUFtQkMsSUFBbkIsRUFBeUJDLEdBQXpCLEVBQThCQyxHQUE5QixFQUFtQ0MsTUFBTSxHQUFHLElBQTVDLEVBQWtEQyxhQUFhLEdBQUcsRUFBbEUsRUFBc0U7QUFDM0UsTUFBSUosSUFBSixFQUFVO0FBQ1IsUUFBSUMsR0FBSixFQUFTO0FBQ1AsWUFBTUksT0FBTyxHQUFHLElBQUlDLElBQUosQ0FBU0wsR0FBRyxHQUFHLElBQWYsQ0FBaEI7O0FBQ0EsVUFBSUUsTUFBSixFQUFZO0FBQ1ZFLFFBQUFBLE9BQU8sQ0FBQ0UsUUFBUixDQUFpQixDQUFqQixFQUFvQixDQUFwQjtBQUNEOztBQUNERixNQUFBQSxPQUFPLENBQUNHLFVBQVIsQ0FBbUIsQ0FBbkIsRUFBc0IsQ0FBdEI7O0FBQ0EsVUFBSVIsSUFBSSxHQUFHSyxPQUFPLENBQUNJLE9BQVIsS0FBb0IsSUFBL0IsRUFBcUM7QUFDbkMsZUFBTyxJQUFQO0FBQ0Q7QUFDRjs7QUFDRCxRQUFJUCxHQUFKLEVBQVM7QUFDUCxZQUFNUSxPQUFPLEdBQUcsSUFBSUosSUFBSixDQUFTSixHQUFHLEdBQUcsSUFBZixDQUFoQjs7QUFDQSxVQUFJQyxNQUFKLEVBQVk7QUFDVk8sUUFBQUEsT0FBTyxDQUFDSCxRQUFSLENBQWlCLEVBQWpCLEVBQXFCLEVBQXJCO0FBQ0Q7O0FBQ0RHLE1BQUFBLE9BQU8sQ0FBQ0YsVUFBUixDQUFtQixFQUFuQixFQUF1QixFQUF2Qjs7QUFDQSxVQUFJUixJQUFJLEdBQUdVLE9BQU8sQ0FBQ0QsT0FBUixLQUFvQixJQUEvQixFQUFxQztBQUNuQyxlQUFPLElBQVA7QUFDRDtBQUNGOztBQUVELFFBQUlMLGFBQWEsQ0FBQ08sU0FBZCxDQUF5QkMsV0FBRCxJQUFpQkMsUUFBUSxDQUFDRCxXQUFELEVBQWMsRUFBZCxDQUFSLEtBQThCWixJQUF2RSxNQUFpRixDQUFDLENBQXRGLEVBQXlGO0FBQ3ZGLGFBQU8sSUFBUDtBQUNEO0FBQ0Y7O0FBQ0QsU0FBTyxLQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSW52YWxpZChkYXRlLCBtaW4sIG1heCwgbm9UaW1lID0gdHJ1ZSwgZGlzYWJsZWREYXRlcyA9IFtdKSB7XG4gIGlmIChkYXRlKSB7XG4gICAgaWYgKG1pbikge1xuICAgICAgY29uc3QgbWluRGF0ZSA9IG5ldyBEYXRlKG1pbiAqIDEwMDApO1xuICAgICAgaWYgKG5vVGltZSkge1xuICAgICAgICBtaW5EYXRlLnNldEhvdXJzKDAsIDApO1xuICAgICAgfVxuICAgICAgbWluRGF0ZS5zZXRTZWNvbmRzKDAsIDApO1xuICAgICAgaWYgKGRhdGUgPCBtaW5EYXRlLmdldFRpbWUoKSAvIDEwMDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChtYXgpIHtcbiAgICAgIGNvbnN0IG1heERhdGUgPSBuZXcgRGF0ZShtYXggKiAxMDAwKTtcbiAgICAgIGlmIChub1RpbWUpIHtcbiAgICAgICAgbWF4RGF0ZS5zZXRIb3VycygyMywgNTkpO1xuICAgICAgfVxuICAgICAgbWF4RGF0ZS5zZXRTZWNvbmRzKDU5LCA1OSk7XG4gICAgICBpZiAoZGF0ZSA+IG1heERhdGUuZ2V0VGltZSgpIC8gMTAwMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGlzYWJsZWREYXRlcy5maW5kSW5kZXgoKGRpc2FibGVkRGF5KSA9PiBwYXJzZUludChkaXNhYmxlZERheSwgMTApID09PSBkYXRlKSAhPT0gLTEpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG4iXX0=
package/src/lib/events.js CHANGED
@@ -16,13 +16,11 @@
16
16
  export function dispatchCustomEvent(node, suffix, detail, options = {}) {
17
17
  const eventName = `${node.nodeName.toLocaleLowerCase()}:${suffix}`;
18
18
  /* global CustomEvent */
19
-
20
19
  const event = new CustomEvent(eventName, {
21
20
  detail,
22
21
  bubbles: true,
23
22
  composed: true,
24
- ...options
23
+ ...options,
25
24
  });
26
25
  node.dispatchEvent(event);
27
26
  }
28
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL2xpYi9ldmVudHMuanMiXSwibmFtZXMiOlsiZGlzcGF0Y2hDdXN0b21FdmVudCIsIm5vZGUiLCJzdWZmaXgiLCJkZXRhaWwiLCJvcHRpb25zIiwiZXZlbnROYW1lIiwibm9kZU5hbWUiLCJ0b0xvY2FsZUxvd2VyQ2FzZSIsImV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJidWJibGVzIiwiY29tcG9zZWQiLCJkaXNwYXRjaEV2ZW50Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLFNBQVNBLG1CQUFULENBQTZCQyxJQUE3QixFQUFtQ0MsTUFBbkMsRUFBMkNDLE1BQTNDLEVBQW1EQyxPQUFPLEdBQUcsRUFBN0QsRUFBaUU7QUFDdEUsUUFBTUMsU0FBUyxHQUFJLEdBQUVKLElBQUksQ0FBQ0ssUUFBTCxDQUFjQyxpQkFBZCxFQUFrQyxJQUFHTCxNQUFPLEVBQWpFO0FBQ0E7O0FBQ0EsUUFBTU0sS0FBSyxHQUFHLElBQUlDLFdBQUosQ0FBZ0JKLFNBQWhCLEVBQTJCO0FBQ3ZDRixJQUFBQSxNQUR1QztBQUV2Q08sSUFBQUEsT0FBTyxFQUFFLElBRjhCO0FBR3ZDQyxJQUFBQSxRQUFRLEVBQUUsSUFINkI7QUFJdkMsT0FBR1A7QUFKb0MsR0FBM0IsQ0FBZDtBQU1BSCxFQUFBQSxJQUFJLENBQUNXLGFBQUwsQ0FBbUJKLEtBQW5CO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpc3BhdGNoQ3VzdG9tRXZlbnQobm9kZSwgc3VmZml4LCBkZXRhaWwsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBldmVudE5hbWUgPSBgJHtub2RlLm5vZGVOYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCl9OiR7c3VmZml4fWA7XG4gIC8qIGdsb2JhbCBDdXN0b21FdmVudCAqL1xuICBjb25zdCBldmVudCA9IG5ldyBDdXN0b21FdmVudChldmVudE5hbWUsIHtcbiAgICBkZXRhaWwsXG4gICAgYnViYmxlczogdHJ1ZSxcbiAgICBjb21wb3NlZDogdHJ1ZSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbiAgbm9kZS5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbn1cbiJdfQ==
@@ -22,12 +22,12 @@ export const httpClientSchemaForm = {
22
22
  description: 'HTTP method to invoke the endpoint.',
23
23
  type: 'string',
24
24
  default: 'GET',
25
- enum: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'CONNECT', 'OPTIONS', 'TRACE']
25
+ enum: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'CONNECT', 'OPTIONS', 'TRACE'],
26
26
  },
27
27
  path: {
28
28
  title: 'Path',
29
29
  type: 'string',
30
- default: '/'
30
+ default: '/',
31
31
  },
32
32
  headers: {
33
33
  type: 'array',
@@ -38,15 +38,15 @@ export const httpClientSchemaForm = {
38
38
  properties: {
39
39
  name: {
40
40
  title: 'Name',
41
- type: 'string'
41
+ type: 'string',
42
42
  },
43
43
  value: {
44
44
  title: 'Value',
45
- type: 'string'
46
- }
47
- }
45
+ type: 'string',
46
+ },
47
+ },
48
48
  },
49
- required: ['name', 'value']
49
+ required: ['name', 'value'],
50
50
  },
51
51
  body: {
52
52
  title: 'Request body',
@@ -58,11 +58,10 @@ export const httpClientSchemaForm = {
58
58
  lineWrapping: true,
59
59
  lineNumbers: true,
60
60
  allowDropFileTypes: true,
61
- autoCloseTags: true
62
- }
63
- }
64
- }
61
+ autoCloseTags: true,
62
+ },
63
+ },
64
+ },
65
65
  },
66
- required: ['method', 'path']
66
+ required: ['method', 'path'],
67
67
  };
68
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL2xpYi9odHRwLWNsaWVudC1zY2hlbWEtZm9ybS5qcyJdLCJuYW1lcyI6WyJodHRwQ2xpZW50U2NoZW1hRm9ybSIsInR5cGUiLCJpZCIsInByb3BlcnRpZXMiLCJtZXRob2QiLCJ0aXRsZSIsImRlc2NyaXB0aW9uIiwiZGVmYXVsdCIsImVudW0iLCJwYXRoIiwiaGVhZGVycyIsIml0ZW1zIiwibmFtZSIsInZhbHVlIiwicmVxdWlyZWQiLCJib2R5IiwiY29kZW1pcnJvck9wdGlvbnMiLCJwbGFjZWhvbGRlciIsImxpbmVXcmFwcGluZyIsImxpbmVOdW1iZXJzIiwiYWxsb3dEcm9wRmlsZVR5cGVzIiwiYXV0b0Nsb3NlVGFncyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxNQUFNQSxvQkFBb0IsR0FBRztBQUNsQ0MsRUFBQUEsSUFBSSxFQUFFLFFBRDRCO0FBRWxDQyxFQUFBQSxFQUFFLEVBQUUsd0NBRjhCO0FBR2xDQyxFQUFBQSxVQUFVLEVBQUU7QUFDVkMsSUFBQUEsTUFBTSxFQUFFO0FBQ05DLE1BQUFBLEtBQUssRUFBRSxhQUREO0FBRU5DLE1BQUFBLFdBQVcsRUFBRSxxQ0FGUDtBQUdOTCxNQUFBQSxJQUFJLEVBQUUsUUFIQTtBQUlOTSxNQUFBQSxPQUFPLEVBQUUsS0FKSDtBQUtOQyxNQUFBQSxJQUFJLEVBQUUsQ0FBQyxLQUFELEVBQVEsTUFBUixFQUFnQixLQUFoQixFQUF1QixRQUF2QixFQUFpQyxPQUFqQyxFQUEwQyxNQUExQyxFQUFrRCxTQUFsRCxFQUE2RCxTQUE3RCxFQUF3RSxPQUF4RTtBQUxBLEtBREU7QUFRVkMsSUFBQUEsSUFBSSxFQUFFO0FBQ0pKLE1BQUFBLEtBQUssRUFBRSxNQURIO0FBRUpKLE1BQUFBLElBQUksRUFBRSxRQUZGO0FBR0pNLE1BQUFBLE9BQU8sRUFBRTtBQUhMLEtBUkk7QUFhVkcsSUFBQUEsT0FBTyxFQUFFO0FBQ1BULE1BQUFBLElBQUksRUFBRSxPQURDO0FBRVBJLE1BQUFBLEtBQUssRUFBRSxpQkFGQTtBQUdQTSxNQUFBQSxLQUFLLEVBQUU7QUFDTFYsUUFBQUEsSUFBSSxFQUFFLFFBREQ7QUFFTEksUUFBQUEsS0FBSyxFQUFFLFFBRkY7QUFHTEYsUUFBQUEsVUFBVSxFQUFFO0FBQ1ZTLFVBQUFBLElBQUksRUFBRTtBQUNKUCxZQUFBQSxLQUFLLEVBQUUsTUFESDtBQUVKSixZQUFBQSxJQUFJLEVBQUU7QUFGRixXQURJO0FBS1ZZLFVBQUFBLEtBQUssRUFBRTtBQUNMUixZQUFBQSxLQUFLLEVBQUUsT0FERjtBQUVMSixZQUFBQSxJQUFJLEVBQUU7QUFGRDtBQUxHO0FBSFAsT0FIQTtBQWlCUGEsTUFBQUEsUUFBUSxFQUFFLENBQUMsTUFBRCxFQUFTLE9BQVQ7QUFqQkgsS0FiQztBQWdDVkMsSUFBQUEsSUFBSSxFQUFFO0FBQ0pWLE1BQUFBLEtBQUssRUFBRSxjQURIO0FBRUpKLE1BQUFBLElBQUksRUFBRSxRQUZGO0FBR0osdUJBQWlCO0FBQ2ZBLFFBQUFBLElBQUksRUFBRSxZQURTO0FBRWZlLFFBQUFBLGlCQUFpQixFQUFFO0FBQ2pCQyxVQUFBQSxXQUFXLEVBQUUsdUJBREk7QUFFakJDLFVBQUFBLFlBQVksRUFBRSxJQUZHO0FBR2pCQyxVQUFBQSxXQUFXLEVBQUUsSUFISTtBQUlqQkMsVUFBQUEsa0JBQWtCLEVBQUUsSUFKSDtBQUtqQkMsVUFBQUEsYUFBYSxFQUFFO0FBTEU7QUFGSjtBQUhiO0FBaENJLEdBSHNCO0FBa0RsQ1AsRUFBQUEsUUFBUSxFQUFFLENBQUMsUUFBRCxFQUFXLE1BQVg7QUFsRHdCLENBQTdCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAyMSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmV4cG9ydCBjb25zdCBodHRwQ2xpZW50U2NoZW1hRm9ybSA9IHtcbiAgdHlwZTogJ29iamVjdCcsXG4gIGlkOiAndXJuOmpzb25zY2hlbWE6aW86Z3Jhdml0ZWU6aHR0cDpjbGllbnQnLFxuICBwcm9wZXJ0aWVzOiB7XG4gICAgbWV0aG9kOiB7XG4gICAgICB0aXRsZTogJ0hUVFAgTWV0aG9kJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnSFRUUCBtZXRob2QgdG8gaW52b2tlIHRoZSBlbmRwb2ludC4nLFxuICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICBkZWZhdWx0OiAnR0VUJyxcbiAgICAgIGVudW06IFsnR0VUJywgJ1BPU1QnLCAnUFVUJywgJ0RFTEVURScsICdQQVRDSCcsICdIRUFEJywgJ0NPTk5FQ1QnLCAnT1BUSU9OUycsICdUUkFDRSddLFxuICAgIH0sXG4gICAgcGF0aDoge1xuICAgICAgdGl0bGU6ICdQYXRoJyxcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgZGVmYXVsdDogJy8nLFxuICAgIH0sXG4gICAgaGVhZGVyczoge1xuICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgIHRpdGxlOiAnUmVxdWVzdCBIZWFkZXJzJyxcbiAgICAgIGl0ZW1zOiB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICB0aXRsZTogJ0hlYWRlcicsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgICB0aXRsZTogJ05hbWUnLFxuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgdGl0bGU6ICdWYWx1ZScsXG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHJlcXVpcmVkOiBbJ25hbWUnLCAndmFsdWUnXSxcbiAgICB9LFxuICAgIGJvZHk6IHtcbiAgICAgIHRpdGxlOiAnUmVxdWVzdCBib2R5JyxcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgJ3gtc2NoZW1hLWZvcm0nOiB7XG4gICAgICAgIHR5cGU6ICdjb2RlbWlycm9yJyxcbiAgICAgICAgY29kZW1pcnJvck9wdGlvbnM6IHtcbiAgICAgICAgICBwbGFjZWhvbGRlcjogJ1B1dCByZXF1ZXN0IGJvZHkgaGVyZScsXG4gICAgICAgICAgbGluZVdyYXBwaW5nOiB0cnVlLFxuICAgICAgICAgIGxpbmVOdW1iZXJzOiB0cnVlLFxuICAgICAgICAgIGFsbG93RHJvcEZpbGVUeXBlczogdHJ1ZSxcbiAgICAgICAgICBhdXRvQ2xvc2VUYWdzOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICByZXF1aXJlZDogWydtZXRob2QnLCAncGF0aCddLFxufTtcbiJdfQ==