@topvisor/ui 1.0.8-fixed → 1.0.8-fixed-2

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.
@@ -1 +1 @@
1
- :root{--color-theme-0: #000000;--color-theme-50: #050815;--color-theme-75: #090A18;--color-theme-100: #0E121B;--color-theme-125: #111722;--color-theme-150: #141C29;--color-theme-175: #172130;--color-theme-200: #1B2637;--color-theme-225: #1E2B3E;--color-theme-250: #223044;--color-theme-260: #25344C;--color-theme-275: #293852;--color-theme-300: #2C3E58;--color-theme-325: #2F4360;--color-theme-350: #324867;--color-theme-360: #364D6D;--color-theme-375: #395175;--color-theme-400: #3D557B;--color-theme-410: #405A82;--color-theme-420: #435F89;--color-theme-430: #47648F;--color-theme-440: #4A6996;--color-theme-450: #4D6E9D;--color-theme-460: #5173A4;--color-theme-465: #5476AB;--color-theme-470: #5B7DAE;--color-theme-475: #6281B2;--color-theme-480: #6987B5;--color-theme-485: #708DB8;--color-theme-500: #7692BC;--color-theme-550: #7D97BF;--color-theme-575: #849DC2;--color-theme-600: #8AA2C6;--color-theme-625: #92A7C9;--color-theme-650: #98AECD;--color-theme-675: #9FB3D0;--color-theme-700: #A7B9D3;--color-theme-710: #ADBED6;--color-theme-725: #B3C3DA;--color-theme-750: #BBC9DD;--color-theme-800: #C1CEE1;--color-theme-850: #C8D3E4;--color-theme-900: #CFD9E8;--color-theme-925: #D6DEEB;--color-theme-950: #DDE3EE;--color-theme-955: #E4EAF1;--color-theme-960: #EAEFF5;--color-theme-965: #F1F4F8;--color-theme-970: #F9FAFB;--color-theme-1000: #FFFFFF;--color-white: rgba(255, 255, 255, 1);--color-black: rgba(0, 0, 0, 1);--color-secondary-25: #121212;--color-secondary-50: #1A1A1A;--color-secondary-100: #232323;--color-secondary-125: #2C2C2C;--color-secondary-150: #353535;--color-secondary-200: #3E3E3E;--color-secondary-225: #464646;--color-secondary-250: #4F4F4F;--color-secondary-275: #585858;--color-secondary-300: #616161;--color-secondary-350: #6A6A6A;--color-secondary-400: #727272;--color-secondary-450: #7B7B7B;--color-secondary-500: #848484;--color-secondary-550: #8D8D8D;--color-secondary-600: #959595;--color-secondary-650: #9E9E9E;--color-secondary-700: #A7A7A7;--color-secondary-720: #B0B0B0;--color-secondary-740: #B9B9B9;--color-secondary-760: #C1C1C1;--color-secondary-780: #CACACA;--color-secondary-800: #D3D3D3;--color-secondary-825: #DCDCDC;--color-secondary-850: #E5E5E5;--color-secondary-900: #EDEDED;--color-secondary-950: #F6F6F6;--color-primary-25: #1F252E;--color-primary-50: #1C2736;--color-primary-100: #18293E;--color-primary-125: #142B48;--color-primary-150: #16355A;--color-primary-200: #183E6D;--color-primary-225: #184781;--color-primary-250: #185095;--color-primary-275: #175AAB;--color-primary-300: #1563C1;--color-primary-350: #136BD8;--color-primary-400: #0F74F0;--color-primary-450: #1E7FF6;--color-primary-500: #2D8AFB;--color-primary-550: #3D94FF;--color-primary-600: #52A0FF;--color-primary-650: #66ABFF;--color-primary-700: #7AB6FF;--color-primary-720: #8FC1FF;--color-primary-740: #A3CDFF;--color-primary-760: #B8D8FF;--color-primary-780: #C2DDFF;--color-primary-800: #CCE3FF;--color-primary-825: #D6E9FF;--color-primary-850: #E0EEFF;--color-primary-900: #EBF4FF;--color-primary-950: #F5F9FF;--color-positive-25: #111311;--color-positive-50: #131612;--color-positive-100: #141A14;--color-positive-125: #161E15;--color-positive-150: #1C2C1C;--color-positive-200: #223A23;--color-positive-225: #27492B;--color-positive-250: #2C5934;--color-positive-275: #2F6A3E;--color-positive-300: #327B44;--color-positive-350: #348D4B;--color-positive-400: #36A150;--color-positive-450: #36B556;--color-positive-500: #36C95B;--color-positive-550: #41D265;--color-positive-600: #4DDB73;--color-positive-650: #5AE27C;--color-positive-700: #6CE58A;--color-positive-720: #7DE898;--color-positive-740: #8EEBA5;--color-positive-760: #A0EEB3;--color-positive-780: #B1F1C1;--color-positive-800: #C2F4CF;--color-positive-825: #D8F8E0;--color-positive-850: #E5FAEA;--color-positive-900: #EEFCF1;--color-positive-950: #F6FDF8;--color-warning-25: #3C1F1F;--color-warning-50: #39221B;--color-warning-100: #421B1A;--color-warning-125: #4C2015;--color-warning-150: #5E2517;--color-warning-200: #71321E;--color-warning-225: #7F3D19;--color-warning-250: #9A511A;--color-warning-275: #AF6420;--color-warning-300: #C56D1C;--color-warning-350: #DD780C;--color-warning-400: #F08214;--color-warning-450: #F48B1B;--color-warning-500: #FB9632;--color-warning-550: #FFA042;--color-warning-600: #FFAB57;--color-warning-650: #FFB56B;--color-warning-700: #FFBF80;--color-warning-720: #FFCB94;--color-warning-740: #FFD7A8;--color-warning-760: #FFDEBF;--color-warning-780: #FFE3C7;--color-warning-800: #FFE8CF;--color-warning-825: #FFEDDB;--color-warning-850: #FFF3E6;--color-warning-900: #FFF7F0;--color-warning-950: #FFFDFA;--color-negative-25: #2E2229;--color-negative-50: #371F2B;--color-negative-100: #402030;--color-negative-125: #4A1733;--color-negative-150: #5B193A;--color-negative-200: #6E1C2F;--color-negative-225: #8A1C34;--color-negative-250: #9B1D32;--color-negative-275: #AB1A2F;--color-negative-300: #C31A30;--color-negative-350: #D81534;--color-negative-400: #EB1938;--color-negative-450: #F12745;--color-negative-500: #F73652;--color-negative-550: #FF4262;--color-negative-600: #FF576F;--color-negative-650: #FF6B7B;--color-negative-700: #FF8092;--color-negative-720: #FF949F;--color-negative-740: #FFA8B5;--color-negative-760: #FFBFC6;--color-negative-780: #FFC7CF;--color-negative-800: #FFD1D8;--color-negative-825: #FFDDE1;--color-negative-850: #FFE5E9;--color-negative-900: #FFF0F2;--color-negative-950: #FFFAFB;--color-info-25: #1E1D2B;--color-info-50: #181344;--color-info-100: #201556;--color-info-125: #2A1769;--color-info-150: #36187C;--color-info-200: #441891;--color-info-225: #5517A6;--color-info-250: #5E15BC;--color-info-275: #6612D3;--color-info-300: #6F0FEB;--color-info-350: #7919F5;--color-info-400: #8428FB;--color-info-450: #8F38FF;--color-info-500: #9A4DFF;--color-info-550: #A561FF;--color-info-600: #B175FF;--color-info-650: #BC8AFF;--color-info-700: #C89EFF;--color-info-720: #D4B2FF;--color-info-740: #D9BDFF;--color-info-760: #DFC7FF;--color-info-780: #E5D1FF;--color-info-800: #EBDBFF;--color-info-825: #F1E5FF;--color-info-850: #F6F0FF;--color-info-900: #F9F5FF;--color-info-950: #FCFAFF;--color-layer-1: rgba(129, 148, 177, .08);--color-layer-2: rgba(129, 148, 177, .14);--color-layer-3: rgba(129, 148, 177, .18);--color-layer-4: rgba(129, 148, 177, .24);--color-layer-primary-1: rgba(45, 110, 251, .14);--color-layer-primary-2: rgba(45, 110, 251, .2);--color-layer-primary-3: rgba(45, 110, 251, .3);--color-layer-primary-4: rgba(45, 110, 251, .4);--color-layer-positive-1: rgba(54, 181, 86, .14);--color-layer-positive-2: rgba(54, 181, 86, .2);--color-layer-positive-3: rgba(54, 181, 86, .3);--color-layer-positive-4: rgba(54, 181, 86, .4);--color-layer-warning-1: rgba(255, 160, 66, .14);--color-layer-warning-2: rgba(255, 160, 66, .2);--color-layer-warning-3: rgba(255, 160, 66, .3);--color-layer-warning-4: rgba(255, 160, 66, .4);--color-layer-negative-1: rgba(247, 54, 82, .14);--color-layer-negative-2: rgba(247, 54, 82, .2);--color-layer-negative-3: rgba(247, 54, 82, .3);--color-layer-negative-4: rgba(247, 54, 82, .4);--color-layer-info-1: rgba(165, 97, 255, .14);--color-layer-info-2: rgba(165, 97, 255, .2);--color-layer-info-3: rgba(165, 97, 255, .3);--color-layer-info-4: rgba(165, 97, 255, .4);--top-shadow-xs: 0px 0px 3px rgba(0, 0, 0, .11), 0px 5px 25px rgba(0, 0, 0, .08);--top-shadow-s: 0px 0px 3px rgba(0, 0, 0, .11), 0px 5px 25px rgba(0, 0, 0, .17);--top-shadow: 0px 0px 4px rgba(0, 0, 0, .14), 0px 4px 32px rgba(0, 0, 0, .2);--top-shadow-b: 0px 0px 4px rgba(0, 0, 0, .15), 0px 18px 32px rgba(0, 0, 0, .34);--top-shadow-darken-1: inset 1000px 1000px 1000px 1000px rgba(0, 0, 0, .03);--top-shadow-darken-2: inset 1000px 1000px 1000px 1000px rgba(0, 0, 0, .12);--top-shadow-darken-3: inset 1000px 1000px 1000px 1000px rgba(0, 0, 0, .1);--color-bg-preloader: rgba(255, 255, 255, .01)}:root{--color-bg-shading-1: var(--color-theme-225);--color-bg-shading-2: var(--color-theme-200);--color-bg-shading-3: var(--color-theme-175);--color-bg-shading-4: var(--color-theme-150);--color-bg-shading-5: var(--color-theme-125);--color-bg-shading-6: var(--color-theme-100);--color-bg-shading-7: var(--color-theme-50);--color-bg-inverted-1: var(--color-theme-970);--color-bg-inverted-2: var(--color-theme-955);--color-bg-inverted-3: var(--color-theme-900);--color-bg-inverted-4: var(--color-theme-850);--color-bg-inverted-5: var(--color-theme-800);--color-bg-inverted-6: var(--color-theme-750);--color-bg-inverted-7: var(--color-theme-725);--color-bg-inverted-8: var(--color-theme-710);--color-bg-inverted-9: var(--color-theme-700);--color-bg-inverted-10: var(--color-theme-675);--color-bg-primary-1: var(--color-primary-550);--color-bg-primary-2: var(--color-primary-650);--color-bg-primary-3: var(--color-primary-720);--color-bg-positive-1: var(--color-positive-450);--color-bg-positive-2: var(--color-positive-600);--color-bg-positive-3: var(--color-positive-740);--color-bg-warning-1: var(--color-warning-450);--color-bg-warning-2: var(--color-warning-600);--color-bg-warning-3: var(--color-warning-700);--color-bg-negative-1: var(--color-negative-550);--color-bg-negative-2: var(--color-negative-650);--color-bg-negative-3: var(--color-negative-720);--color-bg-info-1: var(--color-info-650);--color-bg-info-2: var(--color-info-720);--color-bg-info-3: var(--color-info-780);--color-text-1: var(--color-theme-970);--color-text-2: var(--color-theme-750);--color-text-3: var(--color-theme-500);--color-text-4: var(--color-theme-450);--color-text-1-inverse: var(--color-theme-100);--color-text-white: var(--color-white);--color-text-primary: var(--color-primary-550);--color-text-primary-alt: var(--color-primary-650);--color-text-positive: var(--color-positive-450);--color-text-positive-alt: var(--color-positive-600);--color-text-warning: var(--color-warning-450);--color-text-warning-alt: var(--color-warning-650);--color-text-negative: var(--color-negative-550);--color-text-negative-alt: var(--color-negative-650);--color-text-info: var(--color-info-650);--color-text-info-alt: var(--color-info-740);--color-line-1: var(--color-theme-350);--color-line-2: var(--color-theme-400);--color-line-3: var(--color-theme-485);--color-line-4: var(--color-theme-650);--color-line-1-opacity: rgba(193, 203, 215, .1);--color-line-2-opacity: rgba(193, 203, 215, .15);--color-line-3-opacity: rgba(193, 203, 215, .27);--color-line-primary-1: var(--color-primary-450);--color-line-primary-2: var(--color-positive-600);--color-line-primary-3: var(--color-positive-740);--color-line-primary-1-opacity: rgba(122, 164, 255, .14);--color-line-primary-2-opacity: rgba(122, 164, 255, .28);--color-line-primary-3-opacity: rgba(122, 164, 255, .38);--color-line-positive-1: var(--color-positive-450);--color-line-positive-2: var(--color-positive-600);--color-line-positive-3: var(--color-positive-740);--color-line-positive-1-opacity: rgba(164, 233, 171, .14);--color-line-positive-2-opacity: rgba(164, 233, 171, .28);--color-line-positive-3-opacity: rgba(164, 233, 171, .38);--color-line-warning-1: var(--color-warning-450);--color-line-warning-2: var(--color-warning-600);--color-line-warning-3: var(--color-warning-700);--color-line-warning-1-opacity: rgba(255, 191, 128, .14);--color-line-warning-2-opacity: rgba(255, 191, 128, .28);--color-line-warning-3-opacity: rgba(255, 191, 128, .38);--color-line-negative-1: var(--color-negative-550);--color-line-negative-2: var(--color-negative-650);--color-line-negative-3: var(--color-negative-720);--color-line-negative-1-opacity: rgba(239, 135, 148, .14);--color-line-negative-2-opacity: rgba(239, 135, 148, .28);--color-line-negative-3-opacity: rgba(239, 135, 148, .38);--color-line-info-1: var(--color-info-650);--color-line-info-2: var(--color-info-720);--color-line-info-3: var(--color-info-780);--color-line-info-1-opacity: rgba(168, 120, 247, .14);--color-line-info-2-opacity: rgba(168, 120, 247, .28);--color-line-info-3-opacity: rgba(168, 120, 247, .38);--scroll-thumb-color: var(--color-theme-250);--scroll-thumb-color-hover: var(--color-theme-300);--scroll-thumb-color-active: var(--color-theme-400);--body-background-color: var(--color-layout-front-1);--top-forms-option-color: var(--color-primary-550);--top-forms-option-color-hover: var(--color-primary-650)}:root{--color-layout-back: var(--color-theme-100);--color-layout-header: var(--color-theme-225);--color-layout-middle: var(--color-theme-125);--color-layout-front-1: var(--color-theme-225);--color-layout-front-2: #222F43;--color-layout-front-3: #253348;--color-layout-front-4: #29374D;--color-layout-front-5: #2C3B52;--color-layout-front-6: #2C3B52;--color-layout-front-primary-1: #202C3F;--color-layout-front-primary-2: #232f41;--color-layout-front-primary-3: #243149;--color-layout-front-primary-4: #243450;--color-layout-front-primary-5: #253758;--color-layout-front-primary-6: #253960;--color-layout-front-positive-1: #202D3D;--color-layout-front-positive-2: #25333b;--color-layout-front-positive-3: #263a3d;--color-layout-front-positive-4: #284140;--color-layout-front-positive-5: #2a4842;--color-layout-front-positive-6: #2b4f44;--color-layout-front-warning-1: #222D3C;--color-layout-front-warning-2: #2b3038;--color-layout-front-warning-3: #343437;--color-layout-front-warning-4: #3c3836;--color-layout-front-warning-5: #453b35;--color-layout-front-warning-6: #4d3f35;--color-layout-front-negative-1: #222B3D;--color-layout-front-negative-2: #2b2c3a;--color-layout-front-negative-3: #342d3b;--color-layout-front-negative-4: #3c2d3c;--color-layout-front-negative-5: #452e3d;--color-layout-front-negative-6: #4d2e3e;--color-layout-front-info-1: #212B3F;--color-layout-front-info-2: #272c41;--color-layout-front-info-3: #2b2c49;--color-layout-front-info-4: #2f2c50;--color-layout-front-info-5: #332b58;--color-layout-front-info-6: #362b60}:root{--color-sumamry-top-3: #5BA8DC;--color-sumamry-top-5: #1AAD7B;--color-sumamry-top-10: #4BD2B8;--color-sumamry-top-30: #68CA63;--color-sumamry-top-50: #9DAAAA;--color-sumamry-top-10000: #CAA549;--color-table-top-1: #435E93;--color-table-top-2: #3F5788;--color-table-top-3: #3B5381;--color-table-top-4: #357550;--color-table-top-5: #336F4E;--color-table-top-6: #326B4D;--color-table-top-7: #31684C;--color-table-top-8: #30624A;--color-table-top-9: #2F5D48;--color-table-top-10: #2D5747;--color-table-move-up-10: #367B53;--color-table-move-up-9: #357550;--color-table-move-up-8: #336F4E;--color-table-move-up-7: #326B4D;--color-table-move-up-6: #31684C;--color-table-move-up-5: #30624A;--color-table-move-up-4: #2F5D48;--color-table-move-up-3: #2D5747;--color-table-move-up-2: #2C5145;--color-table-move-up-1: #2A4A42;--color-table-move-0: #293342;--color-table-move-down-1: #46303F;--color-table-move-down-2: #4F3040;--color-table-move-down-3: #583142;--color-table-move-down-4: #633244;--color-table-move-down-5: #6C3345;--color-table-move-down-6: #723446;--color-table-move-down-7: #793547;--color-table-move-down-8: #823649;--color-table-move-down-9: #8A364A;--color-table-move-down-10: #93374C;--color-table-down: #46303F;--color-table-down-10: #4F3040;--color-table-up: #365344;--color-table-up-10: #2C5145;--color-table-base: var(--color-layout-front-4);--color-table-not_found: #625C40;--color-table-empty: var(--color-layout-front-1);--color-snapshot-panel-gradient-1: rgba(35, 44, 77, .5);--color-snapshot-panel-gradient-2: rgba(35, 44, 77, .8);--color-snippet-title: #A2C2FA;--color-snippet-title-visited: #BC8CF2;--color-snippet-url: #007700}
1
+ :root{--color-theme-0: #000000;--color-theme-50: #050815;--color-theme-75: #090A18;--color-theme-100: #0E121B;--color-theme-125: #111722;--color-theme-150: #141C29;--color-theme-175: #172130;--color-theme-200: #1B2637;--color-theme-225: #1E2B3E;--color-theme-250: #223044;--color-theme-260: #25344C;--color-theme-275: #293852;--color-theme-300: #2C3E58;--color-theme-325: #2F4360;--color-theme-350: #324867;--color-theme-360: #364D6D;--color-theme-375: #395175;--color-theme-400: #3D557B;--color-theme-410: #405A82;--color-theme-420: #435F89;--color-theme-430: #47648F;--color-theme-440: #4A6996;--color-theme-450: #4D6E9D;--color-theme-460: #5173A4;--color-theme-465: #5476AB;--color-theme-470: #5B7DAE;--color-theme-475: #6281B2;--color-theme-480: #6987B5;--color-theme-485: #708DB8;--color-theme-500: #7692BC;--color-theme-550: #7D97BF;--color-theme-575: #849DC2;--color-theme-600: #8AA2C6;--color-theme-625: #92A7C9;--color-theme-650: #98AECD;--color-theme-675: #9FB3D0;--color-theme-700: #A7B9D3;--color-theme-710: #ADBED6;--color-theme-725: #B3C3DA;--color-theme-750: #BBC9DD;--color-theme-800: #C1CEE1;--color-theme-850: #C8D3E4;--color-theme-900: #CFD9E8;--color-theme-925: #D6DEEB;--color-theme-950: #DDE3EE;--color-theme-955: #E4EAF1;--color-theme-960: #EAEFF5;--color-theme-965: #F1F4F8;--color-theme-970: #F9FAFB;--color-theme-1000: #FFFFFF;--color-white: rgba(255, 255, 255, 1);--color-black: rgba(0, 0, 0, 1);--color-secondary-25: #121212;--color-secondary-50: #1A1A1A;--color-secondary-100: #232323;--color-secondary-125: #2C2C2C;--color-secondary-150: #353535;--color-secondary-200: #3E3E3E;--color-secondary-225: #464646;--color-secondary-250: #4F4F4F;--color-secondary-275: #585858;--color-secondary-300: #616161;--color-secondary-350: #6A6A6A;--color-secondary-400: #727272;--color-secondary-450: #7B7B7B;--color-secondary-500: #848484;--color-secondary-550: #8D8D8D;--color-secondary-600: #959595;--color-secondary-650: #9E9E9E;--color-secondary-700: #A7A7A7;--color-secondary-720: #B0B0B0;--color-secondary-740: #B9B9B9;--color-secondary-760: #C1C1C1;--color-secondary-780: #CACACA;--color-secondary-800: #D3D3D3;--color-secondary-825: #DCDCDC;--color-secondary-850: #E5E5E5;--color-secondary-900: #EDEDED;--color-secondary-950: #F6F6F6;--color-primary-25: #1F252E;--color-primary-50: #1C2736;--color-primary-100: #18293E;--color-primary-125: #142B48;--color-primary-150: #16355A;--color-primary-200: #183E6D;--color-primary-225: #184781;--color-primary-250: #185095;--color-primary-275: #175AAB;--color-primary-300: #1563C1;--color-primary-350: #136BD8;--color-primary-400: #0F74F0;--color-primary-450: #1E7FF6;--color-primary-500: #2D8AFB;--color-primary-550: #3D94FF;--color-primary-600: #52A0FF;--color-primary-650: #66ABFF;--color-primary-700: #7AB6FF;--color-primary-720: #8FC1FF;--color-primary-740: #A3CDFF;--color-primary-760: #B8D8FF;--color-primary-780: #C2DDFF;--color-primary-800: #CCE3FF;--color-primary-825: #D6E9FF;--color-primary-850: #E0EEFF;--color-primary-900: #EBF4FF;--color-primary-950: #F5F9FF;--color-positive-25: #111311;--color-positive-50: #131612;--color-positive-100: #141A14;--color-positive-125: #161E15;--color-positive-150: #1C2C1C;--color-positive-200: #223A23;--color-positive-225: #27492B;--color-positive-250: #2C5934;--color-positive-275: #2F6A3E;--color-positive-300: #327B44;--color-positive-350: #348D4B;--color-positive-400: #36A150;--color-positive-450: #36B556;--color-positive-500: #36C95B;--color-positive-550: #41D265;--color-positive-600: #4DDB73;--color-positive-650: #5AE27C;--color-positive-700: #6CE58A;--color-positive-720: #7DE898;--color-positive-740: #8EEBA5;--color-positive-760: #A0EEB3;--color-positive-780: #B1F1C1;--color-positive-800: #C2F4CF;--color-positive-825: #D8F8E0;--color-positive-850: #E5FAEA;--color-positive-900: #EEFCF1;--color-positive-950: #F6FDF8;--color-warning-25: #3C1F1F;--color-warning-50: #39221B;--color-warning-100: #421B1A;--color-warning-125: #4C2015;--color-warning-150: #5E2517;--color-warning-200: #71321E;--color-warning-225: #7F3D19;--color-warning-250: #9A511A;--color-warning-275: #AF6420;--color-warning-300: #C56D1C;--color-warning-350: #DD780C;--color-warning-400: #F08214;--color-warning-450: #F48B1B;--color-warning-500: #FB9632;--color-warning-550: #FFA042;--color-warning-600: #FFAB57;--color-warning-650: #FFB56B;--color-warning-700: #FFBF80;--color-warning-720: #FFCB94;--color-warning-740: #FFD7A8;--color-warning-760: #FFDEBF;--color-warning-780: #FFE3C7;--color-warning-800: #FFE8CF;--color-warning-825: #FFEDDB;--color-warning-850: #FFF3E6;--color-warning-900: #FFF7F0;--color-warning-950: #FFFDFA;--color-negative-25: #2E2229;--color-negative-50: #371F2B;--color-negative-100: #402030;--color-negative-125: #4A1733;--color-negative-150: #5B193A;--color-negative-200: #6E1C2F;--color-negative-225: #8A1C34;--color-negative-250: #9B1D32;--color-negative-275: #AB1A2F;--color-negative-300: #C31A30;--color-negative-350: #D81534;--color-negative-400: #EB1938;--color-negative-450: #F12745;--color-negative-500: #F73652;--color-negative-550: #FF4262;--color-negative-600: #FF576F;--color-negative-650: #FF6B7B;--color-negative-700: #FF8092;--color-negative-720: #FF949F;--color-negative-740: #FFA8B5;--color-negative-760: #FFBFC6;--color-negative-780: #FFC7CF;--color-negative-800: #FFD1D8;--color-negative-825: #FFDDE1;--color-negative-850: #FFE5E9;--color-negative-900: #FFF0F2;--color-negative-950: #FFFAFB;--color-info-25: #1E1D2B;--color-info-50: #181344;--color-info-100: #201556;--color-info-125: #2A1769;--color-info-150: #36187C;--color-info-200: #441891;--color-info-225: #5517A6;--color-info-250: #5E15BC;--color-info-275: #6612D3;--color-info-300: #6F0FEB;--color-info-350: #7919F5;--color-info-400: #8428FB;--color-info-450: #8F38FF;--color-info-500: #9A4DFF;--color-info-550: #A561FF;--color-info-600: #B175FF;--color-info-650: #BC8AFF;--color-info-700: #C89EFF;--color-info-720: #D4B2FF;--color-info-740: #D9BDFF;--color-info-760: #DFC7FF;--color-info-780: #E5D1FF;--color-info-800: #EBDBFF;--color-info-825: #F1E5FF;--color-info-850: #F6F0FF;--color-info-900: #F9F5FF;--color-info-950: #FCFAFF;--color-layer-1: rgba(129, 148, 177, .08);--color-layer-2: rgba(129, 148, 177, .14);--color-layer-3: rgba(129, 148, 177, .18);--color-layer-4: rgba(129, 148, 177, .24);--color-layer-primary-1: rgba(45, 110, 251, .14);--color-layer-primary-2: rgba(45, 110, 251, .2);--color-layer-primary-3: rgba(45, 110, 251, .3);--color-layer-primary-4: rgba(45, 110, 251, .4);--color-layer-positive-1: rgba(54, 181, 86, .14);--color-layer-positive-2: rgba(54, 181, 86, .2);--color-layer-positive-3: rgba(54, 181, 86, .3);--color-layer-positive-4: rgba(54, 181, 86, .4);--color-layer-warning-1: rgba(255, 160, 66, .14);--color-layer-warning-2: rgba(255, 160, 66, .2);--color-layer-warning-3: rgba(255, 160, 66, .3);--color-layer-warning-4: rgba(255, 160, 66, .4);--color-layer-negative-1: rgba(247, 54, 82, .14);--color-layer-negative-2: rgba(247, 54, 82, .2);--color-layer-negative-3: rgba(247, 54, 82, .3);--color-layer-negative-4: rgba(247, 54, 82, .4);--color-layer-info-1: rgba(165, 97, 255, .14);--color-layer-info-2: rgba(165, 97, 255, .2);--color-layer-info-3: rgba(165, 97, 255, .3);--color-layer-info-4: rgba(165, 97, 255, .4);--top-shadow-xs: 0px 0px 3px rgba(0, 0, 0, .11), 0px 5px 25px rgba(0, 0, 0, .08);--top-shadow-s: 0px 0px 3px rgba(0, 0, 0, .11), 0px 5px 25px rgba(0, 0, 0, .17);--top-shadow: 0px 0px 4px rgba(0, 0, 0, .14), 0px 4px 32px rgba(0, 0, 0, .2);--top-shadow-b: 0px 0px 4px rgba(0, 0, 0, .15), 0px 18px 32px rgba(0, 0, 0, .34);--top-shadow-darken-1: inset 1000px 1000px 1000px 1000px rgba(0, 0, 0, .03);--top-shadow-darken-2: inset 1000px 1000px 1000px 1000px rgba(0, 0, 0, .12);--top-shadow-darken-3: inset 1000px 1000px 1000px 1000px rgba(0, 0, 0, .1);--color-bg-preloader: rgba(255, 255, 255, .01)}:root{--color-bg-shading-1: var(--color-theme-225);--color-bg-shading-2: var(--color-theme-200);--color-bg-shading-3: var(--color-theme-175);--color-bg-shading-4: var(--color-theme-150);--color-bg-shading-5: var(--color-theme-125);--color-bg-shading-6: var(--color-theme-100);--color-bg-shading-7: var(--color-theme-50);--color-bg-inverted-1: var(--color-theme-970);--color-bg-inverted-2: var(--color-theme-955);--color-bg-inverted-3: var(--color-theme-900);--color-bg-inverted-4: var(--color-theme-850);--color-bg-inverted-5: var(--color-theme-800);--color-bg-inverted-6: var(--color-theme-750);--color-bg-inverted-7: var(--color-theme-725);--color-bg-inverted-8: var(--color-theme-710);--color-bg-inverted-9: var(--color-theme-700);--color-bg-inverted-10: var(--color-theme-675);--color-bg-primary-1: var(--color-primary-550);--color-bg-primary-2: var(--color-primary-650);--color-bg-primary-3: var(--color-primary-720);--color-bg-positive-1: var(--color-positive-450);--color-bg-positive-2: var(--color-positive-600);--color-bg-positive-3: var(--color-positive-740);--color-bg-warning-1: var(--color-warning-450);--color-bg-warning-2: var(--color-warning-600);--color-bg-warning-3: var(--color-warning-700);--color-bg-negative-1: var(--color-negative-550);--color-bg-negative-2: var(--color-negative-650);--color-bg-negative-3: var(--color-negative-720);--color-bg-info-1: var(--color-info-650);--color-bg-info-2: var(--color-info-720);--color-bg-info-3: var(--color-info-780);--color-text-1: var(--color-theme-970);--color-text-2: var(--color-theme-750);--color-text-3: var(--color-theme-500);--color-text-4: var(--color-theme-450);--color-text-1-inverse: var(--color-theme-100);--color-text-white: var(--color-white);--color-text-primary: var(--color-primary-550);--color-text-primary-alt: var(--color-primary-650);--color-text-positive: var(--color-positive-450);--color-text-positive-alt: var(--color-positive-600);--color-text-warning: var(--color-warning-450);--color-text-warning-alt: var(--color-warning-650);--color-text-negative: var(--color-negative-550);--color-text-negative-alt: var(--color-negative-650);--color-text-info: var(--color-info-650);--color-text-info-alt: var(--color-info-740);--color-line-1: var(--color-theme-350);--color-line-2: var(--color-theme-400);--color-line-3: var(--color-theme-485);--color-line-4: var(--color-theme-650);--color-line-1-opacity: rgba(193, 203, 215, .1);--color-line-2-opacity: rgba(193, 203, 215, .15);--color-line-3-opacity: rgba(193, 203, 215, .27);--color-line-primary-1: var(--color-primary-450);--color-line-primary-2: var(--color-positive-600);--color-line-primary-3: var(--color-positive-740);--color-line-primary-1-opacity: rgba(122, 164, 255, .14);--color-line-primary-2-opacity: rgba(122, 164, 255, .28);--color-line-primary-3-opacity: rgba(122, 164, 255, .38);--color-line-positive-1: var(--color-positive-450);--color-line-positive-2: var(--color-positive-600);--color-line-positive-3: var(--color-positive-740);--color-line-positive-1-opacity: rgba(164, 233, 171, .14);--color-line-positive-2-opacity: rgba(164, 233, 171, .28);--color-line-positive-3-opacity: rgba(164, 233, 171, .38);--color-line-warning-1: var(--color-warning-450);--color-line-warning-2: var(--color-warning-600);--color-line-warning-3: var(--color-warning-700);--color-line-warning-1-opacity: rgba(255, 191, 128, .14);--color-line-warning-2-opacity: rgba(255, 191, 128, .28);--color-line-warning-3-opacity: rgba(255, 191, 128, .38);--color-line-negative-1: var(--color-negative-550);--color-line-negative-2: var(--color-negative-650);--color-line-negative-3: var(--color-negative-720);--color-line-negative-1-opacity: rgba(239, 135, 148, .14);--color-line-negative-2-opacity: rgba(239, 135, 148, .28);--color-line-negative-3-opacity: rgba(239, 135, 148, .38);--color-line-info-1: var(--color-info-650);--color-line-info-2: var(--color-info-720);--color-line-info-3: var(--color-info-780);--color-line-info-1-opacity: rgba(168, 120, 247, .14);--color-line-info-2-opacity: rgba(168, 120, 247, .28);--color-line-info-3-opacity: rgba(168, 120, 247, .38);--scroll-thumb-color: var(--color-theme-250);--scroll-thumb-color-hover: var(--color-theme-300);--scroll-thumb-color-active: var(--color-theme-400);--body-background-color: var(--color-layout-front-1);--content-background-color: var(--color-layout-front-1);--top-forms-option-color: var(--color-primary-550);--top-forms-option-color-hover: var(--color-primary-650)}:root{--color-layout-back: var(--color-theme-100);--color-layout-header: var(--color-theme-225);--color-layout-middle: var(--color-theme-125);--color-layout-front-1: var(--color-theme-225);--color-layout-front-2: #222F43;--color-layout-front-3: #253348;--color-layout-front-4: #29374D;--color-layout-front-5: #2C3B52;--color-layout-front-6: #2C3B52;--color-layout-front-primary-1: #202C3F;--color-layout-front-primary-2: #232f41;--color-layout-front-primary-3: #243149;--color-layout-front-primary-4: #243450;--color-layout-front-primary-5: #253758;--color-layout-front-primary-6: #253960;--color-layout-front-positive-1: #202D3D;--color-layout-front-positive-2: #25333b;--color-layout-front-positive-3: #263a3d;--color-layout-front-positive-4: #284140;--color-layout-front-positive-5: #2a4842;--color-layout-front-positive-6: #2b4f44;--color-layout-front-warning-1: #222D3C;--color-layout-front-warning-2: #2b3038;--color-layout-front-warning-3: #343437;--color-layout-front-warning-4: #3c3836;--color-layout-front-warning-5: #453b35;--color-layout-front-warning-6: #4d3f35;--color-layout-front-negative-1: #222B3D;--color-layout-front-negative-2: #2b2c3a;--color-layout-front-negative-3: #342d3b;--color-layout-front-negative-4: #3c2d3c;--color-layout-front-negative-5: #452e3d;--color-layout-front-negative-6: #4d2e3e;--color-layout-front-info-1: #212B3F;--color-layout-front-info-2: #272c41;--color-layout-front-info-3: #2b2c49;--color-layout-front-info-4: #2f2c50;--color-layout-front-info-5: #332b58;--color-layout-front-info-6: #362b60}:root{--color-summary-top-3: #5BA8DC;--color-summary-top-5: #1AAD7B;--color-summary-top-10: #4BD2B8;--color-summary-top-30: #68CA63;--color-summary-top-50: #9DAAAA;--color-summary-top-10000: #CAA549;--color-table-top-1: #435E93;--color-table-top-2: #3F5788;--color-table-top-3: #3B5381;--color-table-top-4: #357550;--color-table-top-5: #336F4E;--color-table-top-6: #326B4D;--color-table-top-7: #31684C;--color-table-top-8: #30624A;--color-table-top-9: #2F5D48;--color-table-top-10: #2D5747;--color-table-move-up-10: #367B53;--color-table-move-up-9: #357550;--color-table-move-up-8: #336F4E;--color-table-move-up-7: #326B4D;--color-table-move-up-6: #31684C;--color-table-move-up-5: #30624A;--color-table-move-up-4: #2F5D48;--color-table-move-up-3: #2D5747;--color-table-move-up-2: #2C5145;--color-table-move-up-1: #2A4A42;--color-table-move-0: #293342;--color-table-move-down-1: #46303F;--color-table-move-down-2: #4F3040;--color-table-move-down-3: #583142;--color-table-move-down-4: #633244;--color-table-move-down-5: #6C3345;--color-table-move-down-6: #723446;--color-table-move-down-7: #793547;--color-table-move-down-8: #823649;--color-table-move-down-9: #8A364A;--color-table-move-down-10: #93374C;--color-table-down: #46303F;--color-table-down-10: #4F3040;--color-table-up: #365344;--color-table-up-10: #2C5145;--color-table-base: var(--color-layout-front-1);--color-table-empty: var(--color-layout-front-3);--color-table-not_found: #FFF6C6;--color-snapshot-panel-gradient-1: rgba(35, 44, 77, .5);--color-snapshot-panel-gradient-2: rgba(35, 44, 77, .8);--color-snippet-title: #A2C2FA;--color-snippet-title-visited: #BC8CF2;--color-snippet-url: #007700}
@@ -1 +1 @@
1
- :root{--color-theme-0: #FFFFFF;--color-theme-50: #F9FAFB;--color-theme-75: #F6F7F9;--color-theme-100: #F3F4F6;--color-theme-125: #EDEFF2;--color-theme-150: #E7EAEE;--color-theme-175: #E2E5E9;--color-theme-200: #DCE0E5;--color-theme-225: #D6DBE1;--color-theme-250: #D0D5DC;--color-theme-260: #CAD0D8;--color-theme-275: #C4CBD4;--color-theme-300: #BEC5CF;--color-theme-325: #B8C0CB;--color-theme-350: #B3BBC7;--color-theme-360: #ADB5C2;--color-theme-375: #A7B0BE;--color-theme-400: #A1ABBA;--color-theme-410: #9BA6B5;--color-theme-420: #95A0B1;--color-theme-430: #8F9BAD;--color-theme-440: #8A96A8;--color-theme-450: #8491A4;--color-theme-460: #7E8BA0;--color-theme-465: #78869C;--color-theme-470: #728197;--color-theme-475: #6C7B93;--color-theme-480: #68778D;--color-theme-485: #637287;--color-theme-500: #5F6D81;--color-theme-550: #5B687B;--color-theme-575: #576375;--color-theme-600: #525E70;--color-theme-625: #4E596A;--color-theme-650: #4A5564;--color-theme-675: #454F5E;--color-theme-700: #414A58;--color-theme-710: #3D4552;--color-theme-725: #38404C;--color-theme-750: #343B47;--color-theme-800: #303641;--color-theme-850: #2B323B;--color-theme-900: #272D35;--color-theme-925: #23282F;--color-theme-950: #1E2329;--color-theme-955: #1A1E23;--color-theme-960: #16191D;--color-theme-965: #111318;--color-theme-970: #0D0F12;--color-theme-1000: #000000;--color-white: rgba(255, 255, 255, 1);--color-black: rgba(0, 0, 0, 1);--color-primary-25: #F5F9FF;--color-primary-50: #EBF4FF;--color-primary-100: #D6E9FF;--color-primary-125: #CCE3FF;--color-primary-150: #C2DDFF;--color-primary-200: #B8D8FF;--color-primary-225: #A3CDFF;--color-primary-250: #8FC1FF;--color-primary-275: #7AB6FF;--color-primary-300: #66ABFF;--color-primary-350: #52A0FF;--color-primary-400: #3D94FF;--color-primary-450: #2D8AFB;--color-primary-500: #1E7FF6;--color-primary-550: #0F74F0;--color-primary-600: #136BD8;--color-primary-650: #1563C1;--color-primary-700: #175AAB;--color-primary-720: #185095;--color-primary-740: #184781;--color-primary-760: #183E6D;--color-primary-780: #16355A;--color-primary-800: #142B48;--color-primary-825: #18293E;--color-primary-850: #1C2736;--color-primary-900: #1C2736;--color-primary-950: #1F252E;--color-positive-25: #F6FDF8;--color-positive-50: #EEFCF1;--color-positive-100: #E5FAEA;--color-positive-125: #D8F8E0;--color-positive-150: #C2F4CF;--color-positive-200: #B1F1C1;--color-positive-225: #A0EEB3;--color-positive-250: #8EEBA5;--color-positive-275: #7DE898;--color-positive-300: #6CE58A;--color-positive-350: #5AE27C;--color-positive-400: #4DDB73;--color-positive-450: #41D265;--color-positive-500: #36C95B;--color-positive-550: #36B556;--color-positive-600: #36A150;--color-positive-650: #348D4B;--color-positive-700: #327B44;--color-positive-720: #2F6A3E;--color-positive-740: #2C5934;--color-positive-760: #27492B;--color-positive-780: #223A23;--color-positive-800: #1C2C1C;--color-positive-825: #161E15;--color-positive-850: #141A14;--color-positive-900: #131612;--color-positive-950: #111311;--color-warning-25: #FFFDFA;--color-warning-50: #FFF7F0;--color-warning-100: #FFF3E6;--color-warning-125: #FFEDDB;--color-warning-150: #FFE8CF;--color-warning-200: #FFE3C7;--color-warning-225: #FFDEBF;--color-warning-250: #FFD7A8;--color-warning-275: #FFCB94;--color-warning-300: #FFBF80;--color-warning-350: #FFB56B;--color-warning-400: #FFAB57;--color-warning-450: #FFA042;--color-warning-500: #FB9632;--color-warning-550: #F48B1B;--color-warning-600: #F08214;--color-warning-650: #DD780C;--color-warning-700: #C56D1C;--color-warning-720: #AF6420;--color-warning-740: #9A511A;--color-warning-760: #7F3D19;--color-warning-780: #71321E;--color-warning-800: #5E2517;--color-warning-825: #4C2015;--color-warning-850: #421B1A;--color-warning-900: #391F1E;--color-warning-950: #312121;--color-negative-25: #FFFAFA;--color-negative-50: #FFF1F0;--color-negative-100: #FFE6E5;--color-negative-125: #FFDCDB;--color-negative-150: #FFD3D1;--color-negative-200: #FFC9C7;--color-negative-225: #FFBFBD;--color-negative-250: #FFABA8;--color-negative-275: #FF9894;--color-negative-300: #FF8480;--color-negative-350: #FF706B;--color-negative-400: #FF5D57;--color-negative-450: #FF4842;--color-negative-500: #F73C36;--color-negative-550: #F12E27;--color-negative-600: #EB2019;--color-negative-650: #D81E18;--color-negative-700: #C1201A;--color-negative-720: #AB211C;--color-negative-740: #96211D;--color-negative-760: #821F1C;--color-negative-780: #6E1F1C;--color-negative-800: #5B1C1A;--color-negative-825: #4A1917;--color-negative-850: #401D1C;--color-negative-900: #37201F;--color-negative-950: #2F2222;--color-info-25: #FCFAFF;--color-info-50: #F9F5FF;--color-info-100: #F6F0FF;--color-info-125: #F1E5FF;--color-info-150: #EBDBFF;--color-info-200: #E5D1FF;--color-info-225: #DFC7FF;--color-info-250: #D9BDFF;--color-info-275: #D4B2FF;--color-info-300: #C89EFF;--color-info-350: #BC8AFF;--color-info-400: #B175FF;--color-info-450: #A561FF;--color-info-500: #9A4DFF;--color-info-550: #8F38FF;--color-info-600: #8428FB;--color-info-650: #7919F5;--color-info-700: #6F0FEB;--color-info-720: #6612D3;--color-info-740: #5E15BC;--color-info-760: #5517A6;--color-info-780: #441891;--color-info-800: #36187C;--color-info-825: #2A1769;--color-info-850: #201556;--color-info-900: #181344;--color-info-950: #1E1D2B;--color-layer-1: rgba(97, 121, 158, .1);--color-layer-2: rgba(97, 121, 158, .14);--color-layer-3: rgba(97, 121, 158, .18);--color-layer-4: rgba(97, 121, 158, .24);--color-layer-primary-1: rgba(45, 110, 251, .08);--color-layer-primary-2: rgba(45, 110, 251, .12);--color-layer-primary-3: rgba(45, 110, 251, .18);--color-layer-primary-4: rgba(45, 110, 251, .24);--color-layer-positive-1: rgba(54, 201, 91, .08);--color-layer-positive-2: rgba(54, 201, 91, .12);--color-layer-positive-3: rgba(54, 201, 91, .18);--color-layer-positive-4: rgba(54, 201, 91, .24);--color-layer-warning-1: rgba(240, 130, 20, .08);--color-layer-warning-2: rgba(240, 130, 20, .12);--color-layer-warning-3: rgba(240, 130, 20, .18);--color-layer-warning-4: rgba(240, 130, 20, .24);--color-layer-negative-1: rgba(247, 54, 82, .08);--color-layer-negative-2: rgba(247, 54, 82, .12);--color-layer-negative-3: rgba(247, 54, 82, .18);--color-layer-negative-4: rgba(247, 54, 82, .24);--color-layer-info-1: rgba(165, 97, 255, .08);--color-layer-info-2: rgba(165, 97, 255, .12);--color-layer-info-3: rgba(165, 97, 255, .18);--color-layer-info-4: rgba(165, 97, 255, .24);--color-fill-secondary-0: #FFFFFF;--color-fill-secondary-100: #F3F6FA;--color-fill-secondary-150: #E5EBF3;--color-fill-secondary-200: #DBE3EC;--color-fill-secondary-250: #CCD3DE;--color-fill-secondary-300: #BFC6D2;--color-fill-secondary-350: #ACB5C1;--color-fill-secondary-400: #A0AAB6;--color-fill-secondary-450: #838D9C;--color-fill-secondary-500: #68707C;--color-fill-secondary-550: #606771;--color-fill-secondary-600: #595F68;--color-fill-secondary-650: #4E5259;--color-fill-secondary-700: #484B50;--color-fill-secondary-750: #383A3E;--color-fill-secondary-800: #303234;--color-fill-secondary-850: #2D2F30;--color-fill-secondary-900: #28292A;--color-fill-secondary-950: #212122;--color-fill-secondary-960: #1C1C1D;--color-fill-secondary-970: #161617;--color-fill-secondary-1000: #000000;--top-shadow-xs: 0px 0px 3px rgba(112, 144, 176, .07), 0px 5px 25px rgba(112, 144, 176, .06);--top-shadow-s: 0px 0px 3px rgba(112, 144, 176, .07), 0px 5px 25px rgba(112, 144, 176, .12);--top-shadow: 0px 0px 4px rgba(4, 9, 84, .08), 0px 4px 32px rgba(4, 9, 84, .1);--top-shadow-b: 0px 0px 4px rgba(4, 36, 84, .08), 0px 18px 32px rgba(4, 25, 84, .18);--top-shadow-darken-1: inset 1000px 1000px 1000px 1000px rgba(0, 0, 0, .03);--top-shadow-darken-2: inset 1000px 1000px 1000px 1000px rgba(0, 0, 0, .09);--top-shadow-darken-3: inset 1000px 1000px 1000px 1000px rgba(0, 0, 0, .18);--color-bg-preloader: rgba(255, 255, 255, .01)}:root{--color-bg-shading-1: var(--color-theme-0);--color-bg-shading-2: var(--color-theme-50);--color-bg-shading-3: var(--color-theme-100);--color-bg-shading-4: var(--color-theme-125);--color-bg-shading-5: var(--color-theme-150);--color-bg-shading-6: var(--color-theme-175);--color-bg-shading-7: var(--color-theme-200);--color-bg-inverted-1: var(--color-theme-950);--color-bg-inverted-2: var(--color-theme-900);--color-bg-inverted-3: var(--color-theme-800);--color-bg-inverted-4: var(--color-theme-750);--color-bg-inverted-5: var(--color-theme-725);--color-bg-inverted-6: var(--color-theme-700);--color-bg-inverted-7: var(--color-theme-675);--color-bg-inverted-8: var(--color-theme-650);--color-bg-inverted-9: var(--color-theme-625);--color-bg-inverted-10: var(--color-theme-600);--color-bg-primary-1: var(--color-primary-500);--color-bg-primary-2: var(--color-primary-600);--color-bg-primary-3: var(--color-primary-720);--color-bg-positive-1: var(--color-positive-500);--color-bg-positive-2: var(--color-positive-700);--color-bg-positive-3: var(--color-positive-760);--color-bg-warning-1: var(--color-warning-500);--color-bg-warning-2: var(--color-warning-600);--color-bg-warning-3: var(--color-warning-720);--color-bg-negative-1: var(--color-negative-500);--color-bg-negative-2: var(--color-negative-650);--color-bg-negative-3: var(--color-negative-720);--color-bg-info-1: var(--color-info-500);--color-bg-info-2: var(--color-info-650);--color-bg-info-3: var(--color-info-720);--color-text-1: var(--color-theme-850);--color-text-2: var(--color-theme-600);--color-text-3: var(--color-theme-450);--color-text-4: var(--color-theme-300);--color-text-1-inverse: var(--color-theme-0);--color-text-white: var(--color-white);--color-text-primary: var(--color-primary-550);--color-text-primary-alt: var(--color-primary-700);--color-text-positive: var(--color-positive-550);--color-text-positive-alt: var(--color-positive-700);--color-text-warning: var(--color-warning-550);--color-text-warning-alt: var(--color-warning-700);--color-text-negative: var(--color-negative-550);--color-text-negative-alt: var(--color-negative-700);--color-text-info: var(--color-info-550);--color-text-info-alt: var(--color-info-700);--color-line-1: var(--color-theme-200);--color-line-2: var(--color-theme-250);--color-line-3: var(--color-theme-375);--color-line-4: var(--color-theme-470);--color-line-1-opacity: rgba(14, 65, 142, .1);--color-line-2-opacity: rgba(14, 65, 142, .19);--color-line-3-opacity: rgba(14, 65, 142, .39);--color-line-primary-1: var(--color-primary-500);--color-line-primary-2: var(--color-primary-650);--color-line-primary-3: var(--color-primary-720);--color-line-primary-1-opacity: rgba(15, 86, 240, .14);--color-line-primary-2-opacity: rgba(15, 86, 240, .28);--color-line-primary-3-opacity: rgba(15, 86, 240, .38);--color-line-positive-1: var(--color-positive-550);--color-line-positive-2: var(--color-positive-600);--color-line-positive-3: var(--color-positive-720);--color-line-positive-1-opacity: rgba(120, 216, 124, .14);--color-line-positive-2-opacity: rgba(120, 216, 124, .28);--color-line-positive-3-opacity: rgba(120, 216, 124, .38);--color-line-warning-1: var(--color-warning-600);--color-line-warning-2: var(--color-warning-700);--color-line-warning-3: var(--color-warning-740);--color-line-warning-1-opacity: rgba(251, 150, 50, .14);--color-line-warning-2-opacity: rgba(251, 150, 50, .28);--color-line-warning-3-opacity: rgba(251, 150, 50, .38);--color-line-negative-1: var(--color-negative-550);--color-line-negative-2: var(--color-negative-700);--color-line-negative-3: var(--color-negative-740);--color-line-negative-1-opacity: rgba(227, 73, 87, .14);--color-line-negative-2-opacity: rgba(227, 73, 87, .28);--color-line-negative-3-opacity: rgba(227, 73, 87, .38);--color-line-info-1: var(--color-info-500);--color-line-info-2: var(--color-info-550);--color-line-info-3: var(--color-info-600);--color-line-info-1-opacity: rgba(122, 47, 242, .14);--color-line-info-2-opacity: rgba(122, 47, 242, .28);--color-line-info-3-opacity: rgba(122, 47, 242, .38);--scroll-thumb-color: var(--color-theme-250);--scroll-thumb-color-hover: var(--color-theme-300);--scroll-thumb-color-active: var(--color-theme-400);--body-background-color: var(--color-layout-front-1);--color-layout-front-1: var(--color-layout-front-1);--top-forms-option-color: var(--color-primary-500);--top-forms-option-color-hover: var(--color-primary-600)}:root{--color-layout-back: var(--color-theme-200);--color-layout-header: var(--color-theme-0);--color-layout-middle: var(--color-theme-125);--color-layout-front-1: var(--color-theme-0);--color-layout-front-2: #FCFCFD;--color-layout-front-3: #F6F6F8;--color-layout-front-4: #EBEDF1;--color-layout-front-5: #E2E5EA;--color-layout-front-6: #D8DCE2;--color-layout-front-primary-1: #FFFFFF;--color-layout-front-primary-2: #F7F9FF;--color-layout-front-primary-3: #EEF3FF;--color-layout-front-primary-4: #E6EEFF;--color-layout-front-primary-5: #DDE8FE;--color-layout-front-primary-6: #D5E2FE;--color-layout-front-positive-1: #FFFFFF;--color-layout-front-positive-2: #F8FEF9;--color-layout-front-positive-3: #F1FCF4;--color-layout-front-positive-4: #EAFBEF;--color-layout-front-positive-5: #E3F9E8;--color-layout-front-positive-6: #DBF8E3;--color-layout-front-warning-1: #FFFFFF;--color-layout-front-warning-2: #FFFBF7;--color-layout-front-warning-3: #FFF7F0;--color-layout-front-warning-4: #FFF4E8;--color-layout-front-warning-5: #FFF0E1;--color-layout-front-warning-6: #FFECDA;--color-layout-front-negative-1: #FFFFFF;--color-layout-front-negative-2: #FFF7F8;--color-layout-front-negative-3: #FEF0F1;--color-layout-front-negative-4: #FEE7E9;--color-layout-front-negative-5: #FEDFE3;--color-layout-front-negative-6: #FDD7DC;--color-layout-front-info-1: #FFFFFF;--color-layout-front-info-2: #FAF6FF;--color-layout-front-info-3: #F5EEFF;--color-layout-front-info-4: #F0E5FF;--color-layout-front-info-5: #EBDBFE;--color-layout-front-info-6: #E6D4FE}:root{--color-sumamry-top-3: #3198DD;--color-sumamry-top-10: #21936C;--color-sumamry-top-30: #1ABC9C;--color-sumamry-top-50: #94DA90;--color-sumamry-top-100: #BCC8C8;--color-sumamry-top-10000: #FCC53B;--color-table-top-1: #B3D2FF;--color-table-top-2: #CCE0FF;--color-table-top-3: #CCE0FF;--color-table-top-4: #8AF3B7;--color-table-top-5: #98F5C1;--color-table-top-6: #A2F7C8;--color-table-top-7: #ACF9CE;--color-table-top-8: #B6FBD5;--color-table-top-9: #BFFDDB;--color-table-top-10: #CCFFE4;--color-table-move-up-10: #8AF3B7;--color-table-move-up-9: #8AF3B7;--color-table-move-up-8: #A2F7C8;--color-table-move-up-7: #A2F7C8;--color-table-move-up-6: #B6FBD5;--color-table-move-up-5: #B6FBD5;--color-table-move-up-4: #BFFDDB;--color-table-move-up-3: #BFFDDB;--color-table-move-up-2: #CCFFE4;--color-table-move-up-1: #CCFFE4;--color-table-move-0: #FCFEFD;--color-table-move-down-1: #FFF1F0;--color-table-move-down-2: #FFF1F0;--color-table-move-down-3: #FFF1F0;--color-table-move-down-4: #FFF1F0;--color-table-move-down-5: #FFE7E6;--color-table-move-down-6: #FFE7E6;--color-table-move-down-7: #FFE7E6;--color-table-move-down-8: #FFD5D4;--color-table-move-down-9: #FFD5D4;--color-table-move-down-10: #FFD5D4;--color-table-down: #FFF1F0;--color-table-up: #CCFFE4;--color-table-down-10: #FFE7E6;--color-table-up-10: #BFFDDB;--color-table-base: var(--color-layout-front-1);--color-table-empty: var(--color-layout-middle);--color-table-not_found: #FFF6C6;--color-snapshot-panel-gradient-1: rgba(255, 255, 255, .5);--color-snapshot-panel-gradient-2: rgba(255, 255, 255, .8);--color-snippet-title: #1A0DAB;--color-snippet-title-visited: #660099;--color-snippet-url: #007700}
1
+ :root{--color-theme-0: #FFFFFF;--color-theme-50: #F9FAFB;--color-theme-75: #F6F7F9;--color-theme-100: #F3F4F6;--color-theme-125: #EDEFF2;--color-theme-150: #E7EAEE;--color-theme-175: #E2E5E9;--color-theme-200: #DCE0E5;--color-theme-225: #D6DBE1;--color-theme-250: #D0D5DC;--color-theme-260: #CAD0D8;--color-theme-275: #C4CBD4;--color-theme-300: #BEC5CF;--color-theme-325: #B8C0CB;--color-theme-350: #B3BBC7;--color-theme-360: #ADB5C2;--color-theme-375: #A7B0BE;--color-theme-400: #A1ABBA;--color-theme-410: #9BA6B5;--color-theme-420: #95A0B1;--color-theme-430: #8F9BAD;--color-theme-440: #8A96A8;--color-theme-450: #8491A4;--color-theme-460: #7E8BA0;--color-theme-465: #78869C;--color-theme-470: #728197;--color-theme-475: #6C7B93;--color-theme-480: #68778D;--color-theme-485: #637287;--color-theme-500: #5F6D81;--color-theme-550: #5B687B;--color-theme-575: #576375;--color-theme-600: #525E70;--color-theme-625: #4E596A;--color-theme-650: #4A5564;--color-theme-675: #454F5E;--color-theme-700: #414A58;--color-theme-710: #3D4552;--color-theme-725: #38404C;--color-theme-750: #343B47;--color-theme-800: #303641;--color-theme-850: #2B323B;--color-theme-900: #272D35;--color-theme-925: #23282F;--color-theme-950: #1E2329;--color-theme-955: #1A1E23;--color-theme-960: #16191D;--color-theme-965: #111318;--color-theme-970: #0D0F12;--color-theme-1000: #000000;--color-white: rgba(255, 255, 255, 1);--color-black: rgba(0, 0, 0, 1);--color-primary-25: #F5F9FF;--color-primary-50: #EBF4FF;--color-primary-100: #D6E9FF;--color-primary-125: #CCE3FF;--color-primary-150: #C2DDFF;--color-primary-200: #B8D8FF;--color-primary-225: #A3CDFF;--color-primary-250: #8FC1FF;--color-primary-275: #7AB6FF;--color-primary-300: #66ABFF;--color-primary-350: #52A0FF;--color-primary-400: #3D94FF;--color-primary-450: #2D8AFB;--color-primary-500: #1E7FF6;--color-primary-550: #0F74F0;--color-primary-600: #136BD8;--color-primary-650: #1563C1;--color-primary-700: #175AAB;--color-primary-720: #185095;--color-primary-740: #184781;--color-primary-760: #183E6D;--color-primary-780: #16355A;--color-primary-800: #142B48;--color-primary-825: #18293E;--color-primary-850: #1C2736;--color-primary-900: #1C2736;--color-primary-950: #1F252E;--color-positive-25: #F6FDF8;--color-positive-50: #EEFCF1;--color-positive-100: #E5FAEA;--color-positive-125: #D8F8E0;--color-positive-150: #C2F4CF;--color-positive-200: #B1F1C1;--color-positive-225: #A0EEB3;--color-positive-250: #8EEBA5;--color-positive-275: #7DE898;--color-positive-300: #6CE58A;--color-positive-350: #5AE27C;--color-positive-400: #4DDB73;--color-positive-450: #41D265;--color-positive-500: #36C95B;--color-positive-550: #36B556;--color-positive-600: #36A150;--color-positive-650: #348D4B;--color-positive-700: #327B44;--color-positive-720: #2F6A3E;--color-positive-740: #2C5934;--color-positive-760: #27492B;--color-positive-780: #223A23;--color-positive-800: #1C2C1C;--color-positive-825: #161E15;--color-positive-850: #141A14;--color-positive-900: #131612;--color-positive-950: #111311;--color-warning-25: #FFFDFA;--color-warning-50: #FFF7F0;--color-warning-100: #FFF3E6;--color-warning-125: #FFEDDB;--color-warning-150: #FFE8CF;--color-warning-200: #FFE3C7;--color-warning-225: #FFDEBF;--color-warning-250: #FFD7A8;--color-warning-275: #FFCB94;--color-warning-300: #FFBF80;--color-warning-350: #FFB56B;--color-warning-400: #FFAB57;--color-warning-450: #FFA042;--color-warning-500: #FB9632;--color-warning-550: #F48B1B;--color-warning-600: #F08214;--color-warning-650: #DD780C;--color-warning-700: #C56D1C;--color-warning-720: #AF6420;--color-warning-740: #9A511A;--color-warning-760: #7F3D19;--color-warning-780: #71321E;--color-warning-800: #5E2517;--color-warning-825: #4C2015;--color-warning-850: #421B1A;--color-warning-900: #391F1E;--color-warning-950: #312121;--color-negative-25: #FFFAFA;--color-negative-50: #FFF1F0;--color-negative-100: #FFE6E5;--color-negative-125: #FFDCDB;--color-negative-150: #FFD3D1;--color-negative-200: #FFC9C7;--color-negative-225: #FFBFBD;--color-negative-250: #FFABA8;--color-negative-275: #FF9894;--color-negative-300: #FF8480;--color-negative-350: #FF706B;--color-negative-400: #FF5D57;--color-negative-450: #FF4842;--color-negative-500: #F73C36;--color-negative-550: #F12E27;--color-negative-600: #EB2019;--color-negative-650: #D81E18;--color-negative-700: #C1201A;--color-negative-720: #AB211C;--color-negative-740: #96211D;--color-negative-760: #821F1C;--color-negative-780: #6E1F1C;--color-negative-800: #5B1C1A;--color-negative-825: #4A1917;--color-negative-850: #401D1C;--color-negative-900: #37201F;--color-negative-950: #2F2222;--color-info-25: #FCFAFF;--color-info-50: #F9F5FF;--color-info-100: #F6F0FF;--color-info-125: #F1E5FF;--color-info-150: #EBDBFF;--color-info-200: #E5D1FF;--color-info-225: #DFC7FF;--color-info-250: #D9BDFF;--color-info-275: #D4B2FF;--color-info-300: #C89EFF;--color-info-350: #BC8AFF;--color-info-400: #B175FF;--color-info-450: #A561FF;--color-info-500: #9A4DFF;--color-info-550: #8F38FF;--color-info-600: #8428FB;--color-info-650: #7919F5;--color-info-700: #6F0FEB;--color-info-720: #6612D3;--color-info-740: #5E15BC;--color-info-760: #5517A6;--color-info-780: #441891;--color-info-800: #36187C;--color-info-825: #2A1769;--color-info-850: #201556;--color-info-900: #181344;--color-info-950: #1E1D2B;--color-layer-1: rgba(97, 121, 158, .1);--color-layer-2: rgba(97, 121, 158, .14);--color-layer-3: rgba(97, 121, 158, .18);--color-layer-4: rgba(97, 121, 158, .24);--color-layer-primary-1: rgba(45, 110, 251, .08);--color-layer-primary-2: rgba(45, 110, 251, .12);--color-layer-primary-3: rgba(45, 110, 251, .18);--color-layer-primary-4: rgba(45, 110, 251, .24);--color-layer-positive-1: rgba(54, 181, 86, .08);--color-layer-positive-2: rgba(54, 181, 86, .12);--color-layer-positive-3: rgba(54, 181, 86, .18);--color-layer-positive-4: rgba(54, 181, 86, .24);--color-layer-warning-1: rgba(240, 130, 20, .08);--color-layer-warning-2: rgba(240, 130, 20, .12);--color-layer-warning-3: rgba(240, 130, 20, .18);--color-layer-warning-4: rgba(240, 130, 20, .24);--color-layer-negative-1: rgba(241, 46, 39, .08);--color-layer-negative-2: rgba(241, 46, 39, .12);--color-layer-negative-3: rgba(241, 46, 39, .18);--color-layer-negative-4: rgba(241, 46, 39, .24);--color-layer-info-1: rgba(165, 97, 255, .08);--color-layer-info-2: rgba(165, 97, 255, .12);--color-layer-info-3: rgba(165, 97, 255, .18);--color-layer-info-4: rgba(165, 97, 255, .24);--color-fill-secondary-0: #FFFFFF;--color-fill-secondary-100: #F3F6FA;--color-fill-secondary-150: #E5EBF3;--color-fill-secondary-200: #DBE3EC;--color-fill-secondary-250: #CCD3DE;--color-fill-secondary-300: #BFC6D2;--color-fill-secondary-350: #ACB5C1;--color-fill-secondary-400: #A0AAB6;--color-fill-secondary-450: #838D9C;--color-fill-secondary-500: #68707C;--color-fill-secondary-550: #606771;--color-fill-secondary-600: #595F68;--color-fill-secondary-650: #4E5259;--color-fill-secondary-700: #484B50;--color-fill-secondary-750: #383A3E;--color-fill-secondary-800: #303234;--color-fill-secondary-850: #2D2F30;--color-fill-secondary-900: #28292A;--color-fill-secondary-950: #212122;--color-fill-secondary-960: #1C1C1D;--color-fill-secondary-970: #161617;--color-fill-secondary-1000: #000000;--top-shadow-xs: 0px 0px 3px rgba(112, 144, 176, .07), 0px 5px 25px rgba(112, 144, 176, .06);--top-shadow-s: 0px 0px 3px rgba(112, 144, 176, .07), 0px 5px 25px rgba(112, 144, 176, .12);--top-shadow: 0px 0px 4px rgba(4, 9, 84, .08), 0px 4px 32px rgba(4, 9, 84, .1);--top-shadow-b: 0px 0px 4px rgba(4, 36, 84, .08), 0px 18px 32px rgba(4, 25, 84, .18);--top-shadow-darken-1: inset 1000px 1000px 1000px 1000px rgba(0, 0, 0, .03);--top-shadow-darken-2: inset 1000px 1000px 1000px 1000px rgba(0, 0, 0, .09);--top-shadow-darken-3: inset 1000px 1000px 1000px 1000px rgba(0, 0, 0, .18);--color-bg-preloader: rgba(255, 255, 255, .01)}:root{--color-bg-shading-1: var(--color-theme-0);--color-bg-shading-2: var(--color-theme-50);--color-bg-shading-3: var(--color-theme-100);--color-bg-shading-4: var(--color-theme-125);--color-bg-shading-5: var(--color-theme-150);--color-bg-shading-6: var(--color-theme-175);--color-bg-shading-7: var(--color-theme-200);--color-bg-inverted-1: var(--color-theme-950);--color-bg-inverted-2: var(--color-theme-900);--color-bg-inverted-3: var(--color-theme-800);--color-bg-inverted-4: var(--color-theme-750);--color-bg-inverted-5: var(--color-theme-725);--color-bg-inverted-6: var(--color-theme-700);--color-bg-inverted-7: var(--color-theme-675);--color-bg-inverted-8: var(--color-theme-650);--color-bg-inverted-9: var(--color-theme-625);--color-bg-inverted-10: var(--color-theme-600);--color-bg-primary-1: var(--color-primary-500);--color-bg-primary-2: var(--color-primary-600);--color-bg-primary-3: var(--color-primary-720);--color-bg-positive-1: var(--color-positive-500);--color-bg-positive-2: var(--color-positive-700);--color-bg-positive-3: var(--color-positive-760);--color-bg-warning-1: var(--color-warning-500);--color-bg-warning-2: var(--color-warning-600);--color-bg-warning-3: var(--color-warning-720);--color-bg-negative-1: var(--color-negative-500);--color-bg-negative-2: var(--color-negative-650);--color-bg-negative-3: var(--color-negative-720);--color-bg-info-1: var(--color-info-500);--color-bg-info-2: var(--color-info-650);--color-bg-info-3: var(--color-info-720);--color-text-1: var(--color-theme-850);--color-text-2: var(--color-theme-600);--color-text-3: var(--color-theme-450);--color-text-4: var(--color-theme-300);--color-text-1-inverse: var(--color-theme-0);--color-text-white: var(--color-white);--color-text-primary: var(--color-primary-550);--color-text-primary-alt: var(--color-primary-700);--color-text-positive: var(--color-positive-550);--color-text-positive-alt: var(--color-positive-700);--color-text-warning: var(--color-warning-550);--color-text-warning-alt: var(--color-warning-700);--color-text-negative: var(--color-negative-550);--color-text-negative-alt: var(--color-negative-700);--color-text-info: var(--color-info-550);--color-text-info-alt: var(--color-info-700);--color-line-1: var(--color-theme-200);--color-line-2: var(--color-theme-250);--color-line-3: var(--color-theme-375);--color-line-4: var(--color-theme-470);--color-line-1-opacity: rgba(14, 65, 142, .1);--color-line-2-opacity: rgba(14, 65, 142, .19);--color-line-3-opacity: rgba(14, 65, 142, .39);--color-line-primary-1: var(--color-primary-500);--color-line-primary-2: var(--color-primary-650);--color-line-primary-3: var(--color-primary-720);--color-line-primary-1-opacity: rgba(15, 86, 240, .14);--color-line-primary-2-opacity: rgba(15, 86, 240, .28);--color-line-primary-3-opacity: rgba(15, 86, 240, .38);--color-line-positive-1: var(--color-positive-550);--color-line-positive-2: var(--color-positive-600);--color-line-positive-3: var(--color-positive-720);--color-line-positive-1-opacity: rgba(54, 161, 80, .14);--color-line-positive-2-opacity: rgba(54, 161, 80, .28);--color-line-positive-3-opacity: rgba(54, 161, 80, .38);--color-line-warning-1: var(--color-warning-600);--color-line-warning-2: var(--color-warning-700);--color-line-warning-3: var(--color-warning-740);--color-line-warning-1-opacity: rgba(251, 150, 50, .14);--color-line-warning-2-opacity: rgba(251, 150, 50, .28);--color-line-warning-3-opacity: rgba(251, 150, 50, .38);--color-line-negative-1: var(--color-negative-550);--color-line-negative-2: var(--color-negative-700);--color-line-negative-3: var(--color-negative-740);--color-line-negative-1-opacity: rgba(247, 60, 54, .14);--color-line-negative-2-opacity: rgba(247, 60, 54, .28);--color-line-negative-3-opacity: rgba(247, 60, 54, .38);--color-line-info-1: var(--color-info-500);--color-line-info-2: var(--color-info-550);--color-line-info-3: var(--color-info-600);--color-line-info-1-opacity: rgba(122, 47, 242, .14);--color-line-info-2-opacity: rgba(122, 47, 242, .28);--color-line-info-3-opacity: rgba(122, 47, 242, .38);--scroll-thumb-color: var(--color-theme-250);--scroll-thumb-color-hover: var(--color-theme-300);--scroll-thumb-color-active: var(--color-theme-400);--body-background-color: var(--color-layout-front-1);--content-background-color: var(--color-layout-front-1);--top-forms-option-color: var(--color-primary-500);--top-forms-option-color-hover: var(--color-primary-600)}:root{--color-layout-back: var(--color-theme-200);--color-layout-header: var(--color-theme-0);--color-layout-middle: var(--color-theme-125);--color-layout-front-1: var(--color-theme-0);--color-layout-front-2: #FCFCFD;--color-layout-front-3: #F6F6F8;--color-layout-front-4: #EBEDF1;--color-layout-front-5: #E2E5EA;--color-layout-front-6: #D8DCE2;--color-layout-front-primary-1: #FFFFFF;--color-layout-front-primary-2: #F7F9FF;--color-layout-front-primary-3: #EEF3FF;--color-layout-front-primary-4: #E6EEFF;--color-layout-front-primary-5: #DDE8FE;--color-layout-front-primary-6: #D5E2FE;--color-layout-front-positive-1: #FFFFFF;--color-layout-front-positive-2: #F8FEF9;--color-layout-front-positive-3: #F1FCF4;--color-layout-front-positive-4: #EAFBEF;--color-layout-front-positive-5: #E3F9E8;--color-layout-front-positive-6: #DBF8E3;--color-layout-front-warning-1: #FFFFFF;--color-layout-front-warning-2: #FFFBF7;--color-layout-front-warning-3: #FFF7F0;--color-layout-front-warning-4: #FFF4E8;--color-layout-front-warning-5: #FFF0E1;--color-layout-front-warning-6: #FFECDA;--color-layout-front-negative-1: #FFFFFF;--color-layout-front-negative-2: #FFF7F8;--color-layout-front-negative-3: #FEF0F1;--color-layout-front-negative-4: #FEE7E9;--color-layout-front-negative-5: #FEDFE3;--color-layout-front-negative-6: #FDD7DC;--color-layout-front-info-1: #FFFFFF;--color-layout-front-info-2: #FAF6FF;--color-layout-front-info-3: #F5EEFF;--color-layout-front-info-4: #F0E5FF;--color-layout-front-info-5: #EBDBFE;--color-layout-front-info-6: #E6D4FE}:root{--color-summary-top-3: #3198DD;--color-summary-top-10: #21936C;--color-summary-top-30: #1ABC9C;--color-summary-top-50: #94DA90;--color-summary-top-100: #BCC8C8;--color-summary-top-10000: #FCC53B;--color-table-top-1: #B3D2FF;--color-table-top-2: #CCE0FF;--color-table-top-3: #CCE0FF;--color-table-top-4: #8AF3B7;--color-table-top-5: #98F5C1;--color-table-top-6: #A2F7C8;--color-table-top-7: #ACF9CE;--color-table-top-8: #B6FBD5;--color-table-top-9: #BFFDDB;--color-table-top-10: #CCFFE4;--color-table-move-up-10: #8AF3B7;--color-table-move-up-9: #8AF3B7;--color-table-move-up-8: #A2F7C8;--color-table-move-up-7: #A2F7C8;--color-table-move-up-6: #B6FBD5;--color-table-move-up-5: #B6FBD5;--color-table-move-up-4: #BFFDDB;--color-table-move-up-3: #BFFDDB;--color-table-move-up-2: #CCFFE4;--color-table-move-up-1: #CCFFE4;--color-table-move-0: #FCFEFD;--color-table-move-down-1: #FFF1F0;--color-table-move-down-2: #FFF1F0;--color-table-move-down-3: #FFF1F0;--color-table-move-down-4: #FFF1F0;--color-table-move-down-5: #FFE7E6;--color-table-move-down-6: #FFE7E6;--color-table-move-down-7: #FFE7E6;--color-table-move-down-8: #FFD5D4;--color-table-move-down-9: #FFD5D4;--color-table-move-down-10: #FFD5D4;--color-table-down: #FFF1F0;--color-table-up: #CCFFE4;--color-table-down-10: #FFE7E6;--color-table-up-10: #BFFDDB;--color-table-base: var(--color-layout-front-1);--color-table-empty: var(--color-layout-front-3);--color-table-not_found: #FFF6C6;--color-snapshot-panel-gradient-1: rgba(255, 255, 255, .5);--color-snapshot-panel-gradient-2: rgba(255, 255, 255, .8);--color-snippet-title: #1A0DAB;--color-snippet-title-visited: #660099;--color-snippet-url: #007700}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@topvisor/ui",
3
3
  "private": false,
4
- "version": "1.0.8-fixed",
4
+ "version": "1.0.8-fixed-2",
5
5
  "type": "module",
6
6
  "description": "Topvisor UI-kit Vue",
7
7
  "author": "Topvisor",
@@ -1,2 +1,2 @@
1
- define(["require","exports","vue","../.chunks/forms-CjYoXTEQ.amd","../.chunks/listItem.vue_vue_type_script_setup_true_lang-CEF3WDJ_.amd","../.chunks/menu-D1lnYuWU.amd","../.chunks/utils-x88W55mf.amd","../utils/searchers.amd","../require/css.amd!../assets/project.css"],function(H,K,e,V,M,b,v,w){"use strict";if(typeof e>"u")var e=window.Vue;const q={class:"top-selectorCompetitors"},E={class:"top-ellipsis1"},T=e.defineComponent({__name:"selectorCompetitors",props:e.mergeModels({modelValue:{},items:{},showSelectAllItem:{type:Boolean,default:!0}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const s=o,m=e.useModel(o,"modelValue"),t=e.computed(()=>{if(s.showSelectAllItem)return{icon:"",title:V.useI18n().Common.Select_all,value:"all",content:""}});return(n,u)=>(e.openBlock(),e.createElementBlock("div",q,[e.unref(V.Core).state.isMobile?(e.openBlock(),e.createBlock(M.Popup,{key:0},{opener:e.withCtx(()=>[e.createVNode(V.TopButton,{class:"top-selectorCompetitors_opener",color:"theme",icon:"",icon2:""},{default:e.withCtx(()=>{var l;return[e.createTextVNode(e.toDisplayString((l=n.items.find(r=>{var c;return r.value===((c=m.value)==null?void 0:c[0])}))==null?void 0:l.content),1)]}),_:1})]),contentList:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.items,(l,r)=>{var c;return e.openBlock(),e.createBlock(M._sfc_main$1,{class:e.normalizeClass({"top-active":(c=m.value)==null?void 0:c.includes(l.value)}),"data-top-icon":l.icon,title:l.title,onClick:()=>m.value=[l.value]},{default:e.withCtx(()=>[e.createElementVNode("span",E,e.toDisplayString(l.content),1)]),_:2},1032,["class","data-top-icon","title","onClick"])}),256))]),_:1})):(e.openBlock(),e.createBlock(b.Menu,{key:1,modelValue:m.value,"onUpdate:modelValue":u[0]||(u[0]=l=>m.value=l),items:n.items,isMultiple:!0,styling:"bar",canBeEmptyMultiple:!1,selectAllItem:t.value},null,8,["modelValue","items","selectAllItem"]))]))}}),F={$style:{"top-selectorCompetitors_opener":"top-selectorCompetitors_opener","top-button":"top-button"}},O=V._export_sfc(T,[["__cssModules",F]]),$=(o,s)=>{const m=V.useI18n(),t=e.ref(s.value.keys().next().value??v.dummyIndex),n=e.computed(()=>{const u=new Map;if(s.value.forEach(l=>{let r={value:l.key,title:l.name};o.addSearcherIcon&&(r.icon=w.getSearcherGIcon(l.key)),u.set(l.key,r)}),o.addCompare&&!u.has(v.dummyIndex)){const l={value:"",title:"--------------------",disabled:!0};u.set(l.value,l);const r={value:-1,title:m.Common.Compare};u.set(r.value,r)}return u});return{searcherKey:t,optionBySearcherKey:n}},L=(o,s)=>{var u,l,r;const m=V.useI18n(),t=e.ref(v.dummyIndex);o.modelValue.length===1&&(t.value=o.modelValue[0]),t.value===v.dummyIndex&&(o.forFrequency?t.value=((l=(u=s.value)==null?void 0:u.regionByIndex.values().next().value)==null?void 0:l.key)??v.dummyIndex:t.value=((r=s.value)==null?void 0:r.regionByIndex.keys().next().value)??v.dummyIndex);const n=e.computed(()=>{var g;const c=new Map;return(g=s.value.regionByIndex)==null||g.forEach(i=>{let a=i.name;if(o.forFrequency){const k={value:i.key,title:a};c.has(i.key)||c.set(i.key,k);return}i.device&&(a+=" ("+m.Common["Device_"+i.device]+")");const x=w.getLangLabel(s.value.key||0,i.lang??"");x&&(a+=" / "+x);const f={value:i.index,title:a,icon:i.device?w.getDeviceGIcon(i.device):void 0};c.set(i.index,f)}),c});return e.watch(n,(c,g)=>{var f;if(o.onlySearcher||t.value!==void 0&&c.get(t.value))return;let i=c.keys().next().value;if(t.value===v.dummyIndex||i===v.dummyIndex){t.value=i;return}let a=((f=g==null?void 0:g.get(t.value))==null?void 0:f.title)||"",x=-1;for(const[k,y]of c.entries()){const h=y.title;if(typeof h!="string"||typeof k=="string")break;if(h===a){i=k;break}const I=new RegExp(` \\((${m.Common.Device_1}|${m.Common.Device_2})\\)`);let p=a,B=3;h.indexOf(p)===-1&&(p=a.replace(/^[^a-zа-я]/i,"").replace(I,""),B--),h.indexOf(p)===-1&&(p=a.replace(/ \/.*/,""),B--),h.indexOf(p)===-1&&(p=a.replace(/ \/.*/,""),p=p.replace(/^[^a-zа-я]/i,"").replace(I,""),B--),h.indexOf(p)!==-1&&(B<=x||(x=B,i=k))}t.value=i}),{regionIndex:t,optionByRegionIndex:n}},D=(o,s,m)=>{const t=e.ref([]),n=()=>{if(o.onlySearcher&&s.value){t.value=Array.from(s.value.keys());return}let l=[];if(o.modelValue.length>1)l=[...o.modelValue];else try{l=JSON.parse(localStorage.getItem("ui:project:regionSelector"+o.projectId+":regionsIndexes"))??[]}catch{}l.length&&(l=l.filter(r=>m.value.has(r))),l.length||(l=Array.from(m.value)),t.value=[...l]},u=()=>{t.value.length?localStorage.setItem("ui:project:regionSelector:"+o.projectId+":regionsIndexes",JSON.stringify(t.value)):localStorage.removeItem("ui:project:regionSelector:"+o.projectId+":regionsIndexes")};return e.watch(t,()=>{u()}),o.addCompare&&n(),{regionsIndexes:t}},J=o=>{const s=e.computed(()=>v.genSearcherByKey(o.forFrequency,o.autoRegion,o.searchers)),m=e.computed(()=>s.value.get(n.searcherKey.value)||v.searcherUndefined),t=e.computed(()=>{const a=new Set;return s.value.forEach(x=>{var f;(f=x.regions)==null||f.forEach(k=>{k.index!==-1&&k.index!==v.dummyIndex&&a.add(k.index)})}),a}),n=$(o,s),u=L(o,m),l=D(o,s,t);e.watch(s,()=>{var x,f,k,y,h;if(n.searcherKey.value===-1){l.regionsIndexes.value=l.regionsIndexes.value.filter(I=>t.value.has(I));return}let a=s.value.keys().next().value;s.value.forEach(I=>{var p,B,d;if(u.regionIndex.value&&((p=I.regionByIndex)!=null&&p.has(u.regionIndex.value))&&(a=I.key),!o.onlySearcher){let S;a!==void 0&&(S=(B=s.value.get(a))==null?void 0:B.regionByIndex);const C=(d=s.value.get(I.key))==null?void 0:d.regionByIndex;S!=null&&S.has(v.dummyIndex)&&!(C!=null&&C.has(v.dummyIndex))&&(a=I.key)}}),o.addCompare&&!n.optionBySearcherKey.value.has(v.dummyIndex)&&!u.regionIndex.value&&(x=l.regionsIndexes.value)!=null&&x.length&&(a=-1),o.onlySearcher&&u.regionIndex.value!==v.dummyIndex&&(a=u.regionIndex.value),a!==void 0&&(n.searcherKey.value=a),u.regionIndex.value!==void 0&&!((k=(f=m.value)==null?void 0:f.regionByIndex)!=null&&k.has(u.regionIndex.value))&&(u.regionIndex.value=(h=(y=m.value)==null?void 0:y.regions)==null?void 0:h.keys().next().value)},{immediate:!0});const r=()=>{if(!(n.searcherKey.value===-1||n.searcherKey.value===v.dummyIndex))return n.searcherKey.value},c=()=>{if(o.onlySearcher||u.regionIndex.value===v.dummyIndex)return;let a=u.regionIndex.value;if(o.forFrequency){const x=u.regionIndex.value,f=v.findRegion(o.forFrequency,{searcher_key:r(),key:x},o.searchers);a=f==null?void 0:f.index}return a},g=()=>{const a=r();if(a!==void 0)return s.value.get(a)};return{selectSearcher:n,selectRegion:u,compare:l,searcherByKey:s,allRegionsIndexes:t,getSearcher:g,getRegion:()=>{var x,f;const a=c();if(a!==void 0)return(f=(x=g())==null?void 0:x.regionByIndex)==null?void 0:f.get(a)}}},A=e.defineComponent({__name:"selectorRegion",props:e.mergeModels({projectId:{},searchers:{default:()=>[]},modelValue:{},modelValueSingle:{},addCompare:{type:Boolean},forFrequency:{type:Boolean},autoRegion:{type:Boolean},onlySearcher:{type:Boolean},addChanger:{type:Boolean,default:!0},addSearcherIcon:{type:Boolean,default:!0},addRegionIcon:{type:Boolean,default:!0}},{modelValue:{required:!0},modelModifiers:{},modelValueSingle:{},modelValueSingleModifiers:{}}),emits:e.mergeModels(["compareRegions"],["update:modelValue","update:modelValueSingle"]),setup(o,{expose:s,emit:m}){const t=o,n=e.useModel(o,"modelValue"),u=e.useModel(o,"modelValueSingle"),l=m,{selectSearcher:r,selectRegion:c,compare:g,searcherByKey:i,allRegionsIndexes:a,getSearcher:x,getRegion:f}=J(t),k=()=>{var y;if(window.fieldTemplates&&((y=window.fieldTemplates)!=null&&y.openSelectorRegions)){window.fieldTemplates.openSelectorRegions(i.value,g.regionsIndexes.value,h=>g.regionsIndexes.value=h);return}l("compareRegions",i.value)};return e.watch([c.regionIndex,r.searcherKey,g.regionsIndexes],()=>{if(r.searcherKey.value===-1&&g.regionsIndexes.value.length){if(JSON.stringify(n.value)===JSON.stringify(g.regionsIndexes.value))return;n.value=[...g.regionsIndexes.value]}else n.value=[t.onlySearcher?r.searcherKey.value:c.regionIndex.value];a.value.size||(r.searcherKey.value=v.dummyIndex)}),u.value&&e.watch(u,()=>{n.value=[u.value]},{immediate:!0}),e.watch(n,()=>{var y,h,I,p,B;if(n.value[0]&&(u.value=n.value[0]),t.onlySearcher){if(!n.value.length||n.value.length===1&&!i.value.has(n.value[0])){let d=i.value.keys().next().value;d!==void 0&&(n.value=[d]);return}if(n.value.length>1&&JSON.stringify(n.value)!==JSON.stringify(g.regionsIndexes.value)){n.value=[...g.regionsIndexes.value];return}}else{let d=[...new Set(n.value)],S=(h=(y=i.value.values().next().value)==null?void 0:y.regionByIndex)==null?void 0:h.keys().next().value;if(t.forFrequency&&(S=(B=(p=(I=i.value.values().next().value)==null?void 0:I.regionByIndex)==null?void 0:p.values().next().value)==null?void 0:B.key),!d.length)S!==void 0&&d.push(S);else if(d.length===1){let C=a.value;t.forFrequency&&(C=new Set,i.value.forEach(N=>{N.regionByIndex.forEach(R=>{R.index!==-1&&R.index!==v.dummyIndex&&C.add(R.key)})})),!C.has(d[0])&&d[0]!==-2&&(d=[],S!==void 0&&d.push(S))}else d=d.filter(C=>a.value.has(C)),!d.length&&S!==void 0&&d.push(S);if(JSON.stringify(n.value)!==JSON.stringify(d)){n.value=d;return}}if(!(n.value.length===1&&n.value[0]===(t.onlySearcher?r.searcherKey.value:c.regionIndex.value)))if(t.onlySearcher){if(n.value.length===1){r.searcherKey.value=n.value[0];return}r.searcherKey.value=-1;return}else if(n.value.length===1&&r.searcherKey.value!==-1){c.regionIndex.value=n.value[0];let d;for(const S of i.value.values()){for(const C of S.regionByIndex.values())if((t.forFrequency?C.key:C.index)===c.regionIndex.value){d=S.key;break}if(d!==void 0)break}d!==void 0&&(r.searcherKey.value=d)}else r.searcherKey.value=-1,g.regionsIndexes.value=[...n.value]},{immediate:!0}),s({getSearcher:x,getRegion:f}),(y,h)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-selectorRegion":!0,"top-selectorRegion-onlySearcher":y.onlySearcher})},[e.createVNode(V.Select,{options:e.unref(r).optionBySearcherKey.value,modelValue:e.unref(r).searcherKey.value,"onUpdate:modelValue":h[0]||(h[0]=I=>e.unref(r).searcherKey.value=I),name:"searcher_key",addChanger:y.addChanger},null,8,["options","modelValue","addChanger"]),!y.onlySearcher&&e.unref(r).searcherKey.value!==-1?(e.openBlock(),e.createBlock(V.Select,{key:0,class:"top-select-region",options:e.unref(c).optionByRegionIndex.value,modelValue:e.unref(c).regionIndex.value,"onUpdate:modelValue":h[1]||(h[1]=I=>e.unref(c).regionIndex.value=I),name:y.forFrequency?"region_key":"region_index",addChanger:y.addChanger,"data-top-icon":y.addRegionIcon?"":void 0},null,8,["options","modelValue","name","addChanger","data-top-icon"])):e.createCommentVNode("",!0),y.addCompare&&!y.onlySearcher&&e.unref(r).searcherKey.value===-1?(e.openBlock(),e.createBlock(V.TopButton,{key:1,name:"compare",onClick:k,"data-count-compare-regions-indexes":e.unref(g).regionsIndexes.value.length},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(y.$i18n.Common.Selected_regions),1)]),_:1},8,["data-count-compare-regions-indexes"])):e.createCommentVNode("",!0)],2))}}),z={$style:{"top-select-searcher_key":"top-select-searcher_key","top-selectorRegion":"top-selectorRegion","top-select":"top-select","top-select_select":"top-select_select","top-error":"top-error","top-select-region":"top-select-region","top-selectorRegion-onlySearcher":"top-selectorRegion-onlySearcher"}},U=V._export_sfc(A,[["__cssModules",z]]),G=O,P=U;K.TopSelectorCompetitors=G,K.TopSelectorRegion=P,Object.defineProperty(K,Symbol.toStringTag,{value:"Module"})});
1
+ define(["require","exports","vue","../.chunks/forms-CjYoXTEQ.amd","../.chunks/listItem.vue_vue_type_script_setup_true_lang-CEF3WDJ_.amd","../.chunks/menu-D1lnYuWU.amd","../.chunks/utils-x88W55mf.amd","../utils/searchers.amd","../require/css.amd!../assets/project.css"],function(_,K,e,B,M,b,h,w){"use strict";if(typeof e>"u")var e=window.Vue;const q={class:"top-selectorCompetitors"},E={class:"top-ellipsis1"},T=e.defineComponent({__name:"selectorCompetitors",props:e.mergeModels({modelValue:{},items:{},showSelectAllItem:{type:Boolean,default:!0}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const i=o,m=e.useModel(o,"modelValue"),t=e.computed(()=>{if(i.showSelectAllItem)return{icon:"",title:B.useI18n().Common.Select_all,value:"all",content:""}});return(n,u)=>(e.openBlock(),e.createElementBlock("div",q,[e.unref(B.Core).state.isMobile?(e.openBlock(),e.createBlock(M.Popup,{key:0},{opener:e.withCtx(()=>[e.createVNode(B.TopButton,{class:"top-selectorCompetitors_opener",color:"theme",icon:"",icon2:""},{default:e.withCtx(()=>{var l;return[e.createTextVNode(e.toDisplayString((l=n.items.find(r=>{var d;return r.value===((d=m.value)==null?void 0:d[0])}))==null?void 0:l.content),1)]}),_:1})]),contentList:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.items,(l,r)=>{var d;return e.openBlock(),e.createBlock(M._sfc_main$1,{class:e.normalizeClass({"top-active":(d=m.value)==null?void 0:d.includes(l.value)}),"data-top-icon":l.icon,title:l.title,onClick:()=>m.value=[l.value]},{default:e.withCtx(()=>[e.createElementVNode("span",E,e.toDisplayString(l.content),1)]),_:2},1032,["class","data-top-icon","title","onClick"])}),256))]),_:1})):(e.openBlock(),e.createBlock(b.Menu,{key:1,modelValue:m.value,"onUpdate:modelValue":u[0]||(u[0]=l=>m.value=l),items:n.items,isMultiple:!0,styling:"bar",canBeEmptyMultiple:!1,selectAllItem:t.value},null,8,["modelValue","items","selectAllItem"]))]))}}),F={$style:{"top-selectorCompetitors_opener":"top-selectorCompetitors_opener","top-button":"top-button"}},O=B._export_sfc(T,[["__cssModules",F]]),$=(o,i)=>{const m=B.useI18n(),t=e.ref(i.value.keys().next().value??h.dummyIndex),n=e.computed(()=>{const u=new Map;if(i.value.forEach(l=>{let r={value:l.key,title:l.name};o.addSearcherIcon&&(r.icon=w.getSearcherGIcon(l.key)),u.set(l.key,r)}),o.addCompare&&!u.has(h.dummyIndex)){const l={value:"",title:"--------------------",disabled:!0};u.set(l.value,l);const r={value:-1,title:m.Common.Compare};u.set(r.value,r)}return u});return{searcherKey:t,optionBySearcherKey:n}},L=(o,i)=>{var u,l,r;const m=B.useI18n(),t=e.ref(h.dummyIndex);o.modelValue.length===1&&(t.value=o.modelValue[0]),t.value===h.dummyIndex&&(o.forFrequency?t.value=((l=(u=i.value)==null?void 0:u.regionByIndex.values().next().value)==null?void 0:l.key)??h.dummyIndex:t.value=((r=i.value)==null?void 0:r.regionByIndex.keys().next().value)??h.dummyIndex);const n=e.computed(()=>{var y;const d=new Map;return(y=i.value.regionByIndex)==null||y.forEach(s=>{let a=s.name;if(o.forFrequency){const I={value:s.key,title:a};d.has(s.key)||d.set(s.key,I);return}s.device&&(a+=" ("+m.Common["Device_"+s.device]+")");const x=w.getLangLabel(i.value.key||0,s.lang??"");x&&(a+=" / "+x);const f={value:s.index,title:a,icon:s.device?w.getDeviceGIcon(s.device):void 0};d.set(s.index,f)}),d});return e.watch(n,(d,y)=>{var f;if(o.onlySearcher||t.value!==void 0&&d.get(t.value))return;let s=d.keys().next().value;if(t.value===h.dummyIndex||s===h.dummyIndex){t.value=s;return}let a=((f=y==null?void 0:y.get(t.value))==null?void 0:f.title)||"",x=-1;for(const[I,g]of d.entries()){const v=g.title;if(typeof v!="string"||typeof I=="string")break;if(v===a){s=I;break}const k=new RegExp(` \\((${m.Common.Device_1}|${m.Common.Device_2})\\)`);let p=a,C=3;v.indexOf(p)===-1&&(p=a.replace(/^[^a-zа-я]/i,"").replace(k,""),C--),v.indexOf(p)===-1&&(p=a.replace(/ \/.*/,""),C--),v.indexOf(p)===-1&&(p=a.replace(/ \/.*/,""),p=p.replace(/^[^a-zа-я]/i,"").replace(k,""),C--),v.indexOf(p)!==-1&&(C<=x||(x=C,s=I))}t.value=s}),{regionIndex:t,optionByRegionIndex:n}},A=(o,i,m)=>{const t=e.ref([]),n=()=>{if(o.onlySearcher&&i.value){t.value=Array.from(i.value.keys());return}let l=[];if(o.modelValue.length>1)l=[...o.modelValue];else try{l=JSON.parse(localStorage.getItem("ui:project:regionSelector"+o.projectId+":regionsIndexes"))??[]}catch{}l.length&&(l=l.filter(r=>m.value.has(r))),l.length||(l=Array.from(m.value)),t.value=[...l]},u=()=>{t.value.length?localStorage.setItem("ui:project:regionSelector:"+o.projectId+":regionsIndexes",JSON.stringify(t.value)):localStorage.removeItem("ui:project:regionSelector:"+o.projectId+":regionsIndexes")};return e.watch(t,()=>{u()}),o.addCompare&&n(),{regionsIndexes:t}},D=o=>{const i=e.computed(()=>h.genSearcherByKey(o.forFrequency,o.autoRegion,o.searchers)),m=e.computed(()=>i.value.get(n.searcherKey.value)||h.searcherUndefined),t=e.computed(()=>{const a=new Set;return i.value.forEach(x=>{var f;(f=x.regions)==null||f.forEach(I=>{I.index!==-1&&I.index!==h.dummyIndex&&a.add(I.index)})}),a}),n=$(o,i),u=L(o,m),l=A(o,i,t);e.watch(i,()=>{var x,f,I,g;if(o.onlySearcher?l.regionsIndexes.value=Array.from(i.value.keys()):l.regionsIndexes.value=l.regionsIndexes.value.filter(v=>t.value.has(v)),n.searcherKey.value===-1)return;let a=i.value.keys().next().value;i.value.forEach(v=>{var k,p,C;if(o.onlySearcher&&v.key===n.searcherKey.value){a=n.searcherKey.value;return}if(u.regionIndex.value&&((k=v.regionByIndex)!=null&&k.has(u.regionIndex.value))&&(a=v.key),!o.onlySearcher){let c;a!==void 0&&(c=(p=i.value.get(a))==null?void 0:p.regionByIndex);const S=(C=i.value.get(v.key))==null?void 0:C.regionByIndex;c!=null&&c.has(h.dummyIndex)&&!(S!=null&&S.has(h.dummyIndex))&&(a=v.key)}}),a!==void 0&&(n.searcherKey.value=a),u.regionIndex.value!==void 0&&!((f=(x=m.value)==null?void 0:x.regionByIndex)!=null&&f.has(u.regionIndex.value))&&(u.regionIndex.value=(g=(I=m.value)==null?void 0:I.regions)==null?void 0:g.keys().next().value)},{immediate:!0});const r=()=>{if(!(n.searcherKey.value===-1||n.searcherKey.value===h.dummyIndex))return n.searcherKey.value},d=()=>{if(o.onlySearcher||u.regionIndex.value===h.dummyIndex)return;let a=u.regionIndex.value;if(o.forFrequency){const x=u.regionIndex.value,f=h.findRegion(o.forFrequency,{searcher_key:r(),key:x},o.searchers);a=f==null?void 0:f.index}return a},y=()=>{const a=r();if(a!==void 0)return i.value.get(a)};return{selectSearcher:n,selectRegion:u,compare:l,searcherByKey:i,allRegionsIndexes:t,getSearcher:y,getRegion:()=>{var x,f;const a=d();if(a!==void 0)return(f=(x=y())==null?void 0:x.regionByIndex)==null?void 0:f.get(a)}}},J=e.defineComponent({__name:"selectorRegion",props:e.mergeModels({projectId:{},searchers:{default:()=>[]},modelValue:{},modelValueSingle:{},addCompare:{type:Boolean},forFrequency:{type:Boolean},autoRegion:{type:Boolean},onlySearcher:{type:Boolean},addChanger:{type:Boolean,default:!0},addSearcherIcon:{type:Boolean,default:!0},addRegionIcon:{type:Boolean,default:!0}},{modelValue:{required:!0},modelModifiers:{},modelValueSingle:{},modelValueSingleModifiers:{}}),emits:e.mergeModels(["compareRegions"],["update:modelValue","update:modelValueSingle"]),setup(o,{expose:i,emit:m}){const t=o,n=e.useModel(o,"modelValue"),u=e.useModel(o,"modelValueSingle"),l=m,{selectSearcher:r,selectRegion:d,compare:y,searcherByKey:s,allRegionsIndexes:a,getSearcher:x,getRegion:f}=D(t),I=()=>{var g;if(window.fieldTemplates&&((g=window.fieldTemplates)!=null&&g.openSelectorRegions)){window.fieldTemplates.openSelectorRegions(s.value,y.regionsIndexes.value,v=>y.regionsIndexes.value=v);return}l("compareRegions",s.value)};return e.watch([d.regionIndex,r.searcherKey,y.regionsIndexes],()=>{if(r.searcherKey.value===-1&&y.regionsIndexes.value.length){if(JSON.stringify(n.value)===JSON.stringify(y.regionsIndexes.value))return;n.value=[...y.regionsIndexes.value]}else n.value=[t.onlySearcher?r.searcherKey.value:d.regionIndex.value];!t.onlySearcher&&!a.value.size&&(r.searcherKey.value=h.dummyIndex)}),u.value&&e.watch(u,()=>{n.value=[u.value]},{immediate:!0}),e.watch(n,()=>{var g,v,k,p,C;if(n.value[0]&&(u.value=n.value[0]),t.onlySearcher){if(!n.value.length||n.value.length===1&&!s.value.has(n.value[0])){let c=s.value.keys().next().value;c!==void 0&&(n.value=[c]);return}if(n.value.length>1&&JSON.stringify(n.value)!==JSON.stringify(y.regionsIndexes.value)){n.value=[...y.regionsIndexes.value];return}}else{let c=[...new Set(n.value)],S=(v=(g=s.value.values().next().value)==null?void 0:g.regionByIndex)==null?void 0:v.keys().next().value;if(t.forFrequency&&(S=(C=(p=(k=s.value.values().next().value)==null?void 0:k.regionByIndex)==null?void 0:p.values().next().value)==null?void 0:C.key),!c.length)S!==void 0&&c.push(S);else if(c.length===1){let V=a.value;t.forFrequency&&(V=new Set,s.value.forEach(N=>{N.regionByIndex.forEach(R=>{R.index!==-1&&R.index!==h.dummyIndex&&V.add(R.key)})})),!V.has(c[0])&&c[0]!==-2&&(c=[],S!==void 0&&c.push(S))}else c=c.filter(V=>a.value.has(V)),!c.length&&S!==void 0&&c.push(S);if(JSON.stringify(n.value)!==JSON.stringify(c)){n.value=c;return}}if(!(n.value.length===1&&n.value[0]===(t.onlySearcher?r.searcherKey.value:d.regionIndex.value)))if(t.onlySearcher){if(n.value.length===1){r.searcherKey.value=n.value[0];return}r.searcherKey.value=-1;return}else if(n.value.length===1&&r.searcherKey.value!==-1){d.regionIndex.value=n.value[0];let c;for(const S of s.value.values()){for(const V of S.regionByIndex.values())if((t.forFrequency?V.key:V.index)===d.regionIndex.value){c=S.key;break}if(c!==void 0)break}c!==void 0&&(r.searcherKey.value=c)}else r.searcherKey.value=-1,y.regionsIndexes.value=[...n.value]},{immediate:!0}),i({getSearcher:x,getRegion:f}),(g,v)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-selectorRegion":!0,"top-selectorRegion-onlySearcher":g.onlySearcher})},[e.createVNode(B.Select,{options:e.unref(r).optionBySearcherKey.value,modelValue:e.unref(r).searcherKey.value,"onUpdate:modelValue":v[0]||(v[0]=k=>e.unref(r).searcherKey.value=k),name:"searcher_key",addChanger:g.addChanger},null,8,["options","modelValue","addChanger"]),!g.onlySearcher&&e.unref(r).searcherKey.value!==-1?(e.openBlock(),e.createBlock(B.Select,{key:0,class:"top-select-region",options:e.unref(d).optionByRegionIndex.value,modelValue:e.unref(d).regionIndex.value,"onUpdate:modelValue":v[1]||(v[1]=k=>e.unref(d).regionIndex.value=k),name:g.forFrequency?"region_key":"region_index",addChanger:g.addChanger,"data-top-icon":g.addRegionIcon?"":void 0},null,8,["options","modelValue","name","addChanger","data-top-icon"])):e.createCommentVNode("",!0),g.addCompare&&!g.onlySearcher&&e.unref(r).searcherKey.value===-1?(e.openBlock(),e.createBlock(B.TopButton,{key:1,name:"compare",onClick:I,"data-count-compare-regions-indexes":e.unref(y).regionsIndexes.value.length},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(g.$i18n.Common.Selected_regions),1)]),_:1},8,["data-count-compare-regions-indexes"])):e.createCommentVNode("",!0)],2))}}),z={$style:{"top-select-searcher_key":"top-select-searcher_key","top-selectorRegion":"top-selectorRegion","top-select":"top-select","top-select_select":"top-select_select","top-error":"top-error","top-select-region":"top-select-region","top-selectorRegion-onlySearcher":"top-selectorRegion-onlySearcher"}},U=B._export_sfc(J,[["__cssModules",z]]),G=O,P=U;K.TopSelectorCompetitors=G,K.TopSelectorRegion=P,Object.defineProperty(K,Symbol.toStringTag,{value:"Module"})});
2
2
  //# sourceMappingURL=project.amd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"project.amd.js","sources":["../../src/components/project/selectorCompetitors/selectorCompetitors.vue","../../src/components/project/selectorRegion/composables/selectSearcher.ts","../../src/components/project/selectorRegion/composables/selectRegion.ts","../../src/components/project/selectorRegion/composables/compare.ts","../../src/components/project/selectorRegion/composables/selectorRegion.ts","../../src/components/project/selectorRegion/selectorRegion.vue","../../src/components/project/project.ts"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport type { Props } from './selectorCompetitors';\r\nimport Core from '@/core/core/core';\r\nimport Button from '@/components/forms/button/button.vue';\r\nimport Popup from '@/components/popup/popup/popup.vue';\r\nimport ListItem from '@/components/popup/popup/listItem.vue';\r\nimport Menu from '@/components/formsExt/menu/menu.vue';\r\nimport { useI18n } from '@/core/plugins/i18n';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tshowSelectAllItem: true,\r\n});\r\nconst model = defineModel<Props['modelValue']>();\r\n\r\nconst selectAllItem = computed(() => {\r\n\tif (props.showSelectAllItem) {\r\n\t\treturn {\r\n\t\t\ticon: '',\r\n\t\t\ttitle: useI18n().Common.Select_all,\r\n\t\t\tvalue: 'all',\r\n\t\t\tcontent: '',\r\n\t\t};\r\n\t}\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<div class=\"top-selectorCompetitors\">\r\n\t\t<Popup v-if=\"Core.state.isMobile\">\r\n\t\t\t<template #opener>\r\n\t\t\t\t<Button\r\n\t\t\t\t\tclass=\"top-selectorCompetitors_opener\"\r\n\t\t\t\t\tcolor=\"theme\"\r\n\t\t\t\t\ticon=\"\"\r\n\t\t\t\t\ticon2=\"\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{ items.find((item) => item.value === model?.[0])?.content }}\r\n\t\t\t\t</Button>\r\n\t\t\t</template>\r\n\r\n\t\t\t<template #contentList>\r\n\t\t\t\t<ListItem\r\n\t\t\t\t\tv-for=\"(item, index) in items\"\r\n\t\t\t\t\t:class=\"{\r\n\t\t\t\t\t\t'top-active': model?.includes(item.value)\r\n\t\t\t\t\t}\"\r\n\t\t\t\t\t:data-top-icon=\"item.icon\"\r\n\t\t\t\t\t:title=\"item.title\"\r\n\t\t\t\t\t@click=\"() => model = [item.value]\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<span class=\"top-ellipsis1\">\r\n\t\t\t\t\t\t{{ item.content }}\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</ListItem>\r\n\t\t\t</template>\r\n\t\t</Popup>\r\n\r\n\t\t<Menu\r\n\t\t\tv-else\r\n\t\t\tv-model=\"model\"\r\n\t\t\t:items=\"items\"\r\n\t\t\t:isMultiple=\"true\"\r\n\t\t\tstyling=\"bar\"\r\n\t\t\t:canBeEmptyMultiple=\"false\"\r\n\t\t\t:selectAllItem=\"selectAllItem\"\r\n\t\t/>\r\n\t</div>\r\n</template>\r\n\r\n<style module>\r\n.top-selectorCompetitors_opener.top-button {\r\n\twidth: 100%;\r\n}\r\n</style>\r\n","import { computed, type ComputedRef, ref } from 'vue';\r\nimport { useI18n } from '@/core/plugins/i18n';\r\nimport type { Props, SearcherByKey } from '../selectorRegion';\r\nimport type { Option, Options } from '@/components/forms/select/select';\r\nimport { dummyIndex } from '../utils/consts';\r\nimport { getSearcherGIcon } from '@/core/utils/searchers';\r\n\r\n/**\r\n * Создание и управление реактивными переменными для выбора ПС\r\n *\r\n * @param props - входные props компонента\r\n * @param mapSearchers - Map ПС (реактивная)\r\n */\r\nexport const useSelectSearcher = (\r\n\tprops: Props,\r\n\tmapSearchers: ComputedRef<SearcherByKey>,\r\n) => {\r\n\tconst i18n = useI18n();\r\n\r\n\t/**\r\n\t * Ключ выбранной поисковой системы\r\n\t */\r\n\tconst searcherKey = ref(mapSearchers.value.keys().next().value ?? dummyIndex);\r\n\r\n\t/**\r\n\t * Коллекция опций для выбора ПС\r\n\t */\r\n\tconst optionBySearcherKey = computed(() => {\r\n\t\tconst res: Options = new Map();\r\n\t\tmapSearchers.value.forEach((searcher) => {\r\n\t\t\tlet option: Option = {\r\n\t\t\t\tvalue: searcher.key,\r\n\t\t\t\ttitle: searcher.name,\r\n\t\t\t};\r\n\r\n\t\t\tif (props.addSearcherIcon) option.icon = getSearcherGIcon(searcher.key);\r\n\r\n\t\t\tres.set(searcher.key, option);\r\n\t\t});\r\n\r\n\t\t// добавить режим сравнения, если есть хотя бы одна ПС\r\n\t\tif (props.addCompare && !res.has(dummyIndex)) {\r\n\t\t\tconst dummyOption: Option = {\r\n\t\t\t\tvalue: '',\r\n\t\t\t\ttitle: '--------------------',\r\n\t\t\t\tdisabled: true,\r\n\t\t\t};\r\n\t\t\tres.set(dummyOption.value, dummyOption);\r\n\r\n\t\t\tconst compareOption: Option = {\r\n\t\t\t\tvalue: -1,\r\n\t\t\t\ttitle: i18n.Common.Compare!,\r\n\t\t\t};\r\n\t\t\tres.set(compareOption.value, compareOption);\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t});\r\n\r\n\treturn {\r\n\t\tsearcherKey,\r\n\t\toptionBySearcherKey,\r\n\t};\r\n};\r\n","import { computed, type ComputedRef, ref, watch } from 'vue';\r\nimport { useI18n } from '@/core/plugins/i18n';\r\nimport { getDeviceGIcon, getLangLabel } from '@/core/utils/searchers';\r\nimport type { Option } from '@/components/forms/select/select';\r\nimport { dummyIndex } from '../utils/consts';\r\nimport type { Props, Region, SearcherIndexed } from '../selectorRegion';\r\n\r\n/**\r\n * Создание и управление реактивными переменными для выбора региона\r\n *\r\n * @param props - входные props компонента\r\n * @param activeSearcherIndexed - объект активной поисковой системы (реактивная)\r\n * @param regionsIndexes - входные индексы регионов/ПС\r\n */\r\nexport const useSelectRegion = (props: Props, activeSearcherIndexed: ComputedRef<SearcherIndexed>) => {\r\n\tconst i18n = useI18n();\r\n\r\n\t/**\r\n\t * Индекс выбранного региона\r\n\t */\r\n\tconst regionIndex = ref(dummyIndex);\r\n\r\n\tif (props.modelValue.length === 1) {\r\n\t\tregionIndex.value = props.modelValue[0];\r\n\t}\r\n\r\n\tif (regionIndex.value === dummyIndex) {\r\n\t\tif (props.forFrequency) {\r\n\t\t\t// в качетсве ключа используется region.key, а не region.index\r\n\t\t\tregionIndex.value = activeSearcherIndexed.value?.regionByIndex.values().next().value?.key ?? dummyIndex;\r\n\t\t} else {\r\n\t\t\tregionIndex.value = activeSearcherIndexed.value?.regionByIndex.keys().next().value ?? dummyIndex;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Коллекция опций для выбора региона\r\n\t */\r\n\tconst optionByRegionIndex = computed(() => {\r\n\t\tconst options = new Map<number, Option>();\r\n\r\n\t\tactiveSearcherIndexed.value.regionByIndex?.forEach((region) => {\r\n\t\t\tlet regionLabel = region.name;\r\n\r\n\t\t\t// на частоту в текущей версии устройство и язык не влияют\r\n\t\t\t// обратите внимание, в качетсве ключа используется region.key, а не region.index\r\n\t\t\tif (props.forFrequency) {\r\n\t\t\t\tconst option: Option = {\r\n\t\t\t\t\tvalue: region.key,\r\n\t\t\t\t\ttitle: regionLabel,\r\n\t\t\t\t};\r\n\t\t\t\tif (!options.has(region.key)) options.set(region.key, option);\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (region.device) {\r\n\t\t\t\tregionLabel += ' (' + i18n.Common['Device_' + region.device] + ')';\r\n\t\t\t}\r\n\r\n\t\t\tconst langLabel = getLangLabel(activeSearcherIndexed.value.key || 0, region.lang ?? '');\r\n\t\t\tif (langLabel) regionLabel += ' / ' + langLabel;\r\n\r\n\t\t\tconst option: Option = {\r\n\t\t\t\tvalue: region.index,\r\n\t\t\t\ttitle: regionLabel,\r\n\t\t\t\ticon: region.device ? getDeviceGIcon(region.device) : undefined,\r\n\t\t\t};\r\n\r\n\t\t\toptions.set(region.index, option);\r\n\t\t});\r\n\r\n\t\treturn options;\r\n\t});\r\n\r\n\t/**\r\n\t * Выбор максимально похожего региона в новой коллекции регионов\r\n\t */\r\n\twatch(optionByRegionIndex, (optionByRegionIndex, oldOptionByRegionIndex) => {\r\n\t\tif (props.onlySearcher || regionIndex.value !== undefined && optionByRegionIndex.get(regionIndex.value)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet newRegionIndex = optionByRegionIndex.keys().next().value as Region['index'];\r\n\t\tif (regionIndex.value === dummyIndex || newRegionIndex === dummyIndex) {\r\n\t\t\tregionIndex.value = newRegionIndex;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet regionName = (oldOptionByRegionIndex?.get(regionIndex.value) as Option)?.title || '';\r\n\t\tlet regionMatchLevel = -1;\r\n\t\tfor (const [index, option] of optionByRegionIndex.entries()) {\r\n\t\t\tconst title = (option as Option).title;\r\n\r\n\t\t\tif (typeof title !== 'string' || typeof index === 'string') {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\t// полное совпадение\r\n\t\t\tif (title === regionName) {\r\n\t\t\t\tnewRegionIndex = index;\r\n\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tconst regexpDevice = new RegExp(` \\\\((${i18n.Common['Device_1']}|${i18n.Common['Device_2']})\\\\)`);\r\n\t\t\tlet regionNameCompare = regionName;\r\n\t\t\tlet regionMatchLevelI = 3;\r\n\r\n\t\t\t// без устройства\r\n\t\t\tif (title.indexOf(regionNameCompare) === -1) {\r\n\t\t\t\tregionNameCompare = regionName.replace(/^[^a-zа-я]/i, '').replace(regexpDevice, '');\r\n\r\n\t\t\t\tregionMatchLevelI--;\r\n\t\t\t}\r\n\r\n\t\t\t// без языка\r\n\t\t\tif (title.indexOf(regionNameCompare) === -1) {\r\n\t\t\t\tregionNameCompare = regionName.replace(/ \\/.*/, '');\r\n\r\n\t\t\t\tregionMatchLevelI--;\r\n\t\t\t}\r\n\r\n\t\t\t// без устройства и без языка\r\n\t\t\tif (title.indexOf(regionNameCompare) === -1) {\r\n\t\t\t\tregionNameCompare = regionName.replace(/ \\/.*/, '');\r\n\t\t\t\tregionNameCompare = regionNameCompare.replace(/^[^a-zа-я]/i, '').replace(regexpDevice, '');\r\n\r\n\t\t\t\tregionMatchLevelI--;\r\n\t\t\t}\r\n\r\n\t\t\tif (title.indexOf(regionNameCompare) === -1) continue;\r\n\t\t\tif (regionMatchLevelI <= regionMatchLevel) continue;\r\n\r\n\t\t\tregionMatchLevel = regionMatchLevelI;\r\n\t\t\tnewRegionIndex = index;\r\n\t\t}\r\n\r\n\t\tregionIndex.value = newRegionIndex;\r\n\t});\r\n\r\n\treturn {\r\n\t\tregionIndex,\r\n\t\toptionByRegionIndex,\r\n\t};\r\n};\r\n","import { type ComputedRef, ref, watch } from 'vue';\r\nimport type { Props, SearcherByKey } from '../selectorRegion';\r\n\r\n/**\r\n * Создание и управление реактивными переменными для сравнения\r\n *\r\n * @param props - входные props компонента\r\n * @param searcherByKey - Map ПС (реактивная)\r\n * @param allRegionsIndexes - Все доступные индексы регионов (реактивная)\r\n */\r\nexport const useCompare = (props: Props, searcherByKey: ComputedRef<SearcherByKey>, allRegionsIndexes: ComputedRef<Set<number>>) => {\r\n\t/**\r\n\t * Индексы регионов/ПС в сравнение\r\n\t */\r\n\tconst regionsIndexes = ref([] as number[]);\r\n\r\n\t/**\r\n\t * Загрузка индексов регионов для сравнения\r\n\t *\r\n\t * Если в modelValue передано несколько регионов, они будут установлены как выбранные для сравнения\r\n\t */\r\n\tconst compareLoad = () => {\r\n\t\tif (props.onlySearcher && searcherByKey.value) {\r\n\t\t\tregionsIndexes.value = Array.from(searcherByKey.value.keys());\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet regionsIndexesSaved: Props['modelValue'] = [];\r\n\r\n\t\tif (props.modelValue.length > 1) {\r\n\t\t\tregionsIndexesSaved = [...props.modelValue];\r\n\t\t} else {\r\n\t\t\ttry {\r\n\t\t\t\t// загрузить индексы регионов, если они были сохранены\r\n\t\t\t\tregionsIndexesSaved = JSON.parse(\r\n\t\t\t\t\tlocalStorage.getItem('ui:project:regionSelector' + props.projectId + ':regionsIndexes') as string,\r\n\t\t\t\t) ?? [];\r\n\t\t\t} catch (e) {\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// убрать из сравнения регионы, которых нет в props.searchers\r\n\t\tif (regionsIndexesSaved.length) {\r\n\t\t\tregionsIndexesSaved = regionsIndexesSaved.filter((regionIndex) => {\r\n\t\t\t\treturn allRegionsIndexes.value.has(regionIndex);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// если не сохранено ни одного региона, выбрать все регионы проекта\r\n\t\tif (!regionsIndexesSaved.length) {\r\n\t\t\tregionsIndexesSaved = Array.from(allRegionsIndexes.value);\r\n\t\t}\r\n\r\n\t\tregionsIndexes.value = [...regionsIndexesSaved];\r\n\t};\r\n\r\n\t/**\r\n\t * Сохранение выбранных регионов\r\n\t */\r\n\tconst compareSave = () => {\r\n\t\tif (regionsIndexes.value.length) {\r\n\t\t\tlocalStorage.setItem('ui:project:regionSelector:' + props.projectId + ':regionsIndexes', JSON.stringify(regionsIndexes.value));\r\n\t\t} else {\r\n\t\t\tlocalStorage.removeItem('ui:project:regionSelector:' + props.projectId + ':regionsIndexes');\r\n\t\t}\r\n\t};\r\n\r\n\twatch(regionsIndexes, () => {\r\n\t\tcompareSave();\r\n\t});\r\n\r\n\tif (props.addCompare) {\r\n\t\t// if (props.compareRegionsIndexes?.length) {\r\n\t\t// \tcompareRegionsIndexes.value = [...props.compareRegionsIndexes];\r\n\t\t// } else {\r\n\t\t// \tcompareLoad();\r\n\t\t// }\r\n\r\n\t\tcompareLoad();\r\n\t}\r\n\r\n\treturn {\r\n\t\tregionsIndexes,\r\n\t};\r\n};\r\n","import { computed, watch } from 'vue';\r\nimport { findRegion, genSearcherByKey } from '../utils/utils';\r\nimport { dummyIndex, searcherUndefined } from '../utils/consts';\r\nimport type { Props, Region, SearcherIndexed } from '../selectorRegion';\r\nimport { useSelectSearcher } from './selectSearcher';\r\nimport { useSelectRegion } from './selectRegion';\r\nimport { useCompare } from './compare';\r\n\r\n/**\r\n * Создание и управления рективными переменными компонента\r\n *\r\n * @param props - входные props компонента\r\n */\r\nexport const useSelectorRegion = (props: Props) => {\r\n\tconst searcherByKey = computed(() => {\r\n\t\treturn genSearcherByKey(props.forFrequency, props.autoRegion, props.searchers);\r\n\t});\r\n\r\n\tconst activeSearcherIndexed = computed(() => {\r\n\t\treturn searcherByKey.value.get(selectSearcher.searcherKey.value) || searcherUndefined;\r\n\t});\r\n\r\n\t/**\r\n\t * Все индексы регионов из mapSearchers\r\n\t */\r\n\tconst allRegionsIndexes = computed(() => {\r\n\t\tconst regionsIndexes = new Set<number>();\r\n\r\n\t\tsearcherByKey.value.forEach((searcher) => {\r\n\t\t\tsearcher.regions?.forEach((region) => {\r\n\t\t\t\tif (region.index === -1) return;\r\n\t\t\t\tif (region.index === dummyIndex) return;\r\n\r\n\t\t\t\tregionsIndexes.add(region.index);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn regionsIndexes;\r\n\t});\r\n\r\n\tconst selectSearcher = useSelectSearcher(props, searcherByKey);\r\n\tconst selectRegion = useSelectRegion(props, activeSearcherIndexed);\r\n\tconst compare = useCompare(props, searcherByKey, allRegionsIndexes);\r\n\r\n\t// контроль за внешним изменением списка ПС\r\n\twatch(searcherByKey, () => {\r\n\t\t// возможные значения для сравнения регионов\r\n\t\tif (selectSearcher.searcherKey.value === -1) {\r\n\t\t\tcompare.regionsIndexes.value = compare.regionsIndexes.value.filter(regionIndex => {\r\n\t\t\t\treturn allRegionsIndexes.value.has(regionIndex);\r\n\t\t\t});\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet newSearcherKey = searcherByKey.value.keys().next().value;\r\n\r\n\t\tsearcherByKey.value.forEach((searcher) => {\r\n\t\t\t// определить выбранную ПС\r\n\t\t\tif (\r\n\t\t\t\tselectRegion.regionIndex.value &&\r\n\t\t\t\tsearcher.regionByIndex?.has(selectRegion.regionIndex.value)\r\n\t\t\t) {\r\n\t\t\t\tnewSearcherKey = searcher.key;\r\n\t\t\t}\r\n\r\n\t\t\t// выбрать первую ПС с выбранным регионом\r\n\t\t\tif (!props.onlySearcher) {\r\n\t\t\t\tlet regionsNewSearcher: SearcherIndexed['regionByIndex'] | undefined;\r\n\r\n\t\t\t\tif (newSearcherKey !== undefined) {\r\n\t\t\t\t\tregionsNewSearcher = searcherByKey.value.get(newSearcherKey)?.regionByIndex;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst regionsCurrentSearcher = searcherByKey.value.get(searcher.key)?.regionByIndex;\r\n\t\t\t\tif (\r\n\t\t\t\t\tregionsNewSearcher?.has(dummyIndex) &&\r\n\t\t\t\t\t!regionsCurrentSearcher?.has(dummyIndex)\r\n\t\t\t\t) {\r\n\t\t\t\t\tnewSearcherKey = searcher.key;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (props.addCompare && !selectSearcher.optionBySearcherKey.value.has(dummyIndex)) {\r\n\t\t\tif (!selectRegion.regionIndex.value && compare.regionsIndexes.value?.length) newSearcherKey = -1;\r\n\t\t}\r\n\r\n\t\tif (props.onlySearcher && selectRegion.regionIndex.value !== dummyIndex) newSearcherKey = selectRegion.regionIndex.value;\r\n\r\n\t\tif (newSearcherKey !== undefined) {\r\n\t\t\tselectSearcher.searcherKey.value = newSearcherKey;\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tselectRegion.regionIndex.value !== undefined &&\r\n\t\t\t!(activeSearcherIndexed.value?.regionByIndex)?.has(selectRegion.regionIndex.value)\r\n\t\t) {\r\n\t\t\tselectRegion.regionIndex.value = activeSearcherIndexed.value?.regions?.keys().next().value as number;\r\n\t\t}\r\n\t}, { immediate: true });\r\n\r\n\tconst getSearcherKey = () => {\r\n\t\tif (selectSearcher.searcherKey.value === -1 || selectSearcher.searcherKey.value === dummyIndex) return;\r\n\r\n\t\treturn selectSearcher.searcherKey.value;\r\n\t};\r\n\r\n\tconst getRegionIndex = () => {\r\n\t\tif (props.onlySearcher) return;\r\n\r\n\t\tif (selectRegion.regionIndex.value === dummyIndex) return;\r\n\r\n\t\tlet res: Region['index'] | undefined = selectRegion.regionIndex.value;\r\n\r\n\t\t// в качестве ключа используется region.key\r\n\t\tif (props.forFrequency) {\r\n\t\t\tconst regionKey = selectRegion.regionIndex.value;\r\n\t\t\tconst region = findRegion(props.forFrequency, { searcher_key: getSearcherKey(), key: regionKey } as Region, props.searchers);\r\n\r\n\t\t\tres = region?.index;\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t};\r\n\r\n\t/**\r\n\t * Получить выбранную ПС\r\n\t */\r\n\tconst getSearcher = () => {\r\n\t\tconst searcherKey = getSearcherKey();\r\n\t\tif (searcherKey === undefined) return;\r\n\r\n\t\treturn searcherByKey.value.get(searcherKey);\r\n\t};\r\n\r\n\t/**\r\n\t * Получить выбранный регион\r\n\t */\r\n\tconst getRegion = () => {\r\n\t\tconst regionIndex = getRegionIndex();\r\n\t\tif (regionIndex === undefined) return;\r\n\r\n\t\treturn getSearcher()?.regionByIndex?.get(regionIndex);\r\n\t};\r\n\r\n\treturn {\r\n\t\tselectSearcher,\r\n\t\tselectRegion,\r\n\t\tcompare,\r\n\r\n\t\tsearcherByKey,\r\n\t\tallRegionsIndexes,\r\n\r\n\t\tgetSearcher,\r\n\t\tgetRegion,\r\n\t};\r\n};\r\n","<script setup lang=\"ts\">\r\nimport { watch } from 'vue';\r\nimport type { Emits, Props, Region } from './selectorRegion';\r\nimport Select from '@/components/forms/select/select.vue';\r\nimport Button from '@/components/forms/button/button.vue';\r\nimport { useSelectorRegion } from './composables/selectorRegion';\r\nimport { dummyIndex } from './utils/consts';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tsearchers: () => [],\r\n\t// compareRegionsIndexes: () => [],\r\n\taddSearcherIcon: true,\r\n\taddRegionIcon: true,\r\n\taddChanger: true,\r\n});\r\n\r\nconst model = defineModel<Props['modelValue']>({ required: true });\r\nconst modelSingle = defineModel<Props['modelValueSingle']>('modelValueSingle');\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst {\r\n\tselectSearcher,\r\n\tselectRegion,\r\n\tcompare,\r\n\r\n\tsearcherByKey,\r\n\tallRegionsIndexes,\r\n\r\n\tgetSearcher,\r\n\tgetRegion,\r\n} = useSelectorRegion(props);\r\n\r\nconst onClickCompare = () => {\r\n\t// ### TODO: сделать выбор регионов через UI (сейчас в UI выбор региона не работает)\r\n\tif (window['fieldTemplates'] && window['fieldTemplates']?.openSelectorRegions) {\r\n\t\twindow['fieldTemplates'].openSelectorRegions(\r\n\t\t\tsearcherByKey.value,\r\n\t\t\tcompare.regionsIndexes.value,\r\n\t\t\t(regionsIndexes: Region['index'][]) => compare.regionsIndexes.value = regionsIndexes,\r\n\t\t);\r\n\t\treturn;\r\n\t}\r\n\r\n\temit('compareRegions', searcherByKey.value);\r\n};\r\n\r\nwatch([selectRegion.regionIndex, selectSearcher.searcherKey, compare.regionsIndexes], () => {\r\n\tif (selectSearcher.searcherKey.value === -1 && compare.regionsIndexes.value.length) {\r\n\t\tif (JSON.stringify(model.value) === JSON.stringify(compare.regionsIndexes.value)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmodel.value = [...compare.regionsIndexes.value];\r\n\t} else {\r\n\t\tmodel.value = [props.onlySearcher ? selectSearcher.searcherKey.value : selectRegion.regionIndex.value];\r\n\t}\r\n\r\n\t// регионов нет\r\n\tif (!allRegionsIndexes.value.size) {\r\n\t\tselectSearcher.searcherKey.value = dummyIndex;\r\n\t}\r\n});\r\n\r\nif (modelSingle.value) {\r\n\twatch(modelSingle, () => {\r\n\t\tmodel.value = [modelSingle.value!];\r\n\t}, { immediate: true });\r\n}\r\n\r\nwatch(model, () => {\r\n\tif (model.value[0]) {\r\n\t\tmodelSingle.value = model.value[0];\r\n\t}\r\n\r\n\t// проверка входных данных v-model на корректность\r\n\tif (props.onlySearcher) {\r\n\t\tif (\r\n\t\t\t!model.value.length ||\r\n\t\t\tmodel.value.length === 1 && !searcherByKey.value.has(model.value[0])\r\n\t\t) {\r\n\t\t\tlet defaultKey: number | undefined = searcherByKey.value.keys().next().value;\r\n\r\n\t\t\tif (defaultKey !== undefined) {\r\n\t\t\t\tmodel.value = [defaultKey];\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tmodel.value.length > 1 &&\r\n\t\t\tJSON.stringify(model.value) !== JSON.stringify(compare.regionsIndexes.value)\r\n\t\t) {\r\n\t\t\tmodel.value = [...compare.regionsIndexes.value];\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\t} else {\r\n\t\tlet newModel = [...new Set(model.value)];\r\n\r\n\t\tlet defaultIndex = searcherByKey.value.values().next().value?.regionByIndex?.keys().next().value;\r\n\t\tif (props.forFrequency) {\r\n\t\t\tdefaultIndex = searcherByKey.value.values().next().value?.regionByIndex?.values().next().value?.key;\r\n\t\t}\r\n\r\n\t\tif (!newModel.length) {\r\n\t\t\tif (defaultIndex !== undefined) {\r\n\t\t\t\tnewModel.push(defaultIndex);\r\n\t\t\t}\r\n\t\t} else if (newModel.length === 1) {\r\n\t\t\tlet all = allRegionsIndexes.value;\r\n\r\n\t\t\tif (props.forFrequency) {\r\n\t\t\t\tall = new Set();\r\n\t\t\t\tsearcherByKey.value.forEach((searcher) => {\r\n\t\t\t\t\tsearcher.regionByIndex.forEach((region) => {\r\n\t\t\t\t\t\tif (region.index === -1) return;\r\n\t\t\t\t\t\tif (region.index === dummyIndex) return;\r\n\r\n\t\t\t\t\t\tall.add(region.key);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (!all.has(newModel[0]) && newModel[0] !== -2) {\r\n\t\t\t\tnewModel = [];\r\n\t\t\t\tif (defaultIndex !== undefined) {\r\n\t\t\t\t\tnewModel.push(defaultIndex);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tnewModel = newModel.filter(index => allRegionsIndexes.value.has(index));\r\n\t\t\tif (!newModel.length && defaultIndex !== undefined) {\r\n\t\t\t\tnewModel.push(defaultIndex);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (JSON.stringify(model.value) !== JSON.stringify(newModel)) {\r\n\t\t\tmodel.value = newModel;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\t// входные данные v-model совпадают с внутренними значениями\r\n\tif (\r\n\t\tmodel.value.length === 1 &&\r\n\t\tmodel.value[0] === (props.onlySearcher ? selectSearcher.searcherKey.value : selectRegion.regionIndex.value)\r\n\t) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// if (\r\n\t// \tmodel.value.length > 1 &&\r\n\t// \tselectorSearcher.searcherKey.value === -1 &&\r\n\t// \tJSON.stringify(model.value) === JSON.stringify(selectorCompare.regionsIndexes.value)\r\n\t// ) {\r\n\t// \treturn;\r\n\t// }\r\n\r\n\t// обновление regionIndex, searcherKey, selectorCompare.regionsIndexes\r\n\tif (props.onlySearcher) {\r\n\t\t// if (!model.value.length) {\r\n\t\t// \tselectorSearcher.searcherKey.value = dummyIndex;\r\n\t\t//\r\n\t\t// \treturn;\r\n\t\t// }\r\n\r\n\t\tif (model.value.length === 1) {\r\n\t\t\tselectSearcher.searcherKey.value = model.value[0];\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tselectSearcher.searcherKey.value = -1;\r\n\r\n\t\treturn;\r\n\t} else {\r\n\t\t// if (!model.value.length) {\r\n\t\t// \tselectorSearcher.searcherKey.value = dummyIndex;\r\n\t\t// \tselectorRegion.regionIndex.value = dummyIndex;\r\n\t\t//\r\n\t\t// \treturn;\r\n\t\t// }\r\n\r\n\t\tif (model.value.length === 1 && selectSearcher.searcherKey.value !== -1) {\r\n\t\t\tselectRegion.regionIndex.value = model.value[0];\r\n\r\n\t\t\tlet newSearherKey: number | undefined;\r\n\t\t\tfor (const searcher of searcherByKey.value.values()) {\r\n\t\t\t\tfor (const region of searcher.regionByIndex.values()) {\r\n\t\t\t\t\tconst currentRegionIndex = props.forFrequency ? region.key : region.index;\r\n\t\t\t\t\tif (currentRegionIndex === selectRegion.regionIndex.value) {\r\n\t\t\t\t\t\tnewSearherKey = searcher.key;\r\n\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (newSearherKey !== undefined) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (newSearherKey !== undefined) {\r\n\t\t\t\tselectSearcher.searcherKey.value = newSearherKey;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tselectSearcher.searcherKey.value = -1;\r\n\t\t\tcompare.regionsIndexes.value = [...model.value];\r\n\t\t}\r\n\t}\r\n}, { immediate: true });\r\n\r\ndefineExpose({\r\n\tgetSearcher,\r\n\tgetRegion,\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<div\r\n\t\t:class=\"{\r\n\t\t\t'top-selectorRegion': true,\r\n\t\t\t'top-selectorRegion-onlySearcher': onlySearcher,\r\n\t\t}\"\r\n\t>\r\n\t\t<Select\r\n\t\t\t:options=\"selectSearcher.optionBySearcherKey.value\"\r\n\t\t\tv-model=\"selectSearcher.searcherKey.value\"\r\n\t\t\tname=\"searcher_key\"\r\n\t\t\t:addChanger=\"addChanger\"\r\n\t\t/>\r\n\r\n\t\t<Select\r\n\t\t\tv-if=\"!onlySearcher && selectSearcher.searcherKey.value !== -1\"\r\n\t\t\tclass=\"top-select-region\"\r\n\t\t\t:options=\"selectRegion.optionByRegionIndex.value\"\r\n\t\t\tv-model=\"selectRegion.regionIndex.value\"\r\n\t\t\t:name=\"forFrequency ? 'region_key' : 'region_index'\"\r\n\t\t\t:addChanger=\"addChanger\"\r\n\t\t\t:data-top-icon=\"addRegionIcon ? '' : undefined\"\r\n\t\t/>\r\n\r\n\t\t<Button\r\n\t\t\tv-if=\"addCompare && !onlySearcher && selectSearcher.searcherKey.value === -1\"\r\n\t\t\tname=\"compare\"\r\n\t\t\t@click=\"onClickCompare\"\r\n\t\t\t:data-count-compare-regions-indexes=\"compare.regionsIndexes.value.length\"\r\n\t\t>\r\n\t\t\t{{ $i18n.Common.Selected_regions }}\r\n\t\t</Button>\r\n\t</div>\r\n</template>\r\n\r\n<style module>\r\n@import \"./styles/searcherColors.css\";\r\n\r\n.top-selectorRegion {\r\n\twidth: 320px;\r\n\tdisplay: inline-flex;\r\n\tvertical-align: middle;\r\n}\r\n\r\n.top-selectorRegion > .top-select {\r\n\tflex-grow: 1;\r\n}\r\n\r\n.top-selectorRegion > .top-select:focus-within {\r\n\tz-index: 4;\r\n}\r\n\r\n.top-selectorRegion > .top-select > .top-select_select:hover,\r\n.top-selectorRegion > .top-select > .top-select_select.top-error {\r\n\tz-index: 1;\r\n}\r\n\r\n.top-selectorRegion > .top-select-searcher_key {\r\n\twidth: 120px;\r\n\tmax-width: 140px;\r\n\tmargin-right: -1px;\r\n}\r\n\r\n.top-selectorRegion > .top-select-region > select {\r\n\tborder-top-left-radius: 0;\r\n\tborder-bottom-left-radius: 0;\r\n}\r\n\r\n.top-selectorRegion > .top-select-region {\r\n\t--top-icon-size: 20px;\r\n\t--top-icon-color: var(--color-text-primary-1);\r\n\r\n\t--top-icon2-size: 20px;\r\n\t--top-icon2-color: var(--color-text-primary-1);\r\n}\r\n\r\n.top-selectorRegion > .top-select-region[data-top-icon][data-top-icon2] {\r\n\t--top-icon2-size: 16px;\r\n}\r\n\r\n.top-selectorRegion > .top-select-region[data-top-icon][data-top-icon2]:after {\r\n\ttext-indent: -4px;\r\n}\r\n\r\n.top-selectorRegion > [name=\"compare\"] {\r\n\tborder-top-left-radius: 0;\r\n\tborder-bottom-left-radius: 0;\r\n\tflex-grow: 1;\r\n}\r\n\r\n.top-selectorRegion > [name=\"compare\"]:after {\r\n\tcontent: \"(\" attr(data-count-compare-regions-indexes) \")\";\r\n\tmargin: 0 0 0 6px;\r\n}\r\n\r\n.top-selectorRegion:not(.top-selectorRegion-onlySearcher) > .top-select-searcher_key > select {\r\n\tborder-top-right-radius: 0;\r\n\tborder-bottom-right-radius: 0;\r\n\tmargin-right: 0;\r\n}\r\n\r\n.top-selectorRegion:not(.top-selectorRegion-onlySearcher) > .top-select-searcher_key[data-value=\"-1\"] > select {\r\n\tborder-right: none;\r\n}\r\n\r\n.top-selectorRegion-onlySearcher {\r\n\twidth: 120px;\r\n}\r\n</style>\r\n","import type { ComponentCustomProps } from 'vue';\r\n\r\nimport SelectorCompetitors from './selectorCompetitors/selectorCompetitors.vue';\r\nimport SelectorRegion from './selectorRegion/selectorRegion.vue';\r\n\r\nexport const TopSelectorCompetitors = SelectorCompetitors as typeof SelectorCompetitors & ComponentCustomProps;\r\nexport const TopSelectorRegion = SelectorRegion as typeof SelectorRegion & ComponentCustomProps;\r\n"],"names":["props","__props","selectAllItem","vue","forms","useSelectSearcher","mapSearchers","i18n","searcherKey","project_utils","optionBySearcherKey","res","searcher","option","utils_searchers","useSelectRegion","activeSearcherIndexed","regionIndex","_c","optionByRegionIndex","options","regionLabel","region","langLabel","newRegionIndex","optionByRegionIndex2","regionName","_a","oldOptionByRegionIndex","regionMatchLevel","index","title","regexpDevice","regionNameCompare","regionMatchLevelI","regionsIndexes","searcherByKey","regionsIndexesSaved","useSelectorRegion","selectSearcher","allRegionsIndexes","compare","newSearcherKey","selectRegion","regionsNewSearcher","_b","regionsCurrentSearcher","_e","_d","getSearcherKey","getSearcher","getRegionIndex","emit","__emit","getRegion","model","modelSingle","defaultKey","newModel","defaultIndex","all","newSearherKey","__expose","TopSelectorCompetitors","SelectorCompetitors","TopSelectorRegion","SelectorRegion"],"mappings":"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"}
1
+ {"version":3,"file":"project.amd.js","sources":["../../src/components/project/selectorCompetitors/selectorCompetitors.vue","../../src/components/project/selectorRegion/composables/selectSearcher.ts","../../src/components/project/selectorRegion/composables/selectRegion.ts","../../src/components/project/selectorRegion/composables/compare.ts","../../src/components/project/selectorRegion/composables/selectorRegion.ts","../../src/components/project/selectorRegion/selectorRegion.vue","../../src/components/project/project.ts"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport type { Props } from './selectorCompetitors';\r\nimport Core from '@/core/core/core';\r\nimport Button from '@/components/forms/button/button.vue';\r\nimport Popup from '@/components/popup/popup/popup.vue';\r\nimport ListItem from '@/components/popup/popup/listItem.vue';\r\nimport Menu from '@/components/formsExt/menu/menu.vue';\r\nimport { useI18n } from '@/core/plugins/i18n';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tshowSelectAllItem: true,\r\n});\r\nconst model = defineModel<Props['modelValue']>();\r\n\r\nconst selectAllItem = computed(() => {\r\n\tif (props.showSelectAllItem) {\r\n\t\treturn {\r\n\t\t\ticon: '',\r\n\t\t\ttitle: useI18n().Common.Select_all,\r\n\t\t\tvalue: 'all',\r\n\t\t\tcontent: '',\r\n\t\t};\r\n\t}\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<div class=\"top-selectorCompetitors\">\r\n\t\t<Popup v-if=\"Core.state.isMobile\">\r\n\t\t\t<template #opener>\r\n\t\t\t\t<Button\r\n\t\t\t\t\tclass=\"top-selectorCompetitors_opener\"\r\n\t\t\t\t\tcolor=\"theme\"\r\n\t\t\t\t\ticon=\"\"\r\n\t\t\t\t\ticon2=\"\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{ items.find((item) => item.value === model?.[0])?.content }}\r\n\t\t\t\t</Button>\r\n\t\t\t</template>\r\n\r\n\t\t\t<template #contentList>\r\n\t\t\t\t<ListItem\r\n\t\t\t\t\tv-for=\"(item, index) in items\"\r\n\t\t\t\t\t:class=\"{\r\n\t\t\t\t\t\t'top-active': model?.includes(item.value)\r\n\t\t\t\t\t}\"\r\n\t\t\t\t\t:data-top-icon=\"item.icon\"\r\n\t\t\t\t\t:title=\"item.title\"\r\n\t\t\t\t\t@click=\"() => model = [item.value]\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<span class=\"top-ellipsis1\">\r\n\t\t\t\t\t\t{{ item.content }}\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</ListItem>\r\n\t\t\t</template>\r\n\t\t</Popup>\r\n\r\n\t\t<Menu\r\n\t\t\tv-else\r\n\t\t\tv-model=\"model\"\r\n\t\t\t:items=\"items\"\r\n\t\t\t:isMultiple=\"true\"\r\n\t\t\tstyling=\"bar\"\r\n\t\t\t:canBeEmptyMultiple=\"false\"\r\n\t\t\t:selectAllItem=\"selectAllItem\"\r\n\t\t/>\r\n\t</div>\r\n</template>\r\n\r\n<style module>\r\n.top-selectorCompetitors_opener.top-button {\r\n\twidth: 100%;\r\n}\r\n</style>\r\n","import { computed, type ComputedRef, ref } from 'vue';\r\nimport { useI18n } from '@/core/plugins/i18n';\r\nimport type { Props, SearcherByKey } from '../selectorRegion';\r\nimport type { Option, Options } from '@/components/forms/select/select';\r\nimport { dummyIndex } from '../utils/consts';\r\nimport { getSearcherGIcon } from '@/core/utils/searchers';\r\n\r\n/**\r\n * Создание и управление реактивными переменными для выбора ПС\r\n *\r\n * @param props - входные props компонента\r\n * @param mapSearchers - Map ПС (реактивная)\r\n */\r\nexport const useSelectSearcher = (\r\n\tprops: Props,\r\n\tmapSearchers: ComputedRef<SearcherByKey>,\r\n) => {\r\n\tconst i18n = useI18n();\r\n\r\n\t/**\r\n\t * Ключ выбранной поисковой системы\r\n\t */\r\n\tconst searcherKey = ref(mapSearchers.value.keys().next().value ?? dummyIndex);\r\n\r\n\t/**\r\n\t * Коллекция опций для выбора ПС\r\n\t */\r\n\tconst optionBySearcherKey = computed(() => {\r\n\t\tconst res: Options = new Map();\r\n\t\tmapSearchers.value.forEach((searcher) => {\r\n\t\t\tlet option: Option = {\r\n\t\t\t\tvalue: searcher.key,\r\n\t\t\t\ttitle: searcher.name,\r\n\t\t\t};\r\n\r\n\t\t\tif (props.addSearcherIcon) option.icon = getSearcherGIcon(searcher.key);\r\n\r\n\t\t\tres.set(searcher.key, option);\r\n\t\t});\r\n\r\n\t\t// добавить режим сравнения, если есть хотя бы одна ПС\r\n\t\tif (props.addCompare && !res.has(dummyIndex)) {\r\n\t\t\tconst dummyOption: Option = {\r\n\t\t\t\tvalue: '',\r\n\t\t\t\ttitle: '--------------------',\r\n\t\t\t\tdisabled: true,\r\n\t\t\t};\r\n\t\t\tres.set(dummyOption.value, dummyOption);\r\n\r\n\t\t\tconst compareOption: Option = {\r\n\t\t\t\tvalue: -1,\r\n\t\t\t\ttitle: i18n.Common.Compare!,\r\n\t\t\t};\r\n\t\t\tres.set(compareOption.value, compareOption);\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t});\r\n\r\n\treturn {\r\n\t\tsearcherKey,\r\n\t\toptionBySearcherKey,\r\n\t};\r\n};\r\n","import { computed, type ComputedRef, ref, watch } from 'vue';\r\nimport { useI18n } from '@/core/plugins/i18n';\r\nimport { getDeviceGIcon, getLangLabel } from '@/core/utils/searchers';\r\nimport type { Option } from '@/components/forms/select/select';\r\nimport { dummyIndex } from '../utils/consts';\r\nimport type { Props, Region, SearcherIndexed } from '../selectorRegion';\r\n\r\n/**\r\n * Создание и управление реактивными переменными для выбора региона\r\n *\r\n * @param props - входные props компонента\r\n * @param activeSearcherIndexed - объект активной поисковой системы (реактивная)\r\n * @param regionsIndexes - входные индексы регионов/ПС\r\n */\r\nexport const useSelectRegion = (props: Props, activeSearcherIndexed: ComputedRef<SearcherIndexed>) => {\r\n\tconst i18n = useI18n();\r\n\r\n\t/**\r\n\t * Индекс выбранного региона\r\n\t */\r\n\tconst regionIndex = ref(dummyIndex);\r\n\r\n\tif (props.modelValue.length === 1) {\r\n\t\tregionIndex.value = props.modelValue[0];\r\n\t}\r\n\r\n\tif (regionIndex.value === dummyIndex) {\r\n\t\tif (props.forFrequency) {\r\n\t\t\t// в качетсве ключа используется region.key, а не region.index\r\n\t\t\tregionIndex.value = activeSearcherIndexed.value?.regionByIndex.values().next().value?.key ?? dummyIndex;\r\n\t\t} else {\r\n\t\t\tregionIndex.value = activeSearcherIndexed.value?.regionByIndex.keys().next().value ?? dummyIndex;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Коллекция опций для выбора региона\r\n\t */\r\n\tconst optionByRegionIndex = computed(() => {\r\n\t\tconst options = new Map<number, Option>();\r\n\r\n\t\tactiveSearcherIndexed.value.regionByIndex?.forEach((region) => {\r\n\t\t\tlet regionLabel = region.name;\r\n\r\n\t\t\t// на частоту в текущей версии устройство и язык не влияют\r\n\t\t\t// обратите внимание, в качетсве ключа используется region.key, а не region.index\r\n\t\t\tif (props.forFrequency) {\r\n\t\t\t\tconst option: Option = {\r\n\t\t\t\t\tvalue: region.key,\r\n\t\t\t\t\ttitle: regionLabel,\r\n\t\t\t\t};\r\n\t\t\t\tif (!options.has(region.key)) options.set(region.key, option);\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (region.device) {\r\n\t\t\t\tregionLabel += ' (' + i18n.Common['Device_' + region.device] + ')';\r\n\t\t\t}\r\n\r\n\t\t\tconst langLabel = getLangLabel(activeSearcherIndexed.value.key || 0, region.lang ?? '');\r\n\t\t\tif (langLabel) regionLabel += ' / ' + langLabel;\r\n\r\n\t\t\tconst option: Option = {\r\n\t\t\t\tvalue: region.index,\r\n\t\t\t\ttitle: regionLabel,\r\n\t\t\t\ticon: region.device ? getDeviceGIcon(region.device) : undefined,\r\n\t\t\t};\r\n\r\n\t\t\toptions.set(region.index, option);\r\n\t\t});\r\n\r\n\t\treturn options;\r\n\t});\r\n\r\n\t/**\r\n\t * Выбор максимально похожего региона в новой коллекции регионов\r\n\t */\r\n\twatch(optionByRegionIndex, (optionByRegionIndex, oldOptionByRegionIndex) => {\r\n\t\tif (props.onlySearcher || regionIndex.value !== undefined && optionByRegionIndex.get(regionIndex.value)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet newRegionIndex = optionByRegionIndex.keys().next().value as Region['index'];\r\n\t\tif (regionIndex.value === dummyIndex || newRegionIndex === dummyIndex) {\r\n\t\t\tregionIndex.value = newRegionIndex;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet regionName = (oldOptionByRegionIndex?.get(regionIndex.value) as Option)?.title || '';\r\n\t\tlet regionMatchLevel = -1;\r\n\t\tfor (const [index, option] of optionByRegionIndex.entries()) {\r\n\t\t\tconst title = (option as Option).title;\r\n\r\n\t\t\tif (typeof title !== 'string' || typeof index === 'string') {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\t// полное совпадение\r\n\t\t\tif (title === regionName) {\r\n\t\t\t\tnewRegionIndex = index;\r\n\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tconst regexpDevice = new RegExp(` \\\\((${i18n.Common['Device_1']}|${i18n.Common['Device_2']})\\\\)`);\r\n\t\t\tlet regionNameCompare = regionName;\r\n\t\t\tlet regionMatchLevelI = 3;\r\n\r\n\t\t\t// без устройства\r\n\t\t\tif (title.indexOf(regionNameCompare) === -1) {\r\n\t\t\t\tregionNameCompare = regionName.replace(/^[^a-zа-я]/i, '').replace(regexpDevice, '');\r\n\r\n\t\t\t\tregionMatchLevelI--;\r\n\t\t\t}\r\n\r\n\t\t\t// без языка\r\n\t\t\tif (title.indexOf(regionNameCompare) === -1) {\r\n\t\t\t\tregionNameCompare = regionName.replace(/ \\/.*/, '');\r\n\r\n\t\t\t\tregionMatchLevelI--;\r\n\t\t\t}\r\n\r\n\t\t\t// без устройства и без языка\r\n\t\t\tif (title.indexOf(regionNameCompare) === -1) {\r\n\t\t\t\tregionNameCompare = regionName.replace(/ \\/.*/, '');\r\n\t\t\t\tregionNameCompare = regionNameCompare.replace(/^[^a-zа-я]/i, '').replace(regexpDevice, '');\r\n\r\n\t\t\t\tregionMatchLevelI--;\r\n\t\t\t}\r\n\r\n\t\t\tif (title.indexOf(regionNameCompare) === -1) continue;\r\n\t\t\tif (regionMatchLevelI <= regionMatchLevel) continue;\r\n\r\n\t\t\tregionMatchLevel = regionMatchLevelI;\r\n\t\t\tnewRegionIndex = index;\r\n\t\t}\r\n\r\n\t\tregionIndex.value = newRegionIndex;\r\n\t});\r\n\r\n\treturn {\r\n\t\tregionIndex,\r\n\t\toptionByRegionIndex,\r\n\t};\r\n};\r\n","import { type ComputedRef, ref, watch } from 'vue';\r\nimport type { Props, SearcherByKey } from '../selectorRegion';\r\n\r\n/**\r\n * Создание и управление реактивными переменными для сравнения\r\n *\r\n * @param props - входные props компонента\r\n * @param searcherByKey - Map ПС (реактивная)\r\n * @param allRegionsIndexes - Все доступные индексы регионов (реактивная)\r\n */\r\nexport const useCompare = (props: Props, searcherByKey: ComputedRef<SearcherByKey>, allRegionsIndexes: ComputedRef<Set<number>>) => {\r\n\t/**\r\n\t * Индексы регионов/ПС в сравнение\r\n\t */\r\n\tconst regionsIndexes = ref([] as number[]);\r\n\r\n\t/**\r\n\t * Загрузка индексов регионов для сравнения\r\n\t *\r\n\t * Если в modelValue передано несколько регионов, они будут установлены как выбранные для сравнения\r\n\t */\r\n\tconst compareLoad = () => {\r\n\t\tif (props.onlySearcher && searcherByKey.value) {\r\n\t\t\tregionsIndexes.value = Array.from(searcherByKey.value.keys());\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet regionsIndexesSaved: Props['modelValue'] = [];\r\n\r\n\t\tif (props.modelValue.length > 1) {\r\n\t\t\tregionsIndexesSaved = [...props.modelValue];\r\n\t\t} else {\r\n\t\t\ttry {\r\n\t\t\t\t// загрузить индексы регионов, если они были сохранены\r\n\t\t\t\tregionsIndexesSaved = JSON.parse(\r\n\t\t\t\t\tlocalStorage.getItem('ui:project:regionSelector' + props.projectId + ':regionsIndexes') as string,\r\n\t\t\t\t) ?? [];\r\n\t\t\t} catch (e) {\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// убрать из сравнения регионы, которых нет в props.searchers\r\n\t\tif (regionsIndexesSaved.length) {\r\n\t\t\tregionsIndexesSaved = regionsIndexesSaved.filter((regionIndex) => {\r\n\t\t\t\treturn allRegionsIndexes.value.has(regionIndex);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// если не сохранено ни одного региона, выбрать все регионы проекта\r\n\t\tif (!regionsIndexesSaved.length) {\r\n\t\t\tregionsIndexesSaved = Array.from(allRegionsIndexes.value);\r\n\t\t}\r\n\r\n\t\tregionsIndexes.value = [...regionsIndexesSaved];\r\n\t};\r\n\r\n\t/**\r\n\t * Сохранение выбранных регионов\r\n\t */\r\n\tconst compareSave = () => {\r\n\t\tif (regionsIndexes.value.length) {\r\n\t\t\tlocalStorage.setItem('ui:project:regionSelector:' + props.projectId + ':regionsIndexes', JSON.stringify(regionsIndexes.value));\r\n\t\t} else {\r\n\t\t\tlocalStorage.removeItem('ui:project:regionSelector:' + props.projectId + ':regionsIndexes');\r\n\t\t}\r\n\t};\r\n\r\n\twatch(regionsIndexes, () => {\r\n\t\tcompareSave();\r\n\t});\r\n\r\n\tif (props.addCompare) {\r\n\t\t// if (props.compareRegionsIndexes?.length) {\r\n\t\t// \tcompareRegionsIndexes.value = [...props.compareRegionsIndexes];\r\n\t\t// } else {\r\n\t\t// \tcompareLoad();\r\n\t\t// }\r\n\r\n\t\tcompareLoad();\r\n\t}\r\n\r\n\treturn {\r\n\t\tregionsIndexes,\r\n\t};\r\n};\r\n","import { computed, watch } from 'vue';\r\nimport { findRegion, genSearcherByKey } from '../utils/utils';\r\nimport { dummyIndex, searcherUndefined } from '../utils/consts';\r\nimport type { Props, Region, SearcherIndexed } from '../selectorRegion';\r\nimport { useSelectSearcher } from './selectSearcher';\r\nimport { useSelectRegion } from './selectRegion';\r\nimport { useCompare } from './compare';\r\n\r\n/**\r\n * Создание и управления рективными переменными компонента\r\n *\r\n * @param props - входные props компонента\r\n */\r\nexport const useSelectorRegion = (props: Props) => {\r\n\tconst searcherByKey = computed(() => {\r\n\t\treturn genSearcherByKey(props.forFrequency, props.autoRegion, props.searchers);\r\n\t});\r\n\r\n\tconst activeSearcherIndexed = computed(() => {\r\n\t\treturn searcherByKey.value.get(selectSearcher.searcherKey.value) || searcherUndefined;\r\n\t});\r\n\r\n\t/**\r\n\t * Все индексы регионов из mapSearchers\r\n\t */\r\n\tconst allRegionsIndexes = computed(() => {\r\n\t\tconst regionsIndexes = new Set<number>();\r\n\r\n\t\tsearcherByKey.value.forEach((searcher) => {\r\n\t\t\tsearcher.regions?.forEach((region) => {\r\n\t\t\t\tif (region.index === -1) return;\r\n\t\t\t\tif (region.index === dummyIndex) return;\r\n\r\n\t\t\t\tregionsIndexes.add(region.index);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn regionsIndexes;\r\n\t});\r\n\r\n\tconst selectSearcher = useSelectSearcher(props, searcherByKey);\r\n\tconst selectRegion = useSelectRegion(props, activeSearcherIndexed);\r\n\tconst compare = useCompare(props, searcherByKey, allRegionsIndexes);\r\n\r\n\t// контроль за внешним изменением списка ПС\r\n\twatch(searcherByKey, () => {\r\n\t\t// возможные значения для сравнения регионов/пс\r\n\t\tif (props.onlySearcher) {\r\n\t\t\tcompare.regionsIndexes.value = Array.from(searcherByKey.value.keys());\r\n\t\t} else {\r\n\t\t\tcompare.regionsIndexes.value = compare.regionsIndexes.value.filter(regionIndex => {\r\n\t\t\t\treturn allRegionsIndexes.value.has(regionIndex);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (selectSearcher.searcherKey.value === -1) return;\r\n\r\n\t\tlet newSearcherKey = searcherByKey.value.keys().next().value;\r\n\r\n\t\tsearcherByKey.value.forEach((searcher) => {\r\n\t\t\t// определить выбранную ПС\r\n\t\t\tif (props.onlySearcher && searcher.key === selectSearcher.searcherKey.value) {\r\n\t\t\t\tnewSearcherKey = selectSearcher.searcherKey.value;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (\r\n\t\t\t\tselectRegion.regionIndex.value &&\r\n\t\t\t\tsearcher.regionByIndex?.has(selectRegion.regionIndex.value)\r\n\t\t\t) {\r\n\t\t\t\tnewSearcherKey = searcher.key;\r\n\t\t\t}\r\n\r\n\t\t\t// выбрать первую ПС с выбранным регионом\r\n\t\t\tif (!props.onlySearcher) {\r\n\t\t\t\tlet regionsNewSearcher: SearcherIndexed['regionByIndex'] | undefined;\r\n\r\n\t\t\t\tif (newSearcherKey !== undefined) {\r\n\t\t\t\t\tregionsNewSearcher = searcherByKey.value.get(newSearcherKey)?.regionByIndex;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst regionsCurrentSearcher = searcherByKey.value.get(searcher.key)?.regionByIndex;\r\n\t\t\t\tif (\r\n\t\t\t\t\tregionsNewSearcher?.has(dummyIndex) &&\r\n\t\t\t\t\t!regionsCurrentSearcher?.has(dummyIndex)\r\n\t\t\t\t) {\r\n\t\t\t\t\tnewSearcherKey = searcher.key;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// if (props.addCompare && !selectSearcher.optionBySearcherKey.value.has(dummyIndex)) {\r\n\t\t// \tif (!selectRegion.regionIndex.value && compare.regionsIndexes.value?.length) newSearcherKey = -1;\r\n\t\t// }\r\n\r\n\t\t// if (props.onlySearcher && selectRegion.regionIndex.value !== dummyIndex) newSearcherKey = selectRegion.regionIndex.value;\r\n\r\n\t\tif (newSearcherKey !== undefined) {\r\n\t\t\tselectSearcher.searcherKey.value = newSearcherKey;\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tselectRegion.regionIndex.value !== undefined &&\r\n\t\t\t!(activeSearcherIndexed.value?.regionByIndex)?.has(selectRegion.regionIndex.value)\r\n\t\t) {\r\n\t\t\tselectRegion.regionIndex.value = activeSearcherIndexed.value?.regions?.keys().next().value as number;\r\n\t\t}\r\n\t}, { immediate: true });\r\n\r\n\tconst getSearcherKey = () => {\r\n\t\tif (selectSearcher.searcherKey.value === -1 || selectSearcher.searcherKey.value === dummyIndex) return;\r\n\r\n\t\treturn selectSearcher.searcherKey.value;\r\n\t};\r\n\r\n\tconst getRegionIndex = () => {\r\n\t\tif (props.onlySearcher) return;\r\n\r\n\t\tif (selectRegion.regionIndex.value === dummyIndex) return;\r\n\r\n\t\tlet res: Region['index'] | undefined = selectRegion.regionIndex.value;\r\n\r\n\t\t// в качестве ключа используется region.key\r\n\t\tif (props.forFrequency) {\r\n\t\t\tconst regionKey = selectRegion.regionIndex.value;\r\n\t\t\tconst region = findRegion(props.forFrequency, { searcher_key: getSearcherKey(), key: regionKey } as Region, props.searchers);\r\n\r\n\t\t\tres = region?.index;\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t};\r\n\r\n\t/**\r\n\t * Получить выбранную ПС\r\n\t */\r\n\tconst getSearcher = () => {\r\n\t\tconst searcherKey = getSearcherKey();\r\n\t\tif (searcherKey === undefined) return;\r\n\r\n\t\treturn searcherByKey.value.get(searcherKey);\r\n\t};\r\n\r\n\t/**\r\n\t * Получить выбранный регион\r\n\t */\r\n\tconst getRegion = () => {\r\n\t\tconst regionIndex = getRegionIndex();\r\n\t\tif (regionIndex === undefined) return;\r\n\r\n\t\treturn getSearcher()?.regionByIndex?.get(regionIndex);\r\n\t};\r\n\r\n\treturn {\r\n\t\tselectSearcher,\r\n\t\tselectRegion,\r\n\t\tcompare,\r\n\r\n\t\tsearcherByKey,\r\n\t\tallRegionsIndexes,\r\n\r\n\t\tgetSearcher,\r\n\t\tgetRegion,\r\n\t};\r\n};\r\n","<script setup lang=\"ts\">\r\nimport { watch } from 'vue';\r\nimport type { Emits, Props, Region } from './selectorRegion';\r\nimport Select from '@/components/forms/select/select.vue';\r\nimport Button from '@/components/forms/button/button.vue';\r\nimport { useSelectorRegion } from './composables/selectorRegion';\r\nimport { dummyIndex } from './utils/consts';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tsearchers: () => [],\r\n\t// compareRegionsIndexes: () => [],\r\n\taddSearcherIcon: true,\r\n\taddRegionIcon: true,\r\n\taddChanger: true,\r\n});\r\n\r\nconst model = defineModel<Props['modelValue']>({ required: true });\r\nconst modelSingle = defineModel<Props['modelValueSingle']>('modelValueSingle');\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst {\r\n\tselectSearcher,\r\n\tselectRegion,\r\n\tcompare,\r\n\r\n\tsearcherByKey,\r\n\tallRegionsIndexes,\r\n\r\n\tgetSearcher,\r\n\tgetRegion,\r\n} = useSelectorRegion(props);\r\n\r\nconst onClickCompare = () => {\r\n\t// ### TODO: сделать выбор регионов через UI (сейчас в UI выбор региона не работает)\r\n\tif (window['fieldTemplates'] && window['fieldTemplates']?.openSelectorRegions) {\r\n\t\twindow['fieldTemplates'].openSelectorRegions(\r\n\t\t\tsearcherByKey.value,\r\n\t\t\tcompare.regionsIndexes.value,\r\n\t\t\t(regionsIndexes: Region['index'][]) => compare.regionsIndexes.value = regionsIndexes,\r\n\t\t);\r\n\t\treturn;\r\n\t}\r\n\r\n\temit('compareRegions', searcherByKey.value);\r\n};\r\n\r\nwatch([selectRegion.regionIndex, selectSearcher.searcherKey, compare.regionsIndexes], () => {\r\n\tif (selectSearcher.searcherKey.value === -1 && compare.regionsIndexes.value.length) {\r\n\t\tif (JSON.stringify(model.value) === JSON.stringify(compare.regionsIndexes.value)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmodel.value = [...compare.regionsIndexes.value];\r\n\t} else {\r\n\t\tmodel.value = [props.onlySearcher ? selectSearcher.searcherKey.value : selectRegion.regionIndex.value];\r\n\t}\r\n\r\n\t// регионов нет\r\n\tif (!props.onlySearcher && !allRegionsIndexes.value.size) {\r\n\t\tselectSearcher.searcherKey.value = dummyIndex;\r\n\t}\r\n});\r\n\r\nif (modelSingle.value) {\r\n\twatch(modelSingle, () => {\r\n\t\tmodel.value = [modelSingle.value!];\r\n\t}, { immediate: true });\r\n}\r\n\r\nwatch(model, () => {\r\n\tif (model.value[0]) {\r\n\t\tmodelSingle.value = model.value[0];\r\n\t}\r\n\r\n\t// проверка входных данных v-model на корректность\r\n\tif (props.onlySearcher) {\r\n\t\tif (\r\n\t\t\t!model.value.length ||\r\n\t\t\tmodel.value.length === 1 && !searcherByKey.value.has(model.value[0])\r\n\t\t) {\r\n\t\t\tlet defaultKey: number | undefined = searcherByKey.value.keys().next().value;\r\n\r\n\t\t\tif (defaultKey !== undefined) {\r\n\t\t\t\tmodel.value = [defaultKey];\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tmodel.value.length > 1 &&\r\n\t\t\tJSON.stringify(model.value) !== JSON.stringify(compare.regionsIndexes.value)\r\n\t\t) {\r\n\t\t\tmodel.value = [...compare.regionsIndexes.value];\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\t} else {\r\n\t\tlet newModel = [...new Set(model.value)];\r\n\r\n\t\tlet defaultIndex = searcherByKey.value.values().next().value?.regionByIndex?.keys().next().value;\r\n\t\tif (props.forFrequency) {\r\n\t\t\tdefaultIndex = searcherByKey.value.values().next().value?.regionByIndex?.values().next().value?.key;\r\n\t\t}\r\n\r\n\t\tif (!newModel.length) {\r\n\t\t\tif (defaultIndex !== undefined) {\r\n\t\t\t\tnewModel.push(defaultIndex);\r\n\t\t\t}\r\n\t\t} else if (newModel.length === 1) {\r\n\t\t\tlet all = allRegionsIndexes.value;\r\n\r\n\t\t\tif (props.forFrequency) {\r\n\t\t\t\tall = new Set();\r\n\t\t\t\tsearcherByKey.value.forEach((searcher) => {\r\n\t\t\t\t\tsearcher.regionByIndex.forEach((region) => {\r\n\t\t\t\t\t\tif (region.index === -1) return;\r\n\t\t\t\t\t\tif (region.index === dummyIndex) return;\r\n\r\n\t\t\t\t\t\tall.add(region.key);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (!all.has(newModel[0]) && newModel[0] !== -2) {\r\n\t\t\t\tnewModel = [];\r\n\t\t\t\tif (defaultIndex !== undefined) {\r\n\t\t\t\t\tnewModel.push(defaultIndex);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tnewModel = newModel.filter(index => allRegionsIndexes.value.has(index));\r\n\t\t\tif (!newModel.length && defaultIndex !== undefined) {\r\n\t\t\t\tnewModel.push(defaultIndex);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (JSON.stringify(model.value) !== JSON.stringify(newModel)) {\r\n\t\t\tmodel.value = newModel;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\t// входные данные v-model совпадают с внутренними значениями\r\n\tif (\r\n\t\tmodel.value.length === 1 &&\r\n\t\tmodel.value[0] === (props.onlySearcher ? selectSearcher.searcherKey.value : selectRegion.regionIndex.value)\r\n\t) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// if (\r\n\t// \tmodel.value.length > 1 &&\r\n\t// \tselectorSearcher.searcherKey.value === -1 &&\r\n\t// \tJSON.stringify(model.value) === JSON.stringify(selectorCompare.regionsIndexes.value)\r\n\t// ) {\r\n\t// \treturn;\r\n\t// }\r\n\r\n\t// обновление regionIndex, searcherKey, selectorCompare.regionsIndexes\r\n\tif (props.onlySearcher) {\r\n\t\t// if (!model.value.length) {\r\n\t\t// \tselectorSearcher.searcherKey.value = dummyIndex;\r\n\t\t//\r\n\t\t// \treturn;\r\n\t\t// }\r\n\r\n\t\tif (model.value.length === 1) {\r\n\t\t\tselectSearcher.searcherKey.value = model.value[0];\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tselectSearcher.searcherKey.value = -1;\r\n\r\n\t\treturn;\r\n\t} else {\r\n\t\t// if (!model.value.length) {\r\n\t\t// \tselectorSearcher.searcherKey.value = dummyIndex;\r\n\t\t// \tselectorRegion.regionIndex.value = dummyIndex;\r\n\t\t//\r\n\t\t// \treturn;\r\n\t\t// }\r\n\r\n\t\tif (model.value.length === 1 && selectSearcher.searcherKey.value !== -1) {\r\n\t\t\tselectRegion.regionIndex.value = model.value[0];\r\n\r\n\t\t\tlet newSearherKey: number | undefined;\r\n\t\t\tfor (const searcher of searcherByKey.value.values()) {\r\n\t\t\t\tfor (const region of searcher.regionByIndex.values()) {\r\n\t\t\t\t\tconst currentRegionIndex = props.forFrequency ? region.key : region.index;\r\n\t\t\t\t\tif (currentRegionIndex === selectRegion.regionIndex.value) {\r\n\t\t\t\t\t\tnewSearherKey = searcher.key;\r\n\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (newSearherKey !== undefined) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (newSearherKey !== undefined) {\r\n\t\t\t\tselectSearcher.searcherKey.value = newSearherKey;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tselectSearcher.searcherKey.value = -1;\r\n\t\t\tcompare.regionsIndexes.value = [...model.value];\r\n\t\t}\r\n\t}\r\n}, { immediate: true });\r\n\r\ndefineExpose({\r\n\tgetSearcher,\r\n\tgetRegion,\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<div\r\n\t\t:class=\"{\r\n\t\t\t'top-selectorRegion': true,\r\n\t\t\t'top-selectorRegion-onlySearcher': onlySearcher,\r\n\t\t}\"\r\n\t>\r\n\t\t<Select\r\n\t\t\t:options=\"selectSearcher.optionBySearcherKey.value\"\r\n\t\t\tv-model=\"selectSearcher.searcherKey.value\"\r\n\t\t\tname=\"searcher_key\"\r\n\t\t\t:addChanger=\"addChanger\"\r\n\t\t/>\r\n\r\n\t\t<Select\r\n\t\t\tv-if=\"!onlySearcher && selectSearcher.searcherKey.value !== -1\"\r\n\t\t\tclass=\"top-select-region\"\r\n\t\t\t:options=\"selectRegion.optionByRegionIndex.value\"\r\n\t\t\tv-model=\"selectRegion.regionIndex.value\"\r\n\t\t\t:name=\"forFrequency ? 'region_key' : 'region_index'\"\r\n\t\t\t:addChanger=\"addChanger\"\r\n\t\t\t:data-top-icon=\"addRegionIcon ? '' : undefined\"\r\n\t\t/>\r\n\r\n\t\t<Button\r\n\t\t\tv-if=\"addCompare && !onlySearcher && selectSearcher.searcherKey.value === -1\"\r\n\t\t\tname=\"compare\"\r\n\t\t\t@click=\"onClickCompare\"\r\n\t\t\t:data-count-compare-regions-indexes=\"compare.regionsIndexes.value.length\"\r\n\t\t>\r\n\t\t\t{{ $i18n.Common.Selected_regions }}\r\n\t\t</Button>\r\n\t</div>\r\n</template>\r\n\r\n<style module>\r\n@import \"./styles/searcherColors.css\";\r\n\r\n.top-selectorRegion {\r\n\twidth: 320px;\r\n\tdisplay: inline-flex;\r\n\tvertical-align: middle;\r\n}\r\n\r\n.top-selectorRegion > .top-select {\r\n\tflex-grow: 1;\r\n}\r\n\r\n.top-selectorRegion > .top-select:focus-within {\r\n\tz-index: 4;\r\n}\r\n\r\n.top-selectorRegion > .top-select > .top-select_select:hover,\r\n.top-selectorRegion > .top-select > .top-select_select.top-error {\r\n\tz-index: 1;\r\n}\r\n\r\n.top-selectorRegion > .top-select-searcher_key {\r\n\twidth: 120px;\r\n\tmax-width: 140px;\r\n\tmargin-right: -1px;\r\n}\r\n\r\n.top-selectorRegion > .top-select-region > select {\r\n\tborder-top-left-radius: 0;\r\n\tborder-bottom-left-radius: 0;\r\n}\r\n\r\n.top-selectorRegion > .top-select-region {\r\n\t--top-icon-size: 20px;\r\n\t--top-icon-color: var(--color-text-primary-1);\r\n\r\n\t--top-icon2-size: 20px;\r\n\t--top-icon2-color: var(--color-text-primary-1);\r\n}\r\n\r\n.top-selectorRegion > .top-select-region[data-top-icon][data-top-icon2] {\r\n\t--top-icon2-size: 16px;\r\n}\r\n\r\n.top-selectorRegion > .top-select-region[data-top-icon][data-top-icon2]:after {\r\n\ttext-indent: -4px;\r\n}\r\n\r\n.top-selectorRegion > [name=\"compare\"] {\r\n\tborder-top-left-radius: 0;\r\n\tborder-bottom-left-radius: 0;\r\n\tflex-grow: 1;\r\n}\r\n\r\n.top-selectorRegion > [name=\"compare\"]:after {\r\n\tcontent: \"(\" attr(data-count-compare-regions-indexes) \")\";\r\n\tmargin: 0 0 0 6px;\r\n}\r\n\r\n.top-selectorRegion:not(.top-selectorRegion-onlySearcher) > .top-select-searcher_key > select {\r\n\tborder-top-right-radius: 0;\r\n\tborder-bottom-right-radius: 0;\r\n\tmargin-right: 0;\r\n}\r\n\r\n.top-selectorRegion:not(.top-selectorRegion-onlySearcher) > .top-select-searcher_key[data-value=\"-1\"] > select {\r\n\tborder-right: none;\r\n}\r\n\r\n.top-selectorRegion-onlySearcher {\r\n\twidth: 120px;\r\n}\r\n</style>\r\n","import type { ComponentCustomProps } from 'vue';\r\n\r\nimport SelectorCompetitors from './selectorCompetitors/selectorCompetitors.vue';\r\nimport SelectorRegion from './selectorRegion/selectorRegion.vue';\r\n\r\nexport const TopSelectorCompetitors = SelectorCompetitors as typeof SelectorCompetitors & ComponentCustomProps;\r\nexport const TopSelectorRegion = SelectorRegion as typeof SelectorRegion & ComponentCustomProps;\r\n"],"names":["props","__props","selectAllItem","vue","forms","useSelectSearcher","mapSearchers","i18n","searcherKey","project_utils","optionBySearcherKey","res","searcher","option","utils_searchers","useSelectRegion","activeSearcherIndexed","regionIndex","_c","optionByRegionIndex","options","regionLabel","region","langLabel","newRegionIndex","optionByRegionIndex2","regionName","_a","oldOptionByRegionIndex","regionMatchLevel","index","title","regexpDevice","regionNameCompare","regionMatchLevelI","regionsIndexes","searcherByKey","regionsIndexesSaved","useSelectorRegion","selectSearcher","allRegionsIndexes","compare","newSearcherKey","selectRegion","regionsNewSearcher","_b","regionsCurrentSearcher","_d","getSearcherKey","getSearcher","getRegionIndex","emit","__emit","getRegion","model","modelSingle","defaultKey","newModel","defaultIndex","all","newSearherKey","__expose","TopSelectorCompetitors","SelectorCompetitors","TopSelectorRegion","SelectorRegion"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import P from "../core/core.js";
2
- import { defineComponent as j, mergeModels as N, useModel as b, computed as R, openBlock as V, createElementBlock as q, unref as K, createBlock as w, withCtx as _, createVNode as J, createTextVNode as A, toDisplayString as E, Fragment as H, renderList as Q, normalizeClass as D, createElementVNode as W, ref as F, watch as B, createCommentVNode as T } from "vue";
2
+ import { defineComponent as j, mergeModels as N, useModel as b, computed as R, openBlock as V, createElementBlock as q, unref as C, createBlock as w, withCtx as _, createVNode as A, createTextVNode as J, toDisplayString as E, Fragment as H, renderList as Q, normalizeClass as D, createElementVNode as W, ref as F, watch as B, createCommentVNode as T } from "vue";
3
3
  import { b as L, C as X, T as z, _ as U, S as $ } from "../.chunks/forms-CHiMZ8vg.es.js";
4
4
  import { P as Y, a as Z } from "../.chunks/listItem.vue_vue_type_script_setup_true_lang-Bb7B8CTJ.es.js";
5
5
  import { M as ee } from "../.chunks/menu-CHeV29rC.es.js";
6
- import { d as h, g as ne, s as oe, f as te } from "../.chunks/utils-BOlUthaH.es.js";
6
+ import { d as p, g as ne, s as oe, f as te } from "../.chunks/utils-BOlUthaH.es.js";
7
7
  import { getSearcherGIcon as le, getLangLabel as ae, getDeviceGIcon as re } from "../utils/searchers.js";
8
8
  const G = ["../assets/project.css"].map((n) => import.meta.resolve(n));
9
9
  P.insertCSSLinkToPage(G, !0);
@@ -19,8 +19,8 @@ const ie = { class: "top-selectorCompetitors" }, se = { class: "top-ellipsis1" }
19
19
  }),
20
20
  emits: ["update:modelValue"],
21
21
  setup(n) {
22
- const s = n, d = b(n, "modelValue"), t = R(() => {
23
- if (s.showSelectAllItem)
22
+ const i = n, v = b(n, "modelValue"), t = R(() => {
23
+ if (i.showSelectAllItem)
24
24
  return {
25
25
  icon: "",
26
26
  title: L().Common.Select_all,
@@ -29,9 +29,9 @@ const ie = { class: "top-selectorCompetitors" }, se = { class: "top-ellipsis1" }
29
29
  };
30
30
  });
31
31
  return (e, r) => (V(), q("div", ie, [
32
- K(X).state.isMobile ? (V(), w(Y, { key: 0 }, {
32
+ C(X).state.isMobile ? (V(), w(Y, { key: 0 }, {
33
33
  opener: _(() => [
34
- J(z, {
34
+ A(z, {
35
35
  class: "top-selectorCompetitors_opener",
36
36
  color: "theme",
37
37
  icon: "",
@@ -40,9 +40,9 @@ const ie = { class: "top-selectorCompetitors" }, se = { class: "top-ellipsis1" }
40
40
  default: _(() => {
41
41
  var o;
42
42
  return [
43
- A(E((o = e.items.find((a) => {
44
- var u;
45
- return a.value === ((u = d.value) == null ? void 0 : u[0]);
43
+ J(E((o = e.items.find((a) => {
44
+ var c;
45
+ return a.value === ((c = v.value) == null ? void 0 : c[0]);
46
46
  })) == null ? void 0 : o.content), 1)
47
47
  ];
48
48
  }),
@@ -51,14 +51,14 @@ const ie = { class: "top-selectorCompetitors" }, se = { class: "top-ellipsis1" }
51
51
  ]),
52
52
  contentList: _(() => [
53
53
  (V(!0), q(H, null, Q(e.items, (o, a) => {
54
- var u;
54
+ var c;
55
55
  return V(), w(Z, {
56
56
  class: D({
57
- "top-active": (u = d.value) == null ? void 0 : u.includes(o.value)
57
+ "top-active": (c = v.value) == null ? void 0 : c.includes(o.value)
58
58
  }),
59
59
  "data-top-icon": o.icon,
60
60
  title: o.title,
61
- onClick: () => d.value = [o.value]
61
+ onClick: () => v.value = [o.value]
62
62
  }, {
63
63
  default: _(() => [
64
64
  W("span", se, E(o.content), 1)
@@ -70,8 +70,8 @@ const ie = { class: "top-selectorCompetitors" }, se = { class: "top-ellipsis1" }
70
70
  _: 1
71
71
  })) : (V(), w(ee, {
72
72
  key: 1,
73
- modelValue: d.value,
74
- "onUpdate:modelValue": r[0] || (r[0] = (o) => d.value = o),
73
+ modelValue: v.value,
74
+ "onUpdate:modelValue": r[0] || (r[0] = (o) => v.value = o),
75
75
  items: e.items,
76
76
  isMultiple: !0,
77
77
  styling: "bar",
@@ -85,16 +85,16 @@ const ie = { class: "top-selectorCompetitors" }, se = { class: "top-ellipsis1" }
85
85
  "top-button": "top-button"
86
86
  }, de = {
87
87
  $style: ce
88
- }, ve = /* @__PURE__ */ U(ue, [["__cssModules", de]]), ge = (n, s) => {
89
- const d = L(), t = F(s.value.keys().next().value ?? h), e = R(() => {
88
+ }, ve = /* @__PURE__ */ U(ue, [["__cssModules", de]]), fe = (n, i) => {
89
+ const v = L(), t = F(i.value.keys().next().value ?? p), e = R(() => {
90
90
  const r = /* @__PURE__ */ new Map();
91
- if (s.value.forEach((o) => {
91
+ if (i.value.forEach((o) => {
92
92
  let a = {
93
93
  value: o.key,
94
94
  title: o.name
95
95
  };
96
96
  n.addSearcherIcon && (a.icon = le(o.key)), r.set(o.key, a);
97
- }), n.addCompare && !r.has(h)) {
97
+ }), n.addCompare && !r.has(p)) {
98
98
  const o = {
99
99
  value: "",
100
100
  title: "--------------------",
@@ -103,7 +103,7 @@ const ie = { class: "top-selectorCompetitors" }, se = { class: "top-ellipsis1" }
103
103
  r.set(o.value, o);
104
104
  const a = {
105
105
  value: -1,
106
- title: d.Common.Compare
106
+ title: v.Common.Compare
107
107
  };
108
108
  r.set(a.value, a);
109
109
  }
@@ -113,65 +113,65 @@ const ie = { class: "top-selectorCompetitors" }, se = { class: "top-ellipsis1" }
113
113
  searcherKey: t,
114
114
  optionBySearcherKey: e
115
115
  };
116
- }, fe = (n, s) => {
116
+ }, ge = (n, i) => {
117
117
  var r, o, a;
118
- const d = L(), t = F(h);
119
- n.modelValue.length === 1 && (t.value = n.modelValue[0]), t.value === h && (n.forFrequency ? t.value = ((o = (r = s.value) == null ? void 0 : r.regionByIndex.values().next().value) == null ? void 0 : o.key) ?? h : t.value = ((a = s.value) == null ? void 0 : a.regionByIndex.keys().next().value) ?? h);
118
+ const v = L(), t = F(p);
119
+ n.modelValue.length === 1 && (t.value = n.modelValue[0]), t.value === p && (n.forFrequency ? t.value = ((o = (r = i.value) == null ? void 0 : r.regionByIndex.values().next().value) == null ? void 0 : o.key) ?? p : t.value = ((a = i.value) == null ? void 0 : a.regionByIndex.keys().next().value) ?? p);
120
120
  const e = R(() => {
121
- var v;
122
- const u = /* @__PURE__ */ new Map();
123
- return (v = s.value.regionByIndex) == null || v.forEach((i) => {
124
- let l = i.name;
121
+ var f;
122
+ const c = /* @__PURE__ */ new Map();
123
+ return (f = i.value.regionByIndex) == null || f.forEach((s) => {
124
+ let l = s.name;
125
125
  if (n.forFrequency) {
126
- const S = {
127
- value: i.key,
126
+ const x = {
127
+ value: s.key,
128
128
  title: l
129
129
  };
130
- u.has(i.key) || u.set(i.key, S);
130
+ c.has(s.key) || c.set(s.key, x);
131
131
  return;
132
132
  }
133
- i.device && (l += " (" + d.Common["Device_" + i.device] + ")");
134
- const y = ae(s.value.key || 0, i.lang ?? "");
133
+ s.device && (l += " (" + v.Common["Device_" + s.device] + ")");
134
+ const y = ae(i.value.key || 0, s.lang ?? "");
135
135
  y && (l += " / " + y);
136
- const f = {
137
- value: i.index,
136
+ const m = {
137
+ value: s.index,
138
138
  title: l,
139
- icon: i.device ? re(i.device) : void 0
139
+ icon: s.device ? re(s.device) : void 0
140
140
  };
141
- u.set(i.index, f);
142
- }), u;
141
+ c.set(s.index, m);
142
+ }), c;
143
143
  });
144
- return B(e, (u, v) => {
145
- var f;
146
- if (n.onlySearcher || t.value !== void 0 && u.get(t.value))
144
+ return B(e, (c, f) => {
145
+ var m;
146
+ if (n.onlySearcher || t.value !== void 0 && c.get(t.value))
147
147
  return;
148
- let i = u.keys().next().value;
149
- if (t.value === h || i === h) {
150
- t.value = i;
148
+ let s = c.keys().next().value;
149
+ if (t.value === p || s === p) {
150
+ t.value = s;
151
151
  return;
152
152
  }
153
- let l = ((f = v == null ? void 0 : v.get(t.value)) == null ? void 0 : f.title) || "", y = -1;
154
- for (const [S, g] of u.entries()) {
155
- const m = g.title;
156
- if (typeof m != "string" || typeof S == "string")
153
+ let l = ((m = f == null ? void 0 : f.get(t.value)) == null ? void 0 : m.title) || "", y = -1;
154
+ for (const [x, g] of c.entries()) {
155
+ const d = g.title;
156
+ if (typeof d != "string" || typeof x == "string")
157
157
  break;
158
- if (m === l) {
159
- i = S;
158
+ if (d === l) {
159
+ s = x;
160
160
  break;
161
161
  }
162
- const p = new RegExp(` \\((${d.Common.Device_1}|${d.Common.Device_2})\\)`);
163
- let x = l, C = 3;
164
- m.indexOf(x) === -1 && (x = l.replace(/^[^a-zа-я]/i, "").replace(p, ""), C--), m.indexOf(x) === -1 && (x = l.replace(/ \/.*/, ""), C--), m.indexOf(x) === -1 && (x = l.replace(/ \/.*/, ""), x = x.replace(/^[^a-zа-я]/i, "").replace(p, ""), C--), m.indexOf(x) !== -1 && (C <= y || (y = C, i = S));
162
+ const I = new RegExp(` \\((${v.Common.Device_1}|${v.Common.Device_2})\\)`);
163
+ let h = l, k = 3;
164
+ d.indexOf(h) === -1 && (h = l.replace(/^[^a-zа-я]/i, "").replace(I, ""), k--), d.indexOf(h) === -1 && (h = l.replace(/ \/.*/, ""), k--), d.indexOf(h) === -1 && (h = l.replace(/ \/.*/, ""), h = h.replace(/^[^a-zа-я]/i, "").replace(I, ""), k--), d.indexOf(h) !== -1 && (k <= y || (y = k, s = x));
165
165
  }
166
- t.value = i;
166
+ t.value = s;
167
167
  }), {
168
168
  regionIndex: t,
169
169
  optionByRegionIndex: e
170
170
  };
171
- }, me = (n, s, d) => {
171
+ }, me = (n, i, v) => {
172
172
  const t = F([]), e = () => {
173
- if (n.onlySearcher && s.value) {
174
- t.value = Array.from(s.value.keys());
173
+ if (n.onlySearcher && i.value) {
174
+ t.value = Array.from(i.value.keys());
175
175
  return;
176
176
  }
177
177
  let o = [];
@@ -184,7 +184,7 @@ const ie = { class: "top-selectorCompetitors" }, se = { class: "top-ellipsis1" }
184
184
  ) ?? [];
185
185
  } catch {
186
186
  }
187
- o.length && (o = o.filter((a) => d.value.has(a))), o.length || (o = Array.from(d.value)), t.value = [...o];
187
+ o.length && (o = o.filter((a) => v.value.has(a))), o.length || (o = Array.from(v.value)), t.value = [...o];
188
188
  }, r = () => {
189
189
  t.value.length ? localStorage.setItem("ui:project:regionSelector:" + n.projectId + ":regionsIndexes", JSON.stringify(t.value)) : localStorage.removeItem("ui:project:regionSelector:" + n.projectId + ":regionsIndexes");
190
190
  };
@@ -194,60 +194,61 @@ const ie = { class: "top-selectorCompetitors" }, se = { class: "top-ellipsis1" }
194
194
  regionsIndexes: t
195
195
  };
196
196
  }, ye = (n) => {
197
- const s = R(() => ne(n.forFrequency, n.autoRegion, n.searchers)), d = R(() => s.value.get(e.searcherKey.value) || oe), t = R(() => {
197
+ const i = R(() => ne(n.forFrequency, n.autoRegion, n.searchers)), v = R(() => i.value.get(e.searcherKey.value) || oe), t = R(() => {
198
198
  const l = /* @__PURE__ */ new Set();
199
- return s.value.forEach((y) => {
200
- var f;
201
- (f = y.regions) == null || f.forEach((S) => {
202
- S.index !== -1 && S.index !== h && l.add(S.index);
199
+ return i.value.forEach((y) => {
200
+ var m;
201
+ (m = y.regions) == null || m.forEach((x) => {
202
+ x.index !== -1 && x.index !== p && l.add(x.index);
203
203
  });
204
204
  }), l;
205
- }), e = ge(n, s), r = fe(n, d), o = me(n, s, t);
206
- B(s, () => {
207
- var y, f, S, g, m;
208
- if (e.searcherKey.value === -1) {
209
- o.regionsIndexes.value = o.regionsIndexes.value.filter((p) => t.value.has(p));
210
- return;
211
- }
212
- let l = s.value.keys().next().value;
213
- s.value.forEach((p) => {
214
- var x, C, c;
215
- if (r.regionIndex.value && ((x = p.regionByIndex) != null && x.has(r.regionIndex.value)) && (l = p.key), !n.onlySearcher) {
216
- let I;
217
- l !== void 0 && (I = (C = s.value.get(l)) == null ? void 0 : C.regionByIndex);
218
- const k = (c = s.value.get(p.key)) == null ? void 0 : c.regionByIndex;
219
- I != null && I.has(h) && !(k != null && k.has(h)) && (l = p.key);
205
+ }), e = fe(n, i), r = ge(n, v), o = me(n, i, t);
206
+ B(i, () => {
207
+ var y, m, x, g;
208
+ if (n.onlySearcher ? o.regionsIndexes.value = Array.from(i.value.keys()) : o.regionsIndexes.value = o.regionsIndexes.value.filter((d) => t.value.has(d)), e.searcherKey.value === -1) return;
209
+ let l = i.value.keys().next().value;
210
+ i.value.forEach((d) => {
211
+ var I, h, k;
212
+ if (n.onlySearcher && d.key === e.searcherKey.value) {
213
+ l = e.searcherKey.value;
214
+ return;
215
+ }
216
+ if (r.regionIndex.value && ((I = d.regionByIndex) != null && I.has(r.regionIndex.value)) && (l = d.key), !n.onlySearcher) {
217
+ let u;
218
+ l !== void 0 && (u = (h = i.value.get(l)) == null ? void 0 : h.regionByIndex);
219
+ const S = (k = i.value.get(d.key)) == null ? void 0 : k.regionByIndex;
220
+ u != null && u.has(p) && !(S != null && S.has(p)) && (l = d.key);
220
221
  }
221
- }), n.addCompare && !e.optionBySearcherKey.value.has(h) && !r.regionIndex.value && (y = o.regionsIndexes.value) != null && y.length && (l = -1), n.onlySearcher && r.regionIndex.value !== h && (l = r.regionIndex.value), l !== void 0 && (e.searcherKey.value = l), r.regionIndex.value !== void 0 && !((S = (f = d.value) == null ? void 0 : f.regionByIndex) != null && S.has(r.regionIndex.value)) && (r.regionIndex.value = (m = (g = d.value) == null ? void 0 : g.regions) == null ? void 0 : m.keys().next().value);
222
+ }), l !== void 0 && (e.searcherKey.value = l), r.regionIndex.value !== void 0 && !((m = (y = v.value) == null ? void 0 : y.regionByIndex) != null && m.has(r.regionIndex.value)) && (r.regionIndex.value = (g = (x = v.value) == null ? void 0 : x.regions) == null ? void 0 : g.keys().next().value);
222
223
  }, { immediate: !0 });
223
224
  const a = () => {
224
- if (!(e.searcherKey.value === -1 || e.searcherKey.value === h))
225
+ if (!(e.searcherKey.value === -1 || e.searcherKey.value === p))
225
226
  return e.searcherKey.value;
226
- }, u = () => {
227
- if (n.onlySearcher || r.regionIndex.value === h) return;
227
+ }, c = () => {
228
+ if (n.onlySearcher || r.regionIndex.value === p) return;
228
229
  let l = r.regionIndex.value;
229
230
  if (n.forFrequency) {
230
- const y = r.regionIndex.value, f = te(n.forFrequency, { searcher_key: a(), key: y }, n.searchers);
231
- l = f == null ? void 0 : f.index;
231
+ const y = r.regionIndex.value, m = te(n.forFrequency, { searcher_key: a(), key: y }, n.searchers);
232
+ l = m == null ? void 0 : m.index;
232
233
  }
233
234
  return l;
234
- }, v = () => {
235
+ }, f = () => {
235
236
  const l = a();
236
237
  if (l !== void 0)
237
- return s.value.get(l);
238
+ return i.value.get(l);
238
239
  };
239
240
  return {
240
241
  selectSearcher: e,
241
242
  selectRegion: r,
242
243
  compare: o,
243
- searcherByKey: s,
244
+ searcherByKey: i,
244
245
  allRegionsIndexes: t,
245
- getSearcher: v,
246
+ getSearcher: f,
246
247
  getRegion: () => {
247
- var y, f;
248
- const l = u();
248
+ var y, m;
249
+ const l = c();
249
250
  if (l !== void 0)
250
- return (f = (y = v()) == null ? void 0 : y.regionByIndex) == null ? void 0 : f.get(l);
251
+ return (m = (y = f()) == null ? void 0 : y.regionByIndex) == null ? void 0 : m.get(l);
251
252
  }
252
253
  };
253
254
  }, he = /* @__PURE__ */ j({
@@ -271,68 +272,68 @@ const ie = { class: "top-selectorCompetitors" }, se = { class: "top-ellipsis1" }
271
272
  modelValueSingleModifiers: {}
272
273
  }),
273
274
  emits: /* @__PURE__ */ N(["compareRegions"], ["update:modelValue", "update:modelValueSingle"]),
274
- setup(n, { expose: s, emit: d }) {
275
- const t = n, e = b(n, "modelValue"), r = b(n, "modelValueSingle"), o = d, {
275
+ setup(n, { expose: i, emit: v }) {
276
+ const t = n, e = b(n, "modelValue"), r = b(n, "modelValueSingle"), o = v, {
276
277
  selectSearcher: a,
277
- selectRegion: u,
278
- compare: v,
279
- searcherByKey: i,
278
+ selectRegion: c,
279
+ compare: f,
280
+ searcherByKey: s,
280
281
  allRegionsIndexes: l,
281
282
  getSearcher: y,
282
- getRegion: f
283
- } = ye(t), S = () => {
283
+ getRegion: m
284
+ } = ye(t), x = () => {
284
285
  var g;
285
286
  if (window.fieldTemplates && ((g = window.fieldTemplates) != null && g.openSelectorRegions)) {
286
287
  window.fieldTemplates.openSelectorRegions(
287
- i.value,
288
- v.regionsIndexes.value,
289
- (m) => v.regionsIndexes.value = m
288
+ s.value,
289
+ f.regionsIndexes.value,
290
+ (d) => f.regionsIndexes.value = d
290
291
  );
291
292
  return;
292
293
  }
293
- o("compareRegions", i.value);
294
+ o("compareRegions", s.value);
294
295
  };
295
- return B([u.regionIndex, a.searcherKey, v.regionsIndexes], () => {
296
- if (a.searcherKey.value === -1 && v.regionsIndexes.value.length) {
297
- if (JSON.stringify(e.value) === JSON.stringify(v.regionsIndexes.value))
296
+ return B([c.regionIndex, a.searcherKey, f.regionsIndexes], () => {
297
+ if (a.searcherKey.value === -1 && f.regionsIndexes.value.length) {
298
+ if (JSON.stringify(e.value) === JSON.stringify(f.regionsIndexes.value))
298
299
  return;
299
- e.value = [...v.regionsIndexes.value];
300
+ e.value = [...f.regionsIndexes.value];
300
301
  } else
301
- e.value = [t.onlySearcher ? a.searcherKey.value : u.regionIndex.value];
302
- l.value.size || (a.searcherKey.value = h);
302
+ e.value = [t.onlySearcher ? a.searcherKey.value : c.regionIndex.value];
303
+ !t.onlySearcher && !l.value.size && (a.searcherKey.value = p);
303
304
  }), r.value && B(r, () => {
304
305
  e.value = [r.value];
305
306
  }, { immediate: !0 }), B(e, () => {
306
- var g, m, p, x, C;
307
+ var g, d, I, h, k;
307
308
  if (e.value[0] && (r.value = e.value[0]), t.onlySearcher) {
308
- if (!e.value.length || e.value.length === 1 && !i.value.has(e.value[0])) {
309
- let c = i.value.keys().next().value;
310
- c !== void 0 && (e.value = [c]);
309
+ if (!e.value.length || e.value.length === 1 && !s.value.has(e.value[0])) {
310
+ let u = s.value.keys().next().value;
311
+ u !== void 0 && (e.value = [u]);
311
312
  return;
312
313
  }
313
- if (e.value.length > 1 && JSON.stringify(e.value) !== JSON.stringify(v.regionsIndexes.value)) {
314
- e.value = [...v.regionsIndexes.value];
314
+ if (e.value.length > 1 && JSON.stringify(e.value) !== JSON.stringify(f.regionsIndexes.value)) {
315
+ e.value = [...f.regionsIndexes.value];
315
316
  return;
316
317
  }
317
318
  } else {
318
- let c = [...new Set(e.value)], I = (m = (g = i.value.values().next().value) == null ? void 0 : g.regionByIndex) == null ? void 0 : m.keys().next().value;
319
- if (t.forFrequency && (I = (C = (x = (p = i.value.values().next().value) == null ? void 0 : p.regionByIndex) == null ? void 0 : x.values().next().value) == null ? void 0 : C.key), !c.length)
320
- I !== void 0 && c.push(I);
321
- else if (c.length === 1) {
322
- let k = l.value;
323
- t.forFrequency && (k = /* @__PURE__ */ new Set(), i.value.forEach((O) => {
319
+ let u = [...new Set(e.value)], S = (d = (g = s.value.values().next().value) == null ? void 0 : g.regionByIndex) == null ? void 0 : d.keys().next().value;
320
+ if (t.forFrequency && (S = (k = (h = (I = s.value.values().next().value) == null ? void 0 : I.regionByIndex) == null ? void 0 : h.values().next().value) == null ? void 0 : k.key), !u.length)
321
+ S !== void 0 && u.push(S);
322
+ else if (u.length === 1) {
323
+ let K = l.value;
324
+ t.forFrequency && (K = /* @__PURE__ */ new Set(), s.value.forEach((O) => {
324
325
  O.regionByIndex.forEach((M) => {
325
- M.index !== -1 && M.index !== h && k.add(M.key);
326
+ M.index !== -1 && M.index !== p && K.add(M.key);
326
327
  });
327
- })), !k.has(c[0]) && c[0] !== -2 && (c = [], I !== void 0 && c.push(I));
328
+ })), !K.has(u[0]) && u[0] !== -2 && (u = [], S !== void 0 && u.push(S));
328
329
  } else
329
- c = c.filter((k) => l.value.has(k)), !c.length && I !== void 0 && c.push(I);
330
- if (JSON.stringify(e.value) !== JSON.stringify(c)) {
331
- e.value = c;
330
+ u = u.filter((K) => l.value.has(K)), !u.length && S !== void 0 && u.push(S);
331
+ if (JSON.stringify(e.value) !== JSON.stringify(u)) {
332
+ e.value = u;
332
333
  return;
333
334
  }
334
335
  }
335
- if (!(e.value.length === 1 && e.value[0] === (t.onlySearcher ? a.searcherKey.value : u.regionIndex.value)))
336
+ if (!(e.value.length === 1 && e.value[0] === (t.onlySearcher ? a.searcherKey.value : c.regionIndex.value)))
336
337
  if (t.onlySearcher) {
337
338
  if (e.value.length === 1) {
338
339
  a.searcherKey.value = e.value[0];
@@ -341,54 +342,54 @@ const ie = { class: "top-selectorCompetitors" }, se = { class: "top-ellipsis1" }
341
342
  a.searcherKey.value = -1;
342
343
  return;
343
344
  } else if (e.value.length === 1 && a.searcherKey.value !== -1) {
344
- u.regionIndex.value = e.value[0];
345
- let c;
346
- for (const I of i.value.values()) {
347
- for (const k of I.regionByIndex.values())
348
- if ((t.forFrequency ? k.key : k.index) === u.regionIndex.value) {
349
- c = I.key;
345
+ c.regionIndex.value = e.value[0];
346
+ let u;
347
+ for (const S of s.value.values()) {
348
+ for (const K of S.regionByIndex.values())
349
+ if ((t.forFrequency ? K.key : K.index) === c.regionIndex.value) {
350
+ u = S.key;
350
351
  break;
351
352
  }
352
- if (c !== void 0)
353
+ if (u !== void 0)
353
354
  break;
354
355
  }
355
- c !== void 0 && (a.searcherKey.value = c);
356
+ u !== void 0 && (a.searcherKey.value = u);
356
357
  } else
357
- a.searcherKey.value = -1, v.regionsIndexes.value = [...e.value];
358
- }, { immediate: !0 }), s({
358
+ a.searcherKey.value = -1, f.regionsIndexes.value = [...e.value];
359
+ }, { immediate: !0 }), i({
359
360
  getSearcher: y,
360
- getRegion: f
361
- }), (g, m) => (V(), q("div", {
361
+ getRegion: m
362
+ }), (g, d) => (V(), q("div", {
362
363
  class: D({
363
364
  "top-selectorRegion": !0,
364
365
  "top-selectorRegion-onlySearcher": g.onlySearcher
365
366
  })
366
367
  }, [
367
- J($, {
368
- options: K(a).optionBySearcherKey.value,
369
- modelValue: K(a).searcherKey.value,
370
- "onUpdate:modelValue": m[0] || (m[0] = (p) => K(a).searcherKey.value = p),
368
+ A($, {
369
+ options: C(a).optionBySearcherKey.value,
370
+ modelValue: C(a).searcherKey.value,
371
+ "onUpdate:modelValue": d[0] || (d[0] = (I) => C(a).searcherKey.value = I),
371
372
  name: "searcher_key",
372
373
  addChanger: g.addChanger
373
374
  }, null, 8, ["options", "modelValue", "addChanger"]),
374
- !g.onlySearcher && K(a).searcherKey.value !== -1 ? (V(), w($, {
375
+ !g.onlySearcher && C(a).searcherKey.value !== -1 ? (V(), w($, {
375
376
  key: 0,
376
377
  class: "top-select-region",
377
- options: K(u).optionByRegionIndex.value,
378
- modelValue: K(u).regionIndex.value,
379
- "onUpdate:modelValue": m[1] || (m[1] = (p) => K(u).regionIndex.value = p),
378
+ options: C(c).optionByRegionIndex.value,
379
+ modelValue: C(c).regionIndex.value,
380
+ "onUpdate:modelValue": d[1] || (d[1] = (I) => C(c).regionIndex.value = I),
380
381
  name: g.forFrequency ? "region_key" : "region_index",
381
382
  addChanger: g.addChanger,
382
383
  "data-top-icon": g.addRegionIcon ? "" : void 0
383
384
  }, null, 8, ["options", "modelValue", "name", "addChanger", "data-top-icon"])) : T("", !0),
384
- g.addCompare && !g.onlySearcher && K(a).searcherKey.value === -1 ? (V(), w(z, {
385
+ g.addCompare && !g.onlySearcher && C(a).searcherKey.value === -1 ? (V(), w(z, {
385
386
  key: 1,
386
387
  name: "compare",
387
- onClick: S,
388
- "data-count-compare-regions-indexes": K(v).regionsIndexes.value.length
388
+ onClick: x,
389
+ "data-count-compare-regions-indexes": C(f).regionsIndexes.value.length
389
390
  }, {
390
391
  default: _(() => [
391
- A(E(g.$i18n.Common.Selected_regions), 1)
392
+ J(E(g.$i18n.Common.Selected_regions), 1)
392
393
  ]),
393
394
  _: 1
394
395
  }, 8, ["data-count-compare-regions-indexes"])) : T("", !0)
@@ -404,7 +405,7 @@ const ie = { class: "top-selectorCompetitors" }, se = { class: "top-ellipsis1" }
404
405
  "top-selectorRegion-onlySearcher": "top-selectorRegion-onlySearcher"
405
406
  }, xe = {
406
407
  $style: pe
407
- }, Ie = /* @__PURE__ */ U(he, [["__cssModules", xe]]), _e = ve, we = Ie;
408
+ }, Se = /* @__PURE__ */ U(he, [["__cssModules", xe]]), _e = ve, we = Se;
408
409
  export {
409
410
  _e as TopSelectorCompetitors,
410
411
  we as TopSelectorRegion
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sources":["../../src/components/project/selectorCompetitors/selectorCompetitors.vue","../../src/components/project/selectorRegion/composables/selectSearcher.ts","../../src/components/project/selectorRegion/composables/selectRegion.ts","../../src/components/project/selectorRegion/composables/compare.ts","../../src/components/project/selectorRegion/composables/selectorRegion.ts","../../src/components/project/selectorRegion/selectorRegion.vue","../../src/components/project/project.ts"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport type { Props } from './selectorCompetitors';\r\nimport Core from '@/core/core/core';\r\nimport Button from '@/components/forms/button/button.vue';\r\nimport Popup from '@/components/popup/popup/popup.vue';\r\nimport ListItem from '@/components/popup/popup/listItem.vue';\r\nimport Menu from '@/components/formsExt/menu/menu.vue';\r\nimport { useI18n } from '@/core/plugins/i18n';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tshowSelectAllItem: true,\r\n});\r\nconst model = defineModel<Props['modelValue']>();\r\n\r\nconst selectAllItem = computed(() => {\r\n\tif (props.showSelectAllItem) {\r\n\t\treturn {\r\n\t\t\ticon: '',\r\n\t\t\ttitle: useI18n().Common.Select_all,\r\n\t\t\tvalue: 'all',\r\n\t\t\tcontent: '',\r\n\t\t};\r\n\t}\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<div class=\"top-selectorCompetitors\">\r\n\t\t<Popup v-if=\"Core.state.isMobile\">\r\n\t\t\t<template #opener>\r\n\t\t\t\t<Button\r\n\t\t\t\t\tclass=\"top-selectorCompetitors_opener\"\r\n\t\t\t\t\tcolor=\"theme\"\r\n\t\t\t\t\ticon=\"\"\r\n\t\t\t\t\ticon2=\"\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{ items.find((item) => item.value === model?.[0])?.content }}\r\n\t\t\t\t</Button>\r\n\t\t\t</template>\r\n\r\n\t\t\t<template #contentList>\r\n\t\t\t\t<ListItem\r\n\t\t\t\t\tv-for=\"(item, index) in items\"\r\n\t\t\t\t\t:class=\"{\r\n\t\t\t\t\t\t'top-active': model?.includes(item.value)\r\n\t\t\t\t\t}\"\r\n\t\t\t\t\t:data-top-icon=\"item.icon\"\r\n\t\t\t\t\t:title=\"item.title\"\r\n\t\t\t\t\t@click=\"() => model = [item.value]\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<span class=\"top-ellipsis1\">\r\n\t\t\t\t\t\t{{ item.content }}\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</ListItem>\r\n\t\t\t</template>\r\n\t\t</Popup>\r\n\r\n\t\t<Menu\r\n\t\t\tv-else\r\n\t\t\tv-model=\"model\"\r\n\t\t\t:items=\"items\"\r\n\t\t\t:isMultiple=\"true\"\r\n\t\t\tstyling=\"bar\"\r\n\t\t\t:canBeEmptyMultiple=\"false\"\r\n\t\t\t:selectAllItem=\"selectAllItem\"\r\n\t\t/>\r\n\t</div>\r\n</template>\r\n\r\n<style module>\r\n.top-selectorCompetitors_opener.top-button {\r\n\twidth: 100%;\r\n}\r\n</style>\r\n","import { computed, type ComputedRef, ref } from 'vue';\r\nimport { useI18n } from '@/core/plugins/i18n';\r\nimport type { Props, SearcherByKey } from '../selectorRegion';\r\nimport type { Option, Options } from '@/components/forms/select/select';\r\nimport { dummyIndex } from '../utils/consts';\r\nimport { getSearcherGIcon } from '@/core/utils/searchers';\r\n\r\n/**\r\n * Создание и управление реактивными переменными для выбора ПС\r\n *\r\n * @param props - входные props компонента\r\n * @param mapSearchers - Map ПС (реактивная)\r\n */\r\nexport const useSelectSearcher = (\r\n\tprops: Props,\r\n\tmapSearchers: ComputedRef<SearcherByKey>,\r\n) => {\r\n\tconst i18n = useI18n();\r\n\r\n\t/**\r\n\t * Ключ выбранной поисковой системы\r\n\t */\r\n\tconst searcherKey = ref(mapSearchers.value.keys().next().value ?? dummyIndex);\r\n\r\n\t/**\r\n\t * Коллекция опций для выбора ПС\r\n\t */\r\n\tconst optionBySearcherKey = computed(() => {\r\n\t\tconst res: Options = new Map();\r\n\t\tmapSearchers.value.forEach((searcher) => {\r\n\t\t\tlet option: Option = {\r\n\t\t\t\tvalue: searcher.key,\r\n\t\t\t\ttitle: searcher.name,\r\n\t\t\t};\r\n\r\n\t\t\tif (props.addSearcherIcon) option.icon = getSearcherGIcon(searcher.key);\r\n\r\n\t\t\tres.set(searcher.key, option);\r\n\t\t});\r\n\r\n\t\t// добавить режим сравнения, если есть хотя бы одна ПС\r\n\t\tif (props.addCompare && !res.has(dummyIndex)) {\r\n\t\t\tconst dummyOption: Option = {\r\n\t\t\t\tvalue: '',\r\n\t\t\t\ttitle: '--------------------',\r\n\t\t\t\tdisabled: true,\r\n\t\t\t};\r\n\t\t\tres.set(dummyOption.value, dummyOption);\r\n\r\n\t\t\tconst compareOption: Option = {\r\n\t\t\t\tvalue: -1,\r\n\t\t\t\ttitle: i18n.Common.Compare!,\r\n\t\t\t};\r\n\t\t\tres.set(compareOption.value, compareOption);\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t});\r\n\r\n\treturn {\r\n\t\tsearcherKey,\r\n\t\toptionBySearcherKey,\r\n\t};\r\n};\r\n","import { computed, type ComputedRef, ref, watch } from 'vue';\r\nimport { useI18n } from '@/core/plugins/i18n';\r\nimport { getDeviceGIcon, getLangLabel } from '@/core/utils/searchers';\r\nimport type { Option } from '@/components/forms/select/select';\r\nimport { dummyIndex } from '../utils/consts';\r\nimport type { Props, Region, SearcherIndexed } from '../selectorRegion';\r\n\r\n/**\r\n * Создание и управление реактивными переменными для выбора региона\r\n *\r\n * @param props - входные props компонента\r\n * @param activeSearcherIndexed - объект активной поисковой системы (реактивная)\r\n * @param regionsIndexes - входные индексы регионов/ПС\r\n */\r\nexport const useSelectRegion = (props: Props, activeSearcherIndexed: ComputedRef<SearcherIndexed>) => {\r\n\tconst i18n = useI18n();\r\n\r\n\t/**\r\n\t * Индекс выбранного региона\r\n\t */\r\n\tconst regionIndex = ref(dummyIndex);\r\n\r\n\tif (props.modelValue.length === 1) {\r\n\t\tregionIndex.value = props.modelValue[0];\r\n\t}\r\n\r\n\tif (regionIndex.value === dummyIndex) {\r\n\t\tif (props.forFrequency) {\r\n\t\t\t// в качетсве ключа используется region.key, а не region.index\r\n\t\t\tregionIndex.value = activeSearcherIndexed.value?.regionByIndex.values().next().value?.key ?? dummyIndex;\r\n\t\t} else {\r\n\t\t\tregionIndex.value = activeSearcherIndexed.value?.regionByIndex.keys().next().value ?? dummyIndex;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Коллекция опций для выбора региона\r\n\t */\r\n\tconst optionByRegionIndex = computed(() => {\r\n\t\tconst options = new Map<number, Option>();\r\n\r\n\t\tactiveSearcherIndexed.value.regionByIndex?.forEach((region) => {\r\n\t\t\tlet regionLabel = region.name;\r\n\r\n\t\t\t// на частоту в текущей версии устройство и язык не влияют\r\n\t\t\t// обратите внимание, в качетсве ключа используется region.key, а не region.index\r\n\t\t\tif (props.forFrequency) {\r\n\t\t\t\tconst option: Option = {\r\n\t\t\t\t\tvalue: region.key,\r\n\t\t\t\t\ttitle: regionLabel,\r\n\t\t\t\t};\r\n\t\t\t\tif (!options.has(region.key)) options.set(region.key, option);\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (region.device) {\r\n\t\t\t\tregionLabel += ' (' + i18n.Common['Device_' + region.device] + ')';\r\n\t\t\t}\r\n\r\n\t\t\tconst langLabel = getLangLabel(activeSearcherIndexed.value.key || 0, region.lang ?? '');\r\n\t\t\tif (langLabel) regionLabel += ' / ' + langLabel;\r\n\r\n\t\t\tconst option: Option = {\r\n\t\t\t\tvalue: region.index,\r\n\t\t\t\ttitle: regionLabel,\r\n\t\t\t\ticon: region.device ? getDeviceGIcon(region.device) : undefined,\r\n\t\t\t};\r\n\r\n\t\t\toptions.set(region.index, option);\r\n\t\t});\r\n\r\n\t\treturn options;\r\n\t});\r\n\r\n\t/**\r\n\t * Выбор максимально похожего региона в новой коллекции регионов\r\n\t */\r\n\twatch(optionByRegionIndex, (optionByRegionIndex, oldOptionByRegionIndex) => {\r\n\t\tif (props.onlySearcher || regionIndex.value !== undefined && optionByRegionIndex.get(regionIndex.value)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet newRegionIndex = optionByRegionIndex.keys().next().value as Region['index'];\r\n\t\tif (regionIndex.value === dummyIndex || newRegionIndex === dummyIndex) {\r\n\t\t\tregionIndex.value = newRegionIndex;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet regionName = (oldOptionByRegionIndex?.get(regionIndex.value) as Option)?.title || '';\r\n\t\tlet regionMatchLevel = -1;\r\n\t\tfor (const [index, option] of optionByRegionIndex.entries()) {\r\n\t\t\tconst title = (option as Option).title;\r\n\r\n\t\t\tif (typeof title !== 'string' || typeof index === 'string') {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\t// полное совпадение\r\n\t\t\tif (title === regionName) {\r\n\t\t\t\tnewRegionIndex = index;\r\n\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tconst regexpDevice = new RegExp(` \\\\((${i18n.Common['Device_1']}|${i18n.Common['Device_2']})\\\\)`);\r\n\t\t\tlet regionNameCompare = regionName;\r\n\t\t\tlet regionMatchLevelI = 3;\r\n\r\n\t\t\t// без устройства\r\n\t\t\tif (title.indexOf(regionNameCompare) === -1) {\r\n\t\t\t\tregionNameCompare = regionName.replace(/^[^a-zа-я]/i, '').replace(regexpDevice, '');\r\n\r\n\t\t\t\tregionMatchLevelI--;\r\n\t\t\t}\r\n\r\n\t\t\t// без языка\r\n\t\t\tif (title.indexOf(regionNameCompare) === -1) {\r\n\t\t\t\tregionNameCompare = regionName.replace(/ \\/.*/, '');\r\n\r\n\t\t\t\tregionMatchLevelI--;\r\n\t\t\t}\r\n\r\n\t\t\t// без устройства и без языка\r\n\t\t\tif (title.indexOf(regionNameCompare) === -1) {\r\n\t\t\t\tregionNameCompare = regionName.replace(/ \\/.*/, '');\r\n\t\t\t\tregionNameCompare = regionNameCompare.replace(/^[^a-zа-я]/i, '').replace(regexpDevice, '');\r\n\r\n\t\t\t\tregionMatchLevelI--;\r\n\t\t\t}\r\n\r\n\t\t\tif (title.indexOf(regionNameCompare) === -1) continue;\r\n\t\t\tif (regionMatchLevelI <= regionMatchLevel) continue;\r\n\r\n\t\t\tregionMatchLevel = regionMatchLevelI;\r\n\t\t\tnewRegionIndex = index;\r\n\t\t}\r\n\r\n\t\tregionIndex.value = newRegionIndex;\r\n\t});\r\n\r\n\treturn {\r\n\t\tregionIndex,\r\n\t\toptionByRegionIndex,\r\n\t};\r\n};\r\n","import { type ComputedRef, ref, watch } from 'vue';\r\nimport type { Props, SearcherByKey } from '../selectorRegion';\r\n\r\n/**\r\n * Создание и управление реактивными переменными для сравнения\r\n *\r\n * @param props - входные props компонента\r\n * @param searcherByKey - Map ПС (реактивная)\r\n * @param allRegionsIndexes - Все доступные индексы регионов (реактивная)\r\n */\r\nexport const useCompare = (props: Props, searcherByKey: ComputedRef<SearcherByKey>, allRegionsIndexes: ComputedRef<Set<number>>) => {\r\n\t/**\r\n\t * Индексы регионов/ПС в сравнение\r\n\t */\r\n\tconst regionsIndexes = ref([] as number[]);\r\n\r\n\t/**\r\n\t * Загрузка индексов регионов для сравнения\r\n\t *\r\n\t * Если в modelValue передано несколько регионов, они будут установлены как выбранные для сравнения\r\n\t */\r\n\tconst compareLoad = () => {\r\n\t\tif (props.onlySearcher && searcherByKey.value) {\r\n\t\t\tregionsIndexes.value = Array.from(searcherByKey.value.keys());\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet regionsIndexesSaved: Props['modelValue'] = [];\r\n\r\n\t\tif (props.modelValue.length > 1) {\r\n\t\t\tregionsIndexesSaved = [...props.modelValue];\r\n\t\t} else {\r\n\t\t\ttry {\r\n\t\t\t\t// загрузить индексы регионов, если они были сохранены\r\n\t\t\t\tregionsIndexesSaved = JSON.parse(\r\n\t\t\t\t\tlocalStorage.getItem('ui:project:regionSelector' + props.projectId + ':regionsIndexes') as string,\r\n\t\t\t\t) ?? [];\r\n\t\t\t} catch (e) {\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// убрать из сравнения регионы, которых нет в props.searchers\r\n\t\tif (regionsIndexesSaved.length) {\r\n\t\t\tregionsIndexesSaved = regionsIndexesSaved.filter((regionIndex) => {\r\n\t\t\t\treturn allRegionsIndexes.value.has(regionIndex);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// если не сохранено ни одного региона, выбрать все регионы проекта\r\n\t\tif (!regionsIndexesSaved.length) {\r\n\t\t\tregionsIndexesSaved = Array.from(allRegionsIndexes.value);\r\n\t\t}\r\n\r\n\t\tregionsIndexes.value = [...regionsIndexesSaved];\r\n\t};\r\n\r\n\t/**\r\n\t * Сохранение выбранных регионов\r\n\t */\r\n\tconst compareSave = () => {\r\n\t\tif (regionsIndexes.value.length) {\r\n\t\t\tlocalStorage.setItem('ui:project:regionSelector:' + props.projectId + ':regionsIndexes', JSON.stringify(regionsIndexes.value));\r\n\t\t} else {\r\n\t\t\tlocalStorage.removeItem('ui:project:regionSelector:' + props.projectId + ':regionsIndexes');\r\n\t\t}\r\n\t};\r\n\r\n\twatch(regionsIndexes, () => {\r\n\t\tcompareSave();\r\n\t});\r\n\r\n\tif (props.addCompare) {\r\n\t\t// if (props.compareRegionsIndexes?.length) {\r\n\t\t// \tcompareRegionsIndexes.value = [...props.compareRegionsIndexes];\r\n\t\t// } else {\r\n\t\t// \tcompareLoad();\r\n\t\t// }\r\n\r\n\t\tcompareLoad();\r\n\t}\r\n\r\n\treturn {\r\n\t\tregionsIndexes,\r\n\t};\r\n};\r\n","import { computed, watch } from 'vue';\r\nimport { findRegion, genSearcherByKey } from '../utils/utils';\r\nimport { dummyIndex, searcherUndefined } from '../utils/consts';\r\nimport type { Props, Region, SearcherIndexed } from '../selectorRegion';\r\nimport { useSelectSearcher } from './selectSearcher';\r\nimport { useSelectRegion } from './selectRegion';\r\nimport { useCompare } from './compare';\r\n\r\n/**\r\n * Создание и управления рективными переменными компонента\r\n *\r\n * @param props - входные props компонента\r\n */\r\nexport const useSelectorRegion = (props: Props) => {\r\n\tconst searcherByKey = computed(() => {\r\n\t\treturn genSearcherByKey(props.forFrequency, props.autoRegion, props.searchers);\r\n\t});\r\n\r\n\tconst activeSearcherIndexed = computed(() => {\r\n\t\treturn searcherByKey.value.get(selectSearcher.searcherKey.value) || searcherUndefined;\r\n\t});\r\n\r\n\t/**\r\n\t * Все индексы регионов из mapSearchers\r\n\t */\r\n\tconst allRegionsIndexes = computed(() => {\r\n\t\tconst regionsIndexes = new Set<number>();\r\n\r\n\t\tsearcherByKey.value.forEach((searcher) => {\r\n\t\t\tsearcher.regions?.forEach((region) => {\r\n\t\t\t\tif (region.index === -1) return;\r\n\t\t\t\tif (region.index === dummyIndex) return;\r\n\r\n\t\t\t\tregionsIndexes.add(region.index);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn regionsIndexes;\r\n\t});\r\n\r\n\tconst selectSearcher = useSelectSearcher(props, searcherByKey);\r\n\tconst selectRegion = useSelectRegion(props, activeSearcherIndexed);\r\n\tconst compare = useCompare(props, searcherByKey, allRegionsIndexes);\r\n\r\n\t// контроль за внешним изменением списка ПС\r\n\twatch(searcherByKey, () => {\r\n\t\t// возможные значения для сравнения регионов\r\n\t\tif (selectSearcher.searcherKey.value === -1) {\r\n\t\t\tcompare.regionsIndexes.value = compare.regionsIndexes.value.filter(regionIndex => {\r\n\t\t\t\treturn allRegionsIndexes.value.has(regionIndex);\r\n\t\t\t});\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet newSearcherKey = searcherByKey.value.keys().next().value;\r\n\r\n\t\tsearcherByKey.value.forEach((searcher) => {\r\n\t\t\t// определить выбранную ПС\r\n\t\t\tif (\r\n\t\t\t\tselectRegion.regionIndex.value &&\r\n\t\t\t\tsearcher.regionByIndex?.has(selectRegion.regionIndex.value)\r\n\t\t\t) {\r\n\t\t\t\tnewSearcherKey = searcher.key;\r\n\t\t\t}\r\n\r\n\t\t\t// выбрать первую ПС с выбранным регионом\r\n\t\t\tif (!props.onlySearcher) {\r\n\t\t\t\tlet regionsNewSearcher: SearcherIndexed['regionByIndex'] | undefined;\r\n\r\n\t\t\t\tif (newSearcherKey !== undefined) {\r\n\t\t\t\t\tregionsNewSearcher = searcherByKey.value.get(newSearcherKey)?.regionByIndex;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst regionsCurrentSearcher = searcherByKey.value.get(searcher.key)?.regionByIndex;\r\n\t\t\t\tif (\r\n\t\t\t\t\tregionsNewSearcher?.has(dummyIndex) &&\r\n\t\t\t\t\t!regionsCurrentSearcher?.has(dummyIndex)\r\n\t\t\t\t) {\r\n\t\t\t\t\tnewSearcherKey = searcher.key;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (props.addCompare && !selectSearcher.optionBySearcherKey.value.has(dummyIndex)) {\r\n\t\t\tif (!selectRegion.regionIndex.value && compare.regionsIndexes.value?.length) newSearcherKey = -1;\r\n\t\t}\r\n\r\n\t\tif (props.onlySearcher && selectRegion.regionIndex.value !== dummyIndex) newSearcherKey = selectRegion.regionIndex.value;\r\n\r\n\t\tif (newSearcherKey !== undefined) {\r\n\t\t\tselectSearcher.searcherKey.value = newSearcherKey;\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tselectRegion.regionIndex.value !== undefined &&\r\n\t\t\t!(activeSearcherIndexed.value?.regionByIndex)?.has(selectRegion.regionIndex.value)\r\n\t\t) {\r\n\t\t\tselectRegion.regionIndex.value = activeSearcherIndexed.value?.regions?.keys().next().value as number;\r\n\t\t}\r\n\t}, { immediate: true });\r\n\r\n\tconst getSearcherKey = () => {\r\n\t\tif (selectSearcher.searcherKey.value === -1 || selectSearcher.searcherKey.value === dummyIndex) return;\r\n\r\n\t\treturn selectSearcher.searcherKey.value;\r\n\t};\r\n\r\n\tconst getRegionIndex = () => {\r\n\t\tif (props.onlySearcher) return;\r\n\r\n\t\tif (selectRegion.regionIndex.value === dummyIndex) return;\r\n\r\n\t\tlet res: Region['index'] | undefined = selectRegion.regionIndex.value;\r\n\r\n\t\t// в качестве ключа используется region.key\r\n\t\tif (props.forFrequency) {\r\n\t\t\tconst regionKey = selectRegion.regionIndex.value;\r\n\t\t\tconst region = findRegion(props.forFrequency, { searcher_key: getSearcherKey(), key: regionKey } as Region, props.searchers);\r\n\r\n\t\t\tres = region?.index;\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t};\r\n\r\n\t/**\r\n\t * Получить выбранную ПС\r\n\t */\r\n\tconst getSearcher = () => {\r\n\t\tconst searcherKey = getSearcherKey();\r\n\t\tif (searcherKey === undefined) return;\r\n\r\n\t\treturn searcherByKey.value.get(searcherKey);\r\n\t};\r\n\r\n\t/**\r\n\t * Получить выбранный регион\r\n\t */\r\n\tconst getRegion = () => {\r\n\t\tconst regionIndex = getRegionIndex();\r\n\t\tif (regionIndex === undefined) return;\r\n\r\n\t\treturn getSearcher()?.regionByIndex?.get(regionIndex);\r\n\t};\r\n\r\n\treturn {\r\n\t\tselectSearcher,\r\n\t\tselectRegion,\r\n\t\tcompare,\r\n\r\n\t\tsearcherByKey,\r\n\t\tallRegionsIndexes,\r\n\r\n\t\tgetSearcher,\r\n\t\tgetRegion,\r\n\t};\r\n};\r\n","<script setup lang=\"ts\">\r\nimport { watch } from 'vue';\r\nimport type { Emits, Props, Region } from './selectorRegion';\r\nimport Select from '@/components/forms/select/select.vue';\r\nimport Button from '@/components/forms/button/button.vue';\r\nimport { useSelectorRegion } from './composables/selectorRegion';\r\nimport { dummyIndex } from './utils/consts';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tsearchers: () => [],\r\n\t// compareRegionsIndexes: () => [],\r\n\taddSearcherIcon: true,\r\n\taddRegionIcon: true,\r\n\taddChanger: true,\r\n});\r\n\r\nconst model = defineModel<Props['modelValue']>({ required: true });\r\nconst modelSingle = defineModel<Props['modelValueSingle']>('modelValueSingle');\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst {\r\n\tselectSearcher,\r\n\tselectRegion,\r\n\tcompare,\r\n\r\n\tsearcherByKey,\r\n\tallRegionsIndexes,\r\n\r\n\tgetSearcher,\r\n\tgetRegion,\r\n} = useSelectorRegion(props);\r\n\r\nconst onClickCompare = () => {\r\n\t// ### TODO: сделать выбор регионов через UI (сейчас в UI выбор региона не работает)\r\n\tif (window['fieldTemplates'] && window['fieldTemplates']?.openSelectorRegions) {\r\n\t\twindow['fieldTemplates'].openSelectorRegions(\r\n\t\t\tsearcherByKey.value,\r\n\t\t\tcompare.regionsIndexes.value,\r\n\t\t\t(regionsIndexes: Region['index'][]) => compare.regionsIndexes.value = regionsIndexes,\r\n\t\t);\r\n\t\treturn;\r\n\t}\r\n\r\n\temit('compareRegions', searcherByKey.value);\r\n};\r\n\r\nwatch([selectRegion.regionIndex, selectSearcher.searcherKey, compare.regionsIndexes], () => {\r\n\tif (selectSearcher.searcherKey.value === -1 && compare.regionsIndexes.value.length) {\r\n\t\tif (JSON.stringify(model.value) === JSON.stringify(compare.regionsIndexes.value)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmodel.value = [...compare.regionsIndexes.value];\r\n\t} else {\r\n\t\tmodel.value = [props.onlySearcher ? selectSearcher.searcherKey.value : selectRegion.regionIndex.value];\r\n\t}\r\n\r\n\t// регионов нет\r\n\tif (!allRegionsIndexes.value.size) {\r\n\t\tselectSearcher.searcherKey.value = dummyIndex;\r\n\t}\r\n});\r\n\r\nif (modelSingle.value) {\r\n\twatch(modelSingle, () => {\r\n\t\tmodel.value = [modelSingle.value!];\r\n\t}, { immediate: true });\r\n}\r\n\r\nwatch(model, () => {\r\n\tif (model.value[0]) {\r\n\t\tmodelSingle.value = model.value[0];\r\n\t}\r\n\r\n\t// проверка входных данных v-model на корректность\r\n\tif (props.onlySearcher) {\r\n\t\tif (\r\n\t\t\t!model.value.length ||\r\n\t\t\tmodel.value.length === 1 && !searcherByKey.value.has(model.value[0])\r\n\t\t) {\r\n\t\t\tlet defaultKey: number | undefined = searcherByKey.value.keys().next().value;\r\n\r\n\t\t\tif (defaultKey !== undefined) {\r\n\t\t\t\tmodel.value = [defaultKey];\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tmodel.value.length > 1 &&\r\n\t\t\tJSON.stringify(model.value) !== JSON.stringify(compare.regionsIndexes.value)\r\n\t\t) {\r\n\t\t\tmodel.value = [...compare.regionsIndexes.value];\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\t} else {\r\n\t\tlet newModel = [...new Set(model.value)];\r\n\r\n\t\tlet defaultIndex = searcherByKey.value.values().next().value?.regionByIndex?.keys().next().value;\r\n\t\tif (props.forFrequency) {\r\n\t\t\tdefaultIndex = searcherByKey.value.values().next().value?.regionByIndex?.values().next().value?.key;\r\n\t\t}\r\n\r\n\t\tif (!newModel.length) {\r\n\t\t\tif (defaultIndex !== undefined) {\r\n\t\t\t\tnewModel.push(defaultIndex);\r\n\t\t\t}\r\n\t\t} else if (newModel.length === 1) {\r\n\t\t\tlet all = allRegionsIndexes.value;\r\n\r\n\t\t\tif (props.forFrequency) {\r\n\t\t\t\tall = new Set();\r\n\t\t\t\tsearcherByKey.value.forEach((searcher) => {\r\n\t\t\t\t\tsearcher.regionByIndex.forEach((region) => {\r\n\t\t\t\t\t\tif (region.index === -1) return;\r\n\t\t\t\t\t\tif (region.index === dummyIndex) return;\r\n\r\n\t\t\t\t\t\tall.add(region.key);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (!all.has(newModel[0]) && newModel[0] !== -2) {\r\n\t\t\t\tnewModel = [];\r\n\t\t\t\tif (defaultIndex !== undefined) {\r\n\t\t\t\t\tnewModel.push(defaultIndex);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tnewModel = newModel.filter(index => allRegionsIndexes.value.has(index));\r\n\t\t\tif (!newModel.length && defaultIndex !== undefined) {\r\n\t\t\t\tnewModel.push(defaultIndex);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (JSON.stringify(model.value) !== JSON.stringify(newModel)) {\r\n\t\t\tmodel.value = newModel;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\t// входные данные v-model совпадают с внутренними значениями\r\n\tif (\r\n\t\tmodel.value.length === 1 &&\r\n\t\tmodel.value[0] === (props.onlySearcher ? selectSearcher.searcherKey.value : selectRegion.regionIndex.value)\r\n\t) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// if (\r\n\t// \tmodel.value.length > 1 &&\r\n\t// \tselectorSearcher.searcherKey.value === -1 &&\r\n\t// \tJSON.stringify(model.value) === JSON.stringify(selectorCompare.regionsIndexes.value)\r\n\t// ) {\r\n\t// \treturn;\r\n\t// }\r\n\r\n\t// обновление regionIndex, searcherKey, selectorCompare.regionsIndexes\r\n\tif (props.onlySearcher) {\r\n\t\t// if (!model.value.length) {\r\n\t\t// \tselectorSearcher.searcherKey.value = dummyIndex;\r\n\t\t//\r\n\t\t// \treturn;\r\n\t\t// }\r\n\r\n\t\tif (model.value.length === 1) {\r\n\t\t\tselectSearcher.searcherKey.value = model.value[0];\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tselectSearcher.searcherKey.value = -1;\r\n\r\n\t\treturn;\r\n\t} else {\r\n\t\t// if (!model.value.length) {\r\n\t\t// \tselectorSearcher.searcherKey.value = dummyIndex;\r\n\t\t// \tselectorRegion.regionIndex.value = dummyIndex;\r\n\t\t//\r\n\t\t// \treturn;\r\n\t\t// }\r\n\r\n\t\tif (model.value.length === 1 && selectSearcher.searcherKey.value !== -1) {\r\n\t\t\tselectRegion.regionIndex.value = model.value[0];\r\n\r\n\t\t\tlet newSearherKey: number | undefined;\r\n\t\t\tfor (const searcher of searcherByKey.value.values()) {\r\n\t\t\t\tfor (const region of searcher.regionByIndex.values()) {\r\n\t\t\t\t\tconst currentRegionIndex = props.forFrequency ? region.key : region.index;\r\n\t\t\t\t\tif (currentRegionIndex === selectRegion.regionIndex.value) {\r\n\t\t\t\t\t\tnewSearherKey = searcher.key;\r\n\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (newSearherKey !== undefined) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (newSearherKey !== undefined) {\r\n\t\t\t\tselectSearcher.searcherKey.value = newSearherKey;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tselectSearcher.searcherKey.value = -1;\r\n\t\t\tcompare.regionsIndexes.value = [...model.value];\r\n\t\t}\r\n\t}\r\n}, { immediate: true });\r\n\r\ndefineExpose({\r\n\tgetSearcher,\r\n\tgetRegion,\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<div\r\n\t\t:class=\"{\r\n\t\t\t'top-selectorRegion': true,\r\n\t\t\t'top-selectorRegion-onlySearcher': onlySearcher,\r\n\t\t}\"\r\n\t>\r\n\t\t<Select\r\n\t\t\t:options=\"selectSearcher.optionBySearcherKey.value\"\r\n\t\t\tv-model=\"selectSearcher.searcherKey.value\"\r\n\t\t\tname=\"searcher_key\"\r\n\t\t\t:addChanger=\"addChanger\"\r\n\t\t/>\r\n\r\n\t\t<Select\r\n\t\t\tv-if=\"!onlySearcher && selectSearcher.searcherKey.value !== -1\"\r\n\t\t\tclass=\"top-select-region\"\r\n\t\t\t:options=\"selectRegion.optionByRegionIndex.value\"\r\n\t\t\tv-model=\"selectRegion.regionIndex.value\"\r\n\t\t\t:name=\"forFrequency ? 'region_key' : 'region_index'\"\r\n\t\t\t:addChanger=\"addChanger\"\r\n\t\t\t:data-top-icon=\"addRegionIcon ? '' : undefined\"\r\n\t\t/>\r\n\r\n\t\t<Button\r\n\t\t\tv-if=\"addCompare && !onlySearcher && selectSearcher.searcherKey.value === -1\"\r\n\t\t\tname=\"compare\"\r\n\t\t\t@click=\"onClickCompare\"\r\n\t\t\t:data-count-compare-regions-indexes=\"compare.regionsIndexes.value.length\"\r\n\t\t>\r\n\t\t\t{{ $i18n.Common.Selected_regions }}\r\n\t\t</Button>\r\n\t</div>\r\n</template>\r\n\r\n<style module>\r\n@import \"./styles/searcherColors.css\";\r\n\r\n.top-selectorRegion {\r\n\twidth: 320px;\r\n\tdisplay: inline-flex;\r\n\tvertical-align: middle;\r\n}\r\n\r\n.top-selectorRegion > .top-select {\r\n\tflex-grow: 1;\r\n}\r\n\r\n.top-selectorRegion > .top-select:focus-within {\r\n\tz-index: 4;\r\n}\r\n\r\n.top-selectorRegion > .top-select > .top-select_select:hover,\r\n.top-selectorRegion > .top-select > .top-select_select.top-error {\r\n\tz-index: 1;\r\n}\r\n\r\n.top-selectorRegion > .top-select-searcher_key {\r\n\twidth: 120px;\r\n\tmax-width: 140px;\r\n\tmargin-right: -1px;\r\n}\r\n\r\n.top-selectorRegion > .top-select-region > select {\r\n\tborder-top-left-radius: 0;\r\n\tborder-bottom-left-radius: 0;\r\n}\r\n\r\n.top-selectorRegion > .top-select-region {\r\n\t--top-icon-size: 20px;\r\n\t--top-icon-color: var(--color-text-primary-1);\r\n\r\n\t--top-icon2-size: 20px;\r\n\t--top-icon2-color: var(--color-text-primary-1);\r\n}\r\n\r\n.top-selectorRegion > .top-select-region[data-top-icon][data-top-icon2] {\r\n\t--top-icon2-size: 16px;\r\n}\r\n\r\n.top-selectorRegion > .top-select-region[data-top-icon][data-top-icon2]:after {\r\n\ttext-indent: -4px;\r\n}\r\n\r\n.top-selectorRegion > [name=\"compare\"] {\r\n\tborder-top-left-radius: 0;\r\n\tborder-bottom-left-radius: 0;\r\n\tflex-grow: 1;\r\n}\r\n\r\n.top-selectorRegion > [name=\"compare\"]:after {\r\n\tcontent: \"(\" attr(data-count-compare-regions-indexes) \")\";\r\n\tmargin: 0 0 0 6px;\r\n}\r\n\r\n.top-selectorRegion:not(.top-selectorRegion-onlySearcher) > .top-select-searcher_key > select {\r\n\tborder-top-right-radius: 0;\r\n\tborder-bottom-right-radius: 0;\r\n\tmargin-right: 0;\r\n}\r\n\r\n.top-selectorRegion:not(.top-selectorRegion-onlySearcher) > .top-select-searcher_key[data-value=\"-1\"] > select {\r\n\tborder-right: none;\r\n}\r\n\r\n.top-selectorRegion-onlySearcher {\r\n\twidth: 120px;\r\n}\r\n</style>\r\n","import type { ComponentCustomProps } from 'vue';\r\n\r\nimport SelectorCompetitors from './selectorCompetitors/selectorCompetitors.vue';\r\nimport SelectorRegion from './selectorRegion/selectorRegion.vue';\r\n\r\nexport const TopSelectorCompetitors = SelectorCompetitors as typeof SelectorCompetitors & ComponentCustomProps;\r\nexport const TopSelectorRegion = SelectorRegion as typeof SelectorRegion & ComponentCustomProps;\r\n"],"names":["props","__props","model","useModel","selectAllItem","computed","useI18n","useSelectSearcher","mapSearchers","i18n","searcherKey","ref","dummyIndex","optionBySearcherKey","res","searcher","option","getSearcherGIcon","dummyOption","compareOption","useSelectRegion","activeSearcherIndexed","regionIndex","_b","_a","_c","optionByRegionIndex","options","region","regionLabel","option2","langLabel","getLangLabel","getDeviceGIcon","watch","optionByRegionIndex2","oldOptionByRegionIndex","newRegionIndex","regionName","regionMatchLevel","index","title","regexpDevice","regionNameCompare","regionMatchLevelI","useCompare","searcherByKey","allRegionsIndexes","regionsIndexes","compareLoad","regionsIndexesSaved","compareSave","useSelectorRegion","genSearcherByKey","selectSearcher","searcherUndefined","selectRegion","compare","newSearcherKey","regionsNewSearcher","regionsCurrentSearcher","_e","_d","getSearcherKey","getRegionIndex","regionKey","findRegion","getSearcher","modelSingle","emit","__emit","getRegion","onClickCompare","defaultKey","newModel","defaultIndex","all","newSearherKey","__expose","TopSelectorCompetitors","SelectorCompetitors","TopSelectorRegion","SelectorRegion"],"mappings":"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"}
1
+ {"version":3,"file":"project.js","sources":["../../src/components/project/selectorCompetitors/selectorCompetitors.vue","../../src/components/project/selectorRegion/composables/selectSearcher.ts","../../src/components/project/selectorRegion/composables/selectRegion.ts","../../src/components/project/selectorRegion/composables/compare.ts","../../src/components/project/selectorRegion/composables/selectorRegion.ts","../../src/components/project/selectorRegion/selectorRegion.vue","../../src/components/project/project.ts"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport type { Props } from './selectorCompetitors';\r\nimport Core from '@/core/core/core';\r\nimport Button from '@/components/forms/button/button.vue';\r\nimport Popup from '@/components/popup/popup/popup.vue';\r\nimport ListItem from '@/components/popup/popup/listItem.vue';\r\nimport Menu from '@/components/formsExt/menu/menu.vue';\r\nimport { useI18n } from '@/core/plugins/i18n';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tshowSelectAllItem: true,\r\n});\r\nconst model = defineModel<Props['modelValue']>();\r\n\r\nconst selectAllItem = computed(() => {\r\n\tif (props.showSelectAllItem) {\r\n\t\treturn {\r\n\t\t\ticon: '',\r\n\t\t\ttitle: useI18n().Common.Select_all,\r\n\t\t\tvalue: 'all',\r\n\t\t\tcontent: '',\r\n\t\t};\r\n\t}\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<div class=\"top-selectorCompetitors\">\r\n\t\t<Popup v-if=\"Core.state.isMobile\">\r\n\t\t\t<template #opener>\r\n\t\t\t\t<Button\r\n\t\t\t\t\tclass=\"top-selectorCompetitors_opener\"\r\n\t\t\t\t\tcolor=\"theme\"\r\n\t\t\t\t\ticon=\"\"\r\n\t\t\t\t\ticon2=\"\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{ items.find((item) => item.value === model?.[0])?.content }}\r\n\t\t\t\t</Button>\r\n\t\t\t</template>\r\n\r\n\t\t\t<template #contentList>\r\n\t\t\t\t<ListItem\r\n\t\t\t\t\tv-for=\"(item, index) in items\"\r\n\t\t\t\t\t:class=\"{\r\n\t\t\t\t\t\t'top-active': model?.includes(item.value)\r\n\t\t\t\t\t}\"\r\n\t\t\t\t\t:data-top-icon=\"item.icon\"\r\n\t\t\t\t\t:title=\"item.title\"\r\n\t\t\t\t\t@click=\"() => model = [item.value]\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<span class=\"top-ellipsis1\">\r\n\t\t\t\t\t\t{{ item.content }}\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</ListItem>\r\n\t\t\t</template>\r\n\t\t</Popup>\r\n\r\n\t\t<Menu\r\n\t\t\tv-else\r\n\t\t\tv-model=\"model\"\r\n\t\t\t:items=\"items\"\r\n\t\t\t:isMultiple=\"true\"\r\n\t\t\tstyling=\"bar\"\r\n\t\t\t:canBeEmptyMultiple=\"false\"\r\n\t\t\t:selectAllItem=\"selectAllItem\"\r\n\t\t/>\r\n\t</div>\r\n</template>\r\n\r\n<style module>\r\n.top-selectorCompetitors_opener.top-button {\r\n\twidth: 100%;\r\n}\r\n</style>\r\n","import { computed, type ComputedRef, ref } from 'vue';\r\nimport { useI18n } from '@/core/plugins/i18n';\r\nimport type { Props, SearcherByKey } from '../selectorRegion';\r\nimport type { Option, Options } from '@/components/forms/select/select';\r\nimport { dummyIndex } from '../utils/consts';\r\nimport { getSearcherGIcon } from '@/core/utils/searchers';\r\n\r\n/**\r\n * Создание и управление реактивными переменными для выбора ПС\r\n *\r\n * @param props - входные props компонента\r\n * @param mapSearchers - Map ПС (реактивная)\r\n */\r\nexport const useSelectSearcher = (\r\n\tprops: Props,\r\n\tmapSearchers: ComputedRef<SearcherByKey>,\r\n) => {\r\n\tconst i18n = useI18n();\r\n\r\n\t/**\r\n\t * Ключ выбранной поисковой системы\r\n\t */\r\n\tconst searcherKey = ref(mapSearchers.value.keys().next().value ?? dummyIndex);\r\n\r\n\t/**\r\n\t * Коллекция опций для выбора ПС\r\n\t */\r\n\tconst optionBySearcherKey = computed(() => {\r\n\t\tconst res: Options = new Map();\r\n\t\tmapSearchers.value.forEach((searcher) => {\r\n\t\t\tlet option: Option = {\r\n\t\t\t\tvalue: searcher.key,\r\n\t\t\t\ttitle: searcher.name,\r\n\t\t\t};\r\n\r\n\t\t\tif (props.addSearcherIcon) option.icon = getSearcherGIcon(searcher.key);\r\n\r\n\t\t\tres.set(searcher.key, option);\r\n\t\t});\r\n\r\n\t\t// добавить режим сравнения, если есть хотя бы одна ПС\r\n\t\tif (props.addCompare && !res.has(dummyIndex)) {\r\n\t\t\tconst dummyOption: Option = {\r\n\t\t\t\tvalue: '',\r\n\t\t\t\ttitle: '--------------------',\r\n\t\t\t\tdisabled: true,\r\n\t\t\t};\r\n\t\t\tres.set(dummyOption.value, dummyOption);\r\n\r\n\t\t\tconst compareOption: Option = {\r\n\t\t\t\tvalue: -1,\r\n\t\t\t\ttitle: i18n.Common.Compare!,\r\n\t\t\t};\r\n\t\t\tres.set(compareOption.value, compareOption);\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t});\r\n\r\n\treturn {\r\n\t\tsearcherKey,\r\n\t\toptionBySearcherKey,\r\n\t};\r\n};\r\n","import { computed, type ComputedRef, ref, watch } from 'vue';\r\nimport { useI18n } from '@/core/plugins/i18n';\r\nimport { getDeviceGIcon, getLangLabel } from '@/core/utils/searchers';\r\nimport type { Option } from '@/components/forms/select/select';\r\nimport { dummyIndex } from '../utils/consts';\r\nimport type { Props, Region, SearcherIndexed } from '../selectorRegion';\r\n\r\n/**\r\n * Создание и управление реактивными переменными для выбора региона\r\n *\r\n * @param props - входные props компонента\r\n * @param activeSearcherIndexed - объект активной поисковой системы (реактивная)\r\n * @param regionsIndexes - входные индексы регионов/ПС\r\n */\r\nexport const useSelectRegion = (props: Props, activeSearcherIndexed: ComputedRef<SearcherIndexed>) => {\r\n\tconst i18n = useI18n();\r\n\r\n\t/**\r\n\t * Индекс выбранного региона\r\n\t */\r\n\tconst regionIndex = ref(dummyIndex);\r\n\r\n\tif (props.modelValue.length === 1) {\r\n\t\tregionIndex.value = props.modelValue[0];\r\n\t}\r\n\r\n\tif (regionIndex.value === dummyIndex) {\r\n\t\tif (props.forFrequency) {\r\n\t\t\t// в качетсве ключа используется region.key, а не region.index\r\n\t\t\tregionIndex.value = activeSearcherIndexed.value?.regionByIndex.values().next().value?.key ?? dummyIndex;\r\n\t\t} else {\r\n\t\t\tregionIndex.value = activeSearcherIndexed.value?.regionByIndex.keys().next().value ?? dummyIndex;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Коллекция опций для выбора региона\r\n\t */\r\n\tconst optionByRegionIndex = computed(() => {\r\n\t\tconst options = new Map<number, Option>();\r\n\r\n\t\tactiveSearcherIndexed.value.regionByIndex?.forEach((region) => {\r\n\t\t\tlet regionLabel = region.name;\r\n\r\n\t\t\t// на частоту в текущей версии устройство и язык не влияют\r\n\t\t\t// обратите внимание, в качетсве ключа используется region.key, а не region.index\r\n\t\t\tif (props.forFrequency) {\r\n\t\t\t\tconst option: Option = {\r\n\t\t\t\t\tvalue: region.key,\r\n\t\t\t\t\ttitle: regionLabel,\r\n\t\t\t\t};\r\n\t\t\t\tif (!options.has(region.key)) options.set(region.key, option);\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (region.device) {\r\n\t\t\t\tregionLabel += ' (' + i18n.Common['Device_' + region.device] + ')';\r\n\t\t\t}\r\n\r\n\t\t\tconst langLabel = getLangLabel(activeSearcherIndexed.value.key || 0, region.lang ?? '');\r\n\t\t\tif (langLabel) regionLabel += ' / ' + langLabel;\r\n\r\n\t\t\tconst option: Option = {\r\n\t\t\t\tvalue: region.index,\r\n\t\t\t\ttitle: regionLabel,\r\n\t\t\t\ticon: region.device ? getDeviceGIcon(region.device) : undefined,\r\n\t\t\t};\r\n\r\n\t\t\toptions.set(region.index, option);\r\n\t\t});\r\n\r\n\t\treturn options;\r\n\t});\r\n\r\n\t/**\r\n\t * Выбор максимально похожего региона в новой коллекции регионов\r\n\t */\r\n\twatch(optionByRegionIndex, (optionByRegionIndex, oldOptionByRegionIndex) => {\r\n\t\tif (props.onlySearcher || regionIndex.value !== undefined && optionByRegionIndex.get(regionIndex.value)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet newRegionIndex = optionByRegionIndex.keys().next().value as Region['index'];\r\n\t\tif (regionIndex.value === dummyIndex || newRegionIndex === dummyIndex) {\r\n\t\t\tregionIndex.value = newRegionIndex;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet regionName = (oldOptionByRegionIndex?.get(regionIndex.value) as Option)?.title || '';\r\n\t\tlet regionMatchLevel = -1;\r\n\t\tfor (const [index, option] of optionByRegionIndex.entries()) {\r\n\t\t\tconst title = (option as Option).title;\r\n\r\n\t\t\tif (typeof title !== 'string' || typeof index === 'string') {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\t// полное совпадение\r\n\t\t\tif (title === regionName) {\r\n\t\t\t\tnewRegionIndex = index;\r\n\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tconst regexpDevice = new RegExp(` \\\\((${i18n.Common['Device_1']}|${i18n.Common['Device_2']})\\\\)`);\r\n\t\t\tlet regionNameCompare = regionName;\r\n\t\t\tlet regionMatchLevelI = 3;\r\n\r\n\t\t\t// без устройства\r\n\t\t\tif (title.indexOf(regionNameCompare) === -1) {\r\n\t\t\t\tregionNameCompare = regionName.replace(/^[^a-zа-я]/i, '').replace(regexpDevice, '');\r\n\r\n\t\t\t\tregionMatchLevelI--;\r\n\t\t\t}\r\n\r\n\t\t\t// без языка\r\n\t\t\tif (title.indexOf(regionNameCompare) === -1) {\r\n\t\t\t\tregionNameCompare = regionName.replace(/ \\/.*/, '');\r\n\r\n\t\t\t\tregionMatchLevelI--;\r\n\t\t\t}\r\n\r\n\t\t\t// без устройства и без языка\r\n\t\t\tif (title.indexOf(regionNameCompare) === -1) {\r\n\t\t\t\tregionNameCompare = regionName.replace(/ \\/.*/, '');\r\n\t\t\t\tregionNameCompare = regionNameCompare.replace(/^[^a-zа-я]/i, '').replace(regexpDevice, '');\r\n\r\n\t\t\t\tregionMatchLevelI--;\r\n\t\t\t}\r\n\r\n\t\t\tif (title.indexOf(regionNameCompare) === -1) continue;\r\n\t\t\tif (regionMatchLevelI <= regionMatchLevel) continue;\r\n\r\n\t\t\tregionMatchLevel = regionMatchLevelI;\r\n\t\t\tnewRegionIndex = index;\r\n\t\t}\r\n\r\n\t\tregionIndex.value = newRegionIndex;\r\n\t});\r\n\r\n\treturn {\r\n\t\tregionIndex,\r\n\t\toptionByRegionIndex,\r\n\t};\r\n};\r\n","import { type ComputedRef, ref, watch } from 'vue';\r\nimport type { Props, SearcherByKey } from '../selectorRegion';\r\n\r\n/**\r\n * Создание и управление реактивными переменными для сравнения\r\n *\r\n * @param props - входные props компонента\r\n * @param searcherByKey - Map ПС (реактивная)\r\n * @param allRegionsIndexes - Все доступные индексы регионов (реактивная)\r\n */\r\nexport const useCompare = (props: Props, searcherByKey: ComputedRef<SearcherByKey>, allRegionsIndexes: ComputedRef<Set<number>>) => {\r\n\t/**\r\n\t * Индексы регионов/ПС в сравнение\r\n\t */\r\n\tconst regionsIndexes = ref([] as number[]);\r\n\r\n\t/**\r\n\t * Загрузка индексов регионов для сравнения\r\n\t *\r\n\t * Если в modelValue передано несколько регионов, они будут установлены как выбранные для сравнения\r\n\t */\r\n\tconst compareLoad = () => {\r\n\t\tif (props.onlySearcher && searcherByKey.value) {\r\n\t\t\tregionsIndexes.value = Array.from(searcherByKey.value.keys());\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet regionsIndexesSaved: Props['modelValue'] = [];\r\n\r\n\t\tif (props.modelValue.length > 1) {\r\n\t\t\tregionsIndexesSaved = [...props.modelValue];\r\n\t\t} else {\r\n\t\t\ttry {\r\n\t\t\t\t// загрузить индексы регионов, если они были сохранены\r\n\t\t\t\tregionsIndexesSaved = JSON.parse(\r\n\t\t\t\t\tlocalStorage.getItem('ui:project:regionSelector' + props.projectId + ':regionsIndexes') as string,\r\n\t\t\t\t) ?? [];\r\n\t\t\t} catch (e) {\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// убрать из сравнения регионы, которых нет в props.searchers\r\n\t\tif (regionsIndexesSaved.length) {\r\n\t\t\tregionsIndexesSaved = regionsIndexesSaved.filter((regionIndex) => {\r\n\t\t\t\treturn allRegionsIndexes.value.has(regionIndex);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// если не сохранено ни одного региона, выбрать все регионы проекта\r\n\t\tif (!regionsIndexesSaved.length) {\r\n\t\t\tregionsIndexesSaved = Array.from(allRegionsIndexes.value);\r\n\t\t}\r\n\r\n\t\tregionsIndexes.value = [...regionsIndexesSaved];\r\n\t};\r\n\r\n\t/**\r\n\t * Сохранение выбранных регионов\r\n\t */\r\n\tconst compareSave = () => {\r\n\t\tif (regionsIndexes.value.length) {\r\n\t\t\tlocalStorage.setItem('ui:project:regionSelector:' + props.projectId + ':regionsIndexes', JSON.stringify(regionsIndexes.value));\r\n\t\t} else {\r\n\t\t\tlocalStorage.removeItem('ui:project:regionSelector:' + props.projectId + ':regionsIndexes');\r\n\t\t}\r\n\t};\r\n\r\n\twatch(regionsIndexes, () => {\r\n\t\tcompareSave();\r\n\t});\r\n\r\n\tif (props.addCompare) {\r\n\t\t// if (props.compareRegionsIndexes?.length) {\r\n\t\t// \tcompareRegionsIndexes.value = [...props.compareRegionsIndexes];\r\n\t\t// } else {\r\n\t\t// \tcompareLoad();\r\n\t\t// }\r\n\r\n\t\tcompareLoad();\r\n\t}\r\n\r\n\treturn {\r\n\t\tregionsIndexes,\r\n\t};\r\n};\r\n","import { computed, watch } from 'vue';\r\nimport { findRegion, genSearcherByKey } from '../utils/utils';\r\nimport { dummyIndex, searcherUndefined } from '../utils/consts';\r\nimport type { Props, Region, SearcherIndexed } from '../selectorRegion';\r\nimport { useSelectSearcher } from './selectSearcher';\r\nimport { useSelectRegion } from './selectRegion';\r\nimport { useCompare } from './compare';\r\n\r\n/**\r\n * Создание и управления рективными переменными компонента\r\n *\r\n * @param props - входные props компонента\r\n */\r\nexport const useSelectorRegion = (props: Props) => {\r\n\tconst searcherByKey = computed(() => {\r\n\t\treturn genSearcherByKey(props.forFrequency, props.autoRegion, props.searchers);\r\n\t});\r\n\r\n\tconst activeSearcherIndexed = computed(() => {\r\n\t\treturn searcherByKey.value.get(selectSearcher.searcherKey.value) || searcherUndefined;\r\n\t});\r\n\r\n\t/**\r\n\t * Все индексы регионов из mapSearchers\r\n\t */\r\n\tconst allRegionsIndexes = computed(() => {\r\n\t\tconst regionsIndexes = new Set<number>();\r\n\r\n\t\tsearcherByKey.value.forEach((searcher) => {\r\n\t\t\tsearcher.regions?.forEach((region) => {\r\n\t\t\t\tif (region.index === -1) return;\r\n\t\t\t\tif (region.index === dummyIndex) return;\r\n\r\n\t\t\t\tregionsIndexes.add(region.index);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn regionsIndexes;\r\n\t});\r\n\r\n\tconst selectSearcher = useSelectSearcher(props, searcherByKey);\r\n\tconst selectRegion = useSelectRegion(props, activeSearcherIndexed);\r\n\tconst compare = useCompare(props, searcherByKey, allRegionsIndexes);\r\n\r\n\t// контроль за внешним изменением списка ПС\r\n\twatch(searcherByKey, () => {\r\n\t\t// возможные значения для сравнения регионов/пс\r\n\t\tif (props.onlySearcher) {\r\n\t\t\tcompare.regionsIndexes.value = Array.from(searcherByKey.value.keys());\r\n\t\t} else {\r\n\t\t\tcompare.regionsIndexes.value = compare.regionsIndexes.value.filter(regionIndex => {\r\n\t\t\t\treturn allRegionsIndexes.value.has(regionIndex);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (selectSearcher.searcherKey.value === -1) return;\r\n\r\n\t\tlet newSearcherKey = searcherByKey.value.keys().next().value;\r\n\r\n\t\tsearcherByKey.value.forEach((searcher) => {\r\n\t\t\t// определить выбранную ПС\r\n\t\t\tif (props.onlySearcher && searcher.key === selectSearcher.searcherKey.value) {\r\n\t\t\t\tnewSearcherKey = selectSearcher.searcherKey.value;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (\r\n\t\t\t\tselectRegion.regionIndex.value &&\r\n\t\t\t\tsearcher.regionByIndex?.has(selectRegion.regionIndex.value)\r\n\t\t\t) {\r\n\t\t\t\tnewSearcherKey = searcher.key;\r\n\t\t\t}\r\n\r\n\t\t\t// выбрать первую ПС с выбранным регионом\r\n\t\t\tif (!props.onlySearcher) {\r\n\t\t\t\tlet regionsNewSearcher: SearcherIndexed['regionByIndex'] | undefined;\r\n\r\n\t\t\t\tif (newSearcherKey !== undefined) {\r\n\t\t\t\t\tregionsNewSearcher = searcherByKey.value.get(newSearcherKey)?.regionByIndex;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst regionsCurrentSearcher = searcherByKey.value.get(searcher.key)?.regionByIndex;\r\n\t\t\t\tif (\r\n\t\t\t\t\tregionsNewSearcher?.has(dummyIndex) &&\r\n\t\t\t\t\t!regionsCurrentSearcher?.has(dummyIndex)\r\n\t\t\t\t) {\r\n\t\t\t\t\tnewSearcherKey = searcher.key;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// if (props.addCompare && !selectSearcher.optionBySearcherKey.value.has(dummyIndex)) {\r\n\t\t// \tif (!selectRegion.regionIndex.value && compare.regionsIndexes.value?.length) newSearcherKey = -1;\r\n\t\t// }\r\n\r\n\t\t// if (props.onlySearcher && selectRegion.regionIndex.value !== dummyIndex) newSearcherKey = selectRegion.regionIndex.value;\r\n\r\n\t\tif (newSearcherKey !== undefined) {\r\n\t\t\tselectSearcher.searcherKey.value = newSearcherKey;\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tselectRegion.regionIndex.value !== undefined &&\r\n\t\t\t!(activeSearcherIndexed.value?.regionByIndex)?.has(selectRegion.regionIndex.value)\r\n\t\t) {\r\n\t\t\tselectRegion.regionIndex.value = activeSearcherIndexed.value?.regions?.keys().next().value as number;\r\n\t\t}\r\n\t}, { immediate: true });\r\n\r\n\tconst getSearcherKey = () => {\r\n\t\tif (selectSearcher.searcherKey.value === -1 || selectSearcher.searcherKey.value === dummyIndex) return;\r\n\r\n\t\treturn selectSearcher.searcherKey.value;\r\n\t};\r\n\r\n\tconst getRegionIndex = () => {\r\n\t\tif (props.onlySearcher) return;\r\n\r\n\t\tif (selectRegion.regionIndex.value === dummyIndex) return;\r\n\r\n\t\tlet res: Region['index'] | undefined = selectRegion.regionIndex.value;\r\n\r\n\t\t// в качестве ключа используется region.key\r\n\t\tif (props.forFrequency) {\r\n\t\t\tconst regionKey = selectRegion.regionIndex.value;\r\n\t\t\tconst region = findRegion(props.forFrequency, { searcher_key: getSearcherKey(), key: regionKey } as Region, props.searchers);\r\n\r\n\t\t\tres = region?.index;\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t};\r\n\r\n\t/**\r\n\t * Получить выбранную ПС\r\n\t */\r\n\tconst getSearcher = () => {\r\n\t\tconst searcherKey = getSearcherKey();\r\n\t\tif (searcherKey === undefined) return;\r\n\r\n\t\treturn searcherByKey.value.get(searcherKey);\r\n\t};\r\n\r\n\t/**\r\n\t * Получить выбранный регион\r\n\t */\r\n\tconst getRegion = () => {\r\n\t\tconst regionIndex = getRegionIndex();\r\n\t\tif (regionIndex === undefined) return;\r\n\r\n\t\treturn getSearcher()?.regionByIndex?.get(regionIndex);\r\n\t};\r\n\r\n\treturn {\r\n\t\tselectSearcher,\r\n\t\tselectRegion,\r\n\t\tcompare,\r\n\r\n\t\tsearcherByKey,\r\n\t\tallRegionsIndexes,\r\n\r\n\t\tgetSearcher,\r\n\t\tgetRegion,\r\n\t};\r\n};\r\n","<script setup lang=\"ts\">\r\nimport { watch } from 'vue';\r\nimport type { Emits, Props, Region } from './selectorRegion';\r\nimport Select from '@/components/forms/select/select.vue';\r\nimport Button from '@/components/forms/button/button.vue';\r\nimport { useSelectorRegion } from './composables/selectorRegion';\r\nimport { dummyIndex } from './utils/consts';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tsearchers: () => [],\r\n\t// compareRegionsIndexes: () => [],\r\n\taddSearcherIcon: true,\r\n\taddRegionIcon: true,\r\n\taddChanger: true,\r\n});\r\n\r\nconst model = defineModel<Props['modelValue']>({ required: true });\r\nconst modelSingle = defineModel<Props['modelValueSingle']>('modelValueSingle');\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst {\r\n\tselectSearcher,\r\n\tselectRegion,\r\n\tcompare,\r\n\r\n\tsearcherByKey,\r\n\tallRegionsIndexes,\r\n\r\n\tgetSearcher,\r\n\tgetRegion,\r\n} = useSelectorRegion(props);\r\n\r\nconst onClickCompare = () => {\r\n\t// ### TODO: сделать выбор регионов через UI (сейчас в UI выбор региона не работает)\r\n\tif (window['fieldTemplates'] && window['fieldTemplates']?.openSelectorRegions) {\r\n\t\twindow['fieldTemplates'].openSelectorRegions(\r\n\t\t\tsearcherByKey.value,\r\n\t\t\tcompare.regionsIndexes.value,\r\n\t\t\t(regionsIndexes: Region['index'][]) => compare.regionsIndexes.value = regionsIndexes,\r\n\t\t);\r\n\t\treturn;\r\n\t}\r\n\r\n\temit('compareRegions', searcherByKey.value);\r\n};\r\n\r\nwatch([selectRegion.regionIndex, selectSearcher.searcherKey, compare.regionsIndexes], () => {\r\n\tif (selectSearcher.searcherKey.value === -1 && compare.regionsIndexes.value.length) {\r\n\t\tif (JSON.stringify(model.value) === JSON.stringify(compare.regionsIndexes.value)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmodel.value = [...compare.regionsIndexes.value];\r\n\t} else {\r\n\t\tmodel.value = [props.onlySearcher ? selectSearcher.searcherKey.value : selectRegion.regionIndex.value];\r\n\t}\r\n\r\n\t// регионов нет\r\n\tif (!props.onlySearcher && !allRegionsIndexes.value.size) {\r\n\t\tselectSearcher.searcherKey.value = dummyIndex;\r\n\t}\r\n});\r\n\r\nif (modelSingle.value) {\r\n\twatch(modelSingle, () => {\r\n\t\tmodel.value = [modelSingle.value!];\r\n\t}, { immediate: true });\r\n}\r\n\r\nwatch(model, () => {\r\n\tif (model.value[0]) {\r\n\t\tmodelSingle.value = model.value[0];\r\n\t}\r\n\r\n\t// проверка входных данных v-model на корректность\r\n\tif (props.onlySearcher) {\r\n\t\tif (\r\n\t\t\t!model.value.length ||\r\n\t\t\tmodel.value.length === 1 && !searcherByKey.value.has(model.value[0])\r\n\t\t) {\r\n\t\t\tlet defaultKey: number | undefined = searcherByKey.value.keys().next().value;\r\n\r\n\t\t\tif (defaultKey !== undefined) {\r\n\t\t\t\tmodel.value = [defaultKey];\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tmodel.value.length > 1 &&\r\n\t\t\tJSON.stringify(model.value) !== JSON.stringify(compare.regionsIndexes.value)\r\n\t\t) {\r\n\t\t\tmodel.value = [...compare.regionsIndexes.value];\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\t} else {\r\n\t\tlet newModel = [...new Set(model.value)];\r\n\r\n\t\tlet defaultIndex = searcherByKey.value.values().next().value?.regionByIndex?.keys().next().value;\r\n\t\tif (props.forFrequency) {\r\n\t\t\tdefaultIndex = searcherByKey.value.values().next().value?.regionByIndex?.values().next().value?.key;\r\n\t\t}\r\n\r\n\t\tif (!newModel.length) {\r\n\t\t\tif (defaultIndex !== undefined) {\r\n\t\t\t\tnewModel.push(defaultIndex);\r\n\t\t\t}\r\n\t\t} else if (newModel.length === 1) {\r\n\t\t\tlet all = allRegionsIndexes.value;\r\n\r\n\t\t\tif (props.forFrequency) {\r\n\t\t\t\tall = new Set();\r\n\t\t\t\tsearcherByKey.value.forEach((searcher) => {\r\n\t\t\t\t\tsearcher.regionByIndex.forEach((region) => {\r\n\t\t\t\t\t\tif (region.index === -1) return;\r\n\t\t\t\t\t\tif (region.index === dummyIndex) return;\r\n\r\n\t\t\t\t\t\tall.add(region.key);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (!all.has(newModel[0]) && newModel[0] !== -2) {\r\n\t\t\t\tnewModel = [];\r\n\t\t\t\tif (defaultIndex !== undefined) {\r\n\t\t\t\t\tnewModel.push(defaultIndex);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tnewModel = newModel.filter(index => allRegionsIndexes.value.has(index));\r\n\t\t\tif (!newModel.length && defaultIndex !== undefined) {\r\n\t\t\t\tnewModel.push(defaultIndex);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (JSON.stringify(model.value) !== JSON.stringify(newModel)) {\r\n\t\t\tmodel.value = newModel;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\t// входные данные v-model совпадают с внутренними значениями\r\n\tif (\r\n\t\tmodel.value.length === 1 &&\r\n\t\tmodel.value[0] === (props.onlySearcher ? selectSearcher.searcherKey.value : selectRegion.regionIndex.value)\r\n\t) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// if (\r\n\t// \tmodel.value.length > 1 &&\r\n\t// \tselectorSearcher.searcherKey.value === -1 &&\r\n\t// \tJSON.stringify(model.value) === JSON.stringify(selectorCompare.regionsIndexes.value)\r\n\t// ) {\r\n\t// \treturn;\r\n\t// }\r\n\r\n\t// обновление regionIndex, searcherKey, selectorCompare.regionsIndexes\r\n\tif (props.onlySearcher) {\r\n\t\t// if (!model.value.length) {\r\n\t\t// \tselectorSearcher.searcherKey.value = dummyIndex;\r\n\t\t//\r\n\t\t// \treturn;\r\n\t\t// }\r\n\r\n\t\tif (model.value.length === 1) {\r\n\t\t\tselectSearcher.searcherKey.value = model.value[0];\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tselectSearcher.searcherKey.value = -1;\r\n\r\n\t\treturn;\r\n\t} else {\r\n\t\t// if (!model.value.length) {\r\n\t\t// \tselectorSearcher.searcherKey.value = dummyIndex;\r\n\t\t// \tselectorRegion.regionIndex.value = dummyIndex;\r\n\t\t//\r\n\t\t// \treturn;\r\n\t\t// }\r\n\r\n\t\tif (model.value.length === 1 && selectSearcher.searcherKey.value !== -1) {\r\n\t\t\tselectRegion.regionIndex.value = model.value[0];\r\n\r\n\t\t\tlet newSearherKey: number | undefined;\r\n\t\t\tfor (const searcher of searcherByKey.value.values()) {\r\n\t\t\t\tfor (const region of searcher.regionByIndex.values()) {\r\n\t\t\t\t\tconst currentRegionIndex = props.forFrequency ? region.key : region.index;\r\n\t\t\t\t\tif (currentRegionIndex === selectRegion.regionIndex.value) {\r\n\t\t\t\t\t\tnewSearherKey = searcher.key;\r\n\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (newSearherKey !== undefined) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (newSearherKey !== undefined) {\r\n\t\t\t\tselectSearcher.searcherKey.value = newSearherKey;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tselectSearcher.searcherKey.value = -1;\r\n\t\t\tcompare.regionsIndexes.value = [...model.value];\r\n\t\t}\r\n\t}\r\n}, { immediate: true });\r\n\r\ndefineExpose({\r\n\tgetSearcher,\r\n\tgetRegion,\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<div\r\n\t\t:class=\"{\r\n\t\t\t'top-selectorRegion': true,\r\n\t\t\t'top-selectorRegion-onlySearcher': onlySearcher,\r\n\t\t}\"\r\n\t>\r\n\t\t<Select\r\n\t\t\t:options=\"selectSearcher.optionBySearcherKey.value\"\r\n\t\t\tv-model=\"selectSearcher.searcherKey.value\"\r\n\t\t\tname=\"searcher_key\"\r\n\t\t\t:addChanger=\"addChanger\"\r\n\t\t/>\r\n\r\n\t\t<Select\r\n\t\t\tv-if=\"!onlySearcher && selectSearcher.searcherKey.value !== -1\"\r\n\t\t\tclass=\"top-select-region\"\r\n\t\t\t:options=\"selectRegion.optionByRegionIndex.value\"\r\n\t\t\tv-model=\"selectRegion.regionIndex.value\"\r\n\t\t\t:name=\"forFrequency ? 'region_key' : 'region_index'\"\r\n\t\t\t:addChanger=\"addChanger\"\r\n\t\t\t:data-top-icon=\"addRegionIcon ? '' : undefined\"\r\n\t\t/>\r\n\r\n\t\t<Button\r\n\t\t\tv-if=\"addCompare && !onlySearcher && selectSearcher.searcherKey.value === -1\"\r\n\t\t\tname=\"compare\"\r\n\t\t\t@click=\"onClickCompare\"\r\n\t\t\t:data-count-compare-regions-indexes=\"compare.regionsIndexes.value.length\"\r\n\t\t>\r\n\t\t\t{{ $i18n.Common.Selected_regions }}\r\n\t\t</Button>\r\n\t</div>\r\n</template>\r\n\r\n<style module>\r\n@import \"./styles/searcherColors.css\";\r\n\r\n.top-selectorRegion {\r\n\twidth: 320px;\r\n\tdisplay: inline-flex;\r\n\tvertical-align: middle;\r\n}\r\n\r\n.top-selectorRegion > .top-select {\r\n\tflex-grow: 1;\r\n}\r\n\r\n.top-selectorRegion > .top-select:focus-within {\r\n\tz-index: 4;\r\n}\r\n\r\n.top-selectorRegion > .top-select > .top-select_select:hover,\r\n.top-selectorRegion > .top-select > .top-select_select.top-error {\r\n\tz-index: 1;\r\n}\r\n\r\n.top-selectorRegion > .top-select-searcher_key {\r\n\twidth: 120px;\r\n\tmax-width: 140px;\r\n\tmargin-right: -1px;\r\n}\r\n\r\n.top-selectorRegion > .top-select-region > select {\r\n\tborder-top-left-radius: 0;\r\n\tborder-bottom-left-radius: 0;\r\n}\r\n\r\n.top-selectorRegion > .top-select-region {\r\n\t--top-icon-size: 20px;\r\n\t--top-icon-color: var(--color-text-primary-1);\r\n\r\n\t--top-icon2-size: 20px;\r\n\t--top-icon2-color: var(--color-text-primary-1);\r\n}\r\n\r\n.top-selectorRegion > .top-select-region[data-top-icon][data-top-icon2] {\r\n\t--top-icon2-size: 16px;\r\n}\r\n\r\n.top-selectorRegion > .top-select-region[data-top-icon][data-top-icon2]:after {\r\n\ttext-indent: -4px;\r\n}\r\n\r\n.top-selectorRegion > [name=\"compare\"] {\r\n\tborder-top-left-radius: 0;\r\n\tborder-bottom-left-radius: 0;\r\n\tflex-grow: 1;\r\n}\r\n\r\n.top-selectorRegion > [name=\"compare\"]:after {\r\n\tcontent: \"(\" attr(data-count-compare-regions-indexes) \")\";\r\n\tmargin: 0 0 0 6px;\r\n}\r\n\r\n.top-selectorRegion:not(.top-selectorRegion-onlySearcher) > .top-select-searcher_key > select {\r\n\tborder-top-right-radius: 0;\r\n\tborder-bottom-right-radius: 0;\r\n\tmargin-right: 0;\r\n}\r\n\r\n.top-selectorRegion:not(.top-selectorRegion-onlySearcher) > .top-select-searcher_key[data-value=\"-1\"] > select {\r\n\tborder-right: none;\r\n}\r\n\r\n.top-selectorRegion-onlySearcher {\r\n\twidth: 120px;\r\n}\r\n</style>\r\n","import type { ComponentCustomProps } from 'vue';\r\n\r\nimport SelectorCompetitors from './selectorCompetitors/selectorCompetitors.vue';\r\nimport SelectorRegion from './selectorRegion/selectorRegion.vue';\r\n\r\nexport const TopSelectorCompetitors = SelectorCompetitors as typeof SelectorCompetitors & ComponentCustomProps;\r\nexport const TopSelectorRegion = SelectorRegion as typeof SelectorRegion & ComponentCustomProps;\r\n"],"names":["props","__props","model","useModel","selectAllItem","computed","useI18n","useSelectSearcher","mapSearchers","i18n","searcherKey","ref","dummyIndex","optionBySearcherKey","res","searcher","option","getSearcherGIcon","dummyOption","compareOption","useSelectRegion","activeSearcherIndexed","regionIndex","_b","_a","_c","optionByRegionIndex","options","region","regionLabel","option2","langLabel","getLangLabel","getDeviceGIcon","watch","optionByRegionIndex2","oldOptionByRegionIndex","newRegionIndex","regionName","regionMatchLevel","index","title","regexpDevice","regionNameCompare","regionMatchLevelI","useCompare","searcherByKey","allRegionsIndexes","regionsIndexes","compareLoad","regionsIndexesSaved","compareSave","useSelectorRegion","genSearcherByKey","selectSearcher","searcherUndefined","selectRegion","compare","newSearcherKey","regionsNewSearcher","regionsCurrentSearcher","_d","getSearcherKey","getRegionIndex","regionKey","findRegion","getSearcher","modelSingle","emit","__emit","getRegion","onClickCompare","defaultKey","newModel","defaultIndex","_e","all","newSearherKey","__expose","TopSelectorCompetitors","SelectorCompetitors","TopSelectorRegion","SelectorRegion"],"mappings":"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"}