@openziti/ziti-console-lib 0.7.0 → 0.8.0

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 (89) hide show
  1. package/assets/fonts/icomoon.eot +0 -0
  2. package/assets/fonts/icomoon.svg +118 -0
  3. package/assets/fonts/icomoon.ttf +0 -0
  4. package/assets/fonts/icomoon.woff +0 -0
  5. package/assets/fonts/icomoon.woff2 +0 -0
  6. package/assets/styles/dark.css +10 -0
  7. package/assets/styles/global.scss +182 -9
  8. package/assets/styles/icons.css +13 -0
  9. package/assets/styles/ziti.css +8 -2
  10. package/esm2022/lib/features/creation-summary-dialog/creation-summary-dialog.component.mjs +1 -1
  11. package/esm2022/lib/features/dynamic-widgets/password/password-input.component.mjs +9 -7
  12. package/esm2022/lib/features/dynamic-widgets/string/string-input.component.mjs +9 -7
  13. package/esm2022/lib/features/messaging/growler.component.mjs +2 -2
  14. package/esm2022/lib/features/preview-selections/preview-selections.component.mjs +1 -1
  15. package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.component.mjs +3 -3
  16. package/esm2022/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.mjs +403 -0
  17. package/esm2022/lib/features/projectable-forms/certificate-authority/certificate-authority-form.service.mjs +108 -0
  18. package/esm2022/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.mjs +222 -0
  19. package/esm2022/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.service.mjs +55 -0
  20. package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +1 -1
  21. package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +1 -1
  22. package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.mjs +1 -1
  23. package/esm2022/lib/features/projectable-forms/form-field-container/form-field-container.component.mjs +24 -3
  24. package/esm2022/lib/features/projectable-forms/form-header/form-header.component.mjs +15 -3
  25. package/esm2022/lib/features/projectable-forms/identity/identity-form.component.mjs +1 -1
  26. package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.mjs +1 -1
  27. package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +1 -1
  28. package/esm2022/lib/features/projectable-forms/service/simple-service/simple-service.component.mjs +1 -1
  29. package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.mjs +1 -1
  30. package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.component.mjs +1 -1
  31. package/esm2022/lib/features/projectable-forms/terminator/terminator-form.component.mjs +1 -1
  32. package/esm2022/lib/features/sidebars/side-banner/side-banner.component.mjs +2 -2
  33. package/esm2022/lib/features/sidebars/side-toolbar/side-toolbar.component.mjs +2 -2
  34. package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.component.mjs +13 -9
  35. package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.helper.mjs +6 -6
  36. package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.treenodeprocessor.mjs +12 -12
  37. package/esm2022/lib/models/certificate-authority.mjs +16 -0
  38. package/esm2022/lib/pages/auth-policies/auth-policies-page.component.mjs +3 -3
  39. package/esm2022/lib/pages/certificate-authorities/certificate-authorities-page.component.mjs +120 -0
  40. package/esm2022/lib/pages/certificate-authorities/certificate-authorities-page.service.mjs +237 -0
  41. package/esm2022/lib/pages/configurations/configurations-page.component.mjs +36 -3
  42. package/esm2022/lib/services/validation.service.mjs +3 -12
  43. package/esm2022/lib/services/ziti-controller-data.service.mjs +23 -5
  44. package/esm2022/lib/services/ziti-data.service.mjs +20 -1
  45. package/esm2022/lib/shared/list-page-component.class.mjs +1 -1
  46. package/esm2022/lib/shared/list-page-service.class.mjs +22 -1
  47. package/esm2022/lib/version.mjs +2 -2
  48. package/esm2022/lib/ziti-console-lib.module.mjs +12 -3
  49. package/esm2022/public-api.mjs +6 -1
  50. package/fesm2022/openziti-ziti-console-lib.mjs +1409 -219
  51. package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
  52. package/lib/features/dynamic-widgets/password/password-input.component.d.ts +2 -0
  53. package/lib/features/dynamic-widgets/password/password-input.component.d.ts.map +1 -1
  54. package/lib/features/dynamic-widgets/string/string-input.component.d.ts +2 -0
  55. package/lib/features/dynamic-widgets/string/string-input.component.d.ts.map +1 -1
  56. package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.d.ts +81 -0
  57. package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.d.ts.map +1 -0
  58. package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.service.d.ts +37 -0
  59. package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.service.d.ts.map +1 -0
  60. package/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.d.ts +63 -0
  61. package/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.d.ts.map +1 -0
  62. package/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.service.d.ts +28 -0
  63. package/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.service.d.ts.map +1 -0
  64. package/lib/features/projectable-forms/form-field-container/form-field-container.component.d.ts +5 -1
  65. package/lib/features/projectable-forms/form-field-container/form-field-container.component.d.ts.map +1 -1
  66. package/lib/features/projectable-forms/form-header/form-header.component.d.ts +5 -1
  67. package/lib/features/projectable-forms/form-header/form-header.component.d.ts.map +1 -1
  68. package/lib/features/visualizer/network-visualizer/network-visualizer.component.d.ts.map +1 -1
  69. package/lib/models/certificate-authority.d.ts +14 -0
  70. package/lib/models/certificate-authority.d.ts.map +1 -0
  71. package/lib/pages/certificate-authorities/certificate-authorities-page.component.d.ts +30 -0
  72. package/lib/pages/certificate-authorities/certificate-authorities-page.component.d.ts.map +1 -0
  73. package/lib/pages/certificate-authorities/certificate-authorities-page.service.d.ts +35 -0
  74. package/lib/pages/certificate-authorities/certificate-authorities-page.service.d.ts.map +1 -0
  75. package/lib/pages/configurations/configurations-page.component.d.ts +1 -0
  76. package/lib/pages/configurations/configurations-page.component.d.ts.map +1 -1
  77. package/lib/services/validation.service.d.ts.map +1 -1
  78. package/lib/services/ziti-controller-data.service.d.ts +2 -2
  79. package/lib/services/ziti-controller-data.service.d.ts.map +1 -1
  80. package/lib/services/ziti-data.service.d.ts +3 -2
  81. package/lib/services/ziti-data.service.d.ts.map +1 -1
  82. package/lib/shared/list-page-component.class.d.ts.map +1 -1
  83. package/lib/shared/list-page-service.class.d.ts +2 -0
  84. package/lib/shared/list-page-service.class.d.ts.map +1 -1
  85. package/lib/ziti-console-lib.module.d.ts +21 -18
  86. package/lib/ziti-console-lib.module.d.ts.map +1 -1
  87. package/package.json +1 -1
  88. package/public-api.d.ts +5 -0
  89. package/public-api.d.ts.map +1 -1
@@ -1,3 +1,5 @@
1
+ @import 'node_modules/vanilla-jsoneditor/themes/jse-theme-dark.css';
2
+
1
3
  body {
2
4
  --highlighted: #f5a93d;
3
5
  --red: #ff104b;
@@ -27,29 +29,35 @@ body {
27
29
  --formBase: #919ca5;
28
30
  --formGroup: #232f3e;
29
31
  --formSubGroup: #707985;
32
+
30
33
  --buttonHeightSmall: 1.5625rem;
31
34
  --buttonImageSizeSmall: 1.25rem;
32
35
  --buttonImagePaddingSmall: 2.1875rem;
33
36
  --buttonImagePositionSmall: left calc(var(--paddingSmall) + 0.1875rem) center;
34
37
  --modalBorderRadius: 0.9375rem;
38
+
35
39
  --paddingSmall: 0.3125rem;
36
40
  --paddingMedium: 0.625rem;
37
41
  --paddingLarge: 0.625rem;
38
42
  --paddingXL: 0.9375rem;
39
43
  --paddingXXL: 1.25rem;
44
+
40
45
  --marginSmall: 0.3125rem;
41
46
  --marginMedium: 0.625rem;
42
47
  --marginLarge: 0.625rem;
43
48
  --marginXL: 0.9375rem;
44
49
  --marginXXL: 1.25rem;
50
+
45
51
  --gapSmall: 0.3125rem;
46
52
  --gapMedium: 0.625rem;
47
53
  --gapLarge: 0.625rem;
48
54
  --gapXL: 0.9375rem;
55
+
49
56
  --defaultInputHeight: 2.6875rem;
50
57
  --defaultLineHeight: 0.9375rem;
51
58
  --inputBorderRadius: 0.4375rem;
52
59
  --inputBorderWidth: 0.125rem;
60
+
53
61
  --spinnerSizeMedium: 1.25rem;
54
62
  --spinerBorderTopMedium: 0.125rem solid var(--stroke);
55
63
  --spinerBorderRightMedium: 0.125rem solid var(--stroke);
@@ -96,7 +104,7 @@ input {
96
104
  }
97
105
 
98
106
  .cell-name-renderer strong {
99
- color: var(--menu);
107
+ color: var(--tableText);
100
108
  }
101
109
 
102
110
  .mat-mdc-dialog-surface {
@@ -150,6 +158,10 @@ input {
150
158
  }
151
159
  }
152
160
 
161
+ .ag-overlay-no-rows-center {
162
+ color: var(--tableText);
163
+ }
164
+
153
165
  .header-text-container.text-input-filter {
154
166
  font-size: 0.875rem;
155
167
  font-weight: 600;
@@ -637,6 +649,15 @@ lib-form-field-container {
637
649
  background-color: var(--navigation);
638
650
  }
639
651
  }
652
+
653
+ a {
654
+ &.download-button {
655
+ &:hover {
656
+ color: var(--white)
657
+ }
658
+ }
659
+ }
660
+
640
661
  .download-button {
641
662
  display: flex;
642
663
  flex-direction: row;
@@ -644,7 +665,7 @@ lib-form-field-container {
644
665
  justify-content: space-between;
645
666
  width: 100%;
646
667
  background-color: var(--primaryColor);
647
- color: var(--background);
668
+ color: var(--white);
648
669
  text-transform: uppercase;
649
670
  font-size: 0.875rem;
650
671
  font-weight: 600;
@@ -658,6 +679,7 @@ lib-form-field-container {
658
679
  outline: 0;
659
680
  filter: brightness(90%);
660
681
  box-shadow: 0 0.125rem 0.1875rem 0 var(--primaryColorOpaque);
682
+ color: var(--white);
661
683
  }
662
684
 
663
685
  &:active {
@@ -681,8 +703,8 @@ lib-form-field-container {
681
703
  z-index: 10;
682
704
  }
683
705
 
706
+ .verify-certificate,
684
707
  .tap-to-download {
685
- font-family: zac!important;
686
708
  speak: none;
687
709
  font-style: normal;
688
710
  font-weight: 400;
@@ -695,10 +717,21 @@ lib-form-field-container {
695
717
  -moz-osx-font-smoothing: grayscale;
696
718
  position: relative;
697
719
  width: 2.8125rem;
698
- margin-right: 0.625rem;
699
720
  background-size: contain;
700
721
  background-repeat: no-repeat;
722
+ }
723
+
724
+ .verify-certificate {
725
+ font-family: icomoon !important;
726
+ margin-left: var(--marginMedium);
727
+ &:before {
728
+ content: "\e958";
729
+ }
730
+ }
701
731
 
732
+ .tap-to-download {
733
+ font-family: zac !important;
734
+ margin-right: var(--marginMedium);
702
735
  &:before {
703
736
  content: "\e92d";
704
737
  }
@@ -1024,6 +1057,18 @@ lib-tag-selector {
1024
1057
  transition: 0.5s;
1025
1058
  left: 0;
1026
1059
 
1060
+ &.form-toggle-switch-inverse {
1061
+ .form-toggle-indicator {
1062
+ border-color: var(--red);
1063
+ }
1064
+
1065
+ &.toggle-right {
1066
+ .form-toggle-indicator {
1067
+ border-color: var(--green);
1068
+ }
1069
+ }
1070
+ }
1071
+
1027
1072
  &.toggle-right {
1028
1073
  left: 0.625rem;
1029
1074
 
@@ -1085,6 +1130,11 @@ lib-tag-selector {
1085
1130
  .form-field-title {
1086
1131
  color: var(--offWhite);
1087
1132
  }
1133
+
1134
+ &.disabled {
1135
+ opacity: .8;
1136
+ pointer-events: none;
1137
+ }
1088
1138
  }
1089
1139
 
1090
1140
  .loginForm {
@@ -1122,7 +1172,7 @@ lib-tag-selector {
1122
1172
  input,
1123
1173
  select {
1124
1174
  &:not(.checkbox) {
1125
- height: 2.3rem !important;
1175
+ height: 2.375rem !important;
1126
1176
  padding: 0 0.4375rem;
1127
1177
  border-width: 0.0625rem;
1128
1178
  border-radius: .3rem;
@@ -1136,7 +1186,8 @@ lib-tag-selector {
1136
1186
  .p-chips-multiple-container {
1137
1187
  padding-left: 0.3125rem;
1138
1188
  overflow-y: auto;
1139
- max-height: 4.6rem;
1189
+ max-height: calc(2.375rem* 2 + var(--paddingXL));
1190
+ min-height: 2.375rem;
1140
1191
  height: fit-content;
1141
1192
  gap: .3rem;
1142
1193
  border-width: 0.0625rem;
@@ -1160,6 +1211,18 @@ lib-tag-selector {
1160
1211
 
1161
1212
  .p-chips-token {
1162
1213
  margin: 0;
1214
+ margin-right: 0.3rem;
1215
+ margin-bottom: 0.3rem;
1216
+ }
1217
+ }
1218
+ }
1219
+ .p-chips {
1220
+ &.p-component {
1221
+ .p-inputtext {
1222
+ &.p-chips-multiple-container {
1223
+ max-height: unset;
1224
+ padding-top: .3rem;
1225
+ }
1163
1226
  }
1164
1227
  }
1165
1228
  }
@@ -1300,8 +1363,9 @@ p-dropdown {
1300
1363
  .p-chips.p-component {
1301
1364
  width: 100%;
1302
1365
  font-weight: 400;
1303
- font-family: 'Open Sans', Arial, sans-serif;
1304
- height: var(--defaultInputHeight);
1366
+ font-family: "Open Sans", Arial, sans-serif;
1367
+ min-height: var(--defaultInputHeight);
1368
+ max-height: calc(var(--defaultInputHeight)* 2 + var(--paddingMedium));
1305
1369
  border-color: var(--stroke);
1306
1370
  border-style: solid;
1307
1371
  border-width: var(--inputBorderWidth);
@@ -1314,12 +1378,15 @@ p-dropdown {
1314
1378
  background-color: var(--navigation) !important;
1315
1379
  color: var(--text);
1316
1380
  -webkit-appearance: none;
1381
+ overflow: auto;
1317
1382
 
1318
1383
  .p-inputtext.p-chips-multiple-container {
1319
1384
  width: 100%;
1320
1385
  padding: 0;
1321
1386
  border-width: var(--inputBorderWidth);
1387
+ background-color: var(--navigation);
1322
1388
  height: fit-content;
1389
+ gap: 0;
1323
1390
 
1324
1391
  &.p-focus {
1325
1392
  border-color: var(--primaryColor) !important;
@@ -1353,7 +1420,7 @@ p-dropdown {
1353
1420
  margin-top: 0.3125rem;
1354
1421
  margin-bottom: 0.3125rem;
1355
1422
  background: var(--primary);
1356
- color: var(--white);
1423
+ color: var(--tableText);
1357
1424
  border-radius: var(--inputBorderRadius);
1358
1425
  cursor: default;
1359
1426
  display: inline-flex;
@@ -1509,3 +1576,109 @@ p-dropdown {
1509
1576
  border: none;
1510
1577
  }
1511
1578
  }
1579
+
1580
+ .radio-group-container {
1581
+ display: flex;
1582
+ gap: var(--marginLarge);
1583
+
1584
+ &:focus {
1585
+ .radio-button-container {
1586
+ .radio-button-circle {
1587
+ border-color: var(--primaryColor);
1588
+ }
1589
+ }
1590
+ }
1591
+
1592
+ .radio-button-container {
1593
+ display: flex;
1594
+ flex-direction: row;
1595
+ align-items: center;
1596
+ background-color: var(--formGroup);
1597
+ border-radius: var(--inputBorderRadius);
1598
+ width: 100%;
1599
+ padding-left: var(--paddingMedium);
1600
+ padding-right: var(--paddingMedium);
1601
+ padding-top: var(--paddingLarge);
1602
+ padding-bottom: var(--paddingLarge);
1603
+ cursor: pointer;
1604
+ gap: var(--marginMedium);
1605
+
1606
+ .radio-button-circle {
1607
+ display: flex;
1608
+ width: 1.3125rem;
1609
+ height: 1.3125rem;
1610
+ border-radius: 1.3125rem;
1611
+ border-width: 0.125rem;
1612
+ border-style: solid;
1613
+ border-color: var(--offWhite);
1614
+ align-items: center;
1615
+ justify-content: center;
1616
+ background-color: var(--offWhite);
1617
+
1618
+ .radio-button-inner-circle {
1619
+ display: none;
1620
+ width: 0.9375rem;
1621
+ height: 0.9375rem;
1622
+ border-radius: 0.9375rem;
1623
+ align-items: center;
1624
+ justify-content: center;
1625
+ background-color: var(--primaryColor);
1626
+ }
1627
+ }
1628
+
1629
+ &.selected {
1630
+ .radio-button-circle {
1631
+ .radio-button-inner-circle {
1632
+ display: flex;
1633
+ }
1634
+ }
1635
+ }
1636
+
1637
+ &:active {
1638
+ .radio-button-circle {
1639
+ .radio-button-inner-circle {
1640
+ display: flex;
1641
+ background-color: var(--menu);
1642
+ }
1643
+ }
1644
+ }
1645
+
1646
+ .radio-button-label {
1647
+ color: var(--offWhite);
1648
+ font-size: 0.875rem;
1649
+ font-weight: 600;
1650
+ }
1651
+ }
1652
+ }
1653
+
1654
+ .api-data-no-wrap{
1655
+ .jse-text-mode {
1656
+ width: 100%;
1657
+ .cm-editor {
1658
+ width: 100%;
1659
+ .cm-scroller {
1660
+ width: 100%;
1661
+ .cm-content {
1662
+ width: 100%;
1663
+ overflow: auto;
1664
+ .ͼr {
1665
+ white-space: nowrap;
1666
+ }
1667
+ }
1668
+ }
1669
+ }
1670
+ }
1671
+ }
1672
+
1673
+ .copy-icon {
1674
+ background-image: url(/assets/svgs/copy.svg);
1675
+ background-size: 1.125rem;
1676
+ background-repeat: no-repeat;
1677
+ height: 1.25rem;
1678
+ width: 1.25rem;
1679
+ margin-left: var(--marginSmall);;
1680
+ }
1681
+
1682
+ .error-text {
1683
+ color: var(--red);
1684
+ }
@@ -11,6 +11,19 @@
11
11
  font-display: block;
12
12
  }
13
13
 
14
+ @font-face {
15
+ font-family: 'icomoon';
16
+ src: url('../fonts/icomoon.eot?l2gtmj');
17
+ src: url('../fonts/icomoon.eot?l2gtmj#iefix') format('embedded-opentype'),
18
+ url('../fonts/icomoon.woff2?l2gtmj') format('woff2'),
19
+ url('../fonts/icomoon.ttf?l2gtmj') format('truetype'),
20
+ url('../fonts/icomoon.woff?l2gtmj') format('woff'),
21
+ url('../fonts/icomoon.svg?l2gtmj#icomoon') format('svg');
22
+ font-weight: normal;
23
+ font-style: normal;
24
+ font-display: block;
25
+ }
26
+
14
27
  [class^="icon-"], [class*=" icon-"] {
15
28
  /* use !important to prevent issues with browser extensions that change fonts */
16
29
  font-family: 'zac' !important;
@@ -26,25 +26,31 @@ body {
26
26
  --formBase: #919ca5;
27
27
  --formGroup: #232f3e;
28
28
  --formSubGroup: #707985;
29
+
29
30
  --modalBorderRadius: 0.9375rem;
31
+
30
32
  --paddingSmall: 0.3125rem;
31
33
  --paddingMedium: 0.625rem;
32
34
  --paddingLarge: 0.625rem;
33
35
  --paddingXL: 0.9375rem;
34
36
  --paddingXXL: 1.25rem;
37
+
35
38
  --marginSmall: 0.3125rem;
36
39
  --marginMedium: 0.625rem;
37
40
  --marginLarge: 0.625rem;
38
41
  --marginXL: 0.9375rem;
39
42
  --marginXXL: 1.25rem;
43
+
40
44
  --gapSmall: 0.3125rem;
41
45
  --gapMedium: 0.625rem;
42
46
  --gapLarge: 0.625rem;
43
47
  --gapXL: 0.9375rem;
48
+
44
49
  --defaultInputHeight: 2.6875rem;
45
50
  --defaultLineHeight: 0.9375rem;
46
51
  --inputBorderRadius: 0.4375rem;
47
52
  --inputBorderWidth: 0.125rem;
53
+
48
54
  --spinnerSizeMedium: 1.25rem;
49
55
  --spinerBorderTopMedium: 0.125rem solid var(--stroke);
50
56
  --spinerBorderRightMedium: 0.125rem solid var(--stroke);
@@ -122,7 +128,7 @@ body {
122
128
  }
123
129
 
124
130
  a {
125
- color: var(--menu);
131
+ color: var(--tableText);
126
132
  font-weight: bold;
127
133
  transition: var(--transition);
128
134
  }
@@ -590,7 +596,7 @@ aside .icon {
590
596
  font-size: 1.5rem;
591
597
  line-height: 26.875rem;
592
598
  margin-top: 4.6875rem;
593
- color: var(--menu);
599
+ color: var(--tableText);
594
600
  }
595
601
 
596
602
  .data {
@@ -79,7 +79,7 @@ class CreationSummaryDialogComponent {
79
79
  this.dialogRef.close('new');
80
80
  }
81
81
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CreationSummaryDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.GrowlerService }], target: i0.ɵɵFactoryTarget.Component }); }
82
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CreationSummaryDialogComponent, selector: "lib-creation-summary-dialog", ngImport: i0, template: "<div class=\"creation-summary-dialog-container\">\n <div class=\"close icon-close\" (click)=\"close()\"></div>\n <div class=\"title-row\">\n <span class=\"title\">Execution Summary</span>\n <span class=\"subtitle\">The following entities were created for this service</span>\n </div>\n <lib-form-field-container [showHeader]=\"false\">\n <div class=\"copy-links-container\">\n <span class=\"copy-links-title\">\n <span class=\"title\">Entities</span>\n <span class=\"subtitle\" *ngIf=\"hasCreationError\">One or more of the following resources failed to create. See below for more details and/or retry.</span>\n </span>\n </div>\n <div class=\"form-group-row exec-operations-group\">\n <div class=\"summary-groups-container\">\n <div class=\"summary-group\" *ngFor=\"let group of summaryData\">\n <div class=\"summary-group-title\">{{group.title}}</div>\n <ul>\n <li\n *ngFor=\"let entity of group.entities\"\n (click)=\"selectZitiEntity(entity.name, 'all')\"\n [ngClass]=\"{selected: selectedEntityType === 'all'}\"\n class=\"entity-item drop-target-svc\"\n >\n <span class=\"spinner\" *ngIf=\"entity.status === 'loading'\"></span>\n <input type=\"checkbox\" [disabled]=\"true\" [checked]=\"true\" class=\"success-check\" *ngIf=\"entity.status === 'done'\">\n <div class=\"retry\" *ngIf=\"entity.status === 'error'\" (click)=\"doRetry(entity)\"></div>\n <div class=\"icon-clear\" *ngIf=\"entity.status === 'error'\"></div>\n <span class=\"entity-name\" matTooltipShowDelay=\"1000\">\n {{ entity.name.length > 0 ? entity.name : 'SimpleService' }}\n </span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </lib-form-field-container>\n <lib-form-field-container [showHeader]=\"false\" style=\"margin-top: 10px;\">\n <div class=\"copy-links-container\">\n <div class=\"copy-links-title\">\n <div class=\"title-container\">\n <span class=\"title\">Copy Links</span>\n <div class=\"copy-icon\"></div>\n </div>\n </div>\n <div class=\"copy-links\">\n <div class=\"link-button\" (click)=\"copyCliCommands()\">CLI Commands</div>\n <div class=\"link-button\" (click)=\"copyAPIRequests()\">API Requests</div>\n </div>\n </div>\n </lib-form-field-container>\n\n <div class=\"confirm-buttons-container\">\n <button class=\"button save alert\" (click)=\"done()\">Done</button>\n <button class=\"button save cancel\" (click)=\"confirm()\">Create another</button>\n </div>\n</div>", styles: [".creation-summary-dialog-container{background-color:var(--formBackground);min-width:29.6875rem;border-radius:var(--modalBorderRadius);padding:var(--paddingXXL)}.creation-summary-dialog-container .title-row{display:flex;align-items:center;flex-direction:column;margin-bottom:var(--marginLarge)}.creation-summary-dialog-container .subtitle{color:var(--text)}.creation-summary-dialog-container .close{font-size:1.5625rem;top:.9375rem;right:.9375rem;width:2.1875rem;font-weight:600}.resource-type-container{display:flex;flex-direction:column;padding-left:var(--paddingLarge);padding-right:var(--paddingLarge)}.resource-type-container.disabled{opacity:.5}.resource-type-container.disabled select{cursor:not-allowed}.resource-type-container .resource-type-content{margin-top:1.25rem;flex-wrap:wrap}.entity-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:-moz-fit-content;width:fit-content}.summary-group ul{padding-inline-start:0rem;margin-block-start:var(--marginSmall);max-height:40.625rem;overflow:auto;overflow-x:hidden}.summary-group .entity-item{display:flex;align-items:center;gap:.3125rem;font-weight:600;font-size:1rem;padding-top:.1875rem;padding-bottom:.1875rem;position:relative;cursor:pointer;border-left-width:.3125rem;border-left-color:transparent;border-left-style:solid}.summary-group .entity-item:hover{background-color:#2196f31a;border-left-width:.3125rem;border-left-color:var(--primaryColor)}.summary-group .entity-item[hidden]{display:none}.summary-group .entity-item.no-results{font-weight:400}.summary-group .entity-item.no-results:hover{background-color:transparent;border-left-color:transparent;cursor:default}.summary-groups-container{overflow:auto;height:100%;width:100%;max-width:18.75rem;display:flex;position:relative;flex-direction:column}.summary-group-title{margin-left:0;color:var(--primaryColor);font-weight:700;font-size:.9375rem;filter:brightness(65%);text-transform:uppercase}.exec-operations-group{padding:0}.confirm-buttons-container{display:flex;justify-content:space-between;align-items:center;flex-direction:row;width:100%;padding-top:var(--paddingMedium)}.confirm-buttons-container .linkButton{position:absolute;left:1.5625rem;color:var(--subText);font-weight:600}.confirm-buttons-container .button{text-align:center;line-height:normal}button{width:6.25rem;height:2.5rem;color:var(--white);display:flex;align-items:center;justify-content:center}button.confirm{background-color:var(--secondary)}button.cancel{background-color:var(--primary)}.spinner{right:1em;top:1em;display:inline-block;width:1rem;height:1rem;border-radius:50%;background:transparent;border-top:.125rem solid var(--placeholder);border-right:.125rem solid var(--placeholder);border-bottom:.125rem solid transparent;border-left:.125rem solid transparent;animation:loading .5s infinite linear}.config-check,.success-check{width:1.0625rem;height:1.0625rem;cursor:pointer;background-color:var(--navigation);margin:0;margin-top:.25rem}.config-check:checked,.success-check:checked{background-color:var(--green)!important;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAYCAYAAAD+vg1LAAABdElEQVRIia3UPWsUURSH8f9GRRvtFKtIgoKggo2CYO0XsLKzsbARbNKJYGPndxEEO8VGRRvBF6xFBAkplPiyb/lZzAx7d9jE3ewcmOLOPTyc85x7bw/pKI4keZ7kUpIHQVffIwxU0e91VPHlJK+T9Or19y7Ah5N8TLJeg3eSXO9CwcNCwQCPkWWhFzE2iZ84viz4ED4X4DFuNPvLgO8XCoZ4Wu7vF3oeo0LBL5xcFnwA7wsFI9xs5+0HvFG33ih4NitvUejZAgp/sLoseAVvC7dD3NotfxHw3ZaCl+jtBT6qOn+n94CuoV8o+Fv/27WQ4E3dXh9XZyT18Kql4M7/OozJsdnBb1xoJd0uFIxqzyvzgJ+Y3KAxtrBeJ6yqJt/EEGfmmUlwDB9aVX3FCbwwPbCNeaANOKoX6UvL41axHuOd6tYtBA5OYdP0a9XECOfmhbbBUT0u26pBNjHAvUWgs8DBFdPD/ISDXYCDa/iBb3UXC0GRf9rA4qSLGyBIAAAAAElFTkSuQmCC);background-size:45%;background-position:center center;background-repeat:no-repeat;border:none}.config-check:checked:disabled,.success-check:checked:disabled{opacity:1!important}.success-check{border-radius:100%;top:.8125rem;left:.625rem;transition:var(--transition);border:.125rem var(--offWhite) solid}.config-check{border-radius:0}.config-check:checked{background-size:.625rem}.icon-clear{color:var(--red);margin-top:.25rem}.retry{background-image:url(/assets/svgs/refresh.svg);background-size:1.125rem;background-repeat:no-repeat;height:1.125rem;width:1.125rem;margin-left:.3125rem}.copy-links-container{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:var(--gapMedium)}.copy-links-container .copy-links-title{display:flex;flex-direction:column;align-items:center;justify-content:center;max-width:23.4375rem}.copy-links-container .copy-links-title .title-container{display:flex}.copy-links-container .copy-links-title .title{font-size:1.25rem;line-height:1.25rem}.copy-links-container .copy-links-title .subtitle{display:flex;align-items:center;justify-content:center;text-align:center;color:var(--red)}.copy-links-container .copy-links-title .copy-icon{background-image:url(/assets/svgs/copy.svg);background-size:1.125rem;background-repeat:no-repeat;height:1.25rem;width:1.25rem;margin-left:.4375rem}.copy-links-container .copy-links{display:flex;flex-direction:row;justify-content:space-around;align-items:center;padding:var(--paddingMedium);width:100%}.copy-links-container .copy-links .link-button{color:var(--subText);font-size:1rem;font-weight:600;cursor:pointer}.copy-links-container .copy-links .link-button:hover{text-decoration:underline}.visibility-config-container{display:flex;flex-direction:row;align-items:center;width:100%;justify-content:flex-start;gap:.3125rem;margin-top:var(--marginMedium)}::ng-deep .creation-summary-dialog-container .form-field-content{gap:0!important}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.FormFieldContainerComponent, selector: "lib-form-field-container", inputs: ["title", "title2", "titleIcon", "layout", "helpText", "helpText2", "label", "count", "action", "actionLabel", "class", "contentStyle", "showHeader", "headerActions"], outputs: ["actionRequested"] }] }); }
82
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CreationSummaryDialogComponent, selector: "lib-creation-summary-dialog", ngImport: i0, template: "<div class=\"creation-summary-dialog-container\">\n <div class=\"close icon-close\" (click)=\"close()\"></div>\n <div class=\"title-row\">\n <span class=\"title\">Execution Summary</span>\n <span class=\"subtitle\">The following entities were created for this service</span>\n </div>\n <lib-form-field-container [showHeader]=\"false\">\n <div class=\"copy-links-container\">\n <span class=\"copy-links-title\">\n <span class=\"title\">Entities</span>\n <span class=\"subtitle\" *ngIf=\"hasCreationError\">One or more of the following resources failed to create. See below for more details and/or retry.</span>\n </span>\n </div>\n <div class=\"form-group-row exec-operations-group\">\n <div class=\"summary-groups-container\">\n <div class=\"summary-group\" *ngFor=\"let group of summaryData\">\n <div class=\"summary-group-title\">{{group.title}}</div>\n <ul>\n <li\n *ngFor=\"let entity of group.entities\"\n (click)=\"selectZitiEntity(entity.name, 'all')\"\n [ngClass]=\"{selected: selectedEntityType === 'all'}\"\n class=\"entity-item drop-target-svc\"\n >\n <span class=\"spinner\" *ngIf=\"entity.status === 'loading'\"></span>\n <input type=\"checkbox\" [disabled]=\"true\" [checked]=\"true\" class=\"success-check\" *ngIf=\"entity.status === 'done'\">\n <div class=\"retry\" *ngIf=\"entity.status === 'error'\" (click)=\"doRetry(entity)\"></div>\n <div class=\"icon-clear\" *ngIf=\"entity.status === 'error'\"></div>\n <span class=\"entity-name\" matTooltipShowDelay=\"1000\">\n {{ entity.name.length > 0 ? entity.name : 'SimpleService' }}\n </span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </lib-form-field-container>\n <lib-form-field-container [showHeader]=\"false\" style=\"margin-top: 10px;\">\n <div class=\"copy-links-container\">\n <div class=\"copy-links-title\">\n <div class=\"title-container\">\n <span class=\"title\">Copy Links</span>\n <div class=\"copy-icon\"></div>\n </div>\n </div>\n <div class=\"copy-links\">\n <div class=\"link-button\" (click)=\"copyCliCommands()\">CLI Commands</div>\n <div class=\"link-button\" (click)=\"copyAPIRequests()\">API Requests</div>\n </div>\n </div>\n </lib-form-field-container>\n\n <div class=\"confirm-buttons-container\">\n <button class=\"button save alert\" (click)=\"done()\">Done</button>\n <button class=\"button save cancel\" (click)=\"confirm()\">Create another</button>\n </div>\n</div>", styles: [".creation-summary-dialog-container{background-color:var(--formBackground);min-width:29.6875rem;border-radius:var(--modalBorderRadius);padding:var(--paddingXXL)}.creation-summary-dialog-container .title-row{display:flex;align-items:center;flex-direction:column;margin-bottom:var(--marginLarge)}.creation-summary-dialog-container .subtitle{color:var(--text)}.creation-summary-dialog-container .close{font-size:1.5625rem;top:.9375rem;right:.9375rem;width:2.1875rem;font-weight:600}.resource-type-container{display:flex;flex-direction:column;padding-left:var(--paddingLarge);padding-right:var(--paddingLarge)}.resource-type-container.disabled{opacity:.5}.resource-type-container.disabled select{cursor:not-allowed}.resource-type-container .resource-type-content{margin-top:1.25rem;flex-wrap:wrap}.entity-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:-moz-fit-content;width:fit-content}.summary-group ul{padding-inline-start:0rem;margin-block-start:var(--marginSmall);max-height:40.625rem;overflow:auto;overflow-x:hidden}.summary-group .entity-item{display:flex;align-items:center;gap:.3125rem;font-weight:600;font-size:1rem;padding-top:.1875rem;padding-bottom:.1875rem;position:relative;cursor:pointer;border-left-width:.3125rem;border-left-color:transparent;border-left-style:solid}.summary-group .entity-item:hover{background-color:#2196f31a;border-left-width:.3125rem;border-left-color:var(--primaryColor)}.summary-group .entity-item[hidden]{display:none}.summary-group .entity-item.no-results{font-weight:400}.summary-group .entity-item.no-results:hover{background-color:transparent;border-left-color:transparent;cursor:default}.summary-groups-container{overflow:auto;height:100%;width:100%;max-width:18.75rem;display:flex;position:relative;flex-direction:column}.summary-group-title{margin-left:0;color:var(--primaryColor);font-weight:700;font-size:.9375rem;filter:brightness(65%);text-transform:uppercase}.exec-operations-group{padding:0}.confirm-buttons-container{display:flex;justify-content:space-between;align-items:center;flex-direction:row;width:100%;padding-top:var(--paddingMedium)}.confirm-buttons-container .linkButton{position:absolute;left:1.5625rem;color:var(--subText);font-weight:600}.confirm-buttons-container .button{text-align:center;line-height:normal}button{width:6.25rem;height:2.5rem;color:var(--white);display:flex;align-items:center;justify-content:center}button.confirm{background-color:var(--secondary)}button.cancel{background-color:var(--primary)}.spinner{right:1em;top:1em;display:inline-block;width:1rem;height:1rem;border-radius:50%;background:transparent;border-top:.125rem solid var(--placeholder);border-right:.125rem solid var(--placeholder);border-bottom:.125rem solid transparent;border-left:.125rem solid transparent;animation:loading .5s infinite linear}.config-check,.success-check{width:1.0625rem;height:1.0625rem;cursor:pointer;background-color:var(--navigation);margin:0;margin-top:.25rem}.config-check:checked,.success-check:checked{background-color:var(--green)!important;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAYCAYAAAD+vg1LAAABdElEQVRIia3UPWsUURSH8f9GRRvtFKtIgoKggo2CYO0XsLKzsbARbNKJYGPndxEEO8VGRRvBF6xFBAkplPiyb/lZzAx7d9jE3ewcmOLOPTyc85x7bw/pKI4keZ7kUpIHQVffIwxU0e91VPHlJK+T9Or19y7Ah5N8TLJeg3eSXO9CwcNCwQCPkWWhFzE2iZ84viz4ED4X4DFuNPvLgO8XCoZ4Wu7vF3oeo0LBL5xcFnwA7wsFI9xs5+0HvFG33ih4NitvUejZAgp/sLoseAVvC7dD3NotfxHw3ZaCl+jtBT6qOn+n94CuoV8o+Fv/27WQ4E3dXh9XZyT18Kql4M7/OozJsdnBb1xoJd0uFIxqzyvzgJ+Y3KAxtrBeJ6yqJt/EEGfmmUlwDB9aVX3FCbwwPbCNeaANOKoX6UvL41axHuOd6tYtBA5OYdP0a9XECOfmhbbBUT0u26pBNjHAvUWgs8DBFdPD/ISDXYCDa/iBb3UXC0GRf9rA4qSLGyBIAAAAAElFTkSuQmCC);background-size:45%;background-position:center center;background-repeat:no-repeat;border:none}.config-check:checked:disabled,.success-check:checked:disabled{opacity:1!important}.success-check{border-radius:100%;top:.8125rem;left:.625rem;transition:var(--transition);border:.125rem var(--offWhite) solid}.config-check{border-radius:0}.config-check:checked{background-size:.625rem}.icon-clear{color:var(--red);margin-top:.25rem}.retry{background-image:url(/assets/svgs/refresh.svg);background-size:1.125rem;background-repeat:no-repeat;height:1.125rem;width:1.125rem;margin-left:.3125rem}.copy-links-container{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:var(--gapMedium)}.copy-links-container .copy-links-title{display:flex;flex-direction:column;align-items:center;justify-content:center;max-width:23.4375rem}.copy-links-container .copy-links-title .title-container{display:flex}.copy-links-container .copy-links-title .title{font-size:1.25rem;line-height:1.25rem}.copy-links-container .copy-links-title .subtitle{display:flex;align-items:center;justify-content:center;text-align:center;color:var(--red)}.copy-links-container .copy-links-title .copy-icon{background-image:url(/assets/svgs/copy.svg);background-size:1.125rem;background-repeat:no-repeat;height:1.25rem;width:1.25rem;margin-left:.4375rem}.copy-links-container .copy-links{display:flex;flex-direction:row;justify-content:space-around;align-items:center;padding:var(--paddingMedium);width:100%}.copy-links-container .copy-links .link-button{color:var(--subText);font-size:1rem;font-weight:600;cursor:pointer}.copy-links-container .copy-links .link-button:hover{text-decoration:underline}.visibility-config-container{display:flex;flex-direction:row;align-items:center;width:100%;justify-content:flex-start;gap:.3125rem;margin-top:var(--marginMedium)}::ng-deep .creation-summary-dialog-container .form-field-content{gap:0!important}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.FormFieldContainerComponent, selector: "lib-form-field-container", inputs: ["title", "title2", "titleIcon", "layout", "helpText", "helpText2", "label", "count", "action", "actionLabel", "class", "contentStyle", "showHeader", "showToggle", "headerActions", "headerToggle"], outputs: ["actionRequested", "headerToggleChange"] }] }); }
83
83
  }
84
84
  export { CreationSummaryDialogComponent };
85
85
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CreationSummaryDialogComponent, decorators: [{
@@ -16,16 +16,18 @@ class PasswordInputComponent {
16
16
  this.error = '';
17
17
  this.fieldValueChange = new EventEmitter();
18
18
  this.valueChange = new Subject();
19
+ this.emitEventsDebounced = debounce(this.emitEvents.bind(this), 500);
19
20
  }
20
21
  set fieldName(name) {
21
22
  this._fieldName = name;
22
23
  this._idName = name.replace(/\s/g, '').toLowerCase();
23
24
  }
24
25
  onKeyup() {
25
- debounce(() => {
26
- this.fieldValueChange.emit(this.fieldValue);
27
- this.valueChange.next(this.fieldValue);
28
- }, 500)();
26
+ this.emitEventsDebounced();
27
+ }
28
+ emitEvents() {
29
+ this.fieldValueChange.emit(this.fieldValue);
30
+ this.valueChange.next(this.fieldValue);
29
31
  }
30
32
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PasswordInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31
33
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PasswordInputComponent, selector: "lib-password-input", inputs: { fieldName: "fieldName", fieldValue: "fieldValue", placeholder: "placeholder", parentage: "parentage", labelColor: "labelColor", fieldClass: "fieldClass", error: "error" }, outputs: { fieldValueChange: "fieldValueChange" }, ngImport: i0, template: `
@@ -34,7 +36,7 @@ class PasswordInputComponent {
34
36
  <input id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
35
37
  type="password" class="jsonEntry"
36
38
  [ngClass]="{'error': error}"
37
- [placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()"/>
39
+ [placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()" (change)="emitEvents()"/>
38
40
  <div *ngIf="error" class="error">{{error}}</div>
39
41
  </div>
40
42
  `, isInline: true, styles: ["input.error{border-color:red}\n", "div.error{color:red}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
@@ -48,7 +50,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
48
50
  <input id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
49
51
  type="password" class="jsonEntry"
50
52
  [ngClass]="{'error': error}"
51
- [placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()"/>
53
+ [placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()" (change)="emitEvents()"/>
52
54
  <div *ngIf="error" class="error">{{error}}</div>
53
55
  </div>
54
56
  `, styles: ["input.error{border-color:red}\n", "div.error{color:red}\n"] }]
@@ -69,4 +71,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
69
71
  }], fieldValueChange: [{
70
72
  type: Output
71
73
  }] } });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2R5bmFtaWMtd2lkZ2V0cy9wYXNzd29yZC9wYXNzd29yZC1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7QUFFaEMsTUFjYSxzQkFBc0I7SUFkbkM7UUFlSSxlQUFVLEdBQUcsYUFBYSxDQUFDO1FBQzNCLFlBQU8sR0FBRyxXQUFXLENBQUM7UUFLYixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFDekIsZUFBVSxHQUFHLFNBQVMsQ0FBQztRQUN2QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDVixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3hELGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztLQVF4QztJQW5CRyxJQUFhLFNBQVMsQ0FBQyxJQUFZO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDekQsQ0FBQztJQVVELE9BQU87UUFDSCxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ2QsQ0FBQzsrR0FyQlEsc0JBQXNCO21HQUF0QixzQkFBc0IsbVNBWnZCOzs7Ozs7Ozs7R0FTVDs7U0FHVSxzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFkbEMsU0FBUzsrQkFDRSxvQkFBb0IsWUFDcEI7Ozs7Ozs7OztHQVNUOzhCQU1jLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtkZWJvdW5jZX0gZnJvbSBcImxvZGFzaFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItcGFzc3dvcmQtaW5wdXQnLFxuICB0ZW1wbGF0ZTogYFxuICAgICAgPGRpdiBbbmdDbGFzc109XCJmaWVsZENsYXNzXCI+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cInNjaGVtYV97e3BhcmVudGFnZT9wYXJlbnRhZ2UrJ18nOicnfX17e19pZE5hbWV9fVwiICBbbmdTdHlsZV09XCJ7J2NvbG9yJzogbGFiZWxDb2xvcn1cIj57e19maWVsZE5hbWV9fTwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0IGlkPVwic2NoZW1hX3t7cGFyZW50YWdlP3BhcmVudGFnZSsnXyc6Jyd9fXt7X2lkTmFtZX19XCJcbiAgICAgICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCIgY2xhc3M9XCJqc29uRW50cnlcIlxuICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Vycm9yJzogZXJyb3J9XCJcbiAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgWyhuZ01vZGVsKV09XCJmaWVsZFZhbHVlXCIgKHBhc3RlKT1cIm9uS2V5dXAoKVwiIChrZXl1cCk9XCJvbktleXVwKClcIi8+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImVycm9yXCIgY2xhc3M9XCJlcnJvclwiPnt7ZXJyb3J9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gIGAsXG4gICAgc3R5bGVzOlsnaW5wdXQuZXJyb3Ige2JvcmRlci1jb2xvcjpyZWQ7fScsJ2Rpdi5lcnJvciB7Y29sb3I6cmVkfSddXG59KVxuZXhwb3J0IGNsYXNzIFBhc3N3b3JkSW5wdXRDb21wb25lbnQge1xuICAgIF9maWVsZE5hbWUgPSAnRmllbGQgTGFiZWwnO1xuICAgIF9pZE5hbWUgPSAnZmllbGRuYW1lJztcbiAgICBASW5wdXQoKSBzZXQgZmllbGROYW1lKG5hbWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9maWVsZE5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLl9pZE5hbWUgPSBuYW1lLnJlcGxhY2UoL1xccy9nLCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gICAgQElucHV0KCkgZmllbGRWYWx1ZSA9ICcnO1xuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XG4gICAgQElucHV0KCkgcGFyZW50YWdlOiBzdHJpbmdbXSA9IFtdO1xuICAgIEBJbnB1dCgpIGxhYmVsQ29sb3IgPSAnIzAwMDAwMCc7XG4gICAgQElucHV0KCkgZmllbGRDbGFzcyA9ICcnO1xuICAgIEBJbnB1dCgpIGVycm9yID0gJyc7XG4gICAgQE91dHB1dCgpIGZpZWxkVmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICB2YWx1ZUNoYW5nZSA9IG5ldyBTdWJqZWN0PHN0cmluZz4gKCk7XG5cbiAgICBvbktleXVwKCkge1xuICAgICAgICBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmZpZWxkVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5uZXh0KHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgICAgIH0sIDUwMCkoKTtcbiAgICB9XG59XG4iXX0=
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2R5bmFtaWMtd2lkZ2V0cy9wYXNzd29yZC9wYXNzd29yZC1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7QUFFaEMsTUFjYSxzQkFBc0I7SUFkbkM7UUFlSSxlQUFVLEdBQUcsYUFBYSxDQUFDO1FBQzNCLFlBQU8sR0FBRyxXQUFXLENBQUM7UUFLYixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFDekIsZUFBVSxHQUFHLFNBQVMsQ0FBQztRQUN2QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDVixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3hELGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQU1yQyx3QkFBbUIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FLbkU7SUF0QkcsSUFBYSxTQUFTLENBQUMsSUFBWTtRQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFVRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUdELFVBQVU7UUFDTixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsQ0FBQzsrR0F4QlEsc0JBQXNCO21HQUF0QixzQkFBc0IsbVNBWnZCOzs7Ozs7Ozs7R0FTVDs7U0FHVSxzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFkbEMsU0FBUzsrQkFDRSxvQkFBb0IsWUFDcEI7Ozs7Ozs7OztHQVNUOzhCQU1jLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtkZWJvdW5jZX0gZnJvbSBcImxvZGFzaFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItcGFzc3dvcmQtaW5wdXQnLFxuICB0ZW1wbGF0ZTogYFxuICAgICAgPGRpdiBbbmdDbGFzc109XCJmaWVsZENsYXNzXCI+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cInNjaGVtYV97e3BhcmVudGFnZT9wYXJlbnRhZ2UrJ18nOicnfX17e19pZE5hbWV9fVwiICBbbmdTdHlsZV09XCJ7J2NvbG9yJzogbGFiZWxDb2xvcn1cIj57e19maWVsZE5hbWV9fTwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0IGlkPVwic2NoZW1hX3t7cGFyZW50YWdlP3BhcmVudGFnZSsnXyc6Jyd9fXt7X2lkTmFtZX19XCJcbiAgICAgICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCIgY2xhc3M9XCJqc29uRW50cnlcIlxuICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Vycm9yJzogZXJyb3J9XCJcbiAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgWyhuZ01vZGVsKV09XCJmaWVsZFZhbHVlXCIgKHBhc3RlKT1cIm9uS2V5dXAoKVwiIChrZXl1cCk9XCJvbktleXVwKClcIiAoY2hhbmdlKT1cImVtaXRFdmVudHMoKVwiLz5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZXJyb3JcIiBjbGFzcz1cImVycm9yXCI+e3tlcnJvcn19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgYCxcbiAgICBzdHlsZXM6WydpbnB1dC5lcnJvciB7Ym9yZGVyLWNvbG9yOnJlZDt9JywnZGl2LmVycm9yIHtjb2xvcjpyZWR9J11cbn0pXG5leHBvcnQgY2xhc3MgUGFzc3dvcmRJbnB1dENvbXBvbmVudCB7XG4gICAgX2ZpZWxkTmFtZSA9ICdGaWVsZCBMYWJlbCc7XG4gICAgX2lkTmFtZSA9ICdmaWVsZG5hbWUnO1xuICAgIEBJbnB1dCgpIHNldCBmaWVsZE5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2ZpZWxkTmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuX2lkTmFtZSA9IG5hbWUucmVwbGFjZSgvXFxzL2csICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBASW5wdXQoKSBmaWVsZFZhbHVlID0gJyc7XG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgICBASW5wdXQoKSBwYXJlbnRhZ2U6IHN0cmluZ1tdID0gW107XG4gICAgQElucHV0KCkgbGFiZWxDb2xvciA9ICcjMDAwMDAwJztcbiAgICBASW5wdXQoKSBmaWVsZENsYXNzID0gJyc7XG4gICAgQElucHV0KCkgZXJyb3IgPSAnJztcbiAgICBAT3V0cHV0KCkgZmllbGRWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIHZhbHVlQ2hhbmdlID0gbmV3IFN1YmplY3Q8c3RyaW5nPiAoKTtcblxuICAgIG9uS2V5dXAoKSB7XG4gICAgICAgIHRoaXMuZW1pdEV2ZW50c0RlYm91bmNlZCgpO1xuICAgIH1cblxuICAgIGVtaXRFdmVudHNEZWJvdW5jZWQgPSBkZWJvdW5jZSh0aGlzLmVtaXRFdmVudHMuYmluZCh0aGlzKSwgNTAwKTtcbiAgICBlbWl0RXZlbnRzKCkge1xuICAgICAgICB0aGlzLmZpZWxkVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmZpZWxkVmFsdWUpO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLm5leHQodGhpcy5maWVsZFZhbHVlKTtcbiAgICB9XG59XG4iXX0=
@@ -18,6 +18,7 @@ class StringInputComponent {
18
18
  this.fieldValueChange = new EventEmitter();
19
19
  this.valueChange = new Subject();
20
20
  this._isValid = true;
21
+ this.emitEventsDebounced = debounce(this.emitEvents.bind(this), 500);
21
22
  }
22
23
  set fieldName(name) {
23
24
  this._fieldName = name;
@@ -27,10 +28,11 @@ class StringInputComponent {
27
28
  this._isValid = isValid;
28
29
  }
29
30
  onKeyup() {
30
- debounce(() => {
31
- this.fieldValueChange.emit(this.fieldValue);
32
- this.valueChange.next(this.fieldValue);
33
- }, 500)();
31
+ this.emitEventsDebounced();
32
+ }
33
+ emitEvents() {
34
+ this.fieldValueChange.emit(this.fieldValue);
35
+ this.valueChange.next(this.fieldValue);
34
36
  }
35
37
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: StringInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
36
38
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: StringInputComponent, selector: "lib-string-input", inputs: { fieldName: "fieldName", helpText: "helpText", fieldValue: "fieldValue", placeholder: "placeholder", parentage: "parentage", labelColor: "labelColor", fieldClass: "fieldClass", error: "error" }, outputs: { fieldValueChange: "fieldValueChange" }, ngImport: i0, template: `
@@ -48,7 +50,7 @@ class StringInputComponent {
48
50
  <input id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
49
51
  type="text" class="jsonEntry"
50
52
  [ngClass]="{'error': error}"
51
- [placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()"/>
53
+ [placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()" (change)="emitEvents()"/>
52
54
  <div *ngIf="error" class="error">{{error}}</div>
53
55
  </div>
54
56
  `, isInline: true, styles: [".string-input-container{margin:var(--marginSmall) 0}.string-input-container label{margin-bottom:0rem;margin-top:0rem;width:-moz-fit-content;width:fit-content}.string-input-container input.error{border-color:red}.string-input-container div.error{color:red}.label-container{display:flex;gap:.3125rem;margin-bottom:.3125rem;margin-top:.625rem}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
@@ -71,7 +73,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
71
73
  <input id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
72
74
  type="text" class="jsonEntry"
73
75
  [ngClass]="{'error': error}"
74
- [placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()"/>
76
+ [placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()" (change)="emitEvents()"/>
75
77
  <div *ngIf="error" class="error">{{error}}</div>
76
78
  </div>
77
79
  `, styles: [".string-input-container{margin:var(--marginSmall) 0}.string-input-container label{margin-bottom:0rem;margin-top:0rem;width:-moz-fit-content;width:fit-content}.string-input-container input.error{border-color:red}.string-input-container div.error{color:red}.label-container{display:flex;gap:.3125rem;margin-bottom:.3125rem;margin-top:.625rem}\n"] }]
@@ -94,4 +96,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
94
96
  }], fieldValueChange: [{
95
97
  type: Output
96
98
  }] } });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9keW5hbWljLXdpZGdldHMvc3RyaW5nL3N0cmluZy1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7O0FBRWhDLE1BdUJhLG9CQUFvQjtJQXZCakM7UUF3QkksZUFBVSxHQUFHLGFBQWEsQ0FBQztRQUMzQixZQUFPLEdBQUcsV0FBVyxDQUFDO1FBTWIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixjQUFTLEdBQWEsRUFBRSxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxTQUFTLENBQUM7UUFDdkIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1YscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN4RCxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFFckMsYUFBUSxHQUFHLElBQUksQ0FBQztLQVduQjtJQXpCRyxJQUFhLFNBQVMsQ0FBQyxJQUFZO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDekQsQ0FBQztJQVlNLFVBQVUsQ0FBRSxPQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzVCLENBQUM7SUFFRCxPQUFPO1FBQ0gsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNkLENBQUM7K0dBM0JRLG9CQUFvQjttR0FBcEIsb0JBQW9CLHVUQXJCckI7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCVDs7U0FHVSxvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkF2QmhDLFNBQVM7K0JBQ0Usa0JBQWtCLFlBQ2xCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQlQ7OEJBTWMsU0FBUztzQkFBckIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7ZGVib3VuY2V9IGZyb20gXCJsb2Rhc2hcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXN0cmluZy1pbnB1dCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cImZpZWxkQ2xhc3MgKyAoIV9pc1ZhbGlkID8gJ2ludmFsaWQnIDogJycpXCIgY2xhc3M9XCJzdHJpbmctaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwic2NoZW1hX3t7cGFyZW50YWdlP3BhcmVudGFnZSsnXyc6Jyd9fXt7X2lkTmFtZX19XCIgIFtuZ1N0eWxlXT1cInsnY29sb3InOiBsYWJlbENvbG9yfVwiPnt7X2ZpZWxkTmFtZX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoZWxwVGV4dFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtaW5mbyBpbmZvaWNvblwiXG4gICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3toZWxwVGV4dH19XCJcbiAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcbiAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cIndpZGUtdG9vbHRpcFwiXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8aW5wdXQgaWQ9XCJzY2hlbWFfe3twYXJlbnRhZ2U/cGFyZW50YWdlKydfJzonJ319e3tfaWROYW1lfX1cIlxuICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiIGNsYXNzPVwianNvbkVudHJ5XCJcbiAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydlcnJvcic6IGVycm9yfVwiXG4gICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFsobmdNb2RlbCldPVwiZmllbGRWYWx1ZVwiIChwYXN0ZSk9XCJvbktleXVwKClcIiAoa2V5dXApPVwib25LZXl1cCgpXCIvPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiZXJyb3JcIj57e2Vycm9yfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICBgLFxuICAgIHN0eWxlVXJsczogWydzdHJpbmctaW5wdXQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTdHJpbmdJbnB1dENvbXBvbmVudCB7XG4gICAgX2ZpZWxkTmFtZSA9ICdGaWVsZCBMYWJlbCc7XG4gICAgX2lkTmFtZSA9ICdmaWVsZG5hbWUnO1xuICAgIEBJbnB1dCgpIHNldCBmaWVsZE5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2ZpZWxkTmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuX2lkTmFtZSA9IG5hbWUucmVwbGFjZSgvXFxzL2csICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBASW5wdXQoKSBoZWxwVGV4dDtcbiAgICBASW5wdXQoKSBmaWVsZFZhbHVlID0gJyc7XG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgICBASW5wdXQoKSBwYXJlbnRhZ2U6IHN0cmluZ1tdID0gW107XG4gICAgQElucHV0KCkgbGFiZWxDb2xvciA9ICcjMDAwMDAwJztcbiAgICBASW5wdXQoKSBmaWVsZENsYXNzID0gJyc7XG4gICAgQElucHV0KCkgZXJyb3IgPSAnJztcbiAgICBAT3V0cHV0KCkgZmllbGRWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIHZhbHVlQ2hhbmdlID0gbmV3IFN1YmplY3Q8c3RyaW5nPiAoKTtcblxuICAgIF9pc1ZhbGlkID0gdHJ1ZTtcbiAgICBwdWJsaWMgc2V0SXNWYWxpZCAoaXNWYWxpZCkge1xuICAgICAgICB0aGlzLl9pc1ZhbGlkID0gaXNWYWxpZDtcbiAgICB9XG5cbiAgICBvbktleXVwKCkge1xuICAgICAgICBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmZpZWxkVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5uZXh0KHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgICAgIH0sIDUwMCkoKTtcbiAgICB9XG59XG4iXX0=
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9keW5hbWljLXdpZGdldHMvc3RyaW5nL3N0cmluZy1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7O0FBRWhDLE1BdUJhLG9CQUFvQjtJQXZCakM7UUF3QkksZUFBVSxHQUFHLGFBQWEsQ0FBQztRQUMzQixZQUFPLEdBQUcsV0FBVyxDQUFDO1FBTWIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixjQUFTLEdBQWEsRUFBRSxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxTQUFTLENBQUM7UUFDdkIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1YscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN4RCxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFFckMsYUFBUSxHQUFHLElBQUksQ0FBQztRQVNoQix3QkFBbUIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FLbkU7SUE1QkcsSUFBYSxTQUFTLENBQUMsSUFBWTtRQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFZTSxVQUFVLENBQUUsT0FBTztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUM1QixDQUFDO0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFHRCxVQUFVO1FBQ04sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7K0dBOUJRLG9CQUFvQjttR0FBcEIsb0JBQW9CLHVUQXJCckI7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCVDs7U0FHVSxvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkF2QmhDLFNBQVM7K0JBQ0Usa0JBQWtCLFlBQ2xCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQlQ7OEJBTWMsU0FBUztzQkFBckIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7ZGVib3VuY2V9IGZyb20gXCJsb2Rhc2hcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXN0cmluZy1pbnB1dCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cImZpZWxkQ2xhc3MgKyAoIV9pc1ZhbGlkID8gJ2ludmFsaWQnIDogJycpXCIgY2xhc3M9XCJzdHJpbmctaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwic2NoZW1hX3t7cGFyZW50YWdlP3BhcmVudGFnZSsnXyc6Jyd9fXt7X2lkTmFtZX19XCIgIFtuZ1N0eWxlXT1cInsnY29sb3InOiBsYWJlbENvbG9yfVwiPnt7X2ZpZWxkTmFtZX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoZWxwVGV4dFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtaW5mbyBpbmZvaWNvblwiXG4gICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3toZWxwVGV4dH19XCJcbiAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcbiAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cIndpZGUtdG9vbHRpcFwiXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8aW5wdXQgaWQ9XCJzY2hlbWFfe3twYXJlbnRhZ2U/cGFyZW50YWdlKydfJzonJ319e3tfaWROYW1lfX1cIlxuICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiIGNsYXNzPVwianNvbkVudHJ5XCJcbiAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydlcnJvcic6IGVycm9yfVwiXG4gICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFsobmdNb2RlbCldPVwiZmllbGRWYWx1ZVwiIChwYXN0ZSk9XCJvbktleXVwKClcIiAoa2V5dXApPVwib25LZXl1cCgpXCIgKGNoYW5nZSk9XCJlbWl0RXZlbnRzKClcIi8+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImVycm9yXCIgY2xhc3M9XCJlcnJvclwiPnt7ZXJyb3J9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gIGAsXG4gICAgc3R5bGVVcmxzOiBbJ3N0cmluZy1pbnB1dC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFN0cmluZ0lucHV0Q29tcG9uZW50IHtcbiAgICBfZmllbGROYW1lID0gJ0ZpZWxkIExhYmVsJztcbiAgICBfaWROYW1lID0gJ2ZpZWxkbmFtZSc7XG4gICAgQElucHV0KCkgc2V0IGZpZWxkTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fZmllbGROYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5faWROYW1lID0gbmFtZS5yZXBsYWNlKC9cXHMvZywgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuICAgIEBJbnB1dCgpIGhlbHBUZXh0O1xuICAgIEBJbnB1dCgpIGZpZWxkVmFsdWUgPSAnJztcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuICAgIEBJbnB1dCgpIHBhcmVudGFnZTogc3RyaW5nW10gPSBbXTtcbiAgICBASW5wdXQoKSBsYWJlbENvbG9yID0gJyMwMDAwMDAnO1xuICAgIEBJbnB1dCgpIGZpZWxkQ2xhc3MgPSAnJztcbiAgICBASW5wdXQoKSBlcnJvciA9ICcnO1xuICAgIEBPdXRwdXQoKSBmaWVsZFZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgdmFsdWVDaGFuZ2UgPSBuZXcgU3ViamVjdDxzdHJpbmc+ICgpO1xuXG4gICAgX2lzVmFsaWQgPSB0cnVlO1xuICAgIHB1YmxpYyBzZXRJc1ZhbGlkIChpc1ZhbGlkKSB7XG4gICAgICAgIHRoaXMuX2lzVmFsaWQgPSBpc1ZhbGlkO1xuICAgIH1cblxuICAgIG9uS2V5dXAoKSB7XG4gICAgICAgIHRoaXMuZW1pdEV2ZW50c0RlYm91bmNlZCgpO1xuICAgIH1cblxuICAgIGVtaXRFdmVudHNEZWJvdW5jZWQgPSBkZWJvdW5jZSh0aGlzLmVtaXRFdmVudHMuYmluZCh0aGlzKSwgNTAwKTtcbiAgICBlbWl0RXZlbnRzKCkge1xuICAgICAgICB0aGlzLmZpZWxkVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmZpZWxkVmFsdWUpO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLm5leHQodGhpcy5maWVsZFZhbHVlKTtcbiAgICB9XG59XG4iXX0=