@openziti/ziti-console-lib 0.6.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/styles/global.scss +212 -3
- package/esm2022/lib/features/data-table/cells/table-cell-name/table-cell-name.component.mjs +12 -3
- package/esm2022/lib/features/dynamic-widgets/text-list/text-list-input.component.mjs +2 -2
- package/esm2022/lib/features/list-page-features/list-page-header/list-page-header.component.mjs +22 -3
- package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.component.mjs +342 -0
- package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.service.mjs +127 -0
- package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.mjs +78 -20
- package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.service.mjs +2 -2
- package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +3 -3
- package/esm2022/lib/features/tag-selector/tag-selector.component.mjs +2 -2
- package/esm2022/lib/models/auth-policy.mjs +31 -0
- package/esm2022/lib/models/jwt-signer.mjs +4 -2
- package/esm2022/lib/pages/auth-policies/auth-policies-page.component.mjs +115 -0
- package/esm2022/lib/pages/auth-policies/auth-policies-page.service.mjs +207 -0
- package/esm2022/lib/pages/jwt-signers/jwt-signers-page.component.mjs +3 -3
- package/esm2022/lib/pages/terminators/terminators-page.component.mjs +2 -2
- package/esm2022/lib/services/node-data.service.mjs +18 -1
- package/esm2022/lib/services/validation.service.mjs +10 -1
- package/esm2022/lib/services/ziti-controller-data.service.mjs +16 -1
- package/esm2022/lib/services/ziti-data.service.mjs +1 -1
- package/esm2022/lib/ziti-console-lib.module.mjs +19 -5
- package/esm2022/public-api.mjs +5 -1
- package/fesm2022/openziti-ziti-console-lib.mjs +1080 -189
- package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
- package/lib/features/data-table/cells/table-cell-name/table-cell-name.component.d.ts.map +1 -1
- package/lib/features/list-page-features/list-page-header/list-page-header.component.d.ts +1 -0
- package/lib/features/list-page-features/list-page-header/list-page-header.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/auth-policy/auth-policy-form.component.d.ts +75 -0
- package/lib/features/projectable-forms/auth-policy/auth-policy-form.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/auth-policy/auth-policy-form.service.d.ts +38 -0
- package/lib/features/projectable-forms/auth-policy/auth-policy-form.service.d.ts.map +1 -0
- package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts +4 -0
- package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts.map +1 -1
- package/lib/models/auth-policy.d.ts +8 -0
- package/lib/models/auth-policy.d.ts.map +1 -0
- package/lib/models/jwt-signer.d.ts +3 -1
- package/lib/models/jwt-signer.d.ts.map +1 -1
- package/lib/pages/auth-policies/auth-policies-page.component.d.ts +29 -0
- package/lib/pages/auth-policies/auth-policies-page.component.d.ts.map +1 -0
- package/lib/pages/auth-policies/auth-policies-page.service.d.ts +34 -0
- package/lib/pages/auth-policies/auth-policies-page.service.d.ts.map +1 -0
- package/lib/pages/jwt-signers/jwt-signers-page.component.d.ts +1 -1
- package/lib/services/node-data.service.d.ts +1 -0
- package/lib/services/node-data.service.d.ts.map +1 -1
- package/lib/services/validation.service.d.ts +1 -0
- package/lib/services/validation.service.d.ts.map +1 -1
- package/lib/services/ziti-controller-data.service.d.ts +1 -0
- package/lib/services/ziti-controller-data.service.d.ts.map +1 -1
- package/lib/services/ziti-data.service.d.ts +1 -0
- package/lib/services/ziti-data.service.d.ts.map +1 -1
- package/lib/ziti-console-lib.module.d.ts +20 -17
- package/lib/ziti-console-lib.module.d.ts.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +4 -0
- package/public-api.d.ts.map +1 -1
|
@@ -313,6 +313,12 @@ input {
|
|
|
313
313
|
color: var(--tableText);
|
|
314
314
|
text-transform: uppercase;
|
|
315
315
|
height: 14px;
|
|
316
|
+
|
|
317
|
+
.form-sub-text {
|
|
318
|
+
margin-left: 5px;
|
|
319
|
+
font-size: 12px;
|
|
320
|
+
text-transform: none;
|
|
321
|
+
}
|
|
316
322
|
}
|
|
317
323
|
|
|
318
324
|
.form-field-label {
|
|
@@ -773,12 +779,15 @@ lib-form-field-container {
|
|
|
773
779
|
justify-content: space-between;
|
|
774
780
|
padding: 20px;
|
|
775
781
|
width: 100%;
|
|
776
|
-
background-color: var(--
|
|
782
|
+
background-color: var(--formGroup);
|
|
777
783
|
border-radius: 5px;
|
|
778
784
|
|
|
779
785
|
&.toggle-container {
|
|
780
|
-
padding
|
|
781
|
-
|
|
786
|
+
padding: 10px;
|
|
787
|
+
|
|
788
|
+
.config-container-label {
|
|
789
|
+
color: var(--offWhite);
|
|
790
|
+
}
|
|
782
791
|
}
|
|
783
792
|
}
|
|
784
793
|
|
|
@@ -1107,5 +1116,205 @@ p-dropdown {
|
|
|
1107
1116
|
display: none;
|
|
1108
1117
|
}
|
|
1109
1118
|
}
|
|
1119
|
+
.p-icon-wrapper {
|
|
1120
|
+
width: 20px;
|
|
1121
|
+
position: absolute;
|
|
1122
|
+
right: 32px;
|
|
1123
|
+
top: 11px;
|
|
1124
|
+
height: 20px;
|
|
1125
|
+
|
|
1126
|
+
.p-dropdown-clear-icon {
|
|
1127
|
+
right: 0;
|
|
1128
|
+
path {
|
|
1129
|
+
fill: var(--icon) !important;
|
|
1130
|
+
}
|
|
1131
|
+
}
|
|
1132
|
+
|
|
1133
|
+
&:hover {
|
|
1134
|
+
.p-dropdown-clear-icon {
|
|
1135
|
+
path {
|
|
1136
|
+
fill: var(--primaryColor) !important;
|
|
1137
|
+
}
|
|
1138
|
+
}
|
|
1139
|
+
}
|
|
1140
|
+
}
|
|
1141
|
+
}
|
|
1142
|
+
}
|
|
1143
|
+
|
|
1144
|
+
.p-element {
|
|
1145
|
+
|
|
1146
|
+
.p-chips.p-component {
|
|
1147
|
+
width: 100%;
|
|
1148
|
+
font-weight: 400;
|
|
1149
|
+
font-family: 'Open Sans', Arial, sans-serif;
|
|
1150
|
+
height: var(--defaultInputHeight);
|
|
1151
|
+
border-color: var(--stroke);
|
|
1152
|
+
border-style: solid;
|
|
1153
|
+
border-width: var(--inputBorderWidth);
|
|
1154
|
+
border-radius: var(--inputBorderRadius);
|
|
1155
|
+
padding-left: 10px;
|
|
1156
|
+
padding-right: 10px;
|
|
1157
|
+
outline: none;
|
|
1158
|
+
box-sizing: border-box;
|
|
1159
|
+
font-size: 15px;
|
|
1160
|
+
background-color: var(--background) !important;
|
|
1161
|
+
color: var(--text);
|
|
1162
|
+
-webkit-appearance: none;
|
|
1163
|
+
|
|
1164
|
+
.p-inputtext.p-chips-multiple-container {
|
|
1165
|
+
width: 100%;
|
|
1166
|
+
padding: 0;
|
|
1167
|
+
border-width: var(--inputBorderWidth);
|
|
1168
|
+
|
|
1169
|
+
&.p-focus {
|
|
1170
|
+
border-color: var(--primaryColor) !important;
|
|
1171
|
+
box-shadow: 0 0 7px 0 var(--primaryColorOpaque) !important;
|
|
1172
|
+
|
|
1173
|
+
&.error {
|
|
1174
|
+
border-color: var(--red) !important;
|
|
1175
|
+
}
|
|
1176
|
+
}
|
|
1177
|
+
}
|
|
1178
|
+
}
|
|
1179
|
+
|
|
1180
|
+
.p-chips .p-chips-multiple-container .p-chips-input-token input {
|
|
1181
|
+
height: 25px;
|
|
1182
|
+
font-size: 14px;
|
|
1183
|
+
color: #495057;
|
|
1184
|
+
padding: 0;
|
|
1185
|
+
margin: 0;
|
|
1186
|
+
border: 0 none;
|
|
1187
|
+
outline: 0 none;
|
|
1188
|
+
background-color: transparent;
|
|
1189
|
+
box-shadow: none;
|
|
1190
|
+
border-radius: 0;
|
|
1191
|
+
width: 100%
|
|
1192
|
+
}
|
|
1193
|
+
|
|
1194
|
+
.p-chips .p-chips-multiple-container .p-chips-token {
|
|
1195
|
+
margin-right: .5rem;
|
|
1196
|
+
font-family: Open Sans, sans-serif;
|
|
1197
|
+
font-weight: 600;
|
|
1198
|
+
margin-top: 5px;
|
|
1199
|
+
margin-bottom: 5px;
|
|
1200
|
+
background: var(--primary);
|
|
1201
|
+
color: var(--white);
|
|
1202
|
+
border-radius: var(--inputBorderRadius);
|
|
1203
|
+
cursor: default;
|
|
1204
|
+
display: inline-flex;
|
|
1205
|
+
align-items: center;
|
|
1206
|
+
flex: 0 0 auto;
|
|
1207
|
+
max-width: 100%
|
|
1208
|
+
}
|
|
1209
|
+
|
|
1210
|
+
.p-chips-token-icon {
|
|
1211
|
+
margin-left: 0.5rem;
|
|
1212
|
+
cursor: pointer;
|
|
1213
|
+
color:blue;
|
|
1214
|
+
fill: red;
|
|
1215
|
+
}
|
|
1216
|
+
|
|
1217
|
+
.p-chips {
|
|
1218
|
+
display: inline-flex
|
|
1219
|
+
}
|
|
1220
|
+
|
|
1221
|
+
.p-chips-token-label {
|
|
1222
|
+
min-width: 0;
|
|
1223
|
+
overflow: auto
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1226
|
+
.p-chips-token-label::-webkit-scrollbar {
|
|
1227
|
+
display: none
|
|
1228
|
+
}
|
|
1229
|
+
|
|
1230
|
+
.p-fluid .p-chips {
|
|
1231
|
+
display: flex
|
|
1232
|
+
}
|
|
1233
|
+
|
|
1234
|
+
.p-chips-clear-icon {
|
|
1235
|
+
position: absolute;
|
|
1236
|
+
top: 50%;
|
|
1237
|
+
margin-top: -.5rem;
|
|
1238
|
+
cursor: pointer;
|
|
1239
|
+
}
|
|
1240
|
+
|
|
1241
|
+
.p-chips-clearable .p-inputtext {
|
|
1242
|
+
position: relative
|
|
1243
|
+
}
|
|
1244
|
+
|
|
1245
|
+
.p-inputtext {
|
|
1246
|
+
border:none;
|
|
1247
|
+
}
|
|
1248
|
+
}
|
|
1249
|
+
|
|
1250
|
+
p-dropdown {
|
|
1251
|
+
.p-dropdown {
|
|
1252
|
+
.p-dropdown-header {
|
|
1253
|
+
.dropdown-filter-container {
|
|
1254
|
+
display: flex;
|
|
1255
|
+
flex-direction: row;
|
|
1256
|
+
|
|
1257
|
+
.p-inputtext {
|
|
1258
|
+
border-radius: 0;
|
|
1259
|
+
border-width: 1px;
|
|
1260
|
+
border-color: var(--stroke);
|
|
1261
|
+
border-style: solid;
|
|
1262
|
+
|
|
1263
|
+
&:focus {
|
|
1264
|
+
box-shadow: none;
|
|
1265
|
+
&:enabled {
|
|
1266
|
+
box-shadow: none;
|
|
1267
|
+
}
|
|
1268
|
+
}
|
|
1269
|
+
}
|
|
1270
|
+
|
|
1271
|
+
.spinner {
|
|
1272
|
+
display: inline-block;
|
|
1273
|
+
width: var(--spinnerSizeMedium);
|
|
1274
|
+
height: var(--spinnerSizeMedium);
|
|
1275
|
+
border-radius: 50%;
|
|
1276
|
+
background: transparent;
|
|
1277
|
+
border-top: var(--spinerBorderTopMedium);
|
|
1278
|
+
border-right: var(--spinerBorderRightMedium);
|
|
1279
|
+
border-bottom: var(--spinerBorderBottomMedium);
|
|
1280
|
+
border-left: var(--spinerBorderLeftMedium);
|
|
1281
|
+
animation: loading .5s infinite linear;
|
|
1282
|
+
margin-left: var(--marginSmall);
|
|
1283
|
+
position: absolute;
|
|
1284
|
+
right: 18px;
|
|
1285
|
+
top: 20px;
|
|
1286
|
+
opacity: .7;
|
|
1287
|
+
}
|
|
1288
|
+
}
|
|
1289
|
+
|
|
1290
|
+
.p-inputgroup-addon {
|
|
1291
|
+
border-top-left-radius: var(--inputBorderRadius);
|
|
1292
|
+
border-bottom-left-radius: var(--inputBorderRadius);
|
|
1293
|
+
}
|
|
1294
|
+
|
|
1295
|
+
.p-button {
|
|
1296
|
+
border-radius: 0;
|
|
1297
|
+
border-top-right-radius: var(--inputBorderRadius);
|
|
1298
|
+
border-bottom-right-radius: var(--inputBorderRadius);
|
|
1299
|
+
background-color: var(--primary);
|
|
1300
|
+
|
|
1301
|
+
&.configs-loading {
|
|
1302
|
+
.p-button-icon {
|
|
1303
|
+
display: none;
|
|
1304
|
+
}
|
|
1305
|
+
}
|
|
1306
|
+
|
|
1307
|
+
&:focus {
|
|
1308
|
+
box-shadow: none;
|
|
1309
|
+
}
|
|
1310
|
+
}
|
|
1311
|
+
.p-button {
|
|
1312
|
+
&.configs-loading {
|
|
1313
|
+
.p-button-icon {
|
|
1314
|
+
display: none;
|
|
1315
|
+
}
|
|
1316
|
+
}
|
|
1317
|
+
}
|
|
1318
|
+
}
|
|
1110
1319
|
}
|
|
1111
1320
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Component } from '@angular/core';
|
|
2
|
-
import { isEmpty, get } from 'lodash';
|
|
2
|
+
import { isEmpty, isFunction, get } from 'lodash';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@angular/material/dialog";
|
|
5
5
|
import * as i2 from "@angular/router";
|
|
@@ -19,9 +19,18 @@ class TableCellNameComponent {
|
|
|
19
19
|
return true;
|
|
20
20
|
}
|
|
21
21
|
linkClicked(event) {
|
|
22
|
-
this.router.navigateByUrl(`${this.cellParams.pathRoot}/${this.item.id}`);
|
|
23
22
|
event.stopPropagation();
|
|
24
23
|
event.preventDefault();
|
|
24
|
+
if (isFunction(this.cellParams?.cellNamePreCheck)) {
|
|
25
|
+
this.cellParams?.cellNamePreCheck(this.item).then((result) => {
|
|
26
|
+
if (!result) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
this.router.navigateByUrl(`${this.cellParams.pathRoot}/${this.item.id}`);
|
|
30
|
+
});
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
this.router.navigateByUrl(`${this.cellParams.pathRoot}/${this.item.id}`);
|
|
25
34
|
}
|
|
26
35
|
get cellText() {
|
|
27
36
|
let val = get(this.item, this.cellParams?.colDef?.field);
|
|
@@ -38,4 +47,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
38
47
|
type: Component,
|
|
39
48
|
args: [{ selector: 'lib-table-cell-name', template: "<span class=\"cell-name-container\">\n <a href=\"./{{cellParams.pathRoot}}/{{item.id}}\" (click)=\"linkClicked($event)\">\n <div class=\"col cell-name-renderer\" data-id=\"{{item.id}}\">\n <div *ngIf=\"cellParams.showIdentityIcons\" class=\"cell-status-container\">\n <span class=\"circle {{item.hasApiSession}}\" title=\"Api Session\"></span>\n <span class=\"circle {{item.hasEdgeRouterConnection}}\" title=\"Edge Router Connected\"></span>\n </div>\n <div *ngIf=\"cellParams.showRouterIcons\" class=\"cell-status-container\">\n <span class=\"circle {{item.isVerified}}\" title=\"Api Session\"></span>\n <span class=\"circle {{item.isOnline}}\" title=\"Edge Router Connected\"></span>\n </div>\n <strong>{{cellText}}</strong>\n </div>\n </a>\n</span>\n", styles: [".cell-name-renderer{display:flex;flex-direction:row;gap:5px}.cell-name-container{display:flex;flex-direction:row;flex-wrap:nowrap}.cell-status-container{position:relative;display:flex;align-items:center;justify-content:center;gap:4px}\n"] }]
|
|
40
49
|
}], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.Router }]; } });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC1uYW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9kYXRhLXRhYmxlL2NlbGxzL3RhYmxlLWNlbGwtbmFtZS90YWJsZS1jZWxsLW5hbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2RhdGEtdGFibGUvY2VsbHMvdGFibGUtY2VsbC1uYW1lL3RhYmxlLWNlbGwtbmFtZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTTFDLE9BQU8sRUFBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBQyxNQUFNLFFBQVEsQ0FBQzs7Ozs7QUFFaEQsTUFLYSxzQkFBc0I7SUFNakMsWUFBbUIsVUFBcUIsRUFBVSxNQUFjO1FBQTdDLGVBQVUsR0FBVixVQUFVLENBQVc7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQ2hFLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBMkI7UUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFFRCxPQUFPLENBQUMsTUFBZ0M7UUFDdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFLO1FBQ2YsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLGdCQUFnQixDQUFDLEVBQUU7WUFDakQsSUFBSSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQzNELElBQUksQ0FBQyxNQUFNLEVBQUU7b0JBQ1gsT0FBTztpQkFDUjtnQkFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMzRSxDQUFDLENBQUMsQ0FBQTtZQUNGLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6RCxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNoQixHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDdEI7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7K0dBekNVLHNCQUFzQjttR0FBdEIsc0JBQXNCLDJEQ2JuQywwM0JBZUE7O1NERmEsc0JBQXNCOzRGQUF0QixzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0lDZWxsUmVuZGVyZXJBbmd1bGFyQ29tcH0gZnJvbSBcImFnLWdyaWQtYW5ndWxhclwiO1xuaW1wb3J0IHtNYXREaWFsb2d9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcbmltcG9ydCB7SUNlbGxSZW5kZXJlclBhcmFtc30gZnJvbSBcImFnLWdyaWQtY29tbXVuaXR5XCI7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuXG5pbXBvcnQge2lzRW1wdHksIGlzRnVuY3Rpb24sIGdldH0gZnJvbSAnbG9kYXNoJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXRhYmxlLWNlbGwtbmFtZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1jZWxsLW5hbWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS1jZWxsLW5hbWUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNlbGxOYW1lQ29tcG9uZW50ICBpbXBsZW1lbnRzIElDZWxsUmVuZGVyZXJBbmd1bGFyQ29tcCB7XG5cbiAgY2VsbFBhcmFtczogYW55O1xuICBpdGVtOiBhbnk7XG4gIGRpYWxvZ1JlZjogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dGb3JtOiBNYXREaWFsb2csIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcbiAgfVxuXG4gIGFnSW5pdChwYXJhbXM6IElDZWxsUmVuZGVyZXJQYXJhbXMpOiB2b2lkIHtcbiAgICB0aGlzLmNlbGxQYXJhbXMgPSBwYXJhbXM7XG4gICAgdGhpcy5pdGVtID0gcGFyYW1zLmRhdGE7XG4gIH1cblxuICByZWZyZXNoKHBhcmFtczogSUNlbGxSZW5kZXJlclBhcmFtczxhbnk+KTogYm9vbGVhbiB7XG4gICAgdGhpcy5jZWxsUGFyYW1zID0gcGFyYW1zO1xuICAgIHRoaXMuaXRlbSA9IHBhcmFtcy5kYXRhO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgbGlua0NsaWNrZWQoZXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmIChpc0Z1bmN0aW9uKHRoaXMuY2VsbFBhcmFtcz8uY2VsbE5hbWVQcmVDaGVjaykpIHtcbiAgICAgIHRoaXMuY2VsbFBhcmFtcz8uY2VsbE5hbWVQcmVDaGVjayh0aGlzLml0ZW0pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGAke3RoaXMuY2VsbFBhcmFtcy5wYXRoUm9vdH0vJHt0aGlzLml0ZW0uaWR9YCk7XG4gICAgICB9KVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGAke3RoaXMuY2VsbFBhcmFtcy5wYXRoUm9vdH0vJHt0aGlzLml0ZW0uaWR9YCk7XG4gIH1cblxuICBnZXQgY2VsbFRleHQoKSB7XG4gICAgbGV0IHZhbCA9IGdldCh0aGlzLml0ZW0sIHRoaXMuY2VsbFBhcmFtcz8uY29sRGVmPy5maWVsZCk7XG4gICAgaWYgKGlzRW1wdHkodmFsKSkge1xuICAgICAgdmFsID0gdGhpcy5pdGVtLm5hbWU7XG4gICAgfVxuICAgIHJldHVybiB2YWw7XG4gIH1cbn1cbiIsIjxzcGFuIGNsYXNzPVwiY2VsbC1uYW1lLWNvbnRhaW5lclwiPlxuICAgIDxhIGhyZWY9XCIuL3t7Y2VsbFBhcmFtcy5wYXRoUm9vdH19L3t7aXRlbS5pZH19XCIgKGNsaWNrKT1cImxpbmtDbGlja2VkKCRldmVudClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBjZWxsLW5hbWUtcmVuZGVyZXJcIiBkYXRhLWlkPVwie3tpdGVtLmlkfX1cIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjZWxsUGFyYW1zLnNob3dJZGVudGl0eUljb25zXCIgY2xhc3M9XCJjZWxsLXN0YXR1cy1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNpcmNsZSB7e2l0ZW0uaGFzQXBpU2Vzc2lvbn19XCIgdGl0bGU9XCJBcGkgU2Vzc2lvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNpcmNsZSB7e2l0ZW0uaGFzRWRnZVJvdXRlckNvbm5lY3Rpb259fVwiIHRpdGxlPVwiRWRnZSBSb3V0ZXIgQ29ubmVjdGVkXCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2VsbFBhcmFtcy5zaG93Um91dGVySWNvbnNcIiBjbGFzcz1cImNlbGwtc3RhdHVzLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2lyY2xlIHt7aXRlbS5pc1ZlcmlmaWVkfX1cIiB0aXRsZT1cIkFwaSBTZXNzaW9uXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2lyY2xlIHt7aXRlbS5pc09ubGluZX19XCIgdGl0bGU9XCJFZGdlIFJvdXRlciBDb25uZWN0ZWRcIj48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3tjZWxsVGV4dH19PC9zdHJvbmc+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvYT5cbjwvc3Bhbj5cbiJdfQ==
|
|
@@ -77,7 +77,7 @@ class TextListInputComponent {
|
|
|
77
77
|
</p-chips>
|
|
78
78
|
<div *ngIf="error" class="error">{{error}}</div>
|
|
79
79
|
</div>
|
|
80
|
-
`, isInline: true, styles: ["
|
|
80
|
+
`, isInline: true, styles: [""], 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.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: "component", type: i3.Chips, selector: "p-chips", inputs: ["style", "styleClass", "disabled", "field", "placeholder", "max", "ariaLabel", "ariaLabelledBy", "tabindex", "inputId", "allowDuplicate", "inputStyle", "inputStyleClass", "addOnTab", "addOnBlur", "separator", "showClear"], outputs: ["onAdd", "onRemove", "onFocus", "onBlur", "onChipClick", "onClear"] }] }); }
|
|
81
81
|
}
|
|
82
82
|
export { TextListInputComponent };
|
|
83
83
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TextListInputComponent, decorators: [{
|
|
@@ -97,7 +97,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
97
97
|
</p-chips>
|
|
98
98
|
<div *ngIf="error" class="error">{{error}}</div>
|
|
99
99
|
</div>
|
|
100
|
-
|
|
100
|
+
` }]
|
|
101
101
|
}], propDecorators: { fieldName: [{
|
|
102
102
|
type: Input
|
|
103
103
|
}], fieldValue: [{
|
package/esm2022/lib/features/list-page-features/list-page-header/list-page-header.component.mjs
CHANGED
|
@@ -27,13 +27,32 @@ class ListPageHeaderComponent {
|
|
|
27
27
|
clickAction(value) {
|
|
28
28
|
this.actionClicked.emit(value);
|
|
29
29
|
}
|
|
30
|
+
tabSelected(tab) {
|
|
31
|
+
const parsedUrl = new URL(window.location.href);
|
|
32
|
+
let path = parsedUrl.pathname;
|
|
33
|
+
if (document.baseURI) {
|
|
34
|
+
const base = new URL(document.baseURI).pathname;
|
|
35
|
+
if (path.startsWith(base)) {
|
|
36
|
+
path = path.slice(base.length);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
let tabUrl = tab.url;
|
|
40
|
+
if (tab.url.startsWith('/')) {
|
|
41
|
+
tabUrl = tab.url.slice(1);
|
|
42
|
+
}
|
|
43
|
+
if (path.startsWith('/')) {
|
|
44
|
+
path = path.slice(1);
|
|
45
|
+
}
|
|
46
|
+
// Return the path without parameters
|
|
47
|
+
return tabUrl === path;
|
|
48
|
+
}
|
|
30
49
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ListPageHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ListPageHeaderComponent, selector: "lib-list-page-header", inputs: { title: "title", tabs: "tabs", showAdd: "showAdd", hideAction: "hideAction" }, outputs: { actionClicked: "actionClicked" }, ngImport: i0, template: "<div class=\"header\">\n <div class=\"title\">\n <span>{{title}}</span>\n </div>\n <div class=\"bread\"></div>\n <div class=\"line\"></div>\n <div class=\"tabs\">\n <div *ngFor=\"let tab of tabs\" class=\"tab\" [routerLink]=\"tab.url\" [hidden]=\"tab.hidden\">{{tab.label}}</div>\n </div>\n <div *ngIf=\"showAdd\" [ngClass]=\"{hideAction: hideAction}\" (click)=\"clickAction('add')\"\n class=\"action icon-plus icon-add\" data-action=\"add\"></div>\n <div *ngIf=\"!showAdd\" [ngClass]=\"{hideAction: hideAction}\" (click)=\"clickAction('delete')\"\n class=\"action icon-minus icon-delete\" data-action=\"delete\"></div>\n</div>\n", styles: [".header [class^=icon-],.header [class*=\" icon-\"]{font-family:zac,serif!important;speak:never;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.header .hideAction{display:none}.header .action{text-align:center;color:var(--white);line-height:60px;font-size:30px;width:60px;height:60px;border-radius:40px;position:absolute;right:0;top:12px;background-color:var(--primary);cursor:pointer;overflow:hidden;z-index:24;box-shadow:var(--shadow);transition:var(--transition)}.header .action.icon-delete{background-color:var(--red)}.header .line{width:100%;height:4px;background-color:var(--stroke)}.header .tabs{position:relative;display:flex;flex:1 1;flex-wrap:wrap;width:100%;font-size:14px;min-height:40px;padding-top:16px}.header .tabs .tab{position:relative;float:left;margin-right:20px;padding-bottom:5px;margin-bottom:10px;font-size:14px;font-weight:600;cursor:pointer;transition:var(--transition);border-bottom-width:4px;border-bottom-color:transparent;border-bottom-style:solid}.header .tabs .tab:hover{border-bottom-color:var(--inputBorder)}.header .title{height:30px;overflow:hidden;font-family:Russo One,serif;color:var(--primary);filter:brightness(50%);font-size:30px;text-transform:uppercase;font-weight:400;line-height:34px}@media (max-width: 1024px){.title{font-size:20px!important}.action{line-height:45px!important;font-size:20px!important;width:45px!important;height:45px!important;border-radius:40px!important;top:20px!important;right:0!important}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
|
|
50
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ListPageHeaderComponent, selector: "lib-list-page-header", inputs: { title: "title", tabs: "tabs", showAdd: "showAdd", hideAction: "hideAction" }, outputs: { actionClicked: "actionClicked" }, ngImport: i0, template: "<div class=\"header\">\n <div class=\"title\">\n <span>{{title}}</span>\n </div>\n <div class=\"bread\"></div>\n <div class=\"line\"></div>\n <div class=\"tabs\">\n <div *ngFor=\"let tab of tabs\" class=\"tab\" [ngClass]=\"{selected: tabSelected(tab)}\" [routerLink]=\"tab.url\" [hidden]=\"tab.hidden\">{{tab.label}}</div>\n </div>\n <div *ngIf=\"showAdd\" [ngClass]=\"{hideAction: hideAction}\" (click)=\"clickAction('add')\"\n class=\"action icon-plus icon-add\" data-action=\"add\"></div>\n <div *ngIf=\"!showAdd\" [ngClass]=\"{hideAction: hideAction}\" (click)=\"clickAction('delete')\"\n class=\"action icon-minus icon-delete\" data-action=\"delete\"></div>\n</div>\n", styles: [".header [class^=icon-],.header [class*=\" icon-\"]{font-family:zac,serif!important;speak:never;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.header .hideAction{display:none}.header .action{text-align:center;color:var(--white);line-height:60px;font-size:30px;width:60px;height:60px;border-radius:40px;position:absolute;right:0;top:12px;background-color:var(--primary);cursor:pointer;overflow:hidden;z-index:24;box-shadow:var(--shadow);transition:var(--transition)}.header .action.icon-delete{background-color:var(--red)}.header .line{width:100%;height:4px;background-color:var(--stroke)}.header .tabs{position:relative;display:flex;flex:1 1;flex-wrap:wrap;width:100%;font-size:14px;min-height:40px;padding-top:16px}.header .tabs .tab{position:relative;float:left;margin-right:20px;padding-bottom:5px;margin-bottom:10px;font-size:14px;font-weight:600;cursor:pointer;transition:var(--transition);border-bottom-width:4px;border-bottom-color:transparent;border-bottom-style:solid}.header .tabs .tab:hover{border-bottom-color:var(--inputBorder)}.header .tabs .tab.selected,.header .tabs .tab.selected:hover{border-bottom-color:var(--primaryColor)}.header .title{height:30px;overflow:hidden;font-family:Russo One,serif;color:var(--primary);filter:brightness(50%);font-size:30px;text-transform:uppercase;font-weight:400;line-height:34px}@media (max-width: 1024px){.title{font-size:20px!important}.action{line-height:45px!important;font-size:20px!important;width:45px!important;height:45px!important;border-radius:40px!important;top:20px!important;right:0!important}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
|
|
32
51
|
}
|
|
33
52
|
export { ListPageHeaderComponent };
|
|
34
53
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ListPageHeaderComponent, decorators: [{
|
|
35
54
|
type: Component,
|
|
36
|
-
args: [{ selector: 'lib-list-page-header', template: "<div class=\"header\">\n <div class=\"title\">\n <span>{{title}}</span>\n </div>\n <div class=\"bread\"></div>\n <div class=\"line\"></div>\n <div class=\"tabs\">\n <div *ngFor=\"let tab of tabs\" class=\"tab\" [routerLink]=\"tab.url\" [hidden]=\"tab.hidden\">{{tab.label}}</div>\n </div>\n <div *ngIf=\"showAdd\" [ngClass]=\"{hideAction: hideAction}\" (click)=\"clickAction('add')\"\n class=\"action icon-plus icon-add\" data-action=\"add\"></div>\n <div *ngIf=\"!showAdd\" [ngClass]=\"{hideAction: hideAction}\" (click)=\"clickAction('delete')\"\n class=\"action icon-minus icon-delete\" data-action=\"delete\"></div>\n</div>\n", styles: [".header [class^=icon-],.header [class*=\" icon-\"]{font-family:zac,serif!important;speak:never;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.header .hideAction{display:none}.header .action{text-align:center;color:var(--white);line-height:60px;font-size:30px;width:60px;height:60px;border-radius:40px;position:absolute;right:0;top:12px;background-color:var(--primary);cursor:pointer;overflow:hidden;z-index:24;box-shadow:var(--shadow);transition:var(--transition)}.header .action.icon-delete{background-color:var(--red)}.header .line{width:100%;height:4px;background-color:var(--stroke)}.header .tabs{position:relative;display:flex;flex:1 1;flex-wrap:wrap;width:100%;font-size:14px;min-height:40px;padding-top:16px}.header .tabs .tab{position:relative;float:left;margin-right:20px;padding-bottom:5px;margin-bottom:10px;font-size:14px;font-weight:600;cursor:pointer;transition:var(--transition);border-bottom-width:4px;border-bottom-color:transparent;border-bottom-style:solid}.header .tabs .tab:hover{border-bottom-color:var(--inputBorder)}.header .title{height:30px;overflow:hidden;font-family:Russo One,serif;color:var(--primary);filter:brightness(50%);font-size:30px;text-transform:uppercase;font-weight:400;line-height:34px}@media (max-width: 1024px){.title{font-size:20px!important}.action{line-height:45px!important;font-size:20px!important;width:45px!important;height:45px!important;border-radius:40px!important;top:20px!important;right:0!important}}\n"] }]
|
|
55
|
+
args: [{ selector: 'lib-list-page-header', template: "<div class=\"header\">\n <div class=\"title\">\n <span>{{title}}</span>\n </div>\n <div class=\"bread\"></div>\n <div class=\"line\"></div>\n <div class=\"tabs\">\n <div *ngFor=\"let tab of tabs\" class=\"tab\" [ngClass]=\"{selected: tabSelected(tab)}\" [routerLink]=\"tab.url\" [hidden]=\"tab.hidden\">{{tab.label}}</div>\n </div>\n <div *ngIf=\"showAdd\" [ngClass]=\"{hideAction: hideAction}\" (click)=\"clickAction('add')\"\n class=\"action icon-plus icon-add\" data-action=\"add\"></div>\n <div *ngIf=\"!showAdd\" [ngClass]=\"{hideAction: hideAction}\" (click)=\"clickAction('delete')\"\n class=\"action icon-minus icon-delete\" data-action=\"delete\"></div>\n</div>\n", styles: [".header [class^=icon-],.header [class*=\" icon-\"]{font-family:zac,serif!important;speak:never;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.header .hideAction{display:none}.header .action{text-align:center;color:var(--white);line-height:60px;font-size:30px;width:60px;height:60px;border-radius:40px;position:absolute;right:0;top:12px;background-color:var(--primary);cursor:pointer;overflow:hidden;z-index:24;box-shadow:var(--shadow);transition:var(--transition)}.header .action.icon-delete{background-color:var(--red)}.header .line{width:100%;height:4px;background-color:var(--stroke)}.header .tabs{position:relative;display:flex;flex:1 1;flex-wrap:wrap;width:100%;font-size:14px;min-height:40px;padding-top:16px}.header .tabs .tab{position:relative;float:left;margin-right:20px;padding-bottom:5px;margin-bottom:10px;font-size:14px;font-weight:600;cursor:pointer;transition:var(--transition);border-bottom-width:4px;border-bottom-color:transparent;border-bottom-style:solid}.header .tabs .tab:hover{border-bottom-color:var(--inputBorder)}.header .tabs .tab.selected,.header .tabs .tab.selected:hover{border-bottom-color:var(--primaryColor)}.header .title{height:30px;overflow:hidden;font-family:Russo One,serif;color:var(--primary);filter:brightness(50%);font-size:30px;text-transform:uppercase;font-weight:400;line-height:34px}@media (max-width: 1024px){.title{font-size:20px!important}.action{line-height:45px!important;font-size:20px!important;width:45px!important;height:45px!important;border-radius:40px!important;top:20px!important;right:0!important}}\n"] }]
|
|
37
56
|
}], propDecorators: { title: [{
|
|
38
57
|
type: Input
|
|
39
58
|
}], tabs: [{
|
|
@@ -45,4 +64,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
45
64
|
}], actionClicked: [{
|
|
46
65
|
type: Output
|
|
47
66
|
}] } });
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1wYWdlLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvbGlzdC1wYWdlLWZlYXR1cmVzL2xpc3QtcGFnZS1oZWFkZXIvbGlzdC1wYWdlLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvbGlzdC1wYWdlLWZlYXR1cmVzL2xpc3QtcGFnZS1oZWFkZXIvbGlzdC1wYWdlLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7QUFFckUsTUFLYSx1QkFBdUI7SUFMcEM7UUFNYSxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBRW5CLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFDZixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztLQXlCeEQ7SUF2QkcsV0FBVyxDQUFDLEtBQWE7UUFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFHO1FBQ1gsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRCxJQUFJLElBQUksR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDO1FBQzlCLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRTtZQUNsQixNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDO1lBQ2hELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdkIsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2xDO1NBQ0o7UUFDRCxJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO1FBQ3JCLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDekIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzdCO1FBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3RCLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3hCO1FBQ0QscUNBQXFDO1FBQ3JDLE9BQU8sTUFBTSxLQUFLLElBQUksQ0FBQztJQUMzQixDQUFDOytHQTdCUSx1QkFBdUI7bUdBQXZCLHVCQUF1QixpTUN2QnBDLHd0QkFjQTs7U0RTYSx1QkFBdUI7NEZBQXZCLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxzQkFBc0I7OEJBS3JCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItbGlzdC1wYWdlLWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LXBhZ2UtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC1wYWdlLWhlYWRlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIExpc3RQYWdlSGVhZGVyQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJyc7XG4gICAgQElucHV0KCkgdGFicyE6IGFueVtdO1xuICAgIEBJbnB1dCgpIHNob3dBZGQgPSB0cnVlO1xuICAgIEBJbnB1dCgpIGhpZGVBY3Rpb24gPSBmYWxzZTtcbiAgICBAT3V0cHV0KCkgYWN0aW9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgY2xpY2tBY3Rpb24odmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLmFjdGlvbkNsaWNrZWQuZW1pdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGFiU2VsZWN0ZWQodGFiKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICAgICAgICBsZXQgcGF0aCA9IHBhcnNlZFVybC5wYXRobmFtZTtcbiAgICAgICAgaWYgKGRvY3VtZW50LmJhc2VVUkkpIHtcbiAgICAgICAgICAgIGNvbnN0IGJhc2UgPSBuZXcgVVJMKGRvY3VtZW50LmJhc2VVUkkpLnBhdGhuYW1lO1xuICAgICAgICAgICAgaWYgKHBhdGguc3RhcnRzV2l0aChiYXNlKSkge1xuICAgICAgICAgICAgICAgIHBhdGggPSBwYXRoLnNsaWNlKGJhc2UubGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgdGFiVXJsID0gdGFiLnVybDtcbiAgICAgICAgaWYgKHRhYi51cmwuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgICAgICB0YWJVcmwgPSB0YWIudXJsLnNsaWNlKDEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXRoLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICAgICAgcGF0aCA9IHBhdGguc2xpY2UoMSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmV0dXJuIHRoZSBwYXRoIHdpdGhvdXQgcGFyYW1ldGVyc1xuICAgICAgICByZXR1cm4gdGFiVXJsID09PSBwYXRoO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5cbiAgICAgICAgPHNwYW4+e3t0aXRsZX19PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJicmVhZFwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJsaW5lXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRhYnNcIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNcIiBjbGFzcz1cInRhYlwiIFtuZ0NsYXNzXT1cIntzZWxlY3RlZDogdGFiU2VsZWN0ZWQodGFiKX1cIiBbcm91dGVyTGlua109XCJ0YWIudXJsXCIgW2hpZGRlbl09XCJ0YWIuaGlkZGVuXCI+e3t0YWIubGFiZWx9fTwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJzaG93QWRkXCIgW25nQ2xhc3NdPVwie2hpZGVBY3Rpb246IGhpZGVBY3Rpb259XCIgKGNsaWNrKT1cImNsaWNrQWN0aW9uKCdhZGQnKVwiXG4gICAgICAgICBjbGFzcz1cImFjdGlvbiBpY29uLXBsdXMgaWNvbi1hZGRcIiBkYXRhLWFjdGlvbj1cImFkZFwiPjwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhc2hvd0FkZFwiIFtuZ0NsYXNzXT1cIntoaWRlQWN0aW9uOiBoaWRlQWN0aW9ufVwiIChjbGljayk9XCJjbGlja0FjdGlvbignZGVsZXRlJylcIlxuICAgICAgICAgY2xhc3M9XCJhY3Rpb24gaWNvbi1taW51cyBpY29uLWRlbGV0ZVwiIGRhdGEtYWN0aW9uPVwiZGVsZXRlXCI+PC9kaXY+XG48L2Rpdj5cbiJdfQ==
|