@openziti/ziti-console-lib 0.3.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.
- package/README.md +24 -0
- package/assets/animations/ConstructionZiggy.json +15233 -0
- package/assets/animations/HelloZiggy.json +10008 -0
- package/assets/animations/SmartZiggy.json +9488 -0
- package/assets/components/add.html +1 -0
- package/assets/components/api.html +12 -0
- package/assets/components/customtags.html +4 -0
- package/assets/components/line.html +1 -0
- package/assets/components/noitems.html +1 -0
- package/assets/components/save.html +4 -0
- package/assets/components/search.html +8 -0
- package/assets/components/tabIdentities.html +6 -0
- package/assets/components/tabPolicies.html +7 -0
- package/assets/components/tabRouters.html +5 -0
- package/assets/components/tabServers.html +4 -0
- package/assets/components/tabServices.html +5 -0
- package/assets/components/tabSessions.html +4 -0
- package/assets/data/mail.json +0 -0
- package/assets/data/services.json +6 -0
- package/assets/data/settings.json +25 -0
- package/assets/data/site.json +31 -0
- package/assets/data/tags.json +7 -0
- package/assets/data/templates.json +1 -0
- package/assets/fonts/OpenSans-Regular.ttf +0 -0
- package/assets/fonts/OpenSans-Regular.woff +0 -0
- package/assets/fonts/OpenSans-Regular.woff2 +0 -0
- package/assets/fonts/RussoOne-Regular.ttf +0 -0
- package/assets/fonts/RussoOne-Regular.woff +0 -0
- package/assets/fonts/RussoOne-Regular.woff2 +0 -0
- package/assets/fonts/zac.eot +0 -0
- package/assets/fonts/zac.svg +55 -0
- package/assets/fonts/zac.ttf +0 -0
- package/assets/fonts/zac.woff +0 -0
- package/assets/fonts/zac.woff2 +0 -0
- package/assets/html/api-sessions.htm +153 -0
- package/assets/html/attributes.htm +260 -0
- package/assets/html/auth-policies.htm +410 -0
- package/assets/html/cas.htm +445 -0
- package/assets/html/config-types.htm +168 -0
- package/assets/html/configs.htm +238 -0
- package/assets/html/deprecated/fabric-links.htm +336 -0
- package/assets/html/deprecated/fabric-routers.htm +72 -0
- package/assets/html/deprecated/fabric-services.htm +494 -0
- package/assets/html/identities.htm +934 -0
- package/assets/html/index.htm +161 -0
- package/assets/html/jwt-signers.htm +260 -0
- package/assets/html/known.htm +115 -0
- package/assets/html/login.htm +131 -0
- package/assets/html/organization.htm +223 -0
- package/assets/html/posture-checks.htm +393 -0
- package/assets/html/profile.htm +52 -0
- package/assets/html/recipes.htm +455 -0
- package/assets/html/router-policies.htm +168 -0
- package/assets/html/routers.htm +323 -0
- package/assets/html/servers.htm +236 -0
- package/assets/html/service-policies.htm +197 -0
- package/assets/html/service-router-policies.htm +170 -0
- package/assets/html/services.htm +634 -0
- package/assets/html/sessions.htm +157 -0
- package/assets/html/settings.htm +146 -0
- package/assets/html/terminators.htm +244 -0
- package/assets/html/transit-routers.htm +173 -0
- package/assets/icons/android-icon-192x192.png +0 -0
- package/assets/icons/apple-icon-114x114.png +0 -0
- package/assets/icons/apple-icon-120x120.png +0 -0
- package/assets/icons/apple-icon-144x144.png +0 -0
- package/assets/icons/apple-icon-152x152.png +0 -0
- package/assets/icons/apple-icon-180x180.png +0 -0
- package/assets/icons/apple-icon-57x57.png +0 -0
- package/assets/icons/apple-icon-60x60.png +0 -0
- package/assets/icons/apple-icon-72x72.png +0 -0
- package/assets/icons/apple-icon-76x76.png +0 -0
- package/assets/icons/apple-icon-precomposed.png +0 -0
- package/assets/icons/favicon-16x16.png +0 -0
- package/assets/icons/favicon-32x32.png +0 -0
- package/assets/icons/favicon-96x96.png +0 -0
- package/assets/icons/favicon.ico +0 -0
- package/assets/icons/ms-icon-144x144.png +0 -0
- package/assets/images/Filter.png +0 -0
- package/assets/images/Login.jpg +0 -0
- package/assets/images/SortDown.png +0 -0
- package/assets/images/SortUp.png +0 -0
- package/assets/images/android.png +0 -0
- package/assets/images/anywhere.png +0 -0
- package/assets/images/apple.png +0 -0
- package/assets/images/bug.png +0 -0
- package/assets/images/check.png +0 -0
- package/assets/images/error.png +0 -0
- package/assets/images/info.png +0 -0
- package/assets/images/linux.png +0 -0
- package/assets/images/other.png +0 -0
- package/assets/images/scrollbar.png +0 -0
- package/assets/images/select.png +0 -0
- package/assets/images/success.png +0 -0
- package/assets/images/visualizer/ER.png +0 -0
- package/assets/images/visualizer/Routers.png +0 -0
- package/assets/images/visualizer/er_error.png +0 -0
- package/assets/images/visualizer/error_er.png +0 -0
- package/assets/images/visualizer/host-error.png +0 -0
- package/assets/images/visualizer/host.png +0 -0
- package/assets/images/visualizer/host_unregistered.png +0 -0
- package/assets/images/visualizer/link-cut.png +0 -0
- package/assets/images/visualizer/service.png +0 -0
- package/assets/images/visualizer/unregistered.png +0 -0
- package/assets/images/warning.png +0 -0
- package/assets/images/windows.png +0 -0
- package/assets/languages/en-us.json +330 -0
- package/assets/resources/avatar/man.svg +78 -0
- package/assets/resources/avatar/woman.svg +96 -0
- package/assets/resources/icon/analysis.svg +104 -0
- package/assets/resources/icon/appwans.svg +20 -0
- package/assets/resources/icon/architecture.svg +1 -0
- package/assets/resources/icon/bike.svg +94 -0
- package/assets/resources/icon/bus.svg +64 -0
- package/assets/resources/icon/cas.svg +46 -0
- package/assets/resources/icon/clusters.svg +28 -0
- package/assets/resources/icon/computer.svg +1 -0
- package/assets/resources/icon/data.svg +1 -0
- package/assets/resources/icon/delivery-truck.svg +1 -0
- package/assets/resources/icon/explosion.svg +81 -0
- package/assets/resources/icon/fabricServices.svg +31 -0
- package/assets/resources/icon/fabrics.svg +136 -0
- package/assets/resources/icon/front.svg +83 -0
- package/assets/resources/icon/gateway.svg +49 -0
- package/assets/resources/icon/gear.svg +122 -0
- package/assets/resources/icon/house.svg +72 -0
- package/assets/resources/icon/language.svg +1 -0
- package/assets/resources/icon/objective.svg +55 -0
- package/assets/resources/icon/route.svg +97 -0
- package/assets/resources/icon/routers.svg +27 -0
- package/assets/resources/icon/startup.svg +112 -0
- package/assets/resources/icon/switch.svg +101 -0
- package/assets/scripts/chart.min.js +7 -0
- package/assets/scripts/commands.js +112 -0
- package/assets/scripts/components/codemirror/codemirror.css +356 -0
- package/assets/scripts/components/codemirror/codemirror.js +9741 -0
- package/assets/scripts/components/codemirror/modes/addons/closetags.js +200 -0
- package/assets/scripts/components/codemirror/modes/addons/colorize.js +40 -0
- package/assets/scripts/components/codemirror/modes/addons/css-hint.js +66 -0
- package/assets/scripts/components/codemirror/modes/addons/formatting.js +124 -0
- package/assets/scripts/components/codemirror/modes/addons/html-hint.js +366 -0
- package/assets/scripts/components/codemirror/modes/addons/javascript-hint.js +159 -0
- package/assets/scripts/components/codemirror/modes/addons/show-hint.css +36 -0
- package/assets/scripts/components/codemirror/modes/addons/show-hint.js +482 -0
- package/assets/scripts/components/codemirror/modes/css.js +831 -0
- package/assets/scripts/components/codemirror/modes/htmlmixed.js +152 -0
- package/assets/scripts/components/codemirror/modes/javascript.js +930 -0
- package/assets/scripts/components/codemirror/modes/xml.js +413 -0
- package/assets/scripts/components/column.css +184 -0
- package/assets/scripts/components/column.js +165 -0
- package/assets/scripts/components/flows.css +0 -0
- package/assets/scripts/components/flows.js +48 -0
- package/assets/scripts/components/leaflet/images/layers-2x.png +0 -0
- package/assets/scripts/components/leaflet/images/layers.png +0 -0
- package/assets/scripts/components/leaflet/images/marker-icon-2x.png +0 -0
- package/assets/scripts/components/leaflet/images/marker-icon.png +0 -0
- package/assets/scripts/components/leaflet/images/marker-shadow.png +0 -0
- package/assets/scripts/components/leaflet/leaflet-src.esm.js +13926 -0
- package/assets/scripts/components/leaflet/leaflet-src.esm.js.map +1 -0
- package/assets/scripts/components/leaflet/leaflet-src.js +14020 -0
- package/assets/scripts/components/leaflet/leaflet-src.js.map +1 -0
- package/assets/scripts/components/leaflet/leaflet.css +640 -0
- package/assets/scripts/components/leaflet/leaflet.js +5 -0
- package/assets/scripts/components/leaflet/leaflet.js.map +1 -0
- package/assets/scripts/components/moment.js +4602 -0
- package/assets/scripts/components/multiselect.js +333 -0
- package/assets/scripts/components/network/img/network/acceptDeleteIcon.png +0 -0
- package/assets/scripts/components/network/img/network/addNodeIcon.png +0 -0
- package/assets/scripts/components/network/img/network/backIcon.png +0 -0
- package/assets/scripts/components/network/img/network/connectIcon.png +0 -0
- package/assets/scripts/components/network/img/network/cross.png +0 -0
- package/assets/scripts/components/network/img/network/cross2.png +0 -0
- package/assets/scripts/components/network/img/network/deleteIcon.png +0 -0
- package/assets/scripts/components/network/img/network/downArrow.png +0 -0
- package/assets/scripts/components/network/img/network/editIcon.png +0 -0
- package/assets/scripts/components/network/img/network/leftArrow.png +0 -0
- package/assets/scripts/components/network/img/network/minus.png +0 -0
- package/assets/scripts/components/network/img/network/plus.png +0 -0
- package/assets/scripts/components/network/img/network/rightArrow.png +0 -0
- package/assets/scripts/components/network/img/network/upArrow.png +0 -0
- package/assets/scripts/components/network/img/network/zoomExtends.png +0 -0
- package/assets/scripts/components/network/types/DOMutil.d.ts +99 -0
- package/assets/scripts/components/network/types/index-legacy-bundle.d.ts +4 -0
- package/assets/scripts/components/network/types/index-legacy-bundle.d.ts.map +1 -0
- package/assets/scripts/components/network/types/index-legacy.d.ts +24 -0
- package/assets/scripts/components/network/types/index-legacy.d.ts.map +1 -0
- package/assets/scripts/components/network/types/index-peer.d.ts +11 -0
- package/assets/scripts/components/network/types/index-peer.d.ts.map +1 -0
- package/assets/scripts/components/network/types/index-standalone.d.ts +7 -0
- package/assets/scripts/components/network/types/index-standalone.d.ts.map +1 -0
- package/assets/scripts/components/network/types/module/hammer.d.ts +2 -0
- package/assets/scripts/components/network/types/module/moment.d.ts +2 -0
- package/assets/scripts/components/network/types/network/Images.d.ts +2 -0
- package/assets/scripts/components/network/types/network/Network.d.ts +1030 -0
- package/assets/scripts/components/network/types/network/dotparser.d.ts +2 -0
- package/assets/scripts/components/network/types/network/gephiParser.d.ts +80 -0
- package/assets/scripts/components/network/types/network/gephiParser.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/bezier-edge-dynamic.d.ts +55 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/bezier-edge-dynamic.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/bezier-edge-static.d.ts +37 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/bezier-edge-static.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/cubic-bezier-edge.d.ts +32 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/cubic-bezier-edge.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/index.d.ts +10 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/index.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/straight-edge.d.ts +26 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/straight-edge.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/bezier-edge-base.d.ts +68 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/bezier-edge-base.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/cubic-bezier-edge-base.d.ts +38 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/cubic-bezier-edge-base.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/edge-base.d.ts +248 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/edge-base.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/end-points.d.ts +58 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/end-points.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/types.d.ts +196 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/types.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/layout-engine/index.d.ts +32 -0
- package/assets/scripts/components/network/types/network/modules/layout-engine/index.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/options.d.ts +2 -0
- package/assets/scripts/components/network/types/network/shapes.d.ts +122 -0
- package/assets/scripts/components/network/types/network/shapes.d.ts.map +1 -0
- package/assets/scripts/components/network/vis-network.css +716 -0
- package/assets/scripts/components/network/vis-network.esm.js +58974 -0
- package/assets/scripts/components/network/vis-network.esm.js.map +1 -0
- package/assets/scripts/components/network/vis-network.esm.min.js +53 -0
- package/assets/scripts/components/network/vis-network.esm.min.js.map +1 -0
- package/assets/scripts/components/network/vis-network.js +58994 -0
- package/assets/scripts/components/network/vis-network.js.map +1 -0
- package/assets/scripts/components/network/vis-network.min.css +1 -0
- package/assets/scripts/components/network/vis-network.min.js +53 -0
- package/assets/scripts/components/network/vis-network.min.js.map +1 -0
- package/assets/scripts/components/qrcode.min.js +1 -0
- package/assets/scripts/components/resources.js +26 -0
- package/assets/scripts/components/selector-new.js +300 -0
- package/assets/scripts/components/selector.js +300 -0
- package/assets/scripts/components/spectrum.js +2323 -0
- package/assets/scripts/components/timezone.js +1545 -0
- package/assets/scripts/components/uploader.js +74 -0
- package/assets/scripts/context.js +177 -0
- package/assets/scripts/dragging.js +58 -0
- package/assets/scripts/forms/forms.js +74 -0
- package/assets/scripts/forms/host.v1.htm +43 -0
- package/assets/scripts/forms/intercept.v1.htm +0 -0
- package/assets/scripts/forms/schema.js +693 -0
- package/assets/scripts/growler.js +133 -0
- package/assets/scripts/header.js +163 -0
- package/assets/scripts/jquery-3.6.3.min.js +2 -0
- package/assets/scripts/jquery.datetimepicker.js +2930 -0
- package/assets/scripts/locale.js +47 -0
- package/assets/scripts/modal.js +65 -0
- package/assets/scripts/model/data.js +558 -0
- package/assets/scripts/model/fabric.js +55 -0
- package/assets/scripts/model/fabricServices.js +45 -0
- package/assets/scripts/model/known.js +43 -0
- package/assets/scripts/model/links.js +44 -0
- package/assets/scripts/model/routers.js +51 -0
- package/assets/scripts/model/series.js +70 -0
- package/assets/scripts/model/sessions.js +61 -0
- package/assets/scripts/model/settings.js +60 -0
- package/assets/scripts/model/summary.js +49 -0
- package/assets/scripts/model/tags.js +330 -0
- package/assets/scripts/model/templates.js +42 -0
- package/assets/scripts/model/user.js +40 -0
- package/assets/scripts/restrictions.js +34 -0
- package/assets/scripts/service.js +76 -0
- package/assets/scripts/validation-tools.js +5119 -0
- package/assets/scripts/ziti.js +372 -0
- package/assets/styles/chart.min.css +1 -0
- package/assets/styles/dark.css +52 -0
- package/assets/styles/datetimepicker.css +1 -0
- package/assets/styles/forms.css +521 -0
- package/assets/styles/global.scss +890 -0
- package/assets/styles/growler.css +190 -0
- package/assets/styles/header.css +232 -0
- package/assets/styles/icons.css +160 -0
- package/assets/styles/navigation.css +183 -0
- package/assets/styles/select2.css +481 -0
- package/assets/styles/spectrum.css +507 -0
- package/assets/styles/tables.css +424 -0
- package/assets/styles/tooltip.css +134 -0
- package/assets/styles/ziti.css +3216 -0
- package/assets/svgs/Advanced.svg +89 -0
- package/assets/svgs/ArrowDown.svg +15 -0
- package/assets/svgs/ArrowDownDark.svg +15 -0
- package/assets/svgs/Confirm_Trash.svg +42 -0
- package/assets/svgs/DownloadKey.svg +50 -0
- package/assets/svgs/Filter.svg +13 -0
- package/assets/svgs/Growl_Bug.svg +47 -0
- package/assets/svgs/Growl_Error.svg +41 -0
- package/assets/svgs/Growl_Info.svg +45 -0
- package/assets/svgs/Growl_Success.svg +34 -0
- package/assets/svgs/Growl_Warning.svg +44 -0
- package/assets/svgs/MainMenuBlankUser.svg +14 -0
- package/assets/svgs/MainMenuNetworks.svg +37 -0
- package/assets/svgs/MainMenuNotifications.svg +32 -0
- package/assets/svgs/MainMenuOrg.svg +68 -0
- package/assets/svgs/MainMenuPlus.svg +13 -0
- package/assets/svgs/MainMenuSearch.svg +22 -0
- package/assets/svgs/MainMenuSupport.svg +417 -0
- package/assets/svgs/No_Clients.svg +94 -0
- package/assets/svgs/No_Plus.svg +30 -0
- package/assets/svgs/No_Routers.svg +56 -0
- package/assets/svgs/Resize.svg +33 -0
- package/assets/svgs/Simple.svg +62 -0
- package/assets/svgs/appwans.svg +20 -0
- package/assets/svgs/cas.svg +46 -0
- package/assets/svgs/cert.svg +69 -0
- package/assets/svgs/clear.svg +13 -0
- package/assets/svgs/close.svg +14 -0
- package/assets/svgs/clusters.svg +28 -0
- package/assets/svgs/copy.svg +64 -0
- package/assets/svgs/dashboard.svg +32 -0
- package/assets/svgs/dial.svg +83 -0
- package/assets/svgs/docs.svg +95 -0
- package/assets/svgs/downloads.svg +74 -0
- package/assets/svgs/fabricServices.svg +31 -0
- package/assets/svgs/fabrics.svg +134 -0
- package/assets/svgs/gateways.svg +49 -0
- package/assets/svgs/heart.svg +1 -0
- package/assets/svgs/ids.svg +20 -0
- package/assets/svgs/infoicon.svg +14 -0
- package/assets/svgs/lock.svg +12 -0
- package/assets/svgs/minus.svg +11 -0
- package/assets/svgs/nodata.svg +27 -0
- package/assets/svgs/qr.svg +56 -0
- package/assets/svgs/refresh.svg +24 -0
- package/assets/svgs/routers.svg +31 -0
- package/assets/svgs/select.svg +18 -0
- package/assets/svgs/services.svg +19 -0
- package/assets/svgs/settings.svg +1 -0
- package/assets/svgs/upload.svg +55 -0
- package/assets/templates/footer.htm +183 -0
- package/assets/templates/header.htm +298 -0
- package/assets/vectors/certificates.svg +1 -0
- package/assets/vectors/change.svg +1 -0
- package/assets/vectors/configuration.svg +2 -0
- package/assets/vectors/customize.svg +1 -0
- package/assets/vectors/dashboard.svg +1 -0
- package/assets/vectors/edgepolicies.svg +2 -0
- package/assets/vectors/globe.svg +63 -0
- package/assets/vectors/help.svg +48 -0
- package/assets/vectors/identity.svg +1 -0
- package/assets/vectors/notify.svg +1 -0
- package/assets/vectors/plus.svg +1 -0
- package/assets/vectors/posture.svg +1 -0
- package/assets/vectors/profile.svg +1 -0
- package/assets/vectors/router.svg +1 -0
- package/assets/vectors/routerpolicies.svg +1 -0
- package/assets/vectors/schema.svg +1 -0
- package/assets/vectors/server (1).svg +293 -0
- package/assets/vectors/servers.svg +103 -0
- package/assets/vectors/servicepolicy.svg +1 -0
- package/assets/vectors/services.svg +126 -0
- package/assets/vectors/settings.svg +130 -0
- package/assets/vectors/terminators.svg +1 -0
- package/assets/vectors/transitrouter.svg +1 -0
- package/esm2022/lib/app.initializer.mjs +24 -0
- package/esm2022/lib/features/card/card.component.mjs +29 -0
- package/esm2022/lib/features/card-list/card-list.component.mjs +50 -0
- package/esm2022/lib/features/config-editor/config-editor.component.mjs +239 -0
- package/esm2022/lib/features/confirm/confirm.component.mjs +59 -0
- package/esm2022/lib/features/creation-summary-dialog/creation-summary-dialog.component.mjs +92 -0
- package/esm2022/lib/features/custom-tags/custom-tags.component.mjs +77 -0
- package/esm2022/lib/features/data-table/cells/table-cell-menu/table-cell-menu.component.mjs +47 -0
- package/esm2022/lib/features/data-table/cells/table-cell-select/table-cell-select.component.mjs +46 -0
- package/esm2022/lib/features/data-table/cells/table-cell-token/table-cell-token.component.mjs +124 -0
- package/esm2022/lib/features/data-table/column-headers/table-column-default/table-column-default.component.mjs +269 -0
- package/esm2022/lib/features/data-table/column-headers/table-column-filter/table-column-filter.component.mjs +94 -0
- package/esm2022/lib/features/data-table/column-headers/table-column-menu/table-column-menu.component.mjs +38 -0
- package/esm2022/lib/features/data-table/column-headers/table-column-select/table-column-select.component.mjs +34 -0
- package/esm2022/lib/features/data-table/data-table-filter.service.mjs +66 -0
- package/esm2022/lib/features/data-table/data-table.component.mjs +848 -0
- package/esm2022/lib/features/data-table/data-table.service.mjs +99 -0
- package/esm2022/lib/features/data-table/table-filter-bar/filter-bar.component.mjs +95 -0
- package/esm2022/lib/features/data-table/table-hidden-columns-bar/hidden-columns-bar.component.mjs +27 -0
- package/esm2022/lib/features/data-table/tooltips/os-tooltip.component.mjs +30 -0
- package/esm2022/lib/features/data-table/tooltips/sdk-tooltip.component.mjs +35 -0
- package/esm2022/lib/features/dynamic-widgets/boolean/boolean-toggle-input.component.mjs +73 -0
- package/esm2022/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.mjs +131 -0
- package/esm2022/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.mjs +169 -0
- package/esm2022/lib/features/dynamic-widgets/forwarding-config/forwarding-config.service.mjs +51 -0
- package/esm2022/lib/features/dynamic-widgets/number/number-input.component.mjs +74 -0
- package/esm2022/lib/features/dynamic-widgets/object/object.component.mjs +122 -0
- package/esm2022/lib/features/dynamic-widgets/password/password-input.component.mjs +72 -0
- package/esm2022/lib/features/dynamic-widgets/port-ranges/port-ranges.component.mjs +98 -0
- package/esm2022/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.mjs +180 -0
- package/esm2022/lib/features/dynamic-widgets/selector/selector-input.component.mjs +104 -0
- package/esm2022/lib/features/dynamic-widgets/string/string-input.component.mjs +72 -0
- package/esm2022/lib/features/dynamic-widgets/text-list/text-list-input.component.mjs +119 -0
- package/esm2022/lib/features/extendable/extendable.component.mjs +56 -0
- package/esm2022/lib/features/extendable/extensions-noop.service.mjs +50 -0
- package/esm2022/lib/features/json-view/json-view.component.mjs +197 -0
- package/esm2022/lib/features/list-page-features/list-page-form/list-page-form.component.mjs +139 -0
- package/esm2022/lib/features/list-page-features/list-page-header/list-page-header.component.mjs +48 -0
- package/esm2022/lib/features/loading-indicator/loading-indicator.component.mjs +21 -0
- package/esm2022/lib/features/messaging/growler.component.mjs +63 -0
- package/esm2022/lib/features/messaging/growler.model.mjs +24 -0
- package/esm2022/lib/features/messaging/growler.module.mjs +35 -0
- package/esm2022/lib/features/messaging/growler.service.mjs +72 -0
- package/esm2022/lib/features/messaging/logger.service.mjs +175 -0
- package/esm2022/lib/features/no-items/no-items.component.mjs +47 -0
- package/esm2022/lib/features/overrides/overrides.component.mjs +119 -0
- package/esm2022/lib/features/overrides/overrides.service.mjs +115 -0
- package/esm2022/lib/features/preview-list/preview-list.component.mjs +91 -0
- package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +223 -0
- package/esm2022/lib/features/projectable-forms/configuration/configuration.service.mjs +150 -0
- package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +188 -0
- package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.service.mjs +131 -0
- package/esm2022/lib/features/projectable-forms/form-field-container/form-field-container.component.mjs +72 -0
- package/esm2022/lib/features/projectable-forms/form-field-toggle/form-field-toggle.component.mjs +55 -0
- package/esm2022/lib/features/projectable-forms/form-header/form-header.component.mjs +96 -0
- package/esm2022/lib/features/projectable-forms/identity/identity-form.component.mjs +322 -0
- package/esm2022/lib/features/projectable-forms/identity/identity-form.service.mjs +144 -0
- package/esm2022/lib/features/projectable-forms/projectable-form.class.mjs +172 -0
- package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +240 -0
- package/esm2022/lib/features/projectable-forms/service/service-form.service.mjs +453 -0
- package/esm2022/lib/features/projectable-forms/service/simple-service/simple-service.component.mjs +680 -0
- package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.component.mjs +252 -0
- package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.service.mjs +214 -0
- package/esm2022/lib/features/qr-code/qr-code.component.mjs +143 -0
- package/esm2022/lib/features/reset-enrollment/reset-enrollment.component.mjs +87 -0
- package/esm2022/lib/features/reset-enrollment/reset-enrollment.service.mjs +62 -0
- package/esm2022/lib/features/side-modal/side-modal.component.mjs +46 -0
- package/esm2022/lib/features/sidebars/side-banner/side-banner.component.mjs +17 -0
- package/esm2022/lib/features/sidebars/side-navbar/side-navbar.component.mjs +55 -0
- package/esm2022/lib/features/sidebars/side-toolbar/side-toolbar.component.mjs +128 -0
- package/esm2022/lib/features/tag-selector/tag-selector.component.mjs +292 -0
- package/esm2022/lib/features/visualizer/identity-service-path/identity-service-path.component.mjs +588 -0
- package/esm2022/lib/features/visualizer/identity-service-path/identity-service-path.helper.mjs +370 -0
- package/esm2022/lib/features/wrappers/node-wrapper.service.mjs +51 -0
- package/esm2022/lib/features/wrappers/zac-wrapper-service.class.mjs +92 -0
- package/esm2022/lib/features/wrappers/zac-wrapper.component.mjs +147 -0
- package/esm2022/lib/features/wrappers/zac-wrapper.service.mjs +937 -0
- package/esm2022/lib/models/config.mjs +9 -0
- package/esm2022/lib/models/edge-router.mjs +13 -0
- package/esm2022/lib/models/identity.mjs +34 -0
- package/esm2022/lib/models/service-policy.mjs +12 -0
- package/esm2022/lib/models/service.mjs +12 -0
- package/esm2022/lib/pages/configurations/configurations-page.component.mjs +102 -0
- package/esm2022/lib/pages/configurations/configurations-page.service.mjs +246 -0
- package/esm2022/lib/pages/edge-routers/edge-routers-page.component.mjs +149 -0
- package/esm2022/lib/pages/edge-routers/edge-routers-page.service.mjs +361 -0
- package/esm2022/lib/pages/identities/identities-page.component.mjs +233 -0
- package/esm2022/lib/pages/identities/identities-page.service.mjs +498 -0
- package/esm2022/lib/pages/service-policies/service-policies-page.component.mjs +132 -0
- package/esm2022/lib/pages/service-policies/service-policies-page.service.mjs +457 -0
- package/esm2022/lib/pages/services/services-page.component.mjs +141 -0
- package/esm2022/lib/pages/services/services-page.service.mjs +215 -0
- package/esm2022/lib/safe.pipe.mjs +19 -0
- package/esm2022/lib/services/console-events.service.mjs +32 -0
- package/esm2022/lib/services/csv-download.service.mjs +92 -0
- package/esm2022/lib/services/deactivate-guard.service.mjs +18 -0
- package/esm2022/lib/services/login-service.class.mjs +28 -0
- package/esm2022/lib/services/node-data.service.mjs +292 -0
- package/esm2022/lib/services/noop-login.service.mjs +45 -0
- package/esm2022/lib/services/schema.service.mjs +808 -0
- package/esm2022/lib/services/settings-service.class.mjs +131 -0
- package/esm2022/lib/services/settings.service.mjs +193 -0
- package/esm2022/lib/services/tab-name.service.mjs +65 -0
- package/esm2022/lib/services/validation.service.mjs +124 -0
- package/esm2022/lib/services/ziti-controller-data.service.mjs +260 -0
- package/esm2022/lib/services/ziti-data.service.mjs +54 -0
- package/esm2022/lib/services/ziti-domain-controller.service.mjs +3 -0
- package/esm2022/lib/shared/list-page-component.class.mjs +145 -0
- package/esm2022/lib/shared/list-page-service.class.mjs +151 -0
- package/esm2022/lib/version.mjs +4 -0
- package/esm2022/lib/zac-routing.module.mjs +41 -0
- package/esm2022/lib/ziti-console-lib.module.mjs +364 -0
- package/esm2022/lib/ziti-console.constants.mjs +19 -0
- package/esm2022/openziti-ziti-console-lib.mjs +5 -0
- package/esm2022/public-api.mjs +71 -0
- package/fesm2022/openziti-ziti-console-lib.mjs +15813 -0
- package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -0
- package/index.d.ts +6 -0
- package/lib/app.initializer.d.ts +3 -0
- package/lib/app.initializer.d.ts.map +1 -0
- package/lib/features/card/card.component.d.ts +11 -0
- package/lib/features/card/card.component.d.ts.map +1 -0
- package/lib/features/card-list/card-list.component.d.ts +23 -0
- package/lib/features/card-list/card-list.component.d.ts.map +1 -0
- package/lib/features/config-editor/config-editor.component.d.ts +39 -0
- package/lib/features/config-editor/config-editor.component.d.ts.map +1 -0
- package/lib/features/confirm/confirm.component.d.ts +23 -0
- package/lib/features/confirm/confirm.component.d.ts.map +1 -0
- package/lib/features/creation-summary-dialog/creation-summary-dialog.component.d.ts +31 -0
- package/lib/features/creation-summary-dialog/creation-summary-dialog.component.d.ts.map +1 -0
- package/lib/features/custom-tags/custom-tags.component.d.ts +20 -0
- package/lib/features/custom-tags/custom-tags.component.d.ts.map +1 -0
- package/lib/features/data-table/cells/table-cell-menu/table-cell-menu.component.d.ts +16 -0
- package/lib/features/data-table/cells/table-cell-menu/table-cell-menu.component.d.ts.map +1 -0
- package/lib/features/data-table/cells/table-cell-select/table-cell-select.component.d.ts +19 -0
- package/lib/features/data-table/cells/table-cell-select/table-cell-select.component.d.ts.map +1 -0
- package/lib/features/data-table/cells/table-cell-token/table-cell-token.component.d.ts +22 -0
- package/lib/features/data-table/cells/table-cell-token/table-cell-token.component.d.ts.map +1 -0
- package/lib/features/data-table/column-headers/table-column-default/table-column-default.component.d.ts +52 -0
- package/lib/features/data-table/column-headers/table-column-default/table-column-default.component.d.ts.map +1 -0
- package/lib/features/data-table/column-headers/table-column-filter/table-column-filter.component.d.ts +27 -0
- package/lib/features/data-table/column-headers/table-column-filter/table-column-filter.component.d.ts.map +1 -0
- package/lib/features/data-table/column-headers/table-column-menu/table-column-menu.component.d.ts +19 -0
- package/lib/features/data-table/column-headers/table-column-menu/table-column-menu.component.d.ts.map +1 -0
- package/lib/features/data-table/column-headers/table-column-select/table-column-select.component.d.ts +15 -0
- package/lib/features/data-table/column-headers/table-column-select/table-column-select.component.d.ts.map +1 -0
- package/lib/features/data-table/data-table-filter.service.d.ts +24 -0
- package/lib/features/data-table/data-table-filter.service.d.ts.map +1 -0
- package/lib/features/data-table/data-table.component.d.ts +154 -0
- package/lib/features/data-table/data-table.component.d.ts.map +1 -0
- package/lib/features/data-table/data-table.service.d.ts +20 -0
- package/lib/features/data-table/data-table.service.d.ts.map +1 -0
- package/lib/features/data-table/table-filter-bar/filter-bar.component.d.ts +22 -0
- package/lib/features/data-table/table-filter-bar/filter-bar.component.d.ts.map +1 -0
- package/lib/features/data-table/table-hidden-columns-bar/hidden-columns-bar.component.d.ts +10 -0
- package/lib/features/data-table/table-hidden-columns-bar/hidden-columns-bar.component.d.ts.map +1 -0
- package/lib/features/data-table/tooltips/os-tooltip.component.d.ts +15 -0
- package/lib/features/data-table/tooltips/os-tooltip.component.d.ts.map +1 -0
- package/lib/features/data-table/tooltips/sdk-tooltip.component.d.ts +15 -0
- package/lib/features/data-table/tooltips/sdk-tooltip.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/boolean/boolean-toggle-input.component.d.ts +19 -0
- package/lib/features/dynamic-widgets/boolean/boolean-toggle-input.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.d.ts +26 -0
- package/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.d.ts +45 -0
- package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.service.d.ts +14 -0
- package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.service.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/number/number-input.component.d.ts +20 -0
- package/lib/features/dynamic-widgets/number/number-input.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/object/object.component.d.ts +26 -0
- package/lib/features/dynamic-widgets/object/object.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/password/password-input.component.d.ts +20 -0
- package/lib/features/dynamic-widgets/password/password-input.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/port-ranges/port-ranges.component.d.ts +21 -0
- package/lib/features/dynamic-widgets/port-ranges/port-ranges.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.d.ts +58 -0
- package/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/selector/selector-input.component.d.ts +23 -0
- package/lib/features/dynamic-widgets/selector/selector-input.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/string/string-input.component.d.ts +20 -0
- package/lib/features/dynamic-widgets/string/string-input.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/text-list/text-list-input.component.d.ts +23 -0
- package/lib/features/dynamic-widgets/text-list/text-list-input.component.d.ts.map +1 -0
- package/lib/features/extendable/extendable.component.d.ts +15 -0
- package/lib/features/extendable/extendable.component.d.ts.map +1 -0
- package/lib/features/extendable/extensions-noop.service.d.ts +31 -0
- package/lib/features/extendable/extensions-noop.service.d.ts.map +1 -0
- package/lib/features/json-view/json-view.component.d.ts +37 -0
- package/lib/features/json-view/json-view.component.d.ts.map +1 -0
- package/lib/features/list-page-features/list-page-form/list-page-form.component.d.ts +35 -0
- package/lib/features/list-page-features/list-page-form/list-page-form.component.d.ts.map +1 -0
- package/lib/features/list-page-features/list-page-header/list-page-header.component.d.ts +13 -0
- package/lib/features/list-page-features/list-page-header/list-page-header.component.d.ts.map +1 -0
- package/lib/features/loading-indicator/loading-indicator.component.d.ts +9 -0
- package/lib/features/loading-indicator/loading-indicator.component.d.ts.map +1 -0
- package/lib/features/messaging/growler.component.d.ts +19 -0
- package/lib/features/messaging/growler.component.d.ts.map +1 -0
- package/lib/features/messaging/growler.model.d.ts +8 -0
- package/lib/features/messaging/growler.model.d.ts.map +1 -0
- package/lib/features/messaging/growler.module.d.ts +10 -0
- package/lib/features/messaging/growler.module.d.ts.map +1 -0
- package/lib/features/messaging/growler.service.d.ts +18 -0
- package/lib/features/messaging/growler.service.d.ts.map +1 -0
- package/lib/features/messaging/logger.service.d.ts +27 -0
- package/lib/features/messaging/logger.service.d.ts.map +1 -0
- package/lib/features/no-items/no-items.component.d.ts +19 -0
- package/lib/features/no-items/no-items.component.d.ts.map +1 -0
- package/lib/features/overrides/overrides.component.d.ts +33 -0
- package/lib/features/overrides/overrides.component.d.ts.map +1 -0
- package/lib/features/overrides/overrides.service.d.ts +18 -0
- package/lib/features/overrides/overrides.service.d.ts.map +1 -0
- package/lib/features/preview-list/preview-list.component.d.ts +24 -0
- package/lib/features/preview-list/preview-list.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts +52 -0
- package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/configuration/configuration.service.d.ts +33 -0
- package/lib/features/projectable-forms/configuration/configuration.service.d.ts.map +1 -0
- package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts +45 -0
- package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/edge-router/edge-router-form.service.d.ts +29 -0
- package/lib/features/projectable-forms/edge-router/edge-router-form.service.d.ts.map +1 -0
- package/lib/features/projectable-forms/form-field-container/form-field-container.component.d.ts +22 -0
- package/lib/features/projectable-forms/form-field-container/form-field-container.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/form-field-toggle/form-field-toggle.component.d.ts +15 -0
- package/lib/features/projectable-forms/form-field-toggle/form-field-toggle.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/form-header/form-header.component.d.ts +23 -0
- package/lib/features/projectable-forms/form-header/form-header.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/identity/identity-form.component.d.ts +70 -0
- package/lib/features/projectable-forms/identity/identity-form.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/identity/identity-form.service.d.ts +20 -0
- package/lib/features/projectable-forms/identity/identity-form.service.d.ts.map +1 -0
- package/lib/features/projectable-forms/projectable-form.class.d.ts +39 -0
- package/lib/features/projectable-forms/projectable-form.class.d.ts.map +1 -0
- package/lib/features/projectable-forms/service/service-form.component.d.ts +62 -0
- package/lib/features/projectable-forms/service/service-form.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/service/service-form.service.d.ts +96 -0
- package/lib/features/projectable-forms/service/service-form.service.d.ts.map +1 -0
- package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts +140 -0
- package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts +58 -0
- package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/service-policy/service-policy-form.service.d.ts +37 -0
- package/lib/features/projectable-forms/service-policy/service-policy-form.service.d.ts.map +1 -0
- package/lib/features/qr-code/qr-code.component.d.ts +40 -0
- package/lib/features/qr-code/qr-code.component.d.ts.map +1 -0
- package/lib/features/reset-enrollment/reset-enrollment.component.d.ts +27 -0
- package/lib/features/reset-enrollment/reset-enrollment.component.d.ts.map +1 -0
- package/lib/features/reset-enrollment/reset-enrollment.service.d.ts +13 -0
- package/lib/features/reset-enrollment/reset-enrollment.service.d.ts.map +1 -0
- package/lib/features/side-modal/side-modal.component.d.ts +15 -0
- package/lib/features/side-modal/side-modal.component.d.ts.map +1 -0
- package/lib/features/sidebars/side-banner/side-banner.component.d.ts +7 -0
- package/lib/features/sidebars/side-banner/side-banner.component.d.ts.map +1 -0
- package/lib/features/sidebars/side-navbar/side-navbar.component.d.ts +16 -0
- package/lib/features/sidebars/side-navbar/side-navbar.component.d.ts.map +1 -0
- package/lib/features/sidebars/side-toolbar/side-toolbar.component.d.ts +34 -0
- package/lib/features/sidebars/side-toolbar/side-toolbar.component.d.ts.map +1 -0
- package/lib/features/tag-selector/tag-selector.component.d.ts +59 -0
- package/lib/features/tag-selector/tag-selector.component.d.ts.map +1 -0
- package/lib/features/visualizer/identity-service-path/identity-service-path.component.d.ts +53 -0
- package/lib/features/visualizer/identity-service-path/identity-service-path.component.d.ts.map +1 -0
- package/lib/features/visualizer/identity-service-path/identity-service-path.helper.d.ts +21 -0
- package/lib/features/visualizer/identity-service-path/identity-service-path.helper.d.ts.map +1 -0
- package/lib/features/wrappers/node-wrapper.service.d.ts +24 -0
- package/lib/features/wrappers/node-wrapper.service.d.ts.map +1 -0
- package/lib/features/wrappers/zac-wrapper-service.class.d.ts +38 -0
- package/lib/features/wrappers/zac-wrapper-service.class.d.ts.map +1 -0
- package/lib/features/wrappers/zac-wrapper.component.d.ts +31 -0
- package/lib/features/wrappers/zac-wrapper.component.d.ts.map +1 -0
- package/lib/features/wrappers/zac-wrapper.service.d.ts +56 -0
- package/lib/features/wrappers/zac-wrapper.service.d.ts.map +1 -0
- package/lib/models/config.d.ts +6 -0
- package/lib/models/config.d.ts.map +1 -0
- package/lib/models/edge-router.d.ts +10 -0
- package/lib/models/edge-router.d.ts.map +1 -0
- package/lib/models/identity.d.ts +16 -0
- package/lib/models/identity.d.ts.map +1 -0
- package/lib/models/service-policy.d.ts +9 -0
- package/lib/models/service-policy.d.ts.map +1 -0
- package/lib/models/service.d.ts +9 -0
- package/lib/models/service.d.ts.map +1 -0
- package/lib/pages/configurations/configurations-page.component.d.ts +29 -0
- package/lib/pages/configurations/configurations-page.component.d.ts.map +1 -0
- package/lib/pages/configurations/configurations-page.service.d.ts +78 -0
- package/lib/pages/configurations/configurations-page.service.d.ts.map +1 -0
- package/lib/pages/edge-routers/edge-routers-page.component.d.ts +38 -0
- package/lib/pages/edge-routers/edge-routers-page.component.d.ts.map +1 -0
- package/lib/pages/edge-routers/edge-routers-page.service.d.ts +47 -0
- package/lib/pages/edge-routers/edge-routers-page.service.d.ts.map +1 -0
- package/lib/pages/identities/identities-page.component.d.ts +44 -0
- package/lib/pages/identities/identities-page.component.d.ts.map +1 -0
- package/lib/pages/identities/identities-page.service.d.ts +54 -0
- package/lib/pages/identities/identities-page.service.d.ts.map +1 -0
- package/lib/pages/service-policies/service-policies-page.component.d.ts +36 -0
- package/lib/pages/service-policies/service-policies-page.component.d.ts.map +1 -0
- package/lib/pages/service-policies/service-policies-page.service.d.ts +63 -0
- package/lib/pages/service-policies/service-policies-page.service.d.ts.map +1 -0
- package/lib/pages/services/services-page.component.d.ts +37 -0
- package/lib/pages/services/services-page.component.d.ts.map +1 -0
- package/lib/pages/services/services-page.service.d.ts +46 -0
- package/lib/pages/services/services-page.service.d.ts.map +1 -0
- package/lib/safe.pipe.d.ts +11 -0
- package/lib/safe.pipe.d.ts.map +1 -0
- package/lib/services/console-events.service.d.ts +12 -0
- package/lib/services/console-events.service.d.ts.map +1 -0
- package/lib/services/csv-download.service.d.ts +11 -0
- package/lib/services/csv-download.service.d.ts.map +1 -0
- package/lib/services/deactivate-guard.service.d.ts +14 -0
- package/lib/services/deactivate-guard.service.d.ts.map +1 -0
- package/lib/services/login-service.class.d.ts +22 -0
- package/lib/services/login-service.class.d.ts.map +1 -0
- package/lib/services/node-data.service.d.ts +32 -0
- package/lib/services/node-data.service.d.ts.map +1 -0
- package/lib/services/noop-login.service.d.ts +23 -0
- package/lib/services/noop-login.service.d.ts.map +1 -0
- package/lib/services/schema.service.d.ts +63 -0
- package/lib/services/schema.service.d.ts.map +1 -0
- package/lib/services/settings-service.class.d.ts +35 -0
- package/lib/services/settings-service.class.d.ts.map +1 -0
- package/lib/services/settings.service.d.ts +18 -0
- package/lib/services/settings.service.d.ts.map +1 -0
- package/lib/services/tab-name.service.d.ts +20 -0
- package/lib/services/tab-name.service.d.ts.map +1 -0
- package/lib/services/validation.service.d.ts +13 -0
- package/lib/services/validation.service.d.ts.map +1 -0
- package/lib/services/ziti-controller-data.service.d.ts +32 -0
- package/lib/services/ziti-controller-data.service.d.ts.map +1 -0
- package/lib/services/ziti-data.service.d.ts +40 -0
- package/lib/services/ziti-data.service.d.ts.map +1 -0
- package/lib/services/ziti-domain-controller.service.d.ts +13 -0
- package/lib/services/ziti-domain-controller.service.d.ts.map +1 -0
- package/lib/shared/list-page-component.class.d.ts +52 -0
- package/lib/shared/list-page-component.class.d.ts.map +1 -0
- package/lib/shared/list-page-service.class.d.ts +47 -0
- package/lib/shared/list-page-service.class.d.ts.map +1 -0
- package/lib/version.d.ts +4 -0
- package/lib/version.d.ts.map +1 -0
- package/lib/zac-routing.module.d.ts +8 -0
- package/lib/zac-routing.module.d.ts.map +1 -0
- package/lib/ziti-console-lib.module.d.ts +85 -0
- package/lib/ziti-console-lib.module.d.ts.map +1 -0
- package/lib/ziti-console.constants.d.ts +4 -0
- package/lib/ziti-console.constants.d.ts.map +1 -0
- package/openziti-ziti-console-lib.d.ts.map +1 -0
- package/package.json +48 -0
- package/public-api.d.ts +68 -0
- package/public-api.d.ts.map +1 -0
package/esm2022/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.mjs
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright NetFoundry Inc.
|
|
3
|
+
|
|
4
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
you may not use this file except in compliance with the License.
|
|
6
|
+
You may obtain a copy of the License at
|
|
7
|
+
|
|
8
|
+
https://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
|
|
10
|
+
Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
See the License for the specific language governing permissions and
|
|
14
|
+
limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
17
|
+
import { isEmpty, isNil, unset } from "lodash";
|
|
18
|
+
import * as i0 from "@angular/core";
|
|
19
|
+
import * as i1 from "./forwarding-config.service";
|
|
20
|
+
import * as i2 from "../../../services/validation.service";
|
|
21
|
+
import * as i3 from "@angular/common";
|
|
22
|
+
import * as i4 from "../boolean/boolean-toggle-input.component";
|
|
23
|
+
import * as i5 from "../text-list/text-list-input.component";
|
|
24
|
+
import * as i6 from "../checkbox-list/checkbox-list-input.component";
|
|
25
|
+
import * as i7 from "../protocol-address-port/protocol-address-port-input.component";
|
|
26
|
+
class ForwardingConfigComponent {
|
|
27
|
+
constructor(svc, validationService) {
|
|
28
|
+
this.svc = svc;
|
|
29
|
+
this.validationService = validationService;
|
|
30
|
+
this.protocol = 'tcp';
|
|
31
|
+
this.address = undefined;
|
|
32
|
+
this.port = undefined;
|
|
33
|
+
this.forwardProtocol = false;
|
|
34
|
+
this.forwardAddress = false;
|
|
35
|
+
this.forwardPort = false;
|
|
36
|
+
this.allowedAddresses = undefined;
|
|
37
|
+
this.allowedPortRanges = undefined;
|
|
38
|
+
this.allowedProtocols = undefined;
|
|
39
|
+
this.protocolChange = new EventEmitter();
|
|
40
|
+
this.addressChange = new EventEmitter();
|
|
41
|
+
this.portChange = new EventEmitter();
|
|
42
|
+
this.forwardProtocolChange = new EventEmitter();
|
|
43
|
+
this.forwardAddressChange = new EventEmitter();
|
|
44
|
+
this.forwardPortChange = new EventEmitter();
|
|
45
|
+
this.allowedAddressesChange = new EventEmitter();
|
|
46
|
+
this.allowedPortRangesChange = new EventEmitter();
|
|
47
|
+
this.allowedProtocolsChange = new EventEmitter();
|
|
48
|
+
this.errors = {};
|
|
49
|
+
}
|
|
50
|
+
forwardProtocolToggled(event) {
|
|
51
|
+
if (!this.forwardProtocol) {
|
|
52
|
+
this.allowedProtocols = undefined;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
this.protocol = undefined;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
forwardAddressToggled(event) {
|
|
59
|
+
if (!this.forwardAddress) {
|
|
60
|
+
this.allowedAddresses = undefined;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
this.address = undefined;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
forwardPortToggled(event) {
|
|
67
|
+
if (!this.forwardPort) {
|
|
68
|
+
this.allowedPortRanges = undefined;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
this.port = undefined;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
setProperties(data) {
|
|
75
|
+
this.forwardPort = data.forwardPort;
|
|
76
|
+
this.forwardProtocol = data.forwardProtocol;
|
|
77
|
+
this.forwardAddress = data.forwardAddress;
|
|
78
|
+
this.protocol = data.protocol ? data.protocol : 'tcp';
|
|
79
|
+
this.address = data.address;
|
|
80
|
+
this.port = data.port;
|
|
81
|
+
this.allowedProtocols = data.allowedProtocols;
|
|
82
|
+
this.allowedAddresses = data.allowedAddresses;
|
|
83
|
+
this.setAllowedPortRanges(data.allowedPortRanges);
|
|
84
|
+
this.svc.validate(this.allowedPortRanges);
|
|
85
|
+
}
|
|
86
|
+
getProperties() {
|
|
87
|
+
return this.svc.getProperties(this.protocol, this.address, this.port, this.forwardProtocol, this.forwardAddress, this.forwardPort, this.allowedProtocols, this.allowedAddresses, this.allowedPortRanges);
|
|
88
|
+
}
|
|
89
|
+
validateAllowedAddresses() {
|
|
90
|
+
unset(this.errors, 'allowedAddresses');
|
|
91
|
+
if (isNil(this.allowedAddresses) || isEmpty(this.allowedAddresses)) {
|
|
92
|
+
this.errors['allowedAddresses'] = true;
|
|
93
|
+
}
|
|
94
|
+
return this.errors['allowedAddresses'];
|
|
95
|
+
}
|
|
96
|
+
validatePortRanges() {
|
|
97
|
+
unset(this.errors, 'allowedPortRanges');
|
|
98
|
+
const parsedRanges = this.validationService.parsePortRanges(this.allowedPortRanges);
|
|
99
|
+
if (isNil(this.allowedPortRanges) || isEmpty(this.allowedPortRanges) || this.validationService.validatePortRanges(parsedRanges)) {
|
|
100
|
+
this.errors['allowedPortRanges'] = true;
|
|
101
|
+
}
|
|
102
|
+
return this.errors['allowedPortRanges'];
|
|
103
|
+
}
|
|
104
|
+
setAllowedPortRanges(ranges) {
|
|
105
|
+
if (!ranges || isEmpty(ranges)) {
|
|
106
|
+
this.allowedPortRanges = undefined;
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
this.allowedPortRanges = this.validationService.combinePortRanges(ranges);
|
|
110
|
+
}
|
|
111
|
+
isValid() {
|
|
112
|
+
this.errors = {};
|
|
113
|
+
const papIsValid = this.papComponent.isValid();
|
|
114
|
+
if (this.forwardPort) {
|
|
115
|
+
this.validatePortRanges();
|
|
116
|
+
}
|
|
117
|
+
if (this.forwardAddress) {
|
|
118
|
+
this.validateAllowedAddresses();
|
|
119
|
+
}
|
|
120
|
+
return isEmpty(this.errors) && papIsValid;
|
|
121
|
+
}
|
|
122
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ForwardingConfigComponent, deps: [{ token: i1.ForwardingConfigService }, { token: i2.ValidationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
123
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ForwardingConfigComponent, selector: "lib-forwarding-config", inputs: { protocol: "protocol", address: "address", port: "port", forwardProtocol: "forwardProtocol", forwardAddress: "forwardAddress", forwardPort: "forwardPort", allowedAddresses: "allowedAddresses", allowedPortRanges: "allowedPortRanges", allowedProtocols: "allowedProtocols" }, outputs: { protocolChange: "protocolChange", addressChange: "addressChange", portChange: "portChange", forwardProtocolChange: "forwardProtocolChange", forwardAddressChange: "forwardAddressChange", forwardPortChange: "forwardPortChange", allowedAddressesChange: "allowedAddressesChange", allowedPortRangesChange: "allowedPortRangesChange", allowedProtocolsChange: "allowedProtocolsChange" }, viewQueries: [{ propertyName: "papComponent", first: true, predicate: ["papComponent"], descendants: true }], ngImport: i0, template: "<div class=\"forwarding-config-container\">\n <lib-protocol-address-port-input\n [showProtocol]=\"true\"\n [showAddress]=\"true\"\n [showHostName]=\"false\"\n [showPort]=\"true\"\n [disableProtocol]=\"forwardProtocol\"\n [disableAddress]=\"forwardAddress\"\n [disablePort]=\"forwardPort\"\n [(protocol)]=\"protocol\"\n [(address)]=\"address\"\n [(port)]=\"port\"\n #papComponent\n ></lib-protocol-address-port-input>\n <div class=\"forwarding-config-toggles\">\n <lib-boolean-toggle-input\n [fieldName]=\"'FORWARD PROTOCOL'\"\n [(fieldValue)]=\"forwardProtocol\"\n (fieldValueChange)=\"forwardProtocolToggled($event)\"\n >\n </lib-boolean-toggle-input>\n <lib-boolean-toggle-input\n [fieldName]=\"'FORWARD ADDRESS'\"\n [(fieldValue)]=\"forwardAddress\"\n (fieldValueChange)=\"forwardAddressToggled($event)\"\n >\n </lib-boolean-toggle-input>\n <lib-boolean-toggle-input\n [fieldName]=\"'FORWARD PORT'\"\n [(fieldValue)]=\"forwardPort\"\n (fieldValueChange)=\"forwardPortToggled($event)\"\n >\n </lib-boolean-toggle-input>\n </div>\n <div class=\"forwarding-config-allowed-inputs\">\n <lib-checkbox-list-input\n *ngIf=\"forwardProtocol\"\n [ngClass]=\"{invalid: errors['allowedProtocols']}\"\n [fieldName]=\"'ALLOWED PROTOCOLS'\"\n [valueList]=\"['tcp', 'udp']\"\n [(fieldValue)]=\"allowedProtocols\"\n >\n </lib-checkbox-list-input>\n <lib-text-list-input\n *ngIf=\"forwardAddress\"\n [ngClass]=\"{invalid: errors['allowedAddresses']}\"\n [fieldName]=\"'ALLOWED ADDRESSES'\"\n [placeholder]=\"'10.10.0.0/24 domain.com'\"\n [(fieldValue)]=\"allowedAddresses\"\n [labelColor]=\"'#000000'\"\n >\n </lib-text-list-input>\n <lib-text-list-input\n *ngIf=\"forwardPort\"\n [ngClass]=\"{invalid: errors['allowedPortRanges']}\"\n [fieldName]=\"'ALLOWED PORT RANGES'\"\n [placeholder]=\"'80 120-125 443 8080'\"\n [(fieldValue)]=\"allowedPortRanges\"\n [labelColor]=\"'#000000'\"\n [fieldClass]=\"errors['allowedPortRanges'] ? 'error' : ''\"\n (fieldValueChange)=\"validatePortRanges()\"\n >\n </lib-text-list-input>\n </div>\n</div>\n", styles: [".forwarding-config-container{display:flex;flex-direction:column;align-items:center;justify-content:flex-start}.forwarding-config-container .forwarding-config-toggles{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:50px}.forwarding-config-container .forwarding-config-allowed-inputs{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;width:100%}.forwarding-config-container *{width:100%}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.BooleanToggleInputComponent, selector: "lib-boolean-toggle-input", inputs: ["fieldName", "fieldValue", "parentage", "labelColor", "fieldClass", "error"], outputs: ["fieldValueChange"] }, { kind: "component", type: i5.TextListInputComponent, selector: "lib-text-list-input", inputs: ["fieldName", "fieldValue", "placeholder", "parentage", "labelColor", "fieldClass", "error"], outputs: ["fieldValueChange"] }, { kind: "component", type: i6.CheckboxListInputComponent, selector: "lib-checkbox-list-input", inputs: ["fieldName", "fieldValue", "placeholder", "parentage", "valueList", "labelColor", "fieldClass", "error"], outputs: ["fieldValueChange"] }, { kind: "component", type: i7.ProtocolAddressPortInputComponent, selector: "lib-protocol-address-port-input", inputs: ["protocolList", "showProtocol", "showAddress", "showHostName", "showPort", "disableProtocol", "disableAddress", "disableHostName", "disablePort", "protocol", "address", "hostname", "port", "parentage", "labelColor", "labelPrefix", "fieldClass", "error"], outputs: ["fieldValueChange", "portChange", "addressChange", "hostnameChange", "protocolChange"] }] }); }
|
|
124
|
+
}
|
|
125
|
+
export { ForwardingConfigComponent };
|
|
126
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ForwardingConfigComponent, decorators: [{
|
|
127
|
+
type: Component,
|
|
128
|
+
args: [{ selector: 'lib-forwarding-config', template: "<div class=\"forwarding-config-container\">\n <lib-protocol-address-port-input\n [showProtocol]=\"true\"\n [showAddress]=\"true\"\n [showHostName]=\"false\"\n [showPort]=\"true\"\n [disableProtocol]=\"forwardProtocol\"\n [disableAddress]=\"forwardAddress\"\n [disablePort]=\"forwardPort\"\n [(protocol)]=\"protocol\"\n [(address)]=\"address\"\n [(port)]=\"port\"\n #papComponent\n ></lib-protocol-address-port-input>\n <div class=\"forwarding-config-toggles\">\n <lib-boolean-toggle-input\n [fieldName]=\"'FORWARD PROTOCOL'\"\n [(fieldValue)]=\"forwardProtocol\"\n (fieldValueChange)=\"forwardProtocolToggled($event)\"\n >\n </lib-boolean-toggle-input>\n <lib-boolean-toggle-input\n [fieldName]=\"'FORWARD ADDRESS'\"\n [(fieldValue)]=\"forwardAddress\"\n (fieldValueChange)=\"forwardAddressToggled($event)\"\n >\n </lib-boolean-toggle-input>\n <lib-boolean-toggle-input\n [fieldName]=\"'FORWARD PORT'\"\n [(fieldValue)]=\"forwardPort\"\n (fieldValueChange)=\"forwardPortToggled($event)\"\n >\n </lib-boolean-toggle-input>\n </div>\n <div class=\"forwarding-config-allowed-inputs\">\n <lib-checkbox-list-input\n *ngIf=\"forwardProtocol\"\n [ngClass]=\"{invalid: errors['allowedProtocols']}\"\n [fieldName]=\"'ALLOWED PROTOCOLS'\"\n [valueList]=\"['tcp', 'udp']\"\n [(fieldValue)]=\"allowedProtocols\"\n >\n </lib-checkbox-list-input>\n <lib-text-list-input\n *ngIf=\"forwardAddress\"\n [ngClass]=\"{invalid: errors['allowedAddresses']}\"\n [fieldName]=\"'ALLOWED ADDRESSES'\"\n [placeholder]=\"'10.10.0.0/24 domain.com'\"\n [(fieldValue)]=\"allowedAddresses\"\n [labelColor]=\"'#000000'\"\n >\n </lib-text-list-input>\n <lib-text-list-input\n *ngIf=\"forwardPort\"\n [ngClass]=\"{invalid: errors['allowedPortRanges']}\"\n [fieldName]=\"'ALLOWED PORT RANGES'\"\n [placeholder]=\"'80 120-125 443 8080'\"\n [(fieldValue)]=\"allowedPortRanges\"\n [labelColor]=\"'#000000'\"\n [fieldClass]=\"errors['allowedPortRanges'] ? 'error' : ''\"\n (fieldValueChange)=\"validatePortRanges()\"\n >\n </lib-text-list-input>\n </div>\n</div>\n", styles: [".forwarding-config-container{display:flex;flex-direction:column;align-items:center;justify-content:flex-start}.forwarding-config-container .forwarding-config-toggles{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:50px}.forwarding-config-container .forwarding-config-allowed-inputs{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;width:100%}.forwarding-config-container *{width:100%}\n"] }]
|
|
129
|
+
}], ctorParameters: function () { return [{ type: i1.ForwardingConfigService }, { type: i2.ValidationService }]; }, propDecorators: { protocol: [{
|
|
130
|
+
type: Input
|
|
131
|
+
}], address: [{
|
|
132
|
+
type: Input
|
|
133
|
+
}], port: [{
|
|
134
|
+
type: Input
|
|
135
|
+
}], forwardProtocol: [{
|
|
136
|
+
type: Input
|
|
137
|
+
}], forwardAddress: [{
|
|
138
|
+
type: Input
|
|
139
|
+
}], forwardPort: [{
|
|
140
|
+
type: Input
|
|
141
|
+
}], allowedAddresses: [{
|
|
142
|
+
type: Input
|
|
143
|
+
}], allowedPortRanges: [{
|
|
144
|
+
type: Input
|
|
145
|
+
}], allowedProtocols: [{
|
|
146
|
+
type: Input
|
|
147
|
+
}], protocolChange: [{
|
|
148
|
+
type: Output
|
|
149
|
+
}], addressChange: [{
|
|
150
|
+
type: Output
|
|
151
|
+
}], portChange: [{
|
|
152
|
+
type: Output
|
|
153
|
+
}], forwardProtocolChange: [{
|
|
154
|
+
type: Output
|
|
155
|
+
}], forwardAddressChange: [{
|
|
156
|
+
type: Output
|
|
157
|
+
}], forwardPortChange: [{
|
|
158
|
+
type: Output
|
|
159
|
+
}], allowedAddressesChange: [{
|
|
160
|
+
type: Output
|
|
161
|
+
}], allowedPortRangesChange: [{
|
|
162
|
+
type: Output
|
|
163
|
+
}], allowedProtocolsChange: [{
|
|
164
|
+
type: Output
|
|
165
|
+
}], papComponent: [{
|
|
166
|
+
type: ViewChild,
|
|
167
|
+
args: ["papComponent"]
|
|
168
|
+
}] } });
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yd2FyZGluZy1jb25maWcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2R5bmFtaWMtd2lkZ2V0cy9mb3J3YXJkaW5nLWNvbmZpZy9mb3J3YXJkaW5nLWNvbmZpZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvZHluYW1pYy13aWRnZXRzL2ZvcndhcmRpbmctY29uZmlnL2ZvcndhcmRpbmctY29uZmlnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQW1CLE1BQU0sZUFBZSxDQUFDO0FBR2xHLE9BQU8sRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBQyxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7O0FBRzdDLE1BS2EseUJBQXlCO0lBd0JwQyxZQUFvQixHQUE0QixFQUFVLGlCQUFvQztRQUExRSxRQUFHLEdBQUgsR0FBRyxDQUF5QjtRQUFVLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUF0QnJGLGFBQVEsR0FBVyxLQUFLLENBQUM7UUFDekIsWUFBTyxHQUFXLFNBQVMsQ0FBQztRQUM1QixTQUFJLEdBQVcsU0FBUyxDQUFDO1FBQ3pCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLHFCQUFnQixHQUFRLFNBQVMsQ0FBQztRQUNsQyxzQkFBaUIsR0FBUSxTQUFTLENBQUM7UUFDbkMscUJBQWdCLEdBQVEsU0FBUyxDQUFDO1FBQ2pDLG1CQUFjLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDbEUsa0JBQWEsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNqRSxlQUFVLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDOUQsMEJBQXFCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDbkUseUJBQW9CLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDbEUsc0JBQWlCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDL0QsMkJBQXNCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDcEUsNEJBQXVCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDckUsMkJBQXNCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFFOUUsV0FBTSxHQUFHLEVBQUUsQ0FBQztJQUdxRixDQUFDO0lBRWxHLHNCQUFzQixDQUFDLEtBQUs7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDekIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztTQUNuQzthQUFNO1lBQ0wsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRUQscUJBQXFCLENBQUMsS0FBSztRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN4QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO1NBQ25DO2FBQU07WUFDTCxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztTQUMxQjtJQUNILENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFLO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7U0FDcEM7YUFBTTtZQUNMLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFTO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNwQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDNUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3RELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUM5QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQzlDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMzTSxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDdkMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1lBQ2xFLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDeEM7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDeEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNwRixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQy9ILElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDekM7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsTUFBTTtRQUN6QixJQUFJLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO1lBQ25DLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNqQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQy9DLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztTQUMzQjtRQUNELElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztTQUNqQztRQUNELE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUM7SUFDNUMsQ0FBQzsrR0F0R1UseUJBQXlCO21HQUF6Qix5QkFBeUIsNDBCQzNCdEMsK2hGQWlFQTs7U0R0Q2EseUJBQXlCOzRGQUF6Qix5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0UsdUJBQXVCOzhJQU14QixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0ksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csc0JBQXNCO3NCQUEvQixNQUFNO2dCQUNHLHVCQUF1QjtzQkFBaEMsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBSW9CLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0ZvcndhcmRpbmdDb25maWdTZXJ2aWNlfSBmcm9tIFwiLi9mb3J3YXJkaW5nLWNvbmZpZy5zZXJ2aWNlXCI7XG5pbXBvcnQge1ZhbGlkYXRpb25TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdmFsaWRhdGlvbi5zZXJ2aWNlXCI7XG5pbXBvcnQge2lzRW1wdHksIGlzTmlsLCB1bnNldH0gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IHtQcm90b2NvbEFkZHJlc3NQb3J0SW5wdXRDb21wb25lbnR9IGZyb20gXCIuLi9wcm90b2NvbC1hZGRyZXNzLXBvcnQvcHJvdG9jb2wtYWRkcmVzcy1wb3J0LWlucHV0LmNvbXBvbmVudFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZm9yd2FyZGluZy1jb25maWcnLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9yd2FyZGluZy1jb25maWcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3J3YXJkaW5nLWNvbmZpZy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZvcndhcmRpbmdDb25maWdDb21wb25lbnQge1xuXG4gIEBJbnB1dCgpIHByb3RvY29sOiBzdHJpbmcgPSAndGNwJztcbiAgQElucHV0KCkgYWRkcmVzczogc3RyaW5nID0gdW5kZWZpbmVkO1xuICBASW5wdXQoKSBwb3J0OiBudW1iZXIgPSB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGZvcndhcmRQcm90b2NvbCA9IGZhbHNlO1xuICBASW5wdXQoKSBmb3J3YXJkQWRkcmVzcyA9IGZhbHNlO1xuICBASW5wdXQoKSBmb3J3YXJkUG9ydCA9IGZhbHNlO1xuICBASW5wdXQoKSBhbGxvd2VkQWRkcmVzc2VzOiBhbnkgPSB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGFsbG93ZWRQb3J0UmFuZ2VzOiBhbnkgPSB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGFsbG93ZWRQcm90b2NvbHM6IGFueSA9IHVuZGVmaW5lZDtcbiAgQE91dHB1dCgpIHByb3RvY29sQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgYWRkcmVzc0NoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHBvcnRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBmb3J3YXJkUHJvdG9jb2xDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBmb3J3YXJkQWRkcmVzc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGZvcndhcmRQb3J0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgYWxsb3dlZEFkZHJlc3Nlc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGFsbG93ZWRQb3J0UmFuZ2VzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgYWxsb3dlZFByb3RvY29sc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBlcnJvcnMgPSB7fTtcblxuICBAVmlld0NoaWxkKFwicGFwQ29tcG9uZW50XCIpIHBhcENvbXBvbmVudDpQcm90b2NvbEFkZHJlc3NQb3J0SW5wdXRDb21wb25lbnQ7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3ZjOiBGb3J3YXJkaW5nQ29uZmlnU2VydmljZSwgcHJpdmF0ZSB2YWxpZGF0aW9uU2VydmljZTogVmFsaWRhdGlvblNlcnZpY2UpIHt9XG5cbiAgZm9yd2FyZFByb3RvY29sVG9nZ2xlZChldmVudCkge1xuICAgIGlmICghdGhpcy5mb3J3YXJkUHJvdG9jb2wpIHtcbiAgICAgIHRoaXMuYWxsb3dlZFByb3RvY29scyA9IHVuZGVmaW5lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcm90b2NvbCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBmb3J3YXJkQWRkcmVzc1RvZ2dsZWQoZXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuZm9yd2FyZEFkZHJlc3MpIHtcbiAgICAgIHRoaXMuYWxsb3dlZEFkZHJlc3NlcyA9IHVuZGVmaW5lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZGRyZXNzID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIGZvcndhcmRQb3J0VG9nZ2xlZChldmVudCkge1xuICAgIGlmICghdGhpcy5mb3J3YXJkUG9ydCkge1xuICAgICAgdGhpcy5hbGxvd2VkUG9ydFJhbmdlcyA9IHVuZGVmaW5lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wb3J0ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHNldFByb3BlcnRpZXMoZGF0YTogYW55KSB7XG4gICAgdGhpcy5mb3J3YXJkUG9ydCA9IGRhdGEuZm9yd2FyZFBvcnQ7XG4gICAgdGhpcy5mb3J3YXJkUHJvdG9jb2wgPSBkYXRhLmZvcndhcmRQcm90b2NvbDtcbiAgICB0aGlzLmZvcndhcmRBZGRyZXNzID0gZGF0YS5mb3J3YXJkQWRkcmVzcztcbiAgICB0aGlzLnByb3RvY29sID0gZGF0YS5wcm90b2NvbCA/IGRhdGEucHJvdG9jb2wgOiAndGNwJztcbiAgICB0aGlzLmFkZHJlc3MgPSBkYXRhLmFkZHJlc3M7XG4gICAgdGhpcy5wb3J0ID0gZGF0YS5wb3J0O1xuICAgIHRoaXMuYWxsb3dlZFByb3RvY29scyA9IGRhdGEuYWxsb3dlZFByb3RvY29scztcbiAgICB0aGlzLmFsbG93ZWRBZGRyZXNzZXMgPSBkYXRhLmFsbG93ZWRBZGRyZXNzZXM7XG4gICAgdGhpcy5zZXRBbGxvd2VkUG9ydFJhbmdlcyhkYXRhLmFsbG93ZWRQb3J0UmFuZ2VzKTtcbiAgICB0aGlzLnN2Yy52YWxpZGF0ZSh0aGlzLmFsbG93ZWRQb3J0UmFuZ2VzKTtcbiAgfVxuXG4gIGdldFByb3BlcnRpZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3ZjLmdldFByb3BlcnRpZXModGhpcy5wcm90b2NvbCwgdGhpcy5hZGRyZXNzLCB0aGlzLnBvcnQsIHRoaXMuZm9yd2FyZFByb3RvY29sLCB0aGlzLmZvcndhcmRBZGRyZXNzLCB0aGlzLmZvcndhcmRQb3J0LCB0aGlzLmFsbG93ZWRQcm90b2NvbHMsIHRoaXMuYWxsb3dlZEFkZHJlc3NlcywgdGhpcy5hbGxvd2VkUG9ydFJhbmdlcyk7XG4gIH1cblxuICB2YWxpZGF0ZUFsbG93ZWRBZGRyZXNzZXMoKSB7XG4gICAgdW5zZXQodGhpcy5lcnJvcnMsICdhbGxvd2VkQWRkcmVzc2VzJyk7XG4gICAgaWYgKGlzTmlsKHRoaXMuYWxsb3dlZEFkZHJlc3NlcykgfHwgaXNFbXB0eSh0aGlzLmFsbG93ZWRBZGRyZXNzZXMpKSB7XG4gICAgICB0aGlzLmVycm9yc1snYWxsb3dlZEFkZHJlc3NlcyddID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JzWydhbGxvd2VkQWRkcmVzc2VzJ107XG4gIH1cblxuICB2YWxpZGF0ZVBvcnRSYW5nZXMoKSB7XG4gICAgdW5zZXQodGhpcy5lcnJvcnMsICdhbGxvd2VkUG9ydFJhbmdlcycpO1xuICAgIGNvbnN0IHBhcnNlZFJhbmdlcyA9IHRoaXMudmFsaWRhdGlvblNlcnZpY2UucGFyc2VQb3J0UmFuZ2VzKHRoaXMuYWxsb3dlZFBvcnRSYW5nZXMpO1xuICAgIGlmIChpc05pbCh0aGlzLmFsbG93ZWRQb3J0UmFuZ2VzKSB8fCBpc0VtcHR5KHRoaXMuYWxsb3dlZFBvcnRSYW5nZXMpIHx8IHRoaXMudmFsaWRhdGlvblNlcnZpY2UudmFsaWRhdGVQb3J0UmFuZ2VzKHBhcnNlZFJhbmdlcykpIHtcbiAgICAgIHRoaXMuZXJyb3JzWydhbGxvd2VkUG9ydFJhbmdlcyddID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JzWydhbGxvd2VkUG9ydFJhbmdlcyddO1xuICB9XG5cbiAgc2V0QWxsb3dlZFBvcnRSYW5nZXMocmFuZ2VzKSB7XG4gICAgaWYgKCFyYW5nZXMgfHwgaXNFbXB0eShyYW5nZXMpKSB7XG4gICAgICB0aGlzLmFsbG93ZWRQb3J0UmFuZ2VzID0gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmFsbG93ZWRQb3J0UmFuZ2VzID0gdGhpcy52YWxpZGF0aW9uU2VydmljZS5jb21iaW5lUG9ydFJhbmdlcyhyYW5nZXMpO1xuICB9XG5cbiAgaXNWYWxpZCgpIHtcbiAgICB0aGlzLmVycm9ycyA9IHt9O1xuICAgIGNvbnN0IHBhcElzVmFsaWQgPSB0aGlzLnBhcENvbXBvbmVudC5pc1ZhbGlkKCk7XG4gICAgaWYgKHRoaXMuZm9yd2FyZFBvcnQpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVQb3J0UmFuZ2VzKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmZvcndhcmRBZGRyZXNzKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlQWxsb3dlZEFkZHJlc3NlcygpO1xuICAgIH1cbiAgICByZXR1cm4gaXNFbXB0eSh0aGlzLmVycm9ycykgJiYgcGFwSXNWYWxpZDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcndhcmRpbmctY29uZmlnLWNvbnRhaW5lclwiPlxuICAgIDxsaWItcHJvdG9jb2wtYWRkcmVzcy1wb3J0LWlucHV0XG4gICAgICAgIFtzaG93UHJvdG9jb2xdPVwidHJ1ZVwiXG4gICAgICAgIFtzaG93QWRkcmVzc109XCJ0cnVlXCJcbiAgICAgICAgW3Nob3dIb3N0TmFtZV09XCJmYWxzZVwiXG4gICAgICAgIFtzaG93UG9ydF09XCJ0cnVlXCJcbiAgICAgICAgW2Rpc2FibGVQcm90b2NvbF09XCJmb3J3YXJkUHJvdG9jb2xcIlxuICAgICAgICBbZGlzYWJsZUFkZHJlc3NdPVwiZm9yd2FyZEFkZHJlc3NcIlxuICAgICAgICBbZGlzYWJsZVBvcnRdPVwiZm9yd2FyZFBvcnRcIlxuICAgICAgICBbKHByb3RvY29sKV09XCJwcm90b2NvbFwiXG4gICAgICAgIFsoYWRkcmVzcyldPVwiYWRkcmVzc1wiXG4gICAgICAgIFsocG9ydCldPVwicG9ydFwiXG4gICAgICAgICNwYXBDb21wb25lbnRcbiAgICA+PC9saWItcHJvdG9jb2wtYWRkcmVzcy1wb3J0LWlucHV0PlxuICAgIDxkaXYgY2xhc3M9XCJmb3J3YXJkaW5nLWNvbmZpZy10b2dnbGVzXCI+XG4gICAgICAgIDxsaWItYm9vbGVhbi10b2dnbGUtaW5wdXRcbiAgICAgICAgICAgICAgICBbZmllbGROYW1lXT1cIidGT1JXQVJEIFBST1RPQ09MJ1wiXG4gICAgICAgICAgICAgICAgWyhmaWVsZFZhbHVlKV09XCJmb3J3YXJkUHJvdG9jb2xcIlxuICAgICAgICAgICAgICAgIChmaWVsZFZhbHVlQ2hhbmdlKT1cImZvcndhcmRQcm90b2NvbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgPC9saWItYm9vbGVhbi10b2dnbGUtaW5wdXQ+XG4gICAgICAgIDxsaWItYm9vbGVhbi10b2dnbGUtaW5wdXRcbiAgICAgICAgICAgICAgICBbZmllbGROYW1lXT1cIidGT1JXQVJEIEFERFJFU1MnXCJcbiAgICAgICAgICAgICAgICBbKGZpZWxkVmFsdWUpXT1cImZvcndhcmRBZGRyZXNzXCJcbiAgICAgICAgICAgICAgICAoZmllbGRWYWx1ZUNoYW5nZSk9XCJmb3J3YXJkQWRkcmVzc1RvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgPC9saWItYm9vbGVhbi10b2dnbGUtaW5wdXQ+XG4gICAgICAgIDxsaWItYm9vbGVhbi10b2dnbGUtaW5wdXRcbiAgICAgICAgICAgICAgICBbZmllbGROYW1lXT1cIidGT1JXQVJEIFBPUlQnXCJcbiAgICAgICAgICAgICAgICBbKGZpZWxkVmFsdWUpXT1cImZvcndhcmRQb3J0XCJcbiAgICAgICAgICAgICAgICAoZmllbGRWYWx1ZUNoYW5nZSk9XCJmb3J3YXJkUG9ydFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgPC9saWItYm9vbGVhbi10b2dnbGUtaW5wdXQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZvcndhcmRpbmctY29uZmlnLWFsbG93ZWQtaW5wdXRzXCI+XG4gICAgICAgIDxsaWItY2hlY2tib3gtbGlzdC1pbnB1dFxuICAgICAgICAgICAgKm5nSWY9XCJmb3J3YXJkUHJvdG9jb2xcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie2ludmFsaWQ6IGVycm9yc1snYWxsb3dlZFByb3RvY29scyddfVwiXG4gICAgICAgICAgICBbZmllbGROYW1lXT1cIidBTExPV0VEIFBST1RPQ09MUydcIlxuICAgICAgICAgICAgW3ZhbHVlTGlzdF09XCJbJ3RjcCcsICd1ZHAnXVwiXG4gICAgICAgICAgICBbKGZpZWxkVmFsdWUpXT1cImFsbG93ZWRQcm90b2NvbHNcIlxuICAgICAgICA+XG4gICAgICAgIDwvbGliLWNoZWNrYm94LWxpc3QtaW5wdXQ+XG4gICAgICAgIDxsaWItdGV4dC1saXN0LWlucHV0XG4gICAgICAgICAgICAqbmdJZj1cImZvcndhcmRBZGRyZXNzXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntpbnZhbGlkOiBlcnJvcnNbJ2FsbG93ZWRBZGRyZXNzZXMnXX1cIlxuICAgICAgICAgICAgW2ZpZWxkTmFtZV09XCInQUxMT1dFRCBBRERSRVNTRVMnXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInMTAuMTAuMC4wLzI0IGRvbWFpbi5jb20nXCJcbiAgICAgICAgICAgIFsoZmllbGRWYWx1ZSldPVwiYWxsb3dlZEFkZHJlc3Nlc1wiXG4gICAgICAgICAgICBbbGFiZWxDb2xvcl09XCInIzAwMDAwMCdcIlxuICAgICAgICA+XG4gICAgICAgIDwvbGliLXRleHQtbGlzdC1pbnB1dD5cbiAgICAgICAgPGxpYi10ZXh0LWxpc3QtaW5wdXRcbiAgICAgICAgICAgICpuZ0lmPVwiZm9yd2FyZFBvcnRcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie2ludmFsaWQ6IGVycm9yc1snYWxsb3dlZFBvcnRSYW5nZXMnXX1cIlxuICAgICAgICAgICAgW2ZpZWxkTmFtZV09XCInQUxMT1dFRCBQT1JUIFJBTkdFUydcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIic4MCAxMjAtMTI1IDQ0MyA4MDgwJ1wiXG4gICAgICAgICAgICBbKGZpZWxkVmFsdWUpXT1cImFsbG93ZWRQb3J0UmFuZ2VzXCJcbiAgICAgICAgICAgIFtsYWJlbENvbG9yXT1cIicjMDAwMDAwJ1wiXG4gICAgICAgICAgICBbZmllbGRDbGFzc109XCJlcnJvcnNbJ2FsbG93ZWRQb3J0UmFuZ2VzJ10gPyAnZXJyb3InIDogJydcIlxuICAgICAgICAgICAgKGZpZWxkVmFsdWVDaGFuZ2UpPVwidmFsaWRhdGVQb3J0UmFuZ2VzKClcIlxuICAgICAgICA+XG4gICAgICAgIDwvbGliLXRleHQtbGlzdC1pbnB1dD5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright NetFoundry Inc.
|
|
3
|
+
|
|
4
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
you may not use this file except in compliance with the License.
|
|
6
|
+
You may obtain a copy of the License at
|
|
7
|
+
|
|
8
|
+
https://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
|
|
10
|
+
Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
See the License for the specific language governing permissions and
|
|
14
|
+
limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Injectable } from "@angular/core";
|
|
17
|
+
import * as i0 from "@angular/core";
|
|
18
|
+
import * as i1 from "../../../services/validation.service";
|
|
19
|
+
class ForwardingConfigService {
|
|
20
|
+
constructor(validationService) {
|
|
21
|
+
this.validationService = validationService;
|
|
22
|
+
}
|
|
23
|
+
getProperties(protocol, address, port, forwardProtocol, forwardAddress, forwardPort, allowedProtocols, allowedAddresses, allowedPortRanges) {
|
|
24
|
+
const props = [
|
|
25
|
+
{ key: 'protocol', value: protocol },
|
|
26
|
+
{ key: 'address', value: address },
|
|
27
|
+
{ key: 'port', value: port },
|
|
28
|
+
{ key: 'forwardProtocol', value: forwardProtocol ? forwardProtocol : undefined },
|
|
29
|
+
{ key: 'forwardAddress', value: forwardAddress ? forwardAddress : undefined },
|
|
30
|
+
{ key: 'forwardPort', value: forwardPort ? forwardPort : undefined },
|
|
31
|
+
{ key: 'allowedAddresses', value: allowedAddresses },
|
|
32
|
+
{ key: 'allowedPortRanges', value: this.validationService.getPortRanges(allowedPortRanges) },
|
|
33
|
+
{ key: 'allowedProtocols', value: allowedProtocols },
|
|
34
|
+
];
|
|
35
|
+
return props;
|
|
36
|
+
}
|
|
37
|
+
validate(allowedPortRanges) {
|
|
38
|
+
const errors = {};
|
|
39
|
+
errors.allowedPortRanges = this.validationService.validatePortRanges(allowedPortRanges);
|
|
40
|
+
}
|
|
41
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ForwardingConfigService, deps: [{ token: i1.ValidationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
42
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ForwardingConfigService, providedIn: 'root' }); }
|
|
43
|
+
}
|
|
44
|
+
export { ForwardingConfigService };
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ForwardingConfigService, decorators: [{
|
|
46
|
+
type: Injectable,
|
|
47
|
+
args: [{
|
|
48
|
+
providedIn: 'root'
|
|
49
|
+
}]
|
|
50
|
+
}], ctorParameters: function () { return [{ type: i1.ValidationService }]; } });
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yd2FyZGluZy1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9keW5hbWljLXdpZGdldHMvZm9yd2FyZGluZy1jb25maWcvZm9yd2FyZGluZy1jb25maWcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7OztBQUd6QyxNQUdhLHVCQUF1QjtJQUVoQyxZQUFvQixpQkFBb0M7UUFBcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtJQUFHLENBQUM7SUFFNUQsYUFBYSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUN0SSxNQUFNLEtBQUssR0FBRztZQUNWLEVBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFDO1lBQ2xDLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFDO1lBQ2hDLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDO1lBQzFCLEVBQUMsR0FBRyxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFDO1lBQzlFLEVBQUMsR0FBRyxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFDO1lBQzNFLEVBQUMsR0FBRyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBQztZQUNsRSxFQUFDLEdBQUcsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUM7WUFDbEQsRUFBQyxHQUFHLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsRUFBQztZQUMxRixFQUFDLEdBQUcsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUM7U0FDckQsQ0FBQztRQUNGLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxRQUFRLENBQUMsaUJBQWlCO1FBQ3RCLE1BQU0sTUFBTSxHQUFRLEVBQUUsQ0FBQztRQUN2QixNQUFNLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDNUYsQ0FBQzsrR0F0QlEsdUJBQXVCO21IQUF2Qix1QkFBdUIsY0FGcEIsTUFBTTs7U0FFVCx1QkFBdUI7NEZBQXZCLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1ZhbGlkYXRpb25TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdmFsaWRhdGlvbi5zZXJ2aWNlXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRm9yd2FyZGluZ0NvbmZpZ1NlcnZpY2Uge1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB2YWxpZGF0aW9uU2VydmljZTogVmFsaWRhdGlvblNlcnZpY2UpIHt9XG5cbiAgICBnZXRQcm9wZXJ0aWVzKHByb3RvY29sLCBhZGRyZXNzLCBwb3J0LCBmb3J3YXJkUHJvdG9jb2wsIGZvcndhcmRBZGRyZXNzLCBmb3J3YXJkUG9ydCwgYWxsb3dlZFByb3RvY29scywgYWxsb3dlZEFkZHJlc3NlcywgYWxsb3dlZFBvcnRSYW5nZXMpIHtcbiAgICAgICAgY29uc3QgcHJvcHMgPSBbXG4gICAgICAgICAgICB7a2V5OiAncHJvdG9jb2wnLCB2YWx1ZTogcHJvdG9jb2x9LFxuICAgICAgICAgICAge2tleTogJ2FkZHJlc3MnLCB2YWx1ZTogYWRkcmVzc30sXG4gICAgICAgICAgICB7a2V5OiAncG9ydCcsIHZhbHVlOiBwb3J0fSxcbiAgICAgICAgICAgIHtrZXk6ICdmb3J3YXJkUHJvdG9jb2wnLCB2YWx1ZTogZm9yd2FyZFByb3RvY29sID8gZm9yd2FyZFByb3RvY29sIDogdW5kZWZpbmVkfSxcbiAgICAgICAgICAgIHtrZXk6ICdmb3J3YXJkQWRkcmVzcycsIHZhbHVlOiBmb3J3YXJkQWRkcmVzcyA/IGZvcndhcmRBZGRyZXNzIDogdW5kZWZpbmVkfSxcbiAgICAgICAgICAgIHtrZXk6ICdmb3J3YXJkUG9ydCcsIHZhbHVlOiBmb3J3YXJkUG9ydCA/IGZvcndhcmRQb3J0IDogdW5kZWZpbmVkfSxcbiAgICAgICAgICAgIHtrZXk6ICdhbGxvd2VkQWRkcmVzc2VzJywgdmFsdWU6IGFsbG93ZWRBZGRyZXNzZXN9LFxuICAgICAgICAgICAge2tleTogJ2FsbG93ZWRQb3J0UmFuZ2VzJywgdmFsdWU6IHRoaXMudmFsaWRhdGlvblNlcnZpY2UuZ2V0UG9ydFJhbmdlcyhhbGxvd2VkUG9ydFJhbmdlcyl9LFxuICAgICAgICAgICAge2tleTogJ2FsbG93ZWRQcm90b2NvbHMnLCB2YWx1ZTogYWxsb3dlZFByb3RvY29sc30sXG4gICAgICAgIF07XG4gICAgICAgIHJldHVybiBwcm9wcztcbiAgICB9XG5cbiAgICB2YWxpZGF0ZShhbGxvd2VkUG9ydFJhbmdlcykge1xuICAgICAgICBjb25zdCBlcnJvcnM6IGFueSA9IHt9O1xuICAgICAgICBlcnJvcnMuYWxsb3dlZFBvcnRSYW5nZXMgPSB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlUG9ydFJhbmdlcyhhbGxvd2VkUG9ydFJhbmdlcyk7XG4gICAgfVxufSJdfQ==
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { Subject } from "rxjs";
|
|
3
|
+
import { debounce } from "lodash";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
7
|
+
class NumberInputComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
this._fieldName = 'Field Label';
|
|
10
|
+
this._idName = 'fieldname';
|
|
11
|
+
this.placeholder = '';
|
|
12
|
+
this.parentage = [];
|
|
13
|
+
this.labelColor = '#000000';
|
|
14
|
+
this.fieldClass = '';
|
|
15
|
+
this.error = '';
|
|
16
|
+
this.fieldValueChange = new EventEmitter();
|
|
17
|
+
this.valueChange = new Subject();
|
|
18
|
+
}
|
|
19
|
+
set fieldName(name) {
|
|
20
|
+
this._fieldName = name;
|
|
21
|
+
this._idName = name.replace(/\s/g, '').toLowerCase();
|
|
22
|
+
}
|
|
23
|
+
onKeyup() {
|
|
24
|
+
debounce(() => {
|
|
25
|
+
this.fieldValueChange.emit(this.fieldValue);
|
|
26
|
+
this.valueChange.next(this.fieldValue);
|
|
27
|
+
}, 500)();
|
|
28
|
+
}
|
|
29
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NumberInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NumberInputComponent, selector: "lib-number-input", inputs: { fieldName: "fieldName", fieldValue: "fieldValue", placeholder: "placeholder", parentage: "parentage", labelColor: "labelColor", fieldClass: "fieldClass", error: "error" }, outputs: { fieldValueChange: "fieldValueChange" }, ngImport: i0, template: `
|
|
31
|
+
<div [ngClass]="fieldClass">
|
|
32
|
+
<label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
|
|
33
|
+
<input id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
|
|
34
|
+
type="number" class="jsonEntry"
|
|
35
|
+
[ngClass]="{'error': error}"
|
|
36
|
+
[placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()"/>
|
|
37
|
+
<div *ngIf="error" class="error">{{error}}</div>
|
|
38
|
+
</div>
|
|
39
|
+
`, isInline: true, 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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { 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"] }] }); }
|
|
40
|
+
}
|
|
41
|
+
export { NumberInputComponent };
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NumberInputComponent, decorators: [{
|
|
43
|
+
type: Component,
|
|
44
|
+
args: [{
|
|
45
|
+
selector: 'lib-number-input',
|
|
46
|
+
template: `
|
|
47
|
+
<div [ngClass]="fieldClass">
|
|
48
|
+
<label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
|
|
49
|
+
<input id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
|
|
50
|
+
type="number" class="jsonEntry"
|
|
51
|
+
[ngClass]="{'error': error}"
|
|
52
|
+
[placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()"/>
|
|
53
|
+
<div *ngIf="error" class="error">{{error}}</div>
|
|
54
|
+
</div>
|
|
55
|
+
`
|
|
56
|
+
}]
|
|
57
|
+
}], propDecorators: { fieldName: [{
|
|
58
|
+
type: Input
|
|
59
|
+
}], fieldValue: [{
|
|
60
|
+
type: Input
|
|
61
|
+
}], placeholder: [{
|
|
62
|
+
type: Input
|
|
63
|
+
}], parentage: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}], labelColor: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}], fieldClass: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}], error: [{
|
|
70
|
+
type: Input
|
|
71
|
+
}], fieldValueChange: [{
|
|
72
|
+
type: Output
|
|
73
|
+
}] } });
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9keW5hbWljLXdpZGdldHMvbnVtYmVyL251bWJlci1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7QUFFaEMsTUFhYSxvQkFBb0I7SUFiakM7UUFjRSxlQUFVLEdBQUcsYUFBYSxDQUFDO1FBQzNCLFlBQU8sR0FBRyxXQUFXLENBQUM7UUFNYixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixjQUFTLEdBQWEsRUFBRSxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxTQUFTLENBQUM7UUFDdkIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1YscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFDbkUsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBc0IsQ0FBQztLQVFqRDtJQW5CQyxJQUFhLFNBQVMsQ0FBQyxJQUFZO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQVVELE9BQU87UUFDTCxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ1osQ0FBQzsrR0FyQlUsb0JBQW9CO21HQUFwQixvQkFBb0IsaVNBWHJCOzs7Ozs7Ozs7Q0FTWDs7U0FFWSxvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFiaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixRQUFRLEVBQUU7Ozs7Ozs7OztDQVNYO2lCQUNBOzhCQUljLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7ZGVib3VuY2V9IGZyb20gXCJsb2Rhc2hcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLW51bWJlci1pbnB1dCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBbbmdDbGFzc109XCJmaWVsZENsYXNzXCI+XG4gICAgICA8bGFiZWwgZm9yPVwic2NoZW1hX3t7cGFyZW50YWdlP3BhcmVudGFnZSsnXyc6Jyd9fXt7X2lkTmFtZX19XCIgIFtuZ1N0eWxlXT1cInsnY29sb3InOiBsYWJlbENvbG9yfVwiPnt7X2ZpZWxkTmFtZX19PC9sYWJlbD5cbiAgICAgIDxpbnB1dCBpZD1cInNjaGVtYV97e3BhcmVudGFnZT9wYXJlbnRhZ2UrJ18nOicnfX17e19pZE5hbWV9fVwiXG4gICAgICAgICB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJqc29uRW50cnlcIlxuICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZXJyb3InOiBlcnJvcn1cIlxuICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgWyhuZ01vZGVsKV09XCJmaWVsZFZhbHVlXCIgKHBhc3RlKT1cIm9uS2V5dXAoKVwiIChrZXl1cCk9XCJvbktleXVwKClcIi8+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZXJyb3JcIiBjbGFzcz1cImVycm9yXCI+e3tlcnJvcn19PC9kaXY+XG4gICAgPC9kaXY+XG5gXG59KVxuZXhwb3J0IGNsYXNzIE51bWJlcklucHV0Q29tcG9uZW50IHtcbiAgX2ZpZWxkTmFtZSA9ICdGaWVsZCBMYWJlbCc7XG4gIF9pZE5hbWUgPSAnZmllbGRuYW1lJztcbiAgQElucHV0KCkgc2V0IGZpZWxkTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9maWVsZE5hbWUgPSBuYW1lO1xuICAgIHRoaXMuX2lkTmFtZSA9IG5hbWUucmVwbGFjZSgvXFxzL2csICcnKS50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIEBJbnB1dCgpIGZpZWxkVmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgQElucHV0KCkgcGFyZW50YWdlOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKSBsYWJlbENvbG9yID0gJyMwMDAwMDAnO1xuICBASW5wdXQoKSBmaWVsZENsYXNzID0gJyc7XG4gIEBJbnB1dCgpIGVycm9yID0gJyc7XG4gIEBPdXRwdXQoKSBmaWVsZFZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXJ8IHVuZGVmaW5lZD4oKTtcbiAgdmFsdWVDaGFuZ2UgPSBuZXcgU3ViamVjdDxudW1iZXJ8IHVuZGVmaW5lZD4gKCk7XG5cbiAgb25LZXl1cCgpIHtcbiAgICBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICB0aGlzLmZpZWxkVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmZpZWxkVmFsdWUpO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5uZXh0KHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgfSwgNTAwKSgpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild, ViewContainerRef } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "@angular/material/tooltip";
|
|
5
|
+
class ObjectComponent {
|
|
6
|
+
set fieldName(name) {
|
|
7
|
+
this._fieldName = name;
|
|
8
|
+
this._idName = name.replace(/\s/g, '').toLowerCase();
|
|
9
|
+
}
|
|
10
|
+
constructor() {
|
|
11
|
+
this._fieldName = 'Field Label';
|
|
12
|
+
this._idName = 'fieldname';
|
|
13
|
+
this.parentage = [];
|
|
14
|
+
this.bcolor = '#33aaff';
|
|
15
|
+
this.labelColor = '#000000';
|
|
16
|
+
this.showAdd = false;
|
|
17
|
+
this.addedItems = [];
|
|
18
|
+
this.open = false;
|
|
19
|
+
this.itemAdded = new EventEmitter();
|
|
20
|
+
this.itemSelected = new EventEmitter();
|
|
21
|
+
this.itemRemoved = new EventEmitter();
|
|
22
|
+
}
|
|
23
|
+
addClicked() {
|
|
24
|
+
this.itemAdded.emit(true);
|
|
25
|
+
}
|
|
26
|
+
itemClicked(item, index) {
|
|
27
|
+
this.itemSelected.emit(item);
|
|
28
|
+
}
|
|
29
|
+
toggleOpen(event, source) {
|
|
30
|
+
if (this.open && source === 'wrapper') {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
else if (!this.open && source === 'header') {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
this.open = !this.open;
|
|
37
|
+
event.stopPropagation();
|
|
38
|
+
}
|
|
39
|
+
removeItemClicked(item, index) {
|
|
40
|
+
this.addedItems = this.addedItems.filter((addedItem, itemIndex) => {
|
|
41
|
+
return index !== itemIndex;
|
|
42
|
+
});
|
|
43
|
+
this.itemRemoved.emit(item);
|
|
44
|
+
}
|
|
45
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ObjectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
46
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ObjectComponent, selector: "lib-object", inputs: { fieldName: "fieldName", itemData: "itemData", parentage: "parentage", bcolor: "bcolor", labelColor: "labelColor", showAdd: "showAdd", addedItems: "addedItems", open: "open" }, outputs: { itemAdded: "itemAdded", itemSelected: "itemSelected", itemRemoved: "itemRemoved" }, viewQueries: [{ propertyName: "wrapperContents", first: true, predicate: ["wrappercontents"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: `
|
|
47
|
+
<div id="schema_{{parentage?parentage+'_':''}}{{_idName}}" class="wrapper" [ngStyle]="{'background-color': bcolor}" [ngClass]="{closed: !open}" (click)="toggleOpen($event, 'wrapper')">
|
|
48
|
+
<div class="object-header-container">
|
|
49
|
+
<div class="object-header-title" (click)="toggleOpen($event, 'header')">
|
|
50
|
+
<label class="object-label" for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
|
|
51
|
+
<div class="expand-toggle" [ngClass]="{open: open}"></div>
|
|
52
|
+
</div>
|
|
53
|
+
<div class="added-items-list" [hidden]="!open || !showAdd">
|
|
54
|
+
<div class="object-list-items-container">
|
|
55
|
+
<span class="none-added-label" *ngIf="!addedItems || addedItems.length <= 0">NONE ADDED...</span>
|
|
56
|
+
<div (click)="itemClicked(item, i)" *ngFor="let item of addedItems; index as i" class="object-list-item clickable">
|
|
57
|
+
<div class="icon-clear" (click)="removeItemClicked(item, i)"></div>
|
|
58
|
+
<span class="preview-name" matTooltip="" matTooltipPosition="below">{{ _fieldName + '_item_' + i }}</span>
|
|
59
|
+
</div>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
<div class="object-main-content" [hidden]="!open">
|
|
64
|
+
<ng-container #wrappercontents></ng-container>
|
|
65
|
+
<div *ngIf="showAdd" class="save-button button" (click)="addClicked()">Add</div>
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
68
|
+
`, isInline: true, styles: [":host>label{margin-top:0}.wrapper{border-radius:.5rem;padding:var(--paddingMedium);display:flex;flex-direction:column;gap:5px;margin-top:var(--marginMedium)}.wrapper.closed{cursor:pointer}.wrapper .object-main-content[hidden]{display:none}.wrapper .save-button{margin-top:var(--marginSmall);height:35px;min-width:140px}.object-header-container{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}.object-header-container .object-header-title{width:100%;display:flex;justify-content:space-between;align-items:center;height:23px;cursor:pointer}.object-header-container .object-label{margin:0;cursor:pointer}.expand-toggle{font-family:zac;font-weight:600;font-size:23px;width:27px;color:var(--stroke);height:20px;margin-top:-3px;cursor:pointer}.expand-toggle:before{content:\"\\e91f\"}.expand-toggle.open{transform:rotate(270deg)}.added-items-list{margin-top:var(--marginSmall);width:100%}.added-items-list label,.added-items-list .added-items-label{margin-top:0}.added-items-list .object-list-items-container{background-color:#ffffff4d;border-radius:7px;display:flex;flex-direction:column;padding:5px}.added-items-list .object-list-items-container .none-added-label{padding-left:var(--paddingSmall);color:var(--white);opacity:.7}.added-items-list .object-list-item{display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.added-items-list .object-list-item .preview-name{color:var(--formBackground);font-weight:600;margin-left:var(--marginSmall);margin-bottom:2px}.added-items-list .object-list-item .icon-clear{color:var(--formBackground);cursor:pointer}.added-items-list .object-list-item .icon-clear:hover{color:var(--primary)}\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: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
|
|
69
|
+
}
|
|
70
|
+
export { ObjectComponent };
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ObjectComponent, decorators: [{
|
|
72
|
+
type: Component,
|
|
73
|
+
args: [{ selector: 'lib-object', template: `
|
|
74
|
+
<div id="schema_{{parentage?parentage+'_':''}}{{_idName}}" class="wrapper" [ngStyle]="{'background-color': bcolor}" [ngClass]="{closed: !open}" (click)="toggleOpen($event, 'wrapper')">
|
|
75
|
+
<div class="object-header-container">
|
|
76
|
+
<div class="object-header-title" (click)="toggleOpen($event, 'header')">
|
|
77
|
+
<label class="object-label" for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
|
|
78
|
+
<div class="expand-toggle" [ngClass]="{open: open}"></div>
|
|
79
|
+
</div>
|
|
80
|
+
<div class="added-items-list" [hidden]="!open || !showAdd">
|
|
81
|
+
<div class="object-list-items-container">
|
|
82
|
+
<span class="none-added-label" *ngIf="!addedItems || addedItems.length <= 0">NONE ADDED...</span>
|
|
83
|
+
<div (click)="itemClicked(item, i)" *ngFor="let item of addedItems; index as i" class="object-list-item clickable">
|
|
84
|
+
<div class="icon-clear" (click)="removeItemClicked(item, i)"></div>
|
|
85
|
+
<span class="preview-name" matTooltip="" matTooltipPosition="below">{{ _fieldName + '_item_' + i }}</span>
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
</div>
|
|
89
|
+
</div>
|
|
90
|
+
<div class="object-main-content" [hidden]="!open">
|
|
91
|
+
<ng-container #wrappercontents></ng-container>
|
|
92
|
+
<div *ngIf="showAdd" class="save-button button" (click)="addClicked()">Add</div>
|
|
93
|
+
</div>
|
|
94
|
+
</div>
|
|
95
|
+
`, styles: [":host>label{margin-top:0}.wrapper{border-radius:.5rem;padding:var(--paddingMedium);display:flex;flex-direction:column;gap:5px;margin-top:var(--marginMedium)}.wrapper.closed{cursor:pointer}.wrapper .object-main-content[hidden]{display:none}.wrapper .save-button{margin-top:var(--marginSmall);height:35px;min-width:140px}.object-header-container{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}.object-header-container .object-header-title{width:100%;display:flex;justify-content:space-between;align-items:center;height:23px;cursor:pointer}.object-header-container .object-label{margin:0;cursor:pointer}.expand-toggle{font-family:zac;font-weight:600;font-size:23px;width:27px;color:var(--stroke);height:20px;margin-top:-3px;cursor:pointer}.expand-toggle:before{content:\"\\e91f\"}.expand-toggle.open{transform:rotate(270deg)}.added-items-list{margin-top:var(--marginSmall);width:100%}.added-items-list label,.added-items-list .added-items-label{margin-top:0}.added-items-list .object-list-items-container{background-color:#ffffff4d;border-radius:7px;display:flex;flex-direction:column;padding:5px}.added-items-list .object-list-items-container .none-added-label{padding-left:var(--paddingSmall);color:var(--white);opacity:.7}.added-items-list .object-list-item{display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.added-items-list .object-list-item .preview-name{color:var(--formBackground);font-weight:600;margin-left:var(--marginSmall);margin-bottom:2px}.added-items-list .object-list-item .icon-clear{color:var(--formBackground);cursor:pointer}.added-items-list .object-list-item .icon-clear:hover{color:var(--primary)}\n"] }]
|
|
96
|
+
}], ctorParameters: function () { return []; }, propDecorators: { wrapperContents: [{
|
|
97
|
+
type: ViewChild,
|
|
98
|
+
args: ["wrappercontents", { read: ViewContainerRef, static: true }]
|
|
99
|
+
}], fieldName: [{
|
|
100
|
+
type: Input
|
|
101
|
+
}], itemData: [{
|
|
102
|
+
type: Input
|
|
103
|
+
}], parentage: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}], bcolor: [{
|
|
106
|
+
type: Input
|
|
107
|
+
}], labelColor: [{
|
|
108
|
+
type: Input
|
|
109
|
+
}], showAdd: [{
|
|
110
|
+
type: Input
|
|
111
|
+
}], addedItems: [{
|
|
112
|
+
type: Input
|
|
113
|
+
}], open: [{
|
|
114
|
+
type: Input
|
|
115
|
+
}], itemAdded: [{
|
|
116
|
+
type: Output
|
|
117
|
+
}], itemSelected: [{
|
|
118
|
+
type: Output
|
|
119
|
+
}], itemRemoved: [{
|
|
120
|
+
type: Output
|
|
121
|
+
}] } });
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9keW5hbWljLXdpZGdldHMvb2JqZWN0L29iamVjdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7QUFFbEcsTUEyQmEsZUFBZTtJQUkxQixJQUFhLFNBQVMsQ0FBQyxJQUFZO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQVlEO1FBakJBLGVBQVUsR0FBRyxhQUFhLENBQUM7UUFDM0IsWUFBTyxHQUFHLFdBQVcsQ0FBQztRQU1iLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFDekIsV0FBTSxHQUFHLFNBQVMsQ0FBQTtRQUNsQixlQUFVLEdBQUcsU0FBUyxDQUFDO1FBQ3ZCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixTQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ1osY0FBUyxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBQy9ELGlCQUFZLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDMUQsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUduRSxDQUFDO0lBQ0QsVUFBVTtRQUNSLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUs7UUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFLLEVBQUUsTUFBTTtRQUN0QixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtZQUNyQyxPQUFPO1NBQ1I7YUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxNQUFNLEtBQUssUUFBUSxFQUFFO1lBQzVDLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBSSxFQUFFLEtBQUs7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsRUFBRTtZQUNoRSxPQUFPLEtBQUssS0FBSyxTQUFTLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDOytHQTVDVSxlQUFlO21HQUFmLGVBQWUsMGFBQ1csZ0JBQWdCLDJDQTFCM0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQlQ7O1NBR1UsZUFBZTs0RkFBZixlQUFlO2tCQTNCM0IsU0FBUzsrQkFDRSxZQUFZLFlBQ1o7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQlQ7MEVBSTRFLGVBQWU7c0JBQTNGLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQztnQkFHdkQsU0FBUztzQkFBckIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLW9iamVjdCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBpZD1cInNjaGVtYV97e3BhcmVudGFnZT9wYXJlbnRhZ2UrJ18nOicnfX17e19pZE5hbWV9fVwiIGNsYXNzPVwid3JhcHBlclwiIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1jb2xvcic6IGJjb2xvcn1cIiBbbmdDbGFzc109XCJ7Y2xvc2VkOiAhb3Blbn1cIiAoY2xpY2spPVwidG9nZ2xlT3BlbigkZXZlbnQsICd3cmFwcGVyJylcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvYmplY3QtaGVhZGVyLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LWhlYWRlci10aXRsZVwiIChjbGljayk9XCJ0b2dnbGVPcGVuKCRldmVudCwgJ2hlYWRlcicpXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwib2JqZWN0LWxhYmVsXCIgZm9yPVwic2NoZW1hX3t7cGFyZW50YWdlP3BhcmVudGFnZSsnXyc6Jyd9fXt7X2lkTmFtZX19XCIgIFtuZ1N0eWxlXT1cInsnY29sb3InOiBsYWJlbENvbG9yfVwiPnt7X2ZpZWxkTmFtZX19PC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXhwYW5kLXRvZ2dsZVwiIFtuZ0NsYXNzXT1cIntvcGVuOiBvcGVufVwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZGVkLWl0ZW1zLWxpc3RcIiBbaGlkZGVuXT1cIiFvcGVuIHx8ICFzaG93QWRkXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm9iamVjdC1saXN0LWl0ZW1zLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJub25lLWFkZGVkLWxhYmVsXCIgKm5nSWY9XCIhYWRkZWRJdGVtcyB8fCBhZGRlZEl0ZW1zLmxlbmd0aCA8PSAwXCI+Tk9ORSBBRERFRC4uLjwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cIml0ZW1DbGlja2VkKGl0ZW0sIGkpXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYWRkZWRJdGVtczsgaW5kZXggYXMgaVwiIGNsYXNzPVwib2JqZWN0LWxpc3QtaXRlbSBjbGlja2FibGVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY2xlYXJcIiAoY2xpY2spPVwicmVtb3ZlSXRlbUNsaWNrZWQoaXRlbSwgaSlcIj48L2Rpdj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcmV2aWV3LW5hbWVcIiBtYXRUb29sdGlwPVwiXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYmVsb3dcIj57eyBfZmllbGROYW1lICsgJ19pdGVtXycgKyBpICB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm9iamVjdC1tYWluLWNvbnRlbnRcIiBbaGlkZGVuXT1cIiFvcGVuXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgI3dyYXBwZXJjb250ZW50cz48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dBZGRcIiBjbGFzcz1cInNhdmUtYnV0dG9uIGJ1dHRvblwiIChjbGljayk9XCJhZGRDbGlja2VkKClcIj5BZGQ8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9vYmplY3QuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBPYmplY3RDb21wb25lbnQge1xuICBAVmlld0NoaWxkKFwid3JhcHBlcmNvbnRlbnRzXCIsIHtyZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWV9KSBwdWJsaWMgd3JhcHBlckNvbnRlbnRzITogVmlld0NvbnRhaW5lclJlZjtcbiAgX2ZpZWxkTmFtZSA9ICdGaWVsZCBMYWJlbCc7XG4gIF9pZE5hbWUgPSAnZmllbGRuYW1lJztcbiAgQElucHV0KCkgc2V0IGZpZWxkTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9maWVsZE5hbWUgPSBuYW1lO1xuICAgIHRoaXMuX2lkTmFtZSA9IG5hbWUucmVwbGFjZSgvXFxzL2csICcnKS50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIEBJbnB1dCgpIGl0ZW1EYXRhOiBhbnk7XG4gIEBJbnB1dCgpIHBhcmVudGFnZTogc3RyaW5nW10gPSBbXTtcbiAgQElucHV0KCkgYmNvbG9yID0gJyMzM2FhZmYnXG4gIEBJbnB1dCgpIGxhYmVsQ29sb3IgPSAnIzAwMDAwMCc7XG4gIEBJbnB1dCgpIHNob3dBZGQgPSBmYWxzZTtcbiAgQElucHV0KCkgYWRkZWRJdGVtcyA9IFtdO1xuICBASW5wdXQoKSBvcGVuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBpdGVtQWRkZWQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIGl0ZW1TZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGl0ZW1SZW1vdmVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICB9XG4gIGFkZENsaWNrZWQoKSB7XG4gICAgdGhpcy5pdGVtQWRkZWQuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIGl0ZW1DbGlja2VkKGl0ZW0sIGluZGV4KSB7XG4gICAgdGhpcy5pdGVtU2VsZWN0ZWQuZW1pdChpdGVtKTtcbiAgfVxuXG4gIHRvZ2dsZU9wZW4oZXZlbnQsIHNvdXJjZSkge1xuICAgIGlmICh0aGlzLm9wZW4gJiYgc291cmNlID09PSAnd3JhcHBlcicpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLm9wZW4gJiYgc291cmNlID09PSAnaGVhZGVyJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgcmVtb3ZlSXRlbUNsaWNrZWQoaXRlbSwgaW5kZXgpIHtcbiAgICB0aGlzLmFkZGVkSXRlbXMgPSB0aGlzLmFkZGVkSXRlbXMuZmlsdGVyKChhZGRlZEl0ZW0sIGl0ZW1JbmRleCkgPT4ge1xuICAgICAgcmV0dXJuIGluZGV4ICE9PSBpdGVtSW5kZXg7XG4gICAgfSk7XG4gICAgdGhpcy5pdGVtUmVtb3ZlZC5lbWl0KGl0ZW0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { Subject } from "rxjs";
|
|
3
|
+
import { debounce } from "lodash";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
7
|
+
class PasswordInputComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
this._fieldName = 'Field Label';
|
|
10
|
+
this._idName = 'fieldname';
|
|
11
|
+
this.fieldValue = '';
|
|
12
|
+
this.placeholder = '';
|
|
13
|
+
this.parentage = [];
|
|
14
|
+
this.labelColor = '#000000';
|
|
15
|
+
this.fieldClass = '';
|
|
16
|
+
this.error = '';
|
|
17
|
+
this.fieldValueChange = new EventEmitter();
|
|
18
|
+
this.valueChange = new Subject();
|
|
19
|
+
}
|
|
20
|
+
set fieldName(name) {
|
|
21
|
+
this._fieldName = name;
|
|
22
|
+
this._idName = name.replace(/\s/g, '').toLowerCase();
|
|
23
|
+
}
|
|
24
|
+
onKeyup() {
|
|
25
|
+
debounce(() => {
|
|
26
|
+
this.fieldValueChange.emit(this.fieldValue);
|
|
27
|
+
this.valueChange.next(this.fieldValue);
|
|
28
|
+
}, 500)();
|
|
29
|
+
}
|
|
30
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PasswordInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31
|
+
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: `
|
|
32
|
+
<div [ngClass]="fieldClass">
|
|
33
|
+
<label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
|
|
34
|
+
<input id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
|
|
35
|
+
type="password" class="jsonEntry"
|
|
36
|
+
[ngClass]="{'error': error}"
|
|
37
|
+
[placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()"/>
|
|
38
|
+
<div *ngIf="error" class="error">{{error}}</div>
|
|
39
|
+
</div>
|
|
40
|
+
`, 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"] }] }); }
|
|
41
|
+
}
|
|
42
|
+
export { PasswordInputComponent };
|
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PasswordInputComponent, decorators: [{
|
|
44
|
+
type: Component,
|
|
45
|
+
args: [{ selector: 'lib-password-input', template: `
|
|
46
|
+
<div [ngClass]="fieldClass">
|
|
47
|
+
<label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
|
|
48
|
+
<input id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
|
|
49
|
+
type="password" class="jsonEntry"
|
|
50
|
+
[ngClass]="{'error': error}"
|
|
51
|
+
[placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()"/>
|
|
52
|
+
<div *ngIf="error" class="error">{{error}}</div>
|
|
53
|
+
</div>
|
|
54
|
+
`, styles: ["input.error{border-color:red}\n", "div.error{color:red}\n"] }]
|
|
55
|
+
}], propDecorators: { fieldName: [{
|
|
56
|
+
type: Input
|
|
57
|
+
}], fieldValue: [{
|
|
58
|
+
type: Input
|
|
59
|
+
}], placeholder: [{
|
|
60
|
+
type: Input
|
|
61
|
+
}], parentage: [{
|
|
62
|
+
type: Input
|
|
63
|
+
}], labelColor: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}], fieldClass: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}], error: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}], fieldValueChange: [{
|
|
70
|
+
type: Output
|
|
71
|
+
}] } });
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2R5bmFtaWMtd2lkZ2V0cy9wYXNzd29yZC9wYXNzd29yZC1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7QUFFaEMsTUFjYSxzQkFBc0I7SUFkbkM7UUFlSSxlQUFVLEdBQUcsYUFBYSxDQUFDO1FBQzNCLFlBQU8sR0FBRyxXQUFXLENBQUM7UUFLYixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFDekIsZUFBVSxHQUFHLFNBQVMsQ0FBQztRQUN2QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDVixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3hELGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztLQVF4QztJQW5CRyxJQUFhLFNBQVMsQ0FBQyxJQUFZO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDekQsQ0FBQztJQVVELE9BQU87UUFDSCxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ2QsQ0FBQzsrR0FyQlEsc0JBQXNCO21HQUF0QixzQkFBc0IsbVNBWnZCOzs7Ozs7Ozs7R0FTVDs7U0FHVSxzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFkbEMsU0FBUzsrQkFDRSxvQkFBb0IsWUFDcEI7Ozs7Ozs7OztHQVNUOzhCQU1jLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtkZWJvdW5jZX0gZnJvbSBcImxvZGFzaFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItcGFzc3dvcmQtaW5wdXQnLFxuICB0ZW1wbGF0ZTogYFxuICAgICAgPGRpdiBbbmdDbGFzc109XCJmaWVsZENsYXNzXCI+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cInNjaGVtYV97e3BhcmVudGFnZT9wYXJlbnRhZ2UrJ18nOicnfX17e19pZE5hbWV9fVwiICBbbmdTdHlsZV09XCJ7J2NvbG9yJzogbGFiZWxDb2xvcn1cIj57e19maWVsZE5hbWV9fTwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0IGlkPVwic2NoZW1hX3t7cGFyZW50YWdlP3BhcmVudGFnZSsnXyc6Jyd9fXt7X2lkTmFtZX19XCJcbiAgICAgICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCIgY2xhc3M9XCJqc29uRW50cnlcIlxuICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Vycm9yJzogZXJyb3J9XCJcbiAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgWyhuZ01vZGVsKV09XCJmaWVsZFZhbHVlXCIgKHBhc3RlKT1cIm9uS2V5dXAoKVwiIChrZXl1cCk9XCJvbktleXVwKClcIi8+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImVycm9yXCIgY2xhc3M9XCJlcnJvclwiPnt7ZXJyb3J9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gIGAsXG4gICAgc3R5bGVzOlsnaW5wdXQuZXJyb3Ige2JvcmRlci1jb2xvcjpyZWQ7fScsJ2Rpdi5lcnJvciB7Y29sb3I6cmVkfSddXG59KVxuZXhwb3J0IGNsYXNzIFBhc3N3b3JkSW5wdXRDb21wb25lbnQge1xuICAgIF9maWVsZE5hbWUgPSAnRmllbGQgTGFiZWwnO1xuICAgIF9pZE5hbWUgPSAnZmllbGRuYW1lJztcbiAgICBASW5wdXQoKSBzZXQgZmllbGROYW1lKG5hbWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9maWVsZE5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLl9pZE5hbWUgPSBuYW1lLnJlcGxhY2UoL1xccy9nLCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gICAgQElucHV0KCkgZmllbGRWYWx1ZSA9ICcnO1xuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XG4gICAgQElucHV0KCkgcGFyZW50YWdlOiBzdHJpbmdbXSA9IFtdO1xuICAgIEBJbnB1dCgpIGxhYmVsQ29sb3IgPSAnIzAwMDAwMCc7XG4gICAgQElucHV0KCkgZmllbGRDbGFzcyA9ICcnO1xuICAgIEBJbnB1dCgpIGVycm9yID0gJyc7XG4gICAgQE91dHB1dCgpIGZpZWxkVmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICB2YWx1ZUNoYW5nZSA9IG5ldyBTdWJqZWN0PHN0cmluZz4gKCk7XG5cbiAgICBvbktleXVwKCkge1xuICAgICAgICBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmZpZWxkVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5uZXh0KHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgICAgIH0sIDUwMCkoKTtcbiAgICB9XG59XG4iXX0=
|