@cqa-lib/cqa-ui 1.1.485 → 1.1.487
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/esm2020/lib/ai-prompt-card/ai-prompt-card.component.mjs +39 -0
- package/esm2020/lib/mixed-variable-input/mixed-variable-input.component.mjs +307 -0
- package/esm2020/lib/step-builder/template-variables-form/template-variables-form.component.mjs +7 -6
- package/esm2020/lib/ui-kit.module.mjs +11 -1
- package/esm2020/public-api.mjs +3 -1
- package/fesm2015/cqa-lib-cqa-ui.mjs +353 -3
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +351 -3
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/ai-prompt-card/ai-prompt-card.component.d.ts +15 -0
- package/lib/mixed-variable-input/mixed-variable-input.component.d.ts +41 -0
- package/lib/ui-kit.module.d.ts +103 -101
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/styles.css +1 -1
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
export class AiPromptCardComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.isFailed = false;
|
|
7
|
+
}
|
|
8
|
+
get accentColor() {
|
|
9
|
+
return this.isFailed ? '#FB2C36' : '#3F43EE';
|
|
10
|
+
}
|
|
11
|
+
get titleColor() {
|
|
12
|
+
return this.isFailed ? '#FB2C36' : '#161617';
|
|
13
|
+
}
|
|
14
|
+
get stepPrefix() {
|
|
15
|
+
return `Step ${this.stepNumber} — `;
|
|
16
|
+
}
|
|
17
|
+
get metaLine() {
|
|
18
|
+
return this.runVersion ? `${this.timestamp} · Run ${this.runVersion}` : this.timestamp;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
AiPromptCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AiPromptCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
22
|
+
AiPromptCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: AiPromptCardComponent, selector: "cqa-ai-prompt-card", inputs: { stepNumber: "stepNumber", stepName: "stepName", timestamp: "timestamp", runVersion: "runVersion", promptText: "promptText", isFailed: "isFailed" }, ngImport: i0, template: "<div class=\"cqa-ui-root cqa-font-inter\" style=\"display: block; width: 100%;\">\n <div class=\"cqa-bg-white cqa-rounded-lg cqa-overflow-hidden\"\n style=\"border: 1px solid #E4E4E499;\">\n\n <!-- Header section: sparkle icon + step title + meta line -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\" style=\"padding: 6px 12px; border-bottom: 1px solid #E4E4E499;\">\n <svg class=\"cqa-ai-prompt-card__logo\" width=\"18\" height=\"19\" viewBox=\"0 0 18 19\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [ngStyle]=\"{ color: accentColor, 'flex-shrink': '0', 'margin-top': '2px' }\">\n <path d=\"M9.01881 0C9.12979 0.0480032 9.17718 0.165227 9.22261 0.274119C9.24539 0.337566 9.26628 0.401358 9.28657 0.465659C9.29452 0.490298 9.30246 0.514938 9.31065 0.540324C9.41613 0.871899 9.51008 1.20702 9.60457 1.54191C9.62593 1.61751 9.64739 1.69308 9.66885 1.76865C9.7781 2.15341 9.88654 2.5384 9.99438 2.92356C10.0095 2.97765 10.0247 3.03175 10.0398 3.08584C10.0826 3.23834 10.1252 3.39085 10.1677 3.54344C10.2573 3.86586 10.3495 4.18733 10.4476 4.50724C10.4561 4.53523 10.4647 4.56321 10.4735 4.59205C10.7284 5.41499 11.0896 6.15257 11.6818 6.78081C11.6965 6.79715 11.7111 6.81349 11.7262 6.83032C11.979 7.10257 12.3034 7.32071 12.6276 7.49678C12.6441 7.5059 12.6606 7.51501 12.6776 7.5244C13.6317 8.04176 14.779 8.2693 15.8124 8.57217C16.2652 8.70496 16.7166 8.84194 17.1663 8.98495C17.1979 8.99499 17.2296 9.00502 17.2612 9.01503C17.3557 9.04495 17.45 9.07539 17.5442 9.10622C17.5662 9.11323 17.5882 9.12024 17.6108 9.12746C17.7406 9.17079 17.8648 9.22194 17.9713 9.31057C18.0038 9.38216 18.0038 9.38216 17.995 9.45376C17.8913 9.55776 17.7884 9.60653 17.6516 9.6541C17.632 9.66112 17.6124 9.66815 17.5923 9.67538C17.3612 9.7572 17.127 9.8288 16.8925 9.89975C16.8444 9.91442 16.7963 9.9291 16.7482 9.94378C16.4514 10.0341 16.1542 10.1226 15.8566 10.21C15.4646 10.3252 15.0733 10.4423 14.6822 10.5607C14.6182 10.5801 14.5541 10.5994 14.49 10.6187C14.1534 10.7199 13.8185 10.8248 13.4863 10.94C13.4587 10.9495 13.4312 10.959 13.4028 10.9688C12.2902 11.3595 11.4422 12.0884 10.9114 13.1543C10.6253 13.7534 10.4565 14.4012 10.2843 15.0405C10.2377 15.2131 10.1882 15.3846 10.1381 15.5561C10.0988 15.6911 10.0604 15.8262 10.023 15.9617C10.0185 15.9778 10.0141 15.9939 10.0095 16.0106C9.98788 16.0886 9.96638 16.1668 9.94503 16.2449C9.89039 16.443 9.83156 16.6395 9.77111 16.8359C9.66383 17.1849 9.5662 17.5365 9.46917 17.8885C9.32288 18.4185 9.32288 18.4185 9.23993 18.6733C9.23443 18.6904 9.22893 18.7076 9.22326 18.7252C9.19298 18.8159 9.16183 18.8994 9.10453 18.9761C9.01734 18.9955 9.01734 18.9955 8.93901 19C8.84946 18.8682 8.79016 18.7406 8.74265 18.5885C8.73574 18.567 8.72882 18.5454 8.7217 18.5232C8.63368 18.2452 8.55502 17.9644 8.47634 17.6836C8.45832 17.6194 8.44021 17.5552 8.42211 17.4911C8.2872 17.0127 8.15451 16.5337 8.02202 16.0546C7.47014 13.6847 7.47014 13.6847 6.078 11.7687C6.05569 11.7504 6.03338 11.732 6.01039 11.7131C5.09826 10.9757 3.89667 10.7027 2.7963 10.3827C2.52415 10.3035 2.2521 10.224 1.98006 10.1444C1.95628 10.1374 1.95628 10.1374 1.93201 10.1303C1.53962 10.0155 1.14735 9.90032 0.756448 9.78042C0.739911 9.77539 0.723375 9.77035 0.706338 9.76517C0.105798 9.58198 0.105798 9.58198 0.00129307 9.45376C-0.00166252 9.39559 -0.00166252 9.39559 0.0249378 9.33443C0.134167 9.22639 0.240153 9.18012 0.38432 9.13307C0.405194 9.12599 0.426068 9.11891 0.447574 9.11162C0.511506 9.09007 0.575577 9.069 0.639702 9.04805C0.658001 9.04198 0.676301 9.03592 0.695155 9.02968C0.82457 8.98684 0.95445 8.94561 1.08452 8.90485C1.11648 8.8948 1.11648 8.8948 1.14909 8.88454C1.70454 8.71017 2.26361 8.54789 2.82252 8.38525C3.23899 8.26404 3.65476 8.14082 4.06921 8.01269C4.08825 8.00683 4.1073 8.00097 4.12692 7.99493C5.087 7.69914 6.02557 7.27945 6.64547 6.44669C6.65475 6.43434 6.66403 6.42199 6.6736 6.40927C7.36395 5.48498 7.63315 4.36097 7.93391 3.26421C8.03285 2.90351 8.13298 2.54314 8.23345 2.18287C8.26127 2.0831 8.28906 1.98333 8.31673 1.88352C8.42788 1.48261 8.5407 1.08224 8.66 0.683712C8.67116 0.646393 8.68227 0.609057 8.69333 0.571704C8.86035 0.00841829 8.86035 0.00841828 9.01881 0Z\" fill=\"currentColor\"/>\n <path d=\"M14.4717 1.17245C14.5802 1.29646 14.6019 1.4422 14.6357 1.60054C14.7485 2.09799 14.8783 2.55539 15.3291 2.84435C15.6072 2.99959 15.9386 3.07024 16.2468 3.13696C16.3768 3.16569 16.4867 3.20383 16.5982 3.28009C16.6234 3.32036 16.6234 3.32036 16.6219 3.39046C16.596 3.47572 16.5733 3.50321 16.5051 3.55901C16.4306 3.58419 16.4306 3.58419 16.3411 3.60376C16.3073 3.61161 16.2734 3.61954 16.2396 3.62753C16.2215 3.63178 16.2034 3.63602 16.1847 3.64039C15.6337 3.76904 15.6337 3.76904 15.1574 4.06019C15.1419 4.07277 15.1264 4.08536 15.1105 4.09832C14.7701 4.40129 14.6981 4.90525 14.5956 5.32743C14.5897 5.35062 14.5839 5.3738 14.5778 5.39769C14.5727 5.41822 14.5677 5.43874 14.5624 5.45989C14.5403 5.52256 14.5174 5.56343 14.4717 5.61146C14.3444 5.62777 14.3444 5.62777 14.2825 5.61146C14.1841 5.53443 14.162 5.44669 14.1363 5.3288C14.132 5.31054 14.1277 5.29229 14.1233 5.27348C14.1095 5.21517 14.0962 5.15678 14.083 5.09835C13.9793 4.64335 13.8623 4.19694 13.4488 3.93024C13.1256 3.74834 12.7327 3.66231 12.3715 3.59284C12.2725 3.57204 12.2158 3.54587 12.1545 3.46355C12.1412 3.38002 12.1412 3.38002 12.1545 3.29649C12.2487 3.19808 12.3478 3.17406 12.4752 3.14435C12.5153 3.13432 12.5554 3.12422 12.5955 3.11405C12.6163 3.10883 12.637 3.10361 12.6583 3.09824C12.764 3.07078 12.8686 3.04 12.9732 3.00861C12.9922 3.00305 13.0112 2.99749 13.0308 2.99175C13.2434 2.92759 13.4269 2.84553 13.5968 2.69985C13.6127 2.68669 13.6285 2.67352 13.6449 2.65995C13.9094 2.41969 13.9992 2.05873 14.0808 1.72192C14.087 1.69635 14.0932 1.67078 14.0997 1.64444C14.112 1.59308 14.1242 1.54165 14.1361 1.49018C14.1446 1.45436 14.1446 1.45436 14.1533 1.41782C14.1583 1.39643 14.1633 1.37503 14.1684 1.35298C14.1902 1.28487 14.2188 1.23138 14.2589 1.17245C14.336 1.13356 14.39 1.15114 14.4717 1.17245Z\" fill=\"currentColor\"/>\n <path d=\"M3.5901 13.1885C3.61823 13.1887 3.61823 13.1887 3.64693 13.1889C3.84874 13.1951 3.9853 13.2604 4.13393 13.3974C4.30688 13.5859 4.38674 13.7987 4.3822 14.0528C4.36277 14.2589 4.24237 14.4388 4.09467 14.5781C3.92083 14.7198 3.74546 14.7666 3.52332 14.76C3.33602 14.738 3.15981 14.6482 3.02706 14.5131C2.86197 14.2857 2.8137 14.0772 2.8379 13.7971C2.88788 13.5766 3.03195 13.3976 3.21621 13.2721C3.34422 13.2066 3.44718 13.1873 3.5901 13.1885Z\" fill=\"currentColor\"/>\n </svg>\n <div class=\"cqa-flex cqa-flex-col cqa-flex-1\" style=\"gap: 2px;\">\n <div class=\"cqa-font-semibold cqa-text-[12px]\" [ngStyle]=\"{ color: titleColor }\">\n <span>{{ stepPrefix }}</span><span class=\"cqa-ai-prompt-card__step-name\" [innerHTML]=\"stepName\"></span>\n </div>\n <div class=\"cqa-text-[11px]\" style=\"color: #99999E;\">\n {{ metaLine }}\n </div>\n </div>\n </div>\n\n <!-- Body section: quoted prompt with left accent bar -->\n <div style=\"padding: 6px 12px;\">\n <div style=\"background-color: #F7F7FA; padding: 10px 12px; border-radius: 6px;\"\n [ngStyle]=\"{ 'border-left': '3px solid ' + accentColor }\">\n <p class=\"cqa-text-xs cqa-italic cqa-m-0\"\n style=\"color: #4C4C51; line-height: 20.4px;\">\n \"<span class=\"cqa-ai-prompt-card__prompt-body\" [innerHTML]=\"promptText\"></span>\"\n </p>\n </div>\n </div>\n </div>\n</div>\n", directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AiPromptCardComponent, decorators: [{
|
|
24
|
+
type: Component,
|
|
25
|
+
args: [{ selector: 'cqa-ai-prompt-card', template: "<div class=\"cqa-ui-root cqa-font-inter\" style=\"display: block; width: 100%;\">\n <div class=\"cqa-bg-white cqa-rounded-lg cqa-overflow-hidden\"\n style=\"border: 1px solid #E4E4E499;\">\n\n <!-- Header section: sparkle icon + step title + meta line -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\" style=\"padding: 6px 12px; border-bottom: 1px solid #E4E4E499;\">\n <svg class=\"cqa-ai-prompt-card__logo\" width=\"18\" height=\"19\" viewBox=\"0 0 18 19\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [ngStyle]=\"{ color: accentColor, 'flex-shrink': '0', 'margin-top': '2px' }\">\n <path d=\"M9.01881 0C9.12979 0.0480032 9.17718 0.165227 9.22261 0.274119C9.24539 0.337566 9.26628 0.401358 9.28657 0.465659C9.29452 0.490298 9.30246 0.514938 9.31065 0.540324C9.41613 0.871899 9.51008 1.20702 9.60457 1.54191C9.62593 1.61751 9.64739 1.69308 9.66885 1.76865C9.7781 2.15341 9.88654 2.5384 9.99438 2.92356C10.0095 2.97765 10.0247 3.03175 10.0398 3.08584C10.0826 3.23834 10.1252 3.39085 10.1677 3.54344C10.2573 3.86586 10.3495 4.18733 10.4476 4.50724C10.4561 4.53523 10.4647 4.56321 10.4735 4.59205C10.7284 5.41499 11.0896 6.15257 11.6818 6.78081C11.6965 6.79715 11.7111 6.81349 11.7262 6.83032C11.979 7.10257 12.3034 7.32071 12.6276 7.49678C12.6441 7.5059 12.6606 7.51501 12.6776 7.5244C13.6317 8.04176 14.779 8.2693 15.8124 8.57217C16.2652 8.70496 16.7166 8.84194 17.1663 8.98495C17.1979 8.99499 17.2296 9.00502 17.2612 9.01503C17.3557 9.04495 17.45 9.07539 17.5442 9.10622C17.5662 9.11323 17.5882 9.12024 17.6108 9.12746C17.7406 9.17079 17.8648 9.22194 17.9713 9.31057C18.0038 9.38216 18.0038 9.38216 17.995 9.45376C17.8913 9.55776 17.7884 9.60653 17.6516 9.6541C17.632 9.66112 17.6124 9.66815 17.5923 9.67538C17.3612 9.7572 17.127 9.8288 16.8925 9.89975C16.8444 9.91442 16.7963 9.9291 16.7482 9.94378C16.4514 10.0341 16.1542 10.1226 15.8566 10.21C15.4646 10.3252 15.0733 10.4423 14.6822 10.5607C14.6182 10.5801 14.5541 10.5994 14.49 10.6187C14.1534 10.7199 13.8185 10.8248 13.4863 10.94C13.4587 10.9495 13.4312 10.959 13.4028 10.9688C12.2902 11.3595 11.4422 12.0884 10.9114 13.1543C10.6253 13.7534 10.4565 14.4012 10.2843 15.0405C10.2377 15.2131 10.1882 15.3846 10.1381 15.5561C10.0988 15.6911 10.0604 15.8262 10.023 15.9617C10.0185 15.9778 10.0141 15.9939 10.0095 16.0106C9.98788 16.0886 9.96638 16.1668 9.94503 16.2449C9.89039 16.443 9.83156 16.6395 9.77111 16.8359C9.66383 17.1849 9.5662 17.5365 9.46917 17.8885C9.32288 18.4185 9.32288 18.4185 9.23993 18.6733C9.23443 18.6904 9.22893 18.7076 9.22326 18.7252C9.19298 18.8159 9.16183 18.8994 9.10453 18.9761C9.01734 18.9955 9.01734 18.9955 8.93901 19C8.84946 18.8682 8.79016 18.7406 8.74265 18.5885C8.73574 18.567 8.72882 18.5454 8.7217 18.5232C8.63368 18.2452 8.55502 17.9644 8.47634 17.6836C8.45832 17.6194 8.44021 17.5552 8.42211 17.4911C8.2872 17.0127 8.15451 16.5337 8.02202 16.0546C7.47014 13.6847 7.47014 13.6847 6.078 11.7687C6.05569 11.7504 6.03338 11.732 6.01039 11.7131C5.09826 10.9757 3.89667 10.7027 2.7963 10.3827C2.52415 10.3035 2.2521 10.224 1.98006 10.1444C1.95628 10.1374 1.95628 10.1374 1.93201 10.1303C1.53962 10.0155 1.14735 9.90032 0.756448 9.78042C0.739911 9.77539 0.723375 9.77035 0.706338 9.76517C0.105798 9.58198 0.105798 9.58198 0.00129307 9.45376C-0.00166252 9.39559 -0.00166252 9.39559 0.0249378 9.33443C0.134167 9.22639 0.240153 9.18012 0.38432 9.13307C0.405194 9.12599 0.426068 9.11891 0.447574 9.11162C0.511506 9.09007 0.575577 9.069 0.639702 9.04805C0.658001 9.04198 0.676301 9.03592 0.695155 9.02968C0.82457 8.98684 0.95445 8.94561 1.08452 8.90485C1.11648 8.8948 1.11648 8.8948 1.14909 8.88454C1.70454 8.71017 2.26361 8.54789 2.82252 8.38525C3.23899 8.26404 3.65476 8.14082 4.06921 8.01269C4.08825 8.00683 4.1073 8.00097 4.12692 7.99493C5.087 7.69914 6.02557 7.27945 6.64547 6.44669C6.65475 6.43434 6.66403 6.42199 6.6736 6.40927C7.36395 5.48498 7.63315 4.36097 7.93391 3.26421C8.03285 2.90351 8.13298 2.54314 8.23345 2.18287C8.26127 2.0831 8.28906 1.98333 8.31673 1.88352C8.42788 1.48261 8.5407 1.08224 8.66 0.683712C8.67116 0.646393 8.68227 0.609057 8.69333 0.571704C8.86035 0.00841829 8.86035 0.00841828 9.01881 0Z\" fill=\"currentColor\"/>\n <path d=\"M14.4717 1.17245C14.5802 1.29646 14.6019 1.4422 14.6357 1.60054C14.7485 2.09799 14.8783 2.55539 15.3291 2.84435C15.6072 2.99959 15.9386 3.07024 16.2468 3.13696C16.3768 3.16569 16.4867 3.20383 16.5982 3.28009C16.6234 3.32036 16.6234 3.32036 16.6219 3.39046C16.596 3.47572 16.5733 3.50321 16.5051 3.55901C16.4306 3.58419 16.4306 3.58419 16.3411 3.60376C16.3073 3.61161 16.2734 3.61954 16.2396 3.62753C16.2215 3.63178 16.2034 3.63602 16.1847 3.64039C15.6337 3.76904 15.6337 3.76904 15.1574 4.06019C15.1419 4.07277 15.1264 4.08536 15.1105 4.09832C14.7701 4.40129 14.6981 4.90525 14.5956 5.32743C14.5897 5.35062 14.5839 5.3738 14.5778 5.39769C14.5727 5.41822 14.5677 5.43874 14.5624 5.45989C14.5403 5.52256 14.5174 5.56343 14.4717 5.61146C14.3444 5.62777 14.3444 5.62777 14.2825 5.61146C14.1841 5.53443 14.162 5.44669 14.1363 5.3288C14.132 5.31054 14.1277 5.29229 14.1233 5.27348C14.1095 5.21517 14.0962 5.15678 14.083 5.09835C13.9793 4.64335 13.8623 4.19694 13.4488 3.93024C13.1256 3.74834 12.7327 3.66231 12.3715 3.59284C12.2725 3.57204 12.2158 3.54587 12.1545 3.46355C12.1412 3.38002 12.1412 3.38002 12.1545 3.29649C12.2487 3.19808 12.3478 3.17406 12.4752 3.14435C12.5153 3.13432 12.5554 3.12422 12.5955 3.11405C12.6163 3.10883 12.637 3.10361 12.6583 3.09824C12.764 3.07078 12.8686 3.04 12.9732 3.00861C12.9922 3.00305 13.0112 2.99749 13.0308 2.99175C13.2434 2.92759 13.4269 2.84553 13.5968 2.69985C13.6127 2.68669 13.6285 2.67352 13.6449 2.65995C13.9094 2.41969 13.9992 2.05873 14.0808 1.72192C14.087 1.69635 14.0932 1.67078 14.0997 1.64444C14.112 1.59308 14.1242 1.54165 14.1361 1.49018C14.1446 1.45436 14.1446 1.45436 14.1533 1.41782C14.1583 1.39643 14.1633 1.37503 14.1684 1.35298C14.1902 1.28487 14.2188 1.23138 14.2589 1.17245C14.336 1.13356 14.39 1.15114 14.4717 1.17245Z\" fill=\"currentColor\"/>\n <path d=\"M3.5901 13.1885C3.61823 13.1887 3.61823 13.1887 3.64693 13.1889C3.84874 13.1951 3.9853 13.2604 4.13393 13.3974C4.30688 13.5859 4.38674 13.7987 4.3822 14.0528C4.36277 14.2589 4.24237 14.4388 4.09467 14.5781C3.92083 14.7198 3.74546 14.7666 3.52332 14.76C3.33602 14.738 3.15981 14.6482 3.02706 14.5131C2.86197 14.2857 2.8137 14.0772 2.8379 13.7971C2.88788 13.5766 3.03195 13.3976 3.21621 13.2721C3.34422 13.2066 3.44718 13.1873 3.5901 13.1885Z\" fill=\"currentColor\"/>\n </svg>\n <div class=\"cqa-flex cqa-flex-col cqa-flex-1\" style=\"gap: 2px;\">\n <div class=\"cqa-font-semibold cqa-text-[12px]\" [ngStyle]=\"{ color: titleColor }\">\n <span>{{ stepPrefix }}</span><span class=\"cqa-ai-prompt-card__step-name\" [innerHTML]=\"stepName\"></span>\n </div>\n <div class=\"cqa-text-[11px]\" style=\"color: #99999E;\">\n {{ metaLine }}\n </div>\n </div>\n </div>\n\n <!-- Body section: quoted prompt with left accent bar -->\n <div style=\"padding: 6px 12px;\">\n <div style=\"background-color: #F7F7FA; padding: 10px 12px; border-radius: 6px;\"\n [ngStyle]=\"{ 'border-left': '3px solid ' + accentColor }\">\n <p class=\"cqa-text-xs cqa-italic cqa-m-0\"\n style=\"color: #4C4C51; line-height: 20.4px;\">\n \"<span class=\"cqa-ai-prompt-card__prompt-body\" [innerHTML]=\"promptText\"></span>\"\n </p>\n </div>\n </div>\n </div>\n</div>\n", styles: [] }]
|
|
26
|
+
}], propDecorators: { stepNumber: [{
|
|
27
|
+
type: Input
|
|
28
|
+
}], stepName: [{
|
|
29
|
+
type: Input
|
|
30
|
+
}], timestamp: [{
|
|
31
|
+
type: Input
|
|
32
|
+
}], runVersion: [{
|
|
33
|
+
type: Input
|
|
34
|
+
}], promptText: [{
|
|
35
|
+
type: Input
|
|
36
|
+
}], isFailed: [{
|
|
37
|
+
type: Input
|
|
38
|
+
}] } });
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktcHJvbXB0LWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9haS1wcm9tcHQtY2FyZC9haS1wcm9tcHQtY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2FpLXByb21wdC1jYXJkL2FpLXByb21wdC1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPakQsTUFBTSxPQUFPLHFCQUFxQjtJQUxsQztRQVdXLGFBQVEsR0FBRyxLQUFLLENBQUM7S0FpQjNCO0lBZkMsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxRQUFRLElBQUksQ0FBQyxVQUFVLEtBQUssQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLFVBQVUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3pGLENBQUM7O2tIQXRCVSxxQkFBcUI7c0dBQXJCLHFCQUFxQix3TkNQbEMsNnlPQW1DQTsyRkQ1QmEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLG9CQUFvQjs4QkFLckIsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1haS1wcm9tcHQtY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9haS1wcm9tcHQtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW11cbn0pXG5leHBvcnQgY2xhc3MgQWlQcm9tcHRDYXJkQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc3RlcE51bWJlciE6IHN0cmluZztcbiAgQElucHV0KCkgc3RlcE5hbWUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRpbWVzdGFtcCE6IHN0cmluZztcbiAgQElucHV0KCkgcnVuVmVyc2lvbj86IHN0cmluZztcbiAgQElucHV0KCkgcHJvbXB0VGV4dCE6IHN0cmluZztcbiAgQElucHV0KCkgaXNGYWlsZWQgPSBmYWxzZTtcblxuICBnZXQgYWNjZW50Q29sb3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pc0ZhaWxlZCA/ICcjRkIyQzM2JyA6ICcjM0Y0M0VFJztcbiAgfVxuXG4gIGdldCB0aXRsZUNvbG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNGYWlsZWQgPyAnI0ZCMkMzNicgOiAnIzE2MTYxNyc7XG4gIH1cblxuICBnZXQgc3RlcFByZWZpeCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgU3RlcCAke3RoaXMuc3RlcE51bWJlcn0g4oCUIGA7XG4gIH1cblxuICBnZXQgbWV0YUxpbmUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ydW5WZXJzaW9uID8gYCR7dGhpcy50aW1lc3RhbXB9IMK3IFJ1biAke3RoaXMucnVuVmVyc2lvbn1gIDogdGhpcy50aW1lc3RhbXA7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjcWEtdWktcm9vdCBjcWEtZm9udC1pbnRlclwiIHN0eWxlPVwiZGlzcGxheTogYmxvY2s7IHdpZHRoOiAxMDAlO1wiPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWJnLXdoaXRlIGNxYS1yb3VuZGVkLWxnIGNxYS1vdmVyZmxvdy1oaWRkZW5cIlxuICAgIHN0eWxlPVwiYm9yZGVyOiAxcHggc29saWQgI0U0RTRFNDk5O1wiPlxuXG4gICAgPCEtLSBIZWFkZXIgc2VjdGlvbjogc3BhcmtsZSBpY29uICsgc3RlcCB0aXRsZSArIG1ldGEgbGluZSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTJcIiBzdHlsZT1cInBhZGRpbmc6IDZweCAxMnB4OyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0U0RTRFNDk5O1wiPlxuICAgICAgPHN2ZyBjbGFzcz1cImNxYS1haS1wcm9tcHQtY2FyZF9fbG9nb1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOVwiIHZpZXdCb3g9XCIwIDAgMTggMTlcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7IGNvbG9yOiBhY2NlbnRDb2xvciwgJ2ZsZXgtc2hyaW5rJzogJzAnLCAnbWFyZ2luLXRvcCc6ICcycHgnIH1cIj5cbiAgICAgICAgPHBhdGggZD1cIk05LjAxODgxIDBDOS4xMjk3OSAwLjA0ODAwMzIgOS4xNzcxOCAwLjE2NTIyNyA5LjIyMjYxIDAuMjc0MTE5QzkuMjQ1MzkgMC4zMzc1NjYgOS4yNjYyOCAwLjQwMTM1OCA5LjI4NjU3IDAuNDY1NjU5QzkuMjk0NTIgMC40OTAyOTggOS4zMDI0NiAwLjUxNDkzOCA5LjMxMDY1IDAuNTQwMzI0QzkuNDE2MTMgMC44NzE4OTkgOS41MTAwOCAxLjIwNzAyIDkuNjA0NTcgMS41NDE5MUM5LjYyNTkzIDEuNjE3NTEgOS42NDczOSAxLjY5MzA4IDkuNjY4ODUgMS43Njg2NUM5Ljc3ODEgMi4xNTM0MSA5Ljg4NjU0IDIuNTM4NCA5Ljk5NDM4IDIuOTIzNTZDMTAuMDA5NSAyLjk3NzY1IDEwLjAyNDcgMy4wMzE3NSAxMC4wMzk4IDMuMDg1ODRDMTAuMDgyNiAzLjIzODM0IDEwLjEyNTIgMy4zOTA4NSAxMC4xNjc3IDMuNTQzNDRDMTAuMjU3MyAzLjg2NTg2IDEwLjM0OTUgNC4xODczMyAxMC40NDc2IDQuNTA3MjRDMTAuNDU2MSA0LjUzNTIzIDEwLjQ2NDcgNC41NjMyMSAxMC40NzM1IDQuNTkyMDVDMTAuNzI4NCA1LjQxNDk5IDExLjA4OTYgNi4xNTI1NyAxMS42ODE4IDYuNzgwODFDMTEuNjk2NSA2Ljc5NzE1IDExLjcxMTEgNi44MTM0OSAxMS43MjYyIDYuODMwMzJDMTEuOTc5IDcuMTAyNTcgMTIuMzAzNCA3LjMyMDcxIDEyLjYyNzYgNy40OTY3OEMxMi42NDQxIDcuNTA1OSAxMi42NjA2IDcuNTE1MDEgMTIuNjc3NiA3LjUyNDRDMTMuNjMxNyA4LjA0MTc2IDE0Ljc3OSA4LjI2OTMgMTUuODEyNCA4LjU3MjE3QzE2LjI2NTIgOC43MDQ5NiAxNi43MTY2IDguODQxOTQgMTcuMTY2MyA4Ljk4NDk1QzE3LjE5NzkgOC45OTQ5OSAxNy4yMjk2IDkuMDA1MDIgMTcuMjYxMiA5LjAxNTAzQzE3LjM1NTcgOS4wNDQ5NSAxNy40NSA5LjA3NTM5IDE3LjU0NDIgOS4xMDYyMkMxNy41NjYyIDkuMTEzMjMgMTcuNTg4MiA5LjEyMDI0IDE3LjYxMDggOS4xMjc0NkMxNy43NDA2IDkuMTcwNzkgMTcuODY0OCA5LjIyMTk0IDE3Ljk3MTMgOS4zMTA1N0MxOC4wMDM4IDkuMzgyMTYgMTguMDAzOCA5LjM4MjE2IDE3Ljk5NSA5LjQ1Mzc2QzE3Ljg5MTMgOS41NTc3NiAxNy43ODg0IDkuNjA2NTMgMTcuNjUxNiA5LjY1NDFDMTcuNjMyIDkuNjYxMTIgMTcuNjEyNCA5LjY2ODE1IDE3LjU5MjMgOS42NzUzOEMxNy4zNjEyIDkuNzU3MiAxNy4xMjcgOS44Mjg4IDE2Ljg5MjUgOS44OTk3NUMxNi44NDQ0IDkuOTE0NDIgMTYuNzk2MyA5LjkyOTEgMTYuNzQ4MiA5Ljk0Mzc4QzE2LjQ1MTQgMTAuMDM0MSAxNi4xNTQyIDEwLjEyMjYgMTUuODU2NiAxMC4yMUMxNS40NjQ2IDEwLjMyNTIgMTUuMDczMyAxMC40NDIzIDE0LjY4MjIgMTAuNTYwN0MxNC42MTgyIDEwLjU4MDEgMTQuNTU0MSAxMC41OTk0IDE0LjQ5IDEwLjYxODdDMTQuMTUzNCAxMC43MTk5IDEzLjgxODUgMTAuODI0OCAxMy40ODYzIDEwLjk0QzEzLjQ1ODcgMTAuOTQ5NSAxMy40MzEyIDEwLjk1OSAxMy40MDI4IDEwLjk2ODhDMTIuMjkwMiAxMS4zNTk1IDExLjQ0MjIgMTIuMDg4NCAxMC45MTE0IDEzLjE1NDNDMTAuNjI1MyAxMy43NTM0IDEwLjQ1NjUgMTQuNDAxMiAxMC4yODQzIDE1LjA0MDVDMTAuMjM3NyAxNS4yMTMxIDEwLjE4ODIgMTUuMzg0NiAxMC4xMzgxIDE1LjU1NjFDMTAuMDk4OCAxNS42OTExIDEwLjA2MDQgMTUuODI2MiAxMC4wMjMgMTUuOTYxN0MxMC4wMTg1IDE1Ljk3NzggMTAuMDE0MSAxNS45OTM5IDEwLjAwOTUgMTYuMDEwNkM5Ljk4Nzg4IDE2LjA4ODYgOS45NjYzOCAxNi4xNjY4IDkuOTQ1MDMgMTYuMjQ0OUM5Ljg5MDM5IDE2LjQ0MyA5LjgzMTU2IDE2LjYzOTUgOS43NzExMSAxNi44MzU5QzkuNjYzODMgMTcuMTg0OSA5LjU2NjIgMTcuNTM2NSA5LjQ2OTE3IDE3Ljg4ODVDOS4zMjI4OCAxOC40MTg1IDkuMzIyODggMTguNDE4NSA5LjIzOTkzIDE4LjY3MzNDOS4yMzQ0MyAxOC42OTA0IDkuMjI4OTMgMTguNzA3NiA5LjIyMzI2IDE4LjcyNTJDOS4xOTI5OCAxOC44MTU5IDkuMTYxODMgMTguODk5NCA5LjEwNDUzIDE4Ljk3NjFDOS4wMTczNCAxOC45OTU1IDkuMDE3MzQgMTguOTk1NSA4LjkzOTAxIDE5QzguODQ5NDYgMTguODY4MiA4Ljc5MDE2IDE4Ljc0MDYgOC43NDI2NSAxOC41ODg1QzguNzM1NzQgMTguNTY3IDguNzI4ODIgMTguNTQ1NCA4LjcyMTcgMTguNTIzMkM4LjYzMzY4IDE4LjI0NTIgOC41NTUwMiAxNy45NjQ0IDguNDc2MzQgMTcuNjgzNkM4LjQ1ODMyIDE3LjYxOTQgOC40NDAyMSAxNy41NTUyIDguNDIyMTEgMTcuNDkxMUM4LjI4NzIgMTcuMDEyNyA4LjE1NDUxIDE2LjUzMzcgOC4wMjIwMiAxNi4wNTQ2QzcuNDcwMTQgMTMuNjg0NyA3LjQ3MDE0IDEzLjY4NDcgNi4wNzggMTEuNzY4N0M2LjA1NTY5IDExLjc1MDQgNi4wMzMzOCAxMS43MzIgNi4wMTAzOSAxMS43MTMxQzUuMDk4MjYgMTAuOTc1NyAzLjg5NjY3IDEwLjcwMjcgMi43OTYzIDEwLjM4MjdDMi41MjQxNSAxMC4zMDM1IDIuMjUyMSAxMC4yMjQgMS45ODAwNiAxMC4xNDQ0QzEuOTU2MjggMTAuMTM3NCAxLjk1NjI4IDEwLjEzNzQgMS45MzIwMSAxMC4xMzAzQzEuNTM5NjIgMTAuMDE1NSAxLjE0NzM1IDkuOTAwMzIgMC43NTY0NDggOS43ODA0MkMwLjczOTkxMSA5Ljc3NTM5IDAuNzIzMzc1IDkuNzcwMzUgMC43MDYzMzggOS43NjUxN0MwLjEwNTc5OCA5LjU4MTk4IDAuMTA1Nzk4IDkuNTgxOTggMC4wMDEyOTMwNyA5LjQ1Mzc2Qy0wLjAwMTY2MjUyIDkuMzk1NTkgLTAuMDAxNjYyNTIgOS4zOTU1OSAwLjAyNDkzNzggOS4zMzQ0M0MwLjEzNDE2NyA5LjIyNjM5IDAuMjQwMTUzIDkuMTgwMTIgMC4zODQzMiA5LjEzMzA3QzAuNDA1MTk0IDkuMTI1OTkgMC40MjYwNjggOS4xMTg5MSAwLjQ0NzU3NCA5LjExMTYyQzAuNTExNTA2IDkuMDkwMDcgMC41NzU1NzcgOS4wNjkgMC42Mzk3MDIgOS4wNDgwNUMwLjY1ODAwMSA5LjA0MTk4IDAuNjc2MzAxIDkuMDM1OTIgMC42OTUxNTUgOS4wMjk2OEMwLjgyNDU3IDguOTg2ODQgMC45NTQ0NSA4Ljk0NTYxIDEuMDg0NTIgOC45MDQ4NUMxLjExNjQ4IDguODk0OCAxLjExNjQ4IDguODk0OCAxLjE0OTA5IDguODg0NTRDMS43MDQ1NCA4LjcxMDE3IDIuMjYzNjEgOC41NDc4OSAyLjgyMjUyIDguMzg1MjVDMy4yMzg5OSA4LjI2NDA0IDMuNjU0NzYgOC4xNDA4MiA0LjA2OTIxIDguMDEyNjlDNC4wODgyNSA4LjAwNjgzIDQuMTA3MyA4LjAwMDk3IDQuMTI2OTIgNy45OTQ5M0M1LjA4NyA3LjY5OTE0IDYuMDI1NTcgNy4yNzk0NSA2LjY0NTQ3IDYuNDQ2NjlDNi42NTQ3NSA2LjQzNDM0IDYuNjY0MDMgNi40MjE5OSA2LjY3MzYgNi40MDkyN0M3LjM2Mzk1IDUuNDg0OTggNy42MzMxNSA0LjM2MDk3IDcuOTMzOTEgMy4yNjQyMUM4LjAzMjg1IDIuOTAzNTEgOC4xMzI5OCAyLjU0MzE0IDguMjMzNDUgMi4xODI4N0M4LjI2MTI3IDIuMDgzMSA4LjI4OTA2IDEuOTgzMzMgOC4zMTY3MyAxLjg4MzUyQzguNDI3ODggMS40ODI2MSA4LjU0MDcgMS4wODIyNCA4LjY2IDAuNjgzNzEyQzguNjcxMTYgMC42NDYzOTMgOC42ODIyNyAwLjYwOTA1NyA4LjY5MzMzIDAuNTcxNzA0QzguODYwMzUgMC4wMDg0MTgyOSA4Ljg2MDM1IDAuMDA4NDE4MjggOS4wMTg4MSAwWlwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIi8+XG4gICAgICAgIDxwYXRoIGQ9XCJNMTQuNDcxNyAxLjE3MjQ1QzE0LjU4MDIgMS4yOTY0NiAxNC42MDE5IDEuNDQyMiAxNC42MzU3IDEuNjAwNTRDMTQuNzQ4NSAyLjA5Nzk5IDE0Ljg3ODMgMi41NTUzOSAxNS4zMjkxIDIuODQ0MzVDMTUuNjA3MiAyLjk5OTU5IDE1LjkzODYgMy4wNzAyNCAxNi4yNDY4IDMuMTM2OTZDMTYuMzc2OCAzLjE2NTY5IDE2LjQ4NjcgMy4yMDM4MyAxNi41OTgyIDMuMjgwMDlDMTYuNjIzNCAzLjMyMDM2IDE2LjYyMzQgMy4zMjAzNiAxNi42MjE5IDMuMzkwNDZDMTYuNTk2IDMuNDc1NzIgMTYuNTczMyAzLjUwMzIxIDE2LjUwNTEgMy41NTkwMUMxNi40MzA2IDMuNTg0MTkgMTYuNDMwNiAzLjU4NDE5IDE2LjM0MTEgMy42MDM3NkMxNi4zMDczIDMuNjExNjEgMTYuMjczNCAzLjYxOTU0IDE2LjIzOTYgMy42Mjc1M0MxNi4yMjE1IDMuNjMxNzggMTYuMjAzNCAzLjYzNjAyIDE2LjE4NDcgMy42NDAzOUMxNS42MzM3IDMuNzY5MDQgMTUuNjMzNyAzLjc2OTA0IDE1LjE1NzQgNC4wNjAxOUMxNS4xNDE5IDQuMDcyNzcgMTUuMTI2NCA0LjA4NTM2IDE1LjExMDUgNC4wOTgzMkMxNC43NzAxIDQuNDAxMjkgMTQuNjk4MSA0LjkwNTI1IDE0LjU5NTYgNS4zMjc0M0MxNC41ODk3IDUuMzUwNjIgMTQuNTgzOSA1LjM3MzggMTQuNTc3OCA1LjM5NzY5QzE0LjU3MjcgNS40MTgyMiAxNC41Njc3IDUuNDM4NzQgMTQuNTYyNCA1LjQ1OTg5QzE0LjU0MDMgNS41MjI1NiAxNC41MTc0IDUuNTYzNDMgMTQuNDcxNyA1LjYxMTQ2QzE0LjM0NDQgNS42Mjc3NyAxNC4zNDQ0IDUuNjI3NzcgMTQuMjgyNSA1LjYxMTQ2QzE0LjE4NDEgNS41MzQ0MyAxNC4xNjIgNS40NDY2OSAxNC4xMzYzIDUuMzI4OEMxNC4xMzIgNS4zMTA1NCAxNC4xMjc3IDUuMjkyMjkgMTQuMTIzMyA1LjI3MzQ4QzE0LjEwOTUgNS4yMTUxNyAxNC4wOTYyIDUuMTU2NzggMTQuMDgzIDUuMDk4MzVDMTMuOTc5MyA0LjY0MzM1IDEzLjg2MjMgNC4xOTY5NCAxMy40NDg4IDMuOTMwMjRDMTMuMTI1NiAzLjc0ODM0IDEyLjczMjcgMy42NjIzMSAxMi4zNzE1IDMuNTkyODRDMTIuMjcyNSAzLjU3MjA0IDEyLjIxNTggMy41NDU4NyAxMi4xNTQ1IDMuNDYzNTVDMTIuMTQxMiAzLjM4MDAyIDEyLjE0MTIgMy4zODAwMiAxMi4xNTQ1IDMuMjk2NDlDMTIuMjQ4NyAzLjE5ODA4IDEyLjM0NzggMy4xNzQwNiAxMi40NzUyIDMuMTQ0MzVDMTIuNTE1MyAzLjEzNDMyIDEyLjU1NTQgMy4xMjQyMiAxMi41OTU1IDMuMTE0MDVDMTIuNjE2MyAzLjEwODgzIDEyLjYzNyAzLjEwMzYxIDEyLjY1ODMgMy4wOTgyNEMxMi43NjQgMy4wNzA3OCAxMi44Njg2IDMuMDQgMTIuOTczMiAzLjAwODYxQzEyLjk5MjIgMy4wMDMwNSAxMy4wMTEyIDIuOTk3NDkgMTMuMDMwOCAyLjk5MTc1QzEzLjI0MzQgMi45Mjc1OSAxMy40MjY5IDIuODQ1NTMgMTMuNTk2OCAyLjY5OTg1QzEzLjYxMjcgMi42ODY2OSAxMy42Mjg1IDIuNjczNTIgMTMuNjQ0OSAyLjY1OTk1QzEzLjkwOTQgMi40MTk2OSAxMy45OTkyIDIuMDU4NzMgMTQuMDgwOCAxLjcyMTkyQzE0LjA4NyAxLjY5NjM1IDE0LjA5MzIgMS42NzA3OCAxNC4wOTk3IDEuNjQ0NDRDMTQuMTEyIDEuNTkzMDggMTQuMTI0MiAxLjU0MTY1IDE0LjEzNjEgMS40OTAxOEMxNC4xNDQ2IDEuNDU0MzYgMTQuMTQ0NiAxLjQ1NDM2IDE0LjE1MzMgMS40MTc4MkMxNC4xNTgzIDEuMzk2NDMgMTQuMTYzMyAxLjM3NTAzIDE0LjE2ODQgMS4zNTI5OEMxNC4xOTAyIDEuMjg0ODcgMTQuMjE4OCAxLjIzMTM4IDE0LjI1ODkgMS4xNzI0NUMxNC4zMzYgMS4xMzM1NiAxNC4zOSAxLjE1MTE0IDE0LjQ3MTcgMS4xNzI0NVpcIiBmaWxsPVwiY3VycmVudENvbG9yXCIvPlxuICAgICAgICA8cGF0aCBkPVwiTTMuNTkwMSAxMy4xODg1QzMuNjE4MjMgMTMuMTg4NyAzLjYxODIzIDEzLjE4ODcgMy42NDY5MyAxMy4xODg5QzMuODQ4NzQgMTMuMTk1MSAzLjk4NTMgMTMuMjYwNCA0LjEzMzkzIDEzLjM5NzRDNC4zMDY4OCAxMy41ODU5IDQuMzg2NzQgMTMuNzk4NyA0LjM4MjIgMTQuMDUyOEM0LjM2Mjc3IDE0LjI1ODkgNC4yNDIzNyAxNC40Mzg4IDQuMDk0NjcgMTQuNTc4MUMzLjkyMDgzIDE0LjcxOTggMy43NDU0NiAxNC43NjY2IDMuNTIzMzIgMTQuNzZDMy4zMzYwMiAxNC43MzggMy4xNTk4MSAxNC42NDgyIDMuMDI3MDYgMTQuNTEzMUMyLjg2MTk3IDE0LjI4NTcgMi44MTM3IDE0LjA3NzIgMi44Mzc5IDEzLjc5NzFDMi44ODc4OCAxMy41NzY2IDMuMDMxOTUgMTMuMzk3NiAzLjIxNjIxIDEzLjI3MjFDMy4zNDQyMiAxMy4yMDY2IDMuNDQ3MTggMTMuMTg3MyAzLjU5MDEgMTMuMTg4NVpcIiBmaWxsPVwiY3VycmVudENvbG9yXCIvPlxuICAgICAgPC9zdmc+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1mbGV4LTFcIiBzdHlsZT1cImdhcDogMnB4O1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWzEycHhdXCIgW25nU3R5bGVdPVwieyBjb2xvcjogdGl0bGVDb2xvciB9XCI+XG4gICAgICAgICAgPHNwYW4+e3sgc3RlcFByZWZpeCB9fTwvc3Bhbj48c3BhbiBjbGFzcz1cImNxYS1haS1wcm9tcHQtY2FyZF9fc3RlcC1uYW1lXCIgW2lubmVySFRNTF09XCJzdGVwTmFtZVwiPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTFweF1cIiBzdHlsZT1cImNvbG9yOiAjOTk5OTlFO1wiPlxuICAgICAgICAgIHt7IG1ldGFMaW5lIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEJvZHkgc2VjdGlvbjogcXVvdGVkIHByb21wdCB3aXRoIGxlZnQgYWNjZW50IGJhciAtLT5cbiAgICA8ZGl2IHN0eWxlPVwicGFkZGluZzogNnB4IDEycHg7XCI+XG4gICAgICA8ZGl2IHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogI0Y3RjdGQTsgcGFkZGluZzogMTBweCAxMnB4OyAgYm9yZGVyLXJhZGl1czogNnB4O1wiXG4gICAgICBbbmdTdHlsZV09XCJ7ICdib3JkZXItbGVmdCc6ICczcHggc29saWQgJyArIGFjY2VudENvbG9yIH1cIj5cbiAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLWl0YWxpYyBjcWEtbS0wXCJcbiAgICAgICAgc3R5bGU9XCJjb2xvcjogIzRDNEM1MTsgbGluZS1oZWlnaHQ6IDIwLjRweDtcIj5cbiAgICAgICAgXCI8c3BhbiBjbGFzcz1cImNxYS1haS1wcm9tcHQtY2FyZF9fcHJvbXB0LWJvZHlcIiBbaW5uZXJIVE1MXT1cInByb21wdFRleHRcIj48L3NwYW4+XCJcbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
const VAR_NAME_REGEX = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
5
|
+
const VAR_TOKEN_REGEX = /\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g;
|
|
6
|
+
export class MixedVariableInputComponent {
|
|
7
|
+
constructor(cdr, hostRef) {
|
|
8
|
+
this.cdr = cdr;
|
|
9
|
+
this.hostRef = hostRef;
|
|
10
|
+
this.value = '';
|
|
11
|
+
this.placeholder = 'Text Input';
|
|
12
|
+
this.disabled = false;
|
|
13
|
+
this.valueChange = new EventEmitter();
|
|
14
|
+
this.showSuggestion = false;
|
|
15
|
+
this.pendingWord = '';
|
|
16
|
+
this.lastEmitted = '';
|
|
17
|
+
}
|
|
18
|
+
onDocumentMouseDown(event) {
|
|
19
|
+
if (!this.showSuggestion)
|
|
20
|
+
return;
|
|
21
|
+
const target = event.target;
|
|
22
|
+
if (this.hostRef.nativeElement.contains(target))
|
|
23
|
+
return;
|
|
24
|
+
this.hideSuggestion();
|
|
25
|
+
}
|
|
26
|
+
ngOnChanges(changes) {
|
|
27
|
+
if (changes['value'] && this.editorRef) {
|
|
28
|
+
const incoming = changes['value'].currentValue ?? '';
|
|
29
|
+
if (incoming !== this.lastEmitted) {
|
|
30
|
+
this.render(incoming);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
ngAfterViewInit() {
|
|
35
|
+
this.render(this.value || '');
|
|
36
|
+
}
|
|
37
|
+
onInput() {
|
|
38
|
+
const str = this.serialize();
|
|
39
|
+
this.lastEmitted = str;
|
|
40
|
+
this.valueChange.emit(str);
|
|
41
|
+
this.autoChipify();
|
|
42
|
+
this.refreshSuggestion();
|
|
43
|
+
}
|
|
44
|
+
onKeyDown(event) {
|
|
45
|
+
if (event.key === 'Enter') {
|
|
46
|
+
event.preventDefault();
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
if (event.key === 'Escape') {
|
|
50
|
+
if (this.showSuggestion) {
|
|
51
|
+
event.preventDefault();
|
|
52
|
+
this.hideSuggestion();
|
|
53
|
+
}
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (event.key === 'Backspace') {
|
|
57
|
+
const node = this.getNodeBeforeCaret();
|
|
58
|
+
if (node && node.classList?.contains('cqa-var-chip')) {
|
|
59
|
+
event.preventDefault();
|
|
60
|
+
node.remove();
|
|
61
|
+
this.onInput();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
onEditorBlur() {
|
|
66
|
+
// Small timeout so clicks on suggestion buttons register before hiding.
|
|
67
|
+
setTimeout(() => this.hideSuggestion(), 150);
|
|
68
|
+
}
|
|
69
|
+
addAsText() {
|
|
70
|
+
this.hideSuggestion();
|
|
71
|
+
this.editorRef.nativeElement.focus();
|
|
72
|
+
}
|
|
73
|
+
addAsVariable() {
|
|
74
|
+
const name = (this.pendingWord || '').trim();
|
|
75
|
+
if (!name || !VAR_NAME_REGEX.test(name)) {
|
|
76
|
+
this.hideSuggestion();
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
this.insertChipReplacingCurrentWord(name);
|
|
80
|
+
this.hideSuggestion();
|
|
81
|
+
const str = this.serialize();
|
|
82
|
+
this.lastEmitted = str;
|
|
83
|
+
this.valueChange.emit(str);
|
|
84
|
+
}
|
|
85
|
+
refreshSuggestion() {
|
|
86
|
+
const word = this.getCurrentWord();
|
|
87
|
+
if (word && VAR_NAME_REGEX.test(word)) {
|
|
88
|
+
this.pendingWord = word;
|
|
89
|
+
this.showSuggestion = true;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
this.pendingWord = '';
|
|
93
|
+
this.showSuggestion = false;
|
|
94
|
+
}
|
|
95
|
+
this.cdr.markForCheck();
|
|
96
|
+
}
|
|
97
|
+
hideSuggestion() {
|
|
98
|
+
if (!this.showSuggestion && !this.pendingWord)
|
|
99
|
+
return;
|
|
100
|
+
this.showSuggestion = false;
|
|
101
|
+
this.pendingWord = '';
|
|
102
|
+
this.cdr.markForCheck();
|
|
103
|
+
}
|
|
104
|
+
autoChipify() {
|
|
105
|
+
const editor = this.editorRef.nativeElement;
|
|
106
|
+
const textNodes = [];
|
|
107
|
+
editor.childNodes.forEach((n) => {
|
|
108
|
+
if (n.nodeType === Node.TEXT_NODE)
|
|
109
|
+
textNodes.push(n);
|
|
110
|
+
});
|
|
111
|
+
for (const tn of textNodes) {
|
|
112
|
+
const text = tn.nodeValue || '';
|
|
113
|
+
VAR_TOKEN_REGEX.lastIndex = 0;
|
|
114
|
+
if (!VAR_TOKEN_REGEX.test(text))
|
|
115
|
+
continue;
|
|
116
|
+
VAR_TOKEN_REGEX.lastIndex = 0;
|
|
117
|
+
const parent = tn.parentNode;
|
|
118
|
+
if (!parent)
|
|
119
|
+
continue;
|
|
120
|
+
const frag = document.createDocumentFragment();
|
|
121
|
+
let lastIndex = 0;
|
|
122
|
+
let m;
|
|
123
|
+
while ((m = VAR_TOKEN_REGEX.exec(text)) !== null) {
|
|
124
|
+
if (m.index > lastIndex) {
|
|
125
|
+
frag.appendChild(document.createTextNode(text.slice(lastIndex, m.index)));
|
|
126
|
+
}
|
|
127
|
+
frag.appendChild(this.buildChip(m[1]));
|
|
128
|
+
lastIndex = m.index + m[0].length;
|
|
129
|
+
}
|
|
130
|
+
if (lastIndex < text.length) {
|
|
131
|
+
frag.appendChild(document.createTextNode(text.slice(lastIndex)));
|
|
132
|
+
}
|
|
133
|
+
parent.replaceChild(frag, tn);
|
|
134
|
+
this.placeCaretAtEnd();
|
|
135
|
+
const str = this.serialize();
|
|
136
|
+
this.lastEmitted = str;
|
|
137
|
+
this.valueChange.emit(str);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
render(value) {
|
|
142
|
+
const editor = this.editorRef.nativeElement;
|
|
143
|
+
editor.innerHTML = '';
|
|
144
|
+
if (!value)
|
|
145
|
+
return;
|
|
146
|
+
VAR_TOKEN_REGEX.lastIndex = 0;
|
|
147
|
+
let lastIndex = 0;
|
|
148
|
+
let m;
|
|
149
|
+
while ((m = VAR_TOKEN_REGEX.exec(value)) !== null) {
|
|
150
|
+
if (m.index > lastIndex) {
|
|
151
|
+
editor.appendChild(document.createTextNode(value.slice(lastIndex, m.index)));
|
|
152
|
+
}
|
|
153
|
+
editor.appendChild(this.buildChip(m[1]));
|
|
154
|
+
lastIndex = m.index + m[0].length;
|
|
155
|
+
}
|
|
156
|
+
if (lastIndex < value.length) {
|
|
157
|
+
editor.appendChild(document.createTextNode(value.slice(lastIndex)));
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
serialize() {
|
|
161
|
+
const editor = this.editorRef.nativeElement;
|
|
162
|
+
let out = '';
|
|
163
|
+
editor.childNodes.forEach((n) => {
|
|
164
|
+
if (n.nodeType === Node.TEXT_NODE) {
|
|
165
|
+
out += (n.nodeValue || '').replace(/\u00a0/g, ' ');
|
|
166
|
+
}
|
|
167
|
+
else if (n.nodeType === Node.ELEMENT_NODE) {
|
|
168
|
+
const el = n;
|
|
169
|
+
if (el.classList.contains('cqa-var-chip')) {
|
|
170
|
+
const name = el.getAttribute('data-var') || '';
|
|
171
|
+
if (name)
|
|
172
|
+
out += '${' + name + '}';
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
out += el.textContent || '';
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
return out;
|
|
180
|
+
}
|
|
181
|
+
buildChip(name) {
|
|
182
|
+
const chip = document.createElement('span');
|
|
183
|
+
chip.className = 'cqa-var-chip';
|
|
184
|
+
chip.setAttribute('contenteditable', 'false');
|
|
185
|
+
chip.setAttribute('data-var', name);
|
|
186
|
+
const label = document.createElement('span');
|
|
187
|
+
label.className = 'cqa-var-chip__label';
|
|
188
|
+
label.textContent = '${' + name + '}';
|
|
189
|
+
const remove = document.createElement('span');
|
|
190
|
+
remove.className = 'cqa-var-chip__remove';
|
|
191
|
+
remove.textContent = '×';
|
|
192
|
+
remove.addEventListener('mousedown', (e) => e.preventDefault());
|
|
193
|
+
remove.addEventListener('click', (e) => {
|
|
194
|
+
e.preventDefault();
|
|
195
|
+
e.stopPropagation();
|
|
196
|
+
chip.remove();
|
|
197
|
+
this.onInput();
|
|
198
|
+
});
|
|
199
|
+
chip.appendChild(label);
|
|
200
|
+
chip.appendChild(remove);
|
|
201
|
+
return chip;
|
|
202
|
+
}
|
|
203
|
+
getSelectionRange() {
|
|
204
|
+
const sel = window.getSelection();
|
|
205
|
+
if (!sel || sel.rangeCount === 0)
|
|
206
|
+
return null;
|
|
207
|
+
const range = sel.getRangeAt(0);
|
|
208
|
+
if (!this.editorRef.nativeElement.contains(range.startContainer))
|
|
209
|
+
return null;
|
|
210
|
+
return range;
|
|
211
|
+
}
|
|
212
|
+
getNodeBeforeCaret() {
|
|
213
|
+
const range = this.getSelectionRange();
|
|
214
|
+
if (!range || !range.collapsed)
|
|
215
|
+
return null;
|
|
216
|
+
const { startContainer, startOffset } = range;
|
|
217
|
+
if (startContainer.nodeType === Node.TEXT_NODE) {
|
|
218
|
+
if (startOffset > 0)
|
|
219
|
+
return null;
|
|
220
|
+
return startContainer.previousSibling;
|
|
221
|
+
}
|
|
222
|
+
return startContainer.childNodes[startOffset - 1] || null;
|
|
223
|
+
}
|
|
224
|
+
getCurrentWord() {
|
|
225
|
+
const range = this.getSelectionRange();
|
|
226
|
+
if (!range)
|
|
227
|
+
return '';
|
|
228
|
+
const node = range.startContainer;
|
|
229
|
+
if (node.nodeType !== Node.TEXT_NODE)
|
|
230
|
+
return '';
|
|
231
|
+
const text = node.nodeValue || '';
|
|
232
|
+
const before = text.slice(0, range.startOffset);
|
|
233
|
+
const match = before.match(/([A-Za-z_][A-Za-z0-9_]*)$/);
|
|
234
|
+
return match ? match[1] : '';
|
|
235
|
+
}
|
|
236
|
+
insertChipReplacingCurrentWord(name) {
|
|
237
|
+
const range = this.getSelectionRange();
|
|
238
|
+
const chip = this.buildChip(name);
|
|
239
|
+
if (!range) {
|
|
240
|
+
this.editorRef.nativeElement.appendChild(chip);
|
|
241
|
+
this.placeCaretAfter(chip);
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
const node = range.startContainer;
|
|
245
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
246
|
+
const text = node.nodeValue || '';
|
|
247
|
+
const before = text.slice(0, range.startOffset);
|
|
248
|
+
const after = text.slice(range.startOffset);
|
|
249
|
+
const wordMatch = before.match(/([A-Za-z_][A-Za-z0-9_]*)$/);
|
|
250
|
+
const beforeKept = wordMatch ? before.slice(0, before.length - wordMatch[1].length) : before;
|
|
251
|
+
const parent = node.parentNode;
|
|
252
|
+
const frag = document.createDocumentFragment();
|
|
253
|
+
if (beforeKept)
|
|
254
|
+
frag.appendChild(document.createTextNode(beforeKept));
|
|
255
|
+
frag.appendChild(chip);
|
|
256
|
+
if (after)
|
|
257
|
+
frag.appendChild(document.createTextNode(after));
|
|
258
|
+
parent.replaceChild(frag, node);
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
range.insertNode(chip);
|
|
262
|
+
}
|
|
263
|
+
this.placeCaretAfter(chip);
|
|
264
|
+
}
|
|
265
|
+
placeCaretAfter(node) {
|
|
266
|
+
const sel = window.getSelection();
|
|
267
|
+
if (!sel)
|
|
268
|
+
return;
|
|
269
|
+
const range = document.createRange();
|
|
270
|
+
range.setStartAfter(node);
|
|
271
|
+
range.collapse(true);
|
|
272
|
+
sel.removeAllRanges();
|
|
273
|
+
sel.addRange(range);
|
|
274
|
+
}
|
|
275
|
+
placeCaretAtEnd() {
|
|
276
|
+
const editor = this.editorRef.nativeElement;
|
|
277
|
+
const sel = window.getSelection();
|
|
278
|
+
if (!sel)
|
|
279
|
+
return;
|
|
280
|
+
const range = document.createRange();
|
|
281
|
+
range.selectNodeContents(editor);
|
|
282
|
+
range.collapse(false);
|
|
283
|
+
sel.removeAllRanges();
|
|
284
|
+
sel.addRange(range);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
MixedVariableInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: MixedVariableInputComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
288
|
+
MixedVariableInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: MixedVariableInputComponent, selector: "cqa-mixed-variable-input", inputs: { value: "value", placeholder: "placeholder", disabled: "disabled" }, outputs: { valueChange: "valueChange" }, host: { listeners: { "document:mousedown": "onDocumentMouseDown($event)" }, classAttribute: "cqa-ui-root" }, viewQueries: [{ propertyName: "editorRef", first: true, predicate: ["editor"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"cqa-mixed-var-wrapper\">\n <div\n #editor\n class=\"cqa-mixed-var-editor\"\n role=\"textbox\"\n spellcheck=\"false\"\n [attr.contenteditable]=\"!disabled\"\n [attr.data-placeholder]=\"placeholder\"\n (input)=\"onInput()\"\n (keydown)=\"onKeyDown($event)\"\n (blur)=\"onEditorBlur()\">\n </div>\n\n <div\n *ngIf=\"showSuggestion\"\n class=\"cqa-mixed-var-suggest\"\n (mousedown)=\"$event.preventDefault()\">\n <button type=\"button\" class=\"cqa-mixed-var-suggest__item\" (click)=\"addAsText()\">\n Add as Text <span class=\"cqa-mixed-var-suggest__hint\">\"{{ pendingWord }}\"</span>\n </button>\n <button type=\"button\" class=\"cqa-mixed-var-suggest__item cqa-mixed-var-suggest__item--primary\" (click)=\"addAsVariable()\">\n Add as local variable <span class=\"cqa-mixed-var-suggest__hint\">${{ '{' }}{{ pendingWord }}{{ '}' }}</span>\n </button>\n </div>\n</div>\n", styles: [":host{display:block;width:100%;position:relative}.cqa-mixed-var-wrapper{position:relative;width:100%}.cqa-mixed-var-editor{width:100%;box-sizing:border-box;min-height:38px;border:1px solid #d1d5db;border-radius:8px;padding:8px 12px;font-size:14px;color:#111827;background:#fff;line-height:22px;outline:none;white-space:nowrap;overflow-x:auto;overflow-y:hidden;word-break:normal}.cqa-mixed-var-editor:focus{border-color:#6366f1;box-shadow:0 0 0 1px #6366f1}.cqa-mixed-var-editor:empty:before{content:attr(data-placeholder);color:#9ca3af;pointer-events:none}:host ::ng-deep .cqa-var-chip{display:inline-flex;align-items:center;gap:4px;margin:0 4px;padding:2px 4px 2px 8px;border-radius:6px;background-color:#eef0ff;border:1px solid #8a8cf4;color:#3730a3;font-size:12px;line-height:18px;-webkit-user-select:none;user-select:none;vertical-align:baseline;white-space:nowrap}:host ::ng-deep .cqa-var-chip__label{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:500}:host ::ng-deep .cqa-var-chip__remove{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:transparent;color:#6366f1;font-size:13px;line-height:1;cursor:pointer;transition:background-color .12s ease,color .12s ease}:host ::ng-deep .cqa-var-chip__remove:hover{background:#c7d2fe;color:#312e81}.cqa-mixed-var-suggest{position:absolute;z-index:50;top:calc(100% + 4px);left:0;right:0;background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 8px 24px #00000014;padding:4px;display:flex;flex-direction:column}.cqa-mixed-var-suggest__item{display:flex;align-items:center;justify-content:flex-start;gap:8px;width:100%;min-width:0;padding:8px 10px;font-size:13px;color:#374151;background:#fff;border:none;border-radius:6px;cursor:pointer;text-align:left;white-space:nowrap}.cqa-mixed-var-suggest__item:hover{background:#f3f4f6}.cqa-mixed-var-suggest__item--primary{color:#4338ca;font-weight:500}.cqa-mixed-var-suggest__hint{flex:1 1 auto;min-width:0;color:#9ca3af;font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
289
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: MixedVariableInputComponent, decorators: [{
|
|
290
|
+
type: Component,
|
|
291
|
+
args: [{ selector: 'cqa-mixed-variable-input', changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'cqa-ui-root' }, template: "<div class=\"cqa-mixed-var-wrapper\">\n <div\n #editor\n class=\"cqa-mixed-var-editor\"\n role=\"textbox\"\n spellcheck=\"false\"\n [attr.contenteditable]=\"!disabled\"\n [attr.data-placeholder]=\"placeholder\"\n (input)=\"onInput()\"\n (keydown)=\"onKeyDown($event)\"\n (blur)=\"onEditorBlur()\">\n </div>\n\n <div\n *ngIf=\"showSuggestion\"\n class=\"cqa-mixed-var-suggest\"\n (mousedown)=\"$event.preventDefault()\">\n <button type=\"button\" class=\"cqa-mixed-var-suggest__item\" (click)=\"addAsText()\">\n Add as Text <span class=\"cqa-mixed-var-suggest__hint\">\"{{ pendingWord }}\"</span>\n </button>\n <button type=\"button\" class=\"cqa-mixed-var-suggest__item cqa-mixed-var-suggest__item--primary\" (click)=\"addAsVariable()\">\n Add as local variable <span class=\"cqa-mixed-var-suggest__hint\">${{ '{' }}{{ pendingWord }}{{ '}' }}</span>\n </button>\n </div>\n</div>\n", styles: [":host{display:block;width:100%;position:relative}.cqa-mixed-var-wrapper{position:relative;width:100%}.cqa-mixed-var-editor{width:100%;box-sizing:border-box;min-height:38px;border:1px solid #d1d5db;border-radius:8px;padding:8px 12px;font-size:14px;color:#111827;background:#fff;line-height:22px;outline:none;white-space:nowrap;overflow-x:auto;overflow-y:hidden;word-break:normal}.cqa-mixed-var-editor:focus{border-color:#6366f1;box-shadow:0 0 0 1px #6366f1}.cqa-mixed-var-editor:empty:before{content:attr(data-placeholder);color:#9ca3af;pointer-events:none}:host ::ng-deep .cqa-var-chip{display:inline-flex;align-items:center;gap:4px;margin:0 4px;padding:2px 4px 2px 8px;border-radius:6px;background-color:#eef0ff;border:1px solid #8a8cf4;color:#3730a3;font-size:12px;line-height:18px;-webkit-user-select:none;user-select:none;vertical-align:baseline;white-space:nowrap}:host ::ng-deep .cqa-var-chip__label{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:500}:host ::ng-deep .cqa-var-chip__remove{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:transparent;color:#6366f1;font-size:13px;line-height:1;cursor:pointer;transition:background-color .12s ease,color .12s ease}:host ::ng-deep .cqa-var-chip__remove:hover{background:#c7d2fe;color:#312e81}.cqa-mixed-var-suggest{position:absolute;z-index:50;top:calc(100% + 4px);left:0;right:0;background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 8px 24px #00000014;padding:4px;display:flex;flex-direction:column}.cqa-mixed-var-suggest__item{display:flex;align-items:center;justify-content:flex-start;gap:8px;width:100%;min-width:0;padding:8px 10px;font-size:13px;color:#374151;background:#fff;border:none;border-radius:6px;cursor:pointer;text-align:left;white-space:nowrap}.cqa-mixed-var-suggest__item:hover{background:#f3f4f6}.cqa-mixed-var-suggest__item--primary{color:#4338ca;font-weight:500}.cqa-mixed-var-suggest__hint{flex:1 1 auto;min-width:0;color:#9ca3af;font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"] }]
|
|
292
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { value: [{
|
|
293
|
+
type: Input
|
|
294
|
+
}], placeholder: [{
|
|
295
|
+
type: Input
|
|
296
|
+
}], disabled: [{
|
|
297
|
+
type: Input
|
|
298
|
+
}], valueChange: [{
|
|
299
|
+
type: Output
|
|
300
|
+
}], editorRef: [{
|
|
301
|
+
type: ViewChild,
|
|
302
|
+
args: ['editor', { static: true }]
|
|
303
|
+
}], onDocumentMouseDown: [{
|
|
304
|
+
type: HostListener,
|
|
305
|
+
args: ['document:mousedown', ['$event']]
|
|
306
|
+
}] } });
|
|
307
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4ZWQtdmFyaWFibGUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9taXhlZC12YXJpYWJsZS1pbnB1dC9taXhlZC12YXJpYWJsZS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL21peGVkLXZhcmlhYmxlLWlucHV0L21peGVkLXZhcmlhYmxlLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsdUJBQXVCLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBT2pNLE1BQU0sY0FBYyxHQUFHLDBCQUEwQixDQUFDO0FBQ2xELE1BQU0sZUFBZSxHQUFHLGlDQUFpQyxDQUFDO0FBUzFELE1BQU0sT0FBTywyQkFBMkI7SUFjdEMsWUFDVSxHQUFzQixFQUN0QixPQUFnQztRQURoQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixZQUFPLEdBQVAsT0FBTyxDQUF5QjtRQWZqQyxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsZ0JBQVcsR0FBRyxZQUFZLENBQUM7UUFDM0IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVoQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFJbkQsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFFVCxnQkFBVyxHQUFHLEVBQUUsQ0FBQztJQUt0QixDQUFDO0lBR0osbUJBQW1CLENBQUMsS0FBaUI7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjO1lBQUUsT0FBTztRQUNqQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBYyxDQUFDO1FBQ3BDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMs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QUFDO1FBQ2pDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEIsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3RCLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEIsQ0FBQzs7d0hBNVJVLDJCQUEyQjs0R0FBM0IsMkJBQTJCLDRhQ2pCeEMsZzdCQXlCQTsyRkRSYSwyQkFBMkI7a0JBUHZDLFNBQVM7K0JBQ0UsMEJBQTBCLG1CQUduQix1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTtpSUFHckIsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUVnQyxTQUFTO3NCQUEvQyxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBYXJDLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxvQkFBb0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBNaXhlZFNlZ21lbnQge1xuICB0eXBlOiAndGV4dCcgfCAndmFyaWFibGUnO1xuICB2YWx1ZTogc3RyaW5nO1xufVxuXG5jb25zdCBWQVJfTkFNRV9SRUdFWCA9IC9eW0EtWmEtel9dW0EtWmEtejAtOV9dKiQvO1xuY29uc3QgVkFSX1RPS0VOX1JFR0VYID0gL1xcJFxceyhbQS1aYS16X11bQS1aYS16MC05X10qKVxcfS9nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtbWl4ZWQtdmFyaWFibGUtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWl4ZWQtdmFyaWFibGUtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9taXhlZC12YXJpYWJsZS1pbnB1dC5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH0sXG59KVxuZXhwb3J0IGNsYXNzIE1peGVkVmFyaWFibGVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHZhbHVlID0gJyc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJ1RleHQgSW5wdXQnO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2VkaXRvcicsIHsgc3RhdGljOiB0cnVlIH0pIGVkaXRvclJlZiE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIHNob3dTdWdnZXN0aW9uID0gZmFsc2U7XG4gIHBlbmRpbmdXb3JkID0gJyc7XG5cbiAgcHJpdmF0ZSBsYXN0RW1pdHRlZCA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgXG4gICAgcHJpdmF0ZSBob3N0UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICApIHt9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgb25Eb2N1bWVudE1vdXNlRG93bihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG93U3VnZ2VzdGlvbikgcmV0dXJuO1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBOb2RlO1xuICAgIGlmICh0aGlzLmhvc3RSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyh0YXJnZXQpKSByZXR1cm47XG4gICAgdGhpcy5oaWRlU3VnZ2VzdGlvbigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWyd2YWx1ZSddICYmIHRoaXMuZWRpdG9yUmVmKSB7XG4gICAgICBjb25zdCBpbmNvbWluZyA9IGNoYW5nZXNbJ3ZhbHVlJ10uY3VycmVudFZhbHVlID8/ICcnO1xuICAgICAgaWYgKGluY29taW5nICE9PSB0aGlzLmxhc3RFbWl0dGVkKSB7XG4gICAgICAgIHRoaXMucmVuZGVyKGluY29taW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXIodGhpcy52YWx1ZSB8fCAnJyk7XG4gIH1cblxuICBvbklucHV0KCk6IHZvaWQge1xuICAgIGNvbnN0IHN0ciA9IHRoaXMuc2VyaWFsaXplKCk7XG4gICAgdGhpcy5sYXN0RW1pdHRlZCA9IHN0cjtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoc3RyKTtcbiAgICB0aGlzLmF1dG9DaGlwaWZ5KCk7XG4gICAgdGhpcy5yZWZyZXNoU3VnZ2VzdGlvbigpO1xuICB9XG5cbiAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIGlmICh0aGlzLnNob3dTdWdnZXN0aW9uKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuaGlkZVN1Z2dlc3Rpb24oKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0JhY2tzcGFjZScpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGVCZWZvcmVDYXJldCgpO1xuICAgICAgaWYgKG5vZGUgJiYgKG5vZGUgYXMgSFRNTEVsZW1lbnQpLmNsYXNzTGlzdD8uY29udGFpbnMoJ2NxYS12YXItY2hpcCcpKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIChub2RlIGFzIEhUTUxFbGVtZW50KS5yZW1vdmUoKTtcbiAgICAgICAgdGhpcy5vbklucHV0KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25FZGl0b3JCbHVyKCk6IHZvaWQge1xuICAgIC8vIFNtYWxsIHRpbWVvdXQgc28gY2xpY2tzIG9uIHN1Z2dlc3Rpb24gYnV0dG9ucyByZWdpc3RlciBiZWZvcmUgaGlkaW5nLlxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5oaWRlU3VnZ2VzdGlvbigpLCAxNTApO1xuICB9XG5cbiAgYWRkQXNUZXh0KCk6IHZvaWQge1xuICAgIHRoaXMuaGlkZVN1Z2dlc3Rpb24oKTtcbiAgICB0aGlzLmVkaXRvclJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBhZGRBc1ZhcmlhYmxlKCk6IHZvaWQge1xuICAgIGNvbnN0IG5hbWUgPSAodGhpcy5wZW5kaW5nV29yZCB8fCAnJykudHJpbSgpO1xuICAgIGlmICghbmFtZSB8fCAhVkFSX05BTUVfUkVHRVgudGVzdChuYW1lKSkge1xuICAgICAgdGhpcy5oaWRlU3VnZ2VzdGlvbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmluc2VydENoaXBSZXBsYWNpbmdDdXJyZW50V29yZChuYW1lKTtcbiAgICB0aGlzLmhpZGVTdWdnZXN0aW9uKCk7XG4gICAgY29uc3Qgc3RyID0gdGhpcy5zZXJpYWxpemUoKTtcbiAgICB0aGlzLmxhc3RFbWl0dGVkID0gc3RyO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChzdHIpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWZyZXNoU3VnZ2VzdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCB3b3JkID0gdGhpcy5nZXRDdXJyZW50V29yZCgpO1xuICAgIGlmICh3b3JkICYmIFZBUl9OQU1FX1JFR0VYLnRlc3Qod29yZCkpIHtcbiAgICAgIHRoaXMucGVuZGluZ1dvcmQgPSB3b3JkO1xuICAgICAgdGhpcy5zaG93U3VnZ2VzdGlvbiA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGVuZGluZ1dvcmQgPSAnJztcbiAgICAgIHRoaXMuc2hvd1N1Z2dlc3Rpb24gPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGhpZGVTdWdnZXN0aW9uKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG93U3VnZ2VzdGlvbiAmJiAhdGhpcy5wZW5kaW5nV29yZCkgcmV0dXJuO1xuICAgIHRoaXMuc2hvd1N1Z2dlc3Rpb24gPSBmYWxzZTtcbiAgICB0aGlzLnBlbmRpbmdXb3JkID0gJyc7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGF1dG9DaGlwaWZ5KCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgdGV4dE5vZGVzOiBUZXh0W10gPSBbXTtcbiAgICBlZGl0b3IuY2hpbGROb2Rlcy5mb3JFYWNoKChuKSA9PiB7XG4gICAgICBpZiAobi5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHRleHROb2Rlcy5wdXNoKG4gYXMgVGV4dCk7XG4gICAgfSk7XG4gICAgZm9yIChjb25zdCB0biBvZiB0ZXh0Tm9kZXMpIHtcbiAgICAgIGNvbnN0IHRleHQgPSB0bi5ub2RlVmFsdWUgfHwgJyc7XG4gICAgICBWQVJfVE9LRU5fUkVHRVgubGFzdEluZGV4ID0gMDtcbiAgICAgIGlmICghVkFSX1RPS0VOX1JFR0VYLnRlc3QodGV4dCkpIGNvbnRpbnVlO1xuICAgICAgVkFSX1RPS0VOX1JFR0VYLmxhc3RJbmRleCA9IDA7XG4gICAgICBjb25zdCBwYXJlbnQgPSB0bi5wYXJlbnROb2RlO1xuICAgICAgaWYgKCFwYXJlbnQpIGNvbnRpbnVlO1xuICAgICAgY29uc3QgZnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgICAgIGxldCBsYXN0SW5kZXggPSAwO1xuICAgICAgbGV0IG06IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGw7XG4gICAgICB3aGlsZSAoKG0gPSBWQVJfVE9LRU5fUkVHRVguZXhlYyh0ZXh0KSkgIT09IG51bGwpIHtcbiAgICAgICAgaWYgKG0uaW5kZXggPiBsYXN0SW5kZXgpIHtcbiAgICAgICAgICBmcmFnLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQuc2xpY2UobGFzdEluZGV4LCBtLmluZGV4KSkpO1xuICAgICAgICB9XG4gICAgICAgIGZyYWcuYXBwZW5kQ2hpbGQodGhpcy5idWlsZENoaXAobVsxXSkpO1xuICAgICAgICBsYXN0SW5kZXggPSBtLmluZGV4ICsgbVswXS5sZW5ndGg7XG4gICAgICB9XG4gICAgICBpZiAobGFzdEluZGV4IDwgdGV4dC5sZW5ndGgpIHtcbiAgICAgICAgZnJhZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0LnNsaWNlKGxhc3RJbmRleCkpKTtcbiAgICAgIH1cbiAgICAgIHBhcmVudC5yZXBsYWNlQ2hpbGQoZnJhZywgdG4pO1xuICAgICAgdGhpcy5wbGFjZUNhcmV0QXRFbmQoKTtcbiAgICAgIGNvbnN0IHN0ciA9IHRoaXMuc2VyaWFsaXplKCk7XG4gICAgICB0aGlzLmxhc3RFbWl0dGVkID0gc3RyO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHN0cik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXIodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgZWRpdG9yLmlubmVySFRNTCA9ICcnO1xuICAgIGlmICghdmFsdWUpIHJldHVybjtcbiAgICBWQVJfVE9LRU5fUkVHRVgubGFzdEluZGV4ID0gMDtcbiAgICBsZXQgbGFzdEluZGV4ID0gMDtcbiAgICBsZXQgbTogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcbiAgICB3aGlsZSAoKG0gPSBWQVJfVE9LRU5fUkVHRVguZXhlYyh2YWx1ZSkpICE9PSBudWxsKSB7XG4gICAgICBpZiAobS5pbmRleCA+IGxhc3RJbmRleCkge1xuICAgICAgICBlZGl0b3IuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodmFsdWUuc2xpY2UobGFzdEluZGV4LCBtLmluZGV4KSkpO1xuICAgICAgfVxuICAgICAgZWRpdG9yLmFwcGVuZENoaWxkKHRoaXMuYnVpbGRDaGlwKG1bMV0pKTtcbiAgICAgIGxhc3RJbmRleCA9IG0uaW5kZXggKyBtWzBdLmxlbmd0aDtcbiAgICB9XG4gICAgaWYgKGxhc3RJbmRleCA8IHZhbHVlLmxlbmd0aCkge1xuICAgICAgZWRpdG9yLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHZhbHVlLnNsaWNlKGxhc3RJbmRleCkpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlcmlhbGl6ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgbGV0IG91dCA9ICcnO1xuICAgIGVkaXRvci5jaGlsZE5vZGVzLmZvckVhY2goKG4pID0+IHtcbiAgICAgIGlmIChuLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgICBvdXQgKz0gKG4ubm9kZVZhbHVlIHx8ICcnKS5yZXBsYWNlKC9cXHUwMGEwL2csICcgJyk7XG4gICAgICB9IGVsc2UgaWYgKG4ubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFKSB7XG4gICAgICAgIGNvbnN0IGVsID0gbiBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgaWYgKGVsLmNsYXNzTGlzdC5jb250YWlucygnY3FhLXZhci1jaGlwJykpIHtcbiAgICAgICAgICBjb25zdCBuYW1lID0gZWwuZ2V0QXR0cmlidXRlKCdkYXRhLXZhcicpIHx8ICcnO1xuICAgICAgICAgIGlmIChuYW1lKSBvdXQgKz0gJyR7JyArIG5hbWUgKyAnfSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ICs9IGVsLnRleHRDb250ZW50IHx8ICcnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDaGlwKG5hbWU6IHN0cmluZyk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBjaGlwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgIGNoaXAuY2xhc3NOYW1lID0gJ2NxYS12YXItY2hpcCc7XG4gICAgY2hpcC5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsICdmYWxzZScpO1xuICAgIGNoaXAuc2V0QXR0cmlidXRlKCdkYXRhLXZhcicsIG5hbWUpO1xuICAgIGNvbnN0IGxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgIGxhYmVsLmNsYXNzTmFtZSA9ICdjcWEtdmFyLWNoaXBfX2xhYmVsJztcbiAgICBsYWJlbC50ZXh0Q29udGVudCA9ICckeycgKyBuYW1lICsgJ30nO1xuICAgIGNvbnN0IHJlbW92ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICByZW1vdmUuY2xhc3NOYW1lID0gJ2NxYS12YXItY2hpcF9fcmVtb3ZlJztcbiAgICByZW1vdmUudGV4dENvbnRlbnQgPSAnw5cnO1xuICAgIHJlbW92ZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCAoZSkgPT4gZS5wcmV2ZW50RGVmYXVsdCgpKTtcbiAgICByZW1vdmUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGNoaXAucmVtb3ZlKCk7XG4gICAgICB0aGlzLm9uSW5wdXQoKTtcbiAgICB9KTtcbiAgICBjaGlwLmFwcGVuZENoaWxkKGxhYmVsKTtcbiAgICBjaGlwLmFwcGVuZENoaWxkKHJlbW92ZSk7XG4gICAgcmV0dXJuIGNoaXA7XG4gIH1cblxuICBwcml2YXRlIGdldFNlbGVjdGlvblJhbmdlKCk6IFJhbmdlIHwgbnVsbCB7XG4gICAgY29uc3Qgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgIGlmICghc2VsIHx8IHNlbC5yYW5nZUNvdW50ID09PSAwKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCByYW5nZSA9IHNlbC5nZXRSYW5nZUF0KDApO1xuICAgIGlmICghdGhpcy5lZGl0b3JSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhyYW5nZS5zdGFydENvbnRhaW5lcikpIHJldHVybiBudWxsO1xuICAgIHJldHVybiByYW5nZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Tm9kZUJlZm9yZUNhcmV0KCk6IE5vZGUgfCBudWxsIHtcbiAgICBjb25zdCByYW5nZSA9IHRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKTtcbiAgICBpZiAoIXJhbmdlIHx8ICFyYW5nZS5jb2xsYXBzZWQpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHsgc3RhcnRDb250YWluZXIsIHN0YXJ0T2Zmc2V0IH0gPSByYW5nZTtcbiAgICBpZiAoc3RhcnRDb250YWluZXIubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICBpZiAoc3RhcnRPZmZzZXQgPiAwKSByZXR1cm4gbnVsbDtcbiAgICAgIHJldHVybiBzdGFydENvbnRhaW5lci5wcmV2aW91c1NpYmxpbmc7XG4gICAgfVxuICAgIHJldHVybiBzdGFydENvbnRhaW5lci5jaGlsZE5vZGVzW3N0YXJ0T2Zmc2V0IC0gMV0gfHwgbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q3VycmVudFdvcmQoKTogc3RyaW5nIHtcbiAgICBjb25zdCByYW5nZSA9IHRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKTtcbiAgICBpZiAoIXJhbmdlKSByZXR1cm4gJyc7XG4gICAgY29uc3Qgbm9kZSA9IHJhbmdlLnN0YXJ0Q29udGFpbmVyO1xuICAgIGlmIChub2RlLm5vZGVUeXBlICE9PSBOb2RlLlRFWFRfTk9ERSkgcmV0dXJuICcnO1xuICAgIGNvbnN0IHRleHQgPSBub2RlLm5vZGVWYWx1ZSB8fCAnJztcbiAgICBjb25zdCBiZWZvcmUgPSB0ZXh0LnNsaWNlKDAsIHJhbmdlLnN0YXJ0T2Zmc2V0KTtcbiAgICBjb25zdCBtYXRjaCA9IGJlZm9yZS5tYXRjaCgvKFtBLVphLXpfXVtBLVphLXowLTlfXSopJC8pO1xuICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdIDogJyc7XG4gIH1cblxuICBwcml2YXRlIGluc2VydENoaXBSZXBsYWNpbmdDdXJyZW50V29yZChuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCByYW5nZSA9IHRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKTtcbiAgICBjb25zdCBjaGlwID0gdGhpcy5idWlsZENoaXAobmFtZSk7XG4gICAgaWYgKCFyYW5nZSkge1xuICAgICAgdGhpcy5lZGl0b3JSZWYubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChjaGlwKTtcbiAgICAgIHRoaXMucGxhY2VDYXJldEFmdGVyKGNoaXApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBub2RlID0gcmFuZ2Uuc3RhcnRDb250YWluZXI7XG4gICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICBjb25zdCB0ZXh0ID0gbm9kZS5ub2RlVmFsdWUgfHwgJyc7XG4gICAgICBjb25zdCBiZWZvcmUgPSB0ZXh0LnNsaWNlKDAsIHJhbmdlLnN0YXJ0T2Zmc2V0KTtcbiAgICAgIGNvbnN0IGFmdGVyID0gdGV4dC5zbGljZShyYW5nZS5zdGFydE9mZnNldCk7XG4gICAgICBjb25zdCB3b3JkTWF0Y2ggPSBiZWZvcmUubWF0Y2goLyhbQS1aYS16X11bQS1aYS16MC05X10qKSQvKTtcbiAgICAgIGNvbnN0IGJlZm9yZUtlcHQgPSB3b3JkTWF0Y2ggPyBiZWZvcmUuc2xpY2UoMCwgYmVmb3JlLmxlbmd0aCAtIHdvcmRNYXRjaFsxXS5sZW5ndGgpIDogYmVmb3JlO1xuICAgICAgY29uc3QgcGFyZW50ID0gbm9kZS5wYXJlbnROb2RlITtcbiAgICAgIGNvbnN0IGZyYWcgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gICAgICBpZiAoYmVmb3JlS2VwdCkgZnJhZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShiZWZvcmVLZXB0KSk7XG4gICAgICBmcmFnLmFwcGVuZENoaWxkKGNoaXApO1xuICAgICAgaWYgKGFmdGVyKSBmcmFnLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGFmdGVyKSk7XG4gICAgICBwYXJlbnQucmVwbGFjZUNoaWxkKGZyYWcsIG5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByYW5nZS5pbnNlcnROb2RlKGNoaXApO1xuICAgIH1cbiAgICB0aGlzLnBsYWNlQ2FyZXRBZnRlcihjaGlwKTtcbiAgfVxuXG4gIHByaXZhdGUgcGxhY2VDYXJldEFmdGVyKG5vZGU6IE5vZGUpOiB2b2lkIHtcbiAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgaWYgKCFzZWwpIHJldHVybjtcbiAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgcmFuZ2Uuc2V0U3RhcnRBZnRlcihub2RlKTtcbiAgICByYW5nZS5jb2xsYXBzZSh0cnVlKTtcbiAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgc2VsLmFkZFJhbmdlKHJhbmdlKTtcbiAgfVxuXG4gIHByaXZhdGUgcGxhY2VDYXJldEF0RW5kKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3Qgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgIGlmICghc2VsKSByZXR1cm47XG4gICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhlZGl0b3IpO1xuICAgIHJhbmdlLmNvbGxhcHNlKGZhbHNlKTtcbiAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgc2VsLmFkZFJhbmdlKHJhbmdlKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNxYS1taXhlZC12YXItd3JhcHBlclwiPlxuICA8ZGl2XG4gICAgI2VkaXRvclxuICAgIGNsYXNzPVwiY3FhLW1peGVkLXZhci1lZGl0b3JcIlxuICAgIHJvbGU9XCJ0ZXh0Ym94XCJcbiAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxuICAgIFthdHRyLmNvbnRlbnRlZGl0YWJsZV09XCIhZGlzYWJsZWRcIlxuICAgIFthdHRyLmRhdGEtcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgIChpbnB1dCk9XCJvbklucHV0KClcIlxuICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAoYmx1cik9XCJvbkVkaXRvckJsdXIoKVwiPlxuICA8L2Rpdj5cblxuICA8ZGl2XG4gICAgKm5nSWY9XCJzaG93U3VnZ2VzdGlvblwiXG4gICAgY2xhc3M9XCJjcWEtbWl4ZWQtdmFyLXN1Z2dlc3RcIlxuICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNxYS1taXhlZC12YXItc3VnZ2VzdF9faXRlbVwiIChjbGljayk9XCJhZGRBc1RleHQoKVwiPlxuICAgICAgQWRkIGFzIFRleHQgPHNwYW4gY2xhc3M9XCJjcWEtbWl4ZWQtdmFyLXN1Z2dlc3RfX2hpbnRcIj5cInt7IHBlbmRpbmdXb3JkIH19XCI8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjcWEtbWl4ZWQtdmFyLXN1Z2dlc3RfX2l0ZW0gY3FhLW1peGVkLXZhci1zdWdnZXN0X19pdGVtLS1wcmltYXJ5XCIgKGNsaWNrKT1cImFkZEFzVmFyaWFibGUoKVwiPlxuICAgICAgQWRkIGFzIGxvY2FsIHZhcmlhYmxlIDxzcGFuIGNsYXNzPVwiY3FhLW1peGVkLXZhci1zdWdnZXN0X19oaW50XCI+JHt7ICd7JyB9fXt7IHBlbmRpbmdXb3JkIH19e3sgJ30nIH19PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|