auto-champion-select 1.9.6 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +36 -75
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,68 +1,68 @@
1
- (function(){"use strict";try{if(typeof document<"u"){var o=document.createElement("style");o.appendChild(document.createTextNode('.dropdown-champions-default{position:inherit;inline-size:100%}.dropdown-champions-default.dropdown-drop-up::part(ui-dropdown-menu),.dropdown-champions-default.dropdown-drop-up::part(ui-dropdown-content),.dropdown-champions-default.dropdown-drop-up::part(ui-dropdown-options){top:auto;bottom:100%;transform-origin:bottom}.dropdown-champions-default .controlado-champion-option__content{display:inline-flex;align-items:center;gap:8px;width:100%;min-width:0;line-height:20px;vertical-align:middle}.dropdown-champions-default .controlado-champion-option__icon{display:block;flex:0 0 20px;width:20px;height:20px;border:1px solid rgba(200,170,110,.65);border-radius:50%;background:#010a13;object-fit:cover;box-sizing:border-box;pointer-events:none}.dropdown-champions-default img.controlado-champion-option__icon{clip-path:circle(41.67% at 51.5% 51.5%);object-position:center;transform:scale(1.2);transform-origin:51.5% 51.5%}.dropdown-champions-default .controlado-champion-option__static-icon{display:grid;place-items:center;color:#f0e6d2;font-family:var(--font-display);font-size:13px;font-weight:700;line-height:1}.dropdown-champions-default .controlado-champion-option__text{display:flex;align-items:baseline;gap:8px;width:100%;min-width:0}.dropdown-champions-default .controlado-champion-option__name{flex:0 0 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown-champions-default .controlado-champion-option__description{flex:1 1 auto;min-width:0;color:#a09b8ce6;font-size:11px;line-height:1;overflow:hidden;text-align:right;text-overflow:ellipsis;white-space:nowrap}.champion-priority-selector{display:grid;gap:0;padding:2px 0 3px}.champion-priority-selector__scroll{position:relative;inline-size:100%;height:58px;border:1px solid rgba(120,90,40,.7);border-top:0;background:rgba(30,35,40,.5);box-sizing:border-box}.champion-priority-selector__track{display:inline-flex;align-items:center;gap:12px;min-width:max-content;min-height:45px;padding:10px 8px 8px;box-sizing:border-box}.champion-priority-selector__empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:#5f5b4f;font-family:var(--font-body);font-size:11px;line-height:13px;text-align:center;white-space:nowrap;pointer-events:none}.champion-priority-selector__icon{position:relative;flex:0 0 auto;width:34px;height:34px;border:1px solid #c8aa6e;border-radius:50%;background:#1e2328;box-shadow:0 0 0 1px #010a13e6;box-sizing:border-box;cursor:grab;outline:none}.champion-priority-selector__icon:focus{border-color:#f0e6d2}.champion-priority-selector__icon--dragging{cursor:grabbing;filter:brightness(1.15);z-index:1}.champion-priority-selector__icon:before,.champion-priority-selector__remove,.champion-priority-selector__position-badge{display:grid;place-items:center;width:17px;height:17px;padding:0;border-radius:50%;box-sizing:border-box;font-family:var(--font-body);font-size:10px;font-weight:700;line-height:1;z-index:2}.champion-priority-selector__icon:before{content:attr(data-rank);position:absolute;left:-6px;top:-6px;border:1px solid #c8aa6e;background:#010a13;color:#f0e6d2;text-align:center;pointer-events:none}.champion-priority-selector__icon>img{position:relative;z-index:0;display:block;width:100%;height:100%;border-radius:50%;clip-path:circle(45.87% at 50% 50%);object-fit:cover;object-position:center;pointer-events:none;transform:scale(1.09);transform-origin:center}.champion-priority-selector__icon--random{display:grid;place-items:center;color:#f0e6d2;font-family:var(--font-display);font-weight:700}.champion-priority-selector__random-icon{font-size:20px;line-height:1;transform:translateY(-.5px);pointer-events:none}.champion-priority-selector__remove{position:absolute;right:-6px;bottom:-6px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid #785a28;background:#1e2328;color:#c8aa6e;cursor:pointer;font-family:var(--font-display);font-size:0;text-align:center}.champion-priority-selector__remove:before{content:attr(data-icon);font-family:var(--font-display);font-size:7px;line-height:1;transform:translate(.4px,-.1px)}.champion-priority-selector__remove:hover{border-color:#c8aa6e;color:#f0e6d2}.champion-priority-selector__position-badge{position:absolute;left:-6px;bottom:-6px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid #785a28;background:#010a13;color:#c8aa6e;cursor:pointer}.champion-priority-selector__position-badge:hover,.champion-priority-selector__position-badge:focus{border-color:#c8aa6e;color:#f0e6d2;outline:none}.champion-priority-selector__position-badge--empty{background:#1e2328;font-size:0}.champion-priority-selector__position-badge--empty:before{content:"+";font-family:var(--font-body);font-size:12px;line-height:1;transform:translate(.25px,.4px)}.champion-priority-selector__position-badge--random{left:auto;right:-6px;top:-6px;bottom:auto}.champion-priority-selector__position-badge--random:before{content:"";display:block;width:11px;height:11px;background:url(/fe/lol-tft-team-planner/images/team_editor_trait_filter_icon.png) center / contain no-repeat;transform:none}.champion-priority-selector__position-badge--random:hover:before,.champion-priority-selector__position-badge--random:focus:before,.champion-priority-selector__position-badge--random.champion-priority-selector__position-badge--active:before{background-image:url(/fe/lol-tft-team-planner/images/team_editor_trait_filter_icon_pressed.png)}.champion-priority-selector__position-badge--random.champion-priority-selector__position-badge--active{border-color:#c8aa6e;background:#010a13}.champion-priority-selector__position-badge img{display:block;width:11px;height:11px;object-fit:contain;transform:translate(.1px)}.champion-priority-selector__position-badge:after{content:attr(data-count);position:absolute;right:-5px;top:-5px;display:none;place-items:center;width:11px;min-width:11px;height:11px;border:1px solid #785a28;border-radius:50%;background:#010a13;box-sizing:border-box;color:#f0e6d2;font-family:var(--font-body);font-size:7px;font-weight:700;line-height:1;text-align:center}.champion-priority-selector__position-badge[data-count]:after{display:grid}.champion-priority-selector__position-menu{position:fixed;z-index:10002;display:flex;gap:4px;padding:5px;border:1px solid #785a28;background:#010a13;box-shadow:0 0 0 1px #010a13d9,0 4px 16px #0000008c;box-sizing:border-box}.champion-priority-selector__position-menu[hidden]{display:none}.champion-priority-selector__position-option{display:grid;place-items:center;width:28px;height:28px;padding:0;border:1px solid #463714;background:#1e2328;box-sizing:border-box;cursor:pointer}.champion-priority-selector__position-option:hover,.champion-priority-selector__position-option--selected{border-color:#c8aa6e;background:#0f1b2d}.champion-priority-selector__position-option img{display:block;width:18px;height:18px;pointer-events:none}.auto-select-checkboxes-div{display:flex;border-top:thin solid #1e282d}.auto-select-checkbox{margin:auto}.auto-select-checkbox:last-child{margin-right:17px}.auto-select-champ-select-menu{position:absolute;right:0;bottom:36px;z-index:10000;width:min(340px,calc(100vw - 32px));color:#a09b8c;font-family:var(--font-body);font-size:12px;font-weight:400;line-height:normal;pointer-events:none;text-transform:none}.auto-select-champ-select-menu-button-wrapper{position:relative;display:block;width:38px;height:32px;flex:0 0 38px;box-sizing:border-box}.auto-select-champ-select-menu__header{position:relative;display:block;width:38px;height:32px;border:1px solid #785a28;background:#1e2328;box-shadow:inset 0 0 0 1px #010a13;box-sizing:border-box;cursor:pointer;outline:none;padding:0}.auto-select-champ-select-menu__header:before{content:"";position:absolute;left:50%;top:50%;width:20px;height:20px;background-color:#c8aa6e;-webkit-mask:url(/fe/lol-static-assets/images/nav-icon-collections.svg) center / 20px 20px no-repeat;mask:url(/fe/lol-static-assets/images/nav-icon-collections.svg) center / 20px 20px no-repeat;pointer-events:none;transform:translate(-50%,-50%)}.auto-select-champ-select-menu__header:hover{border-color:#c8aa6e;background:#2a3038}.auto-select-champ-select-menu__header:hover:before{background-color:#f0e6d2}.auto-select-champ-select-menu__header:active,.auto-select-champ-select-menu-button-wrapper--open .auto-select-champ-select-menu__header{border-color:#c89b3c;background:#111820}.auto-select-champ-select-menu-button-wrapper--open{z-index:10000}.auto-select-champ-select-menu-button-wrapper--open .auto-select-champ-select-menu__header:hover{border-color:#c8aa6e;background:#1e2328}.auto-select-champ-select-menu-button-wrapper--open .auto-select-champ-select-menu__header:before{background-color:#f0e6d2}.auto-select-champ-select-menu__content{display:grid;gap:4px;width:100%;margin-bottom:4px;border:1px solid #785a28;background:rgba(1,10,19,.96);box-shadow:0 0 18px #000000a6;box-sizing:border-box;pointer-events:auto;padding:8px}.auto-select-champ-select-menu__title{display:flex;align-items:center;justify-content:center;min-height:24px;padding-bottom:4px;border-bottom:thin solid #1e282d;color:#f0e6d2;font-family:var(--font-display);font-size:14px;font-weight:700;text-align:center}.auto-select-champ-select-menu .auto-select-checkboxes-div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:center;border-top:0;border-bottom:thin solid #1e282d;padding-bottom:6px}.auto-select-champ-select-menu .auto-select-checkbox{justify-self:center;margin:0}.auto-select-champ-select-menu .dropdown-champions-default{min-height:32px}.auto-select-champ-select-menu .champion-priority-selector__scroll{height:56px}.auto-select-champ-select-menu--collapsed .auto-select-champ-select-menu__content{display:none}')),document.head.appendChild(o)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})();
1
+ (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(`.dropdown-champions-default{position:inherit;inline-size:100%}.dropdown-champions-default.dropdown-drop-up::part(ui-dropdown-menu),.dropdown-champions-default.dropdown-drop-up::part(ui-dropdown-content),.dropdown-champions-default.dropdown-drop-up::part(ui-dropdown-options){top:auto;bottom:100%;transform-origin:bottom}.dropdown-champions-default .controlado-champion-option__content{display:inline-flex;align-items:center;gap:8px;width:100%;min-width:0;line-height:20px;vertical-align:middle}.dropdown-champions-default .controlado-champion-option__icon{display:block;flex:0 0 20px;width:20px;height:20px;border:1px solid rgba(200,170,110,.65);border-radius:50%;background:#010a13;object-fit:cover;box-sizing:border-box;pointer-events:none}.dropdown-champions-default img.controlado-champion-option__icon{clip-path:circle(41.67% at 51.5% 51.5%);object-position:center;transform:scale(1.2);transform-origin:51.5% 51.5%}.dropdown-champions-default .controlado-champion-option__static-icon{display:grid;place-items:center;color:#f0e6d2;font-family:var(--font-display);font-size:13px;font-weight:700;line-height:1}.dropdown-champions-default .controlado-champion-option__text{display:flex;align-items:baseline;gap:8px;width:100%;min-width:0}.dropdown-champions-default .controlado-champion-option__name{flex:0 0 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown-champions-default .controlado-champion-option__description{flex:1 1 auto;min-width:0;color:#a09b8ce6;font-size:11px;line-height:1;overflow:hidden;text-align:right;text-overflow:ellipsis;white-space:nowrap}.champion-priority-selector{display:grid;gap:0;padding:2px 0 3px}.champion-priority-selector__scroll{position:relative;inline-size:100%;height:58px;border:1px solid rgba(120,90,40,.7);border-top:0;background:rgba(30,35,40,.5);box-sizing:border-box}.champion-priority-selector__track{display:inline-flex;align-items:center;gap:12px;min-width:max-content;min-height:45px;padding:10px 8px 8px;box-sizing:border-box}.champion-priority-selector__empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:#5f5b4f;font-family:var(--font-body);font-size:11px;line-height:13px;text-align:center;white-space:nowrap;pointer-events:none}.champion-priority-selector__icon{position:relative;flex:0 0 auto;width:34px;height:34px;border:1px solid #c8aa6e;border-radius:50%;background:#1e2328;box-shadow:0 0 0 1px #010a13e6;box-sizing:border-box;cursor:grab;outline:none}.champion-priority-selector__icon:focus{border-color:#f0e6d2}.champion-priority-selector__icon--dragging{cursor:grabbing;filter:brightness(1.15);z-index:1}.champion-priority-selector__icon:before,.champion-priority-selector__remove,.champion-priority-selector__position-badge{display:grid;place-items:center;width:17px;height:17px;padding:0;border-radius:50%;box-sizing:border-box;font-family:var(--font-body);font-size:10px;font-weight:700;line-height:1;z-index:2}.champion-priority-selector__icon:before{content:attr(data-rank);position:absolute;left:-6px;top:-6px;border:1px solid #c8aa6e;background:#010a13;color:#f0e6d2;text-align:center;pointer-events:none}.champion-priority-selector__icon>img{position:relative;z-index:0;display:block;width:100%;height:100%;border-radius:50%;clip-path:circle(45.87% at 50% 50%);object-fit:cover;object-position:center;pointer-events:none;transform:scale(1.09);transform-origin:center}.champion-priority-selector__icon--random{display:grid;place-items:center;color:#f0e6d2;font-family:var(--font-display);font-weight:700}.champion-priority-selector__random-icon{font-size:20px;line-height:1;transform:translateY(-.5px);pointer-events:none}.champion-priority-selector__remove{position:absolute;right:-6px;bottom:-6px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid #785a28;background:#1e2328;color:#c8aa6e;cursor:pointer;font-family:var(--font-display);font-size:0;text-align:center}.champion-priority-selector__remove:before{content:attr(data-icon);font-family:var(--font-display);font-size:7px;line-height:1;transform:translate(.4px,-.1px)}.champion-priority-selector__remove:hover{border-color:#c8aa6e;color:#f0e6d2}.champion-priority-selector__position-badge{position:absolute;left:-6px;bottom:-6px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid #785a28;background:#010a13;color:#c8aa6e;cursor:pointer}.champion-priority-selector__position-badge:hover,.champion-priority-selector__position-badge:focus{border-color:#c8aa6e;color:#f0e6d2;outline:none}.champion-priority-selector__position-badge--empty{background:#1e2328;font-size:0}.champion-priority-selector__position-badge--empty:before{content:"+";font-family:var(--font-body);font-size:12px;line-height:1;transform:translate(.25px,.4px)}.champion-priority-selector__position-badge--random{left:auto;right:-6px;top:-6px;bottom:auto}.champion-priority-selector__position-badge--random:before{content:"";display:block;width:11px;height:11px;background:url(/fe/lol-tft-team-planner/images/team_editor_trait_filter_icon.png) center / contain no-repeat;transform:none}.champion-priority-selector__position-badge--random:hover:before,.champion-priority-selector__position-badge--random:focus:before,.champion-priority-selector__position-badge--random.champion-priority-selector__position-badge--active:before{background-image:url(/fe/lol-tft-team-planner/images/team_editor_trait_filter_icon_pressed.png)}.champion-priority-selector__position-badge--random.champion-priority-selector__position-badge--active{border-color:#c8aa6e;background:#010a13}.champion-priority-selector__position-badge img{display:block;width:11px;height:11px;object-fit:contain;transform:translate(.1px)}.champion-priority-selector__position-badge:after{content:attr(data-count);position:absolute;right:-5px;top:-5px;display:none;place-items:center;width:11px;min-width:11px;height:11px;border:1px solid #785a28;border-radius:50%;background:#010a13;box-sizing:border-box;color:#f0e6d2;font-family:var(--font-body);font-size:7px;font-weight:700;line-height:1;text-align:center}.champion-priority-selector__position-badge[data-count]:after{display:grid}.champion-priority-selector__position-menu{position:fixed;z-index:10002;display:flex;gap:4px;padding:5px;border:1px solid #785a28;background:#010a13;box-shadow:0 0 0 1px #010a13d9,0 4px 16px #0000008c;box-sizing:border-box}.champion-priority-selector__position-menu[hidden]{display:none}.champion-priority-selector__position-option{display:grid;place-items:center;width:28px;height:28px;padding:0;border:1px solid #463714;background:#1e2328;box-sizing:border-box;cursor:pointer}.champion-priority-selector__position-option:hover,.champion-priority-selector__position-option--selected{border-color:#c8aa6e;background:#0f1b2d}.champion-priority-selector__position-option img{display:block;width:18px;height:18px;pointer-events:none}.auto-select-checkboxes-div{display:flex;border-top:thin solid #1e282d}.auto-select-checkbox{margin:auto}.auto-select-checkbox:last-child{margin-right:17px}.auto-select-social-roster-section__header{position:relative;padding-right:28px;box-sizing:border-box}.auto-select-social-roster-section .group-name,.auto-select-social-roster-section .group-name-text{min-width:0}.auto-select-social-roster-section .group-name-text{padding-right:5px}.auto-select-settings-trigger{display:grid;place-items:center;width:18px;height:18px;padding:0;border:0;background:transparent;box-shadow:none;box-sizing:border-box;cursor:pointer;outline:none}.auto-select-social-roster-section__header>.auto-select-settings-trigger{position:absolute;right:8px;top:50%;transform:translateY(-50%)}.auto-select-champ-select-menu__title>.auto-select-settings-trigger{position:absolute;right:5px;top:50%;transform:translateY(-50%)}.auto-select-settings-trigger:before{content:"";display:block;width:13px;height:13px;background:#5f5b4f;opacity:.95;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M19.43 12.98c.04-.32.07-.65.07-.98s-.02-.66-.07-.98l2.11-1.65c.19-.15.24-.42.12-.64l-2-3.46c-.12-.22-.37-.31-.6-.22l-2.49 1a7.34 7.34 0 0 0-1.69-.98L14.5 2.42A.5.5 0 0 0 14 2h-4a.5.5 0 0 0-.49.42l-.38 2.65c-.61.24-1.18.56-1.69.98l-2.49-1a.5.5 0 0 0-.6.22l-2 3.46a.5.5 0 0 0 .12.64l2.11 1.65c-.04.32-.08.65-.08.98s.03.66.08.98l-2.11 1.65a.5.5 0 0 0-.12.64l2 3.46c.12.22.37.31.6.22l2.49-1c.51.4 1.08.73 1.69.98l.38 2.65c.04.24.25.42.49.42h4c.25 0 .46-.18.5-.42l.38-2.65c.61-.25 1.18-.58 1.69-.98l2.49 1c.23.08.48 0 .6-.22l2-3.46a.5.5 0 0 0-.12-.64l-2.11-1.65ZM12 15.5A3.5 3.5 0 1 1 12 8a3.5 3.5 0 0 1 0 7.5Z'/%3E%3C/svg%3E") center / 13px 13px no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M19.43 12.98c.04-.32.07-.65.07-.98s-.02-.66-.07-.98l2.11-1.65c.19-.15.24-.42.12-.64l-2-3.46c-.12-.22-.37-.31-.6-.22l-2.49 1a7.34 7.34 0 0 0-1.69-.98L14.5 2.42A.5.5 0 0 0 14 2h-4a.5.5 0 0 0-.49.42l-.38 2.65c-.61.24-1.18.56-1.69.98l-2.49-1a.5.5 0 0 0-.6.22l-2 3.46a.5.5 0 0 0 .12.64l2.11 1.65c-.04.32-.08.65-.08.98s.03.66.08.98l-2.11 1.65a.5.5 0 0 0-.12.64l2 3.46c.12.22.37.31.6.22l2.49-1c.51.4 1.08.73 1.69.98l.38 2.65c.04.24.25.42.49.42h4c.25 0 .46-.18.5-.42l.38-2.65c.61-.25 1.18-.58 1.69-.98l2.49 1c.23.08.48 0 .6-.22l2-3.46a.5.5 0 0 0-.12-.64l-2.11-1.65ZM12 15.5A3.5 3.5 0 1 1 12 8a3.5 3.5 0 0 1 0 7.5Z'/%3E%3C/svg%3E") center / 13px 13px no-repeat}.auto-select-settings-trigger:hover:before,.auto-select-settings-trigger:focus:before,.auto-select-settings-trigger[aria-expanded=true]:before{background:#c8aa6e;opacity:1}.auto-select-settings-flyout{color:#a09b8c;font-family:var(--font-body);font-size:12px;line-height:16px;z-index:10004}.auto-select-settings-flyout lc-flyout-content{display:block;width:100%;box-sizing:border-box}.auto-select-settings-menu{display:flex;flex-direction:column;width:100%;padding:6px 0;color:#a09b8c}.auto-select-settings-menu__empty{min-height:32px;padding:8px 12px;box-sizing:border-box;color:#5f5b4f;font-size:11px}.auto-select-settings-checkbox{display:block;min-height:0;width:100%;height:36px;padding:0;box-sizing:content-box;color:#a09b8c;cursor:pointer}.auto-select-settings-checkbox:hover,.auto-select-settings-checkbox[selected]{color:#f0e6d2}.auto-select-settings-range{display:grid;gap:8px;padding:8px 12px 10px;border-bottom:thin solid #1e282d;box-sizing:border-box}.auto-select-settings-range__header{display:flex;align-items:baseline;justify-content:space-between;gap:8px;min-width:0}.auto-select-settings-range__label{min-width:0;overflow:hidden;color:#f0e6d2;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.auto-select-settings-range__value{flex:0 0 auto;color:#a09b8c;font-size:11px}.auto-select-settings-range__track{position:relative;height:30px;margin:0 15px;cursor:pointer}.auto-select-settings-range__track:before{content:"";position:absolute;left:0;right:0;top:14px;height:2px;background:#1e2328}.auto-select-settings-range__fill{position:absolute;top:13px;height:2px;border:thin solid #010a13;background:linear-gradient(to right,#785a28 0%,#c89b3c 56%,#c8aa6e 100%);box-sizing:border-box;pointer-events:none}.auto-select-settings-range__handle{position:absolute;top:0;width:30px;height:30px;padding:0;border:0;background:url(/fe/lol-uikit/images/slider-btn.png) no-repeat top left;background-size:100%;box-sizing:border-box;cursor:pointer;outline:none;transform:translate(-50%)}.auto-select-settings-range__handle:hover,.auto-select-settings-range__handle:focus{background-position:0 -30px}.auto-select-settings-range__handle--dragging{background-position:0 -60px}.auto-select-champ-select-menu{position:absolute;right:0;bottom:36px;z-index:10000;width:min(340px,calc(100vw - 32px));color:#a09b8c;font-family:var(--font-body);font-size:12px;font-weight:400;line-height:normal;pointer-events:none;text-transform:none}.auto-select-champ-select-menu-button-wrapper{position:relative;display:block;width:38px;height:32px;flex:0 0 38px;box-sizing:border-box}.auto-select-champ-select-menu__header{position:relative;display:block;width:38px;height:32px;border:1px solid #785a28;background:#1e2328;box-shadow:inset 0 0 0 1px #010a13;box-sizing:border-box;cursor:pointer;outline:none;padding:0}.auto-select-champ-select-menu__header:before{content:"";position:absolute;left:50%;top:50%;width:20px;height:20px;background-color:#c8aa6e;-webkit-mask:url(/fe/lol-static-assets/images/nav-icon-collections.svg) center / 20px 20px no-repeat;mask:url(/fe/lol-static-assets/images/nav-icon-collections.svg) center / 20px 20px no-repeat;pointer-events:none;transform:translate(-50%,-50%)}.auto-select-champ-select-menu__header:hover{border-color:#c8aa6e;background:#2a3038}.auto-select-champ-select-menu__header:hover:before{background-color:#f0e6d2}.auto-select-champ-select-menu__header:active,.auto-select-champ-select-menu-button-wrapper--open .auto-select-champ-select-menu__header{border-color:#c89b3c;background:#111820}.auto-select-champ-select-menu-button-wrapper--open{z-index:10000}.auto-select-champ-select-menu-button-wrapper--open .auto-select-champ-select-menu__header:hover{border-color:#c8aa6e;background:#1e2328}.auto-select-champ-select-menu-button-wrapper--open .auto-select-champ-select-menu__header:before{background-color:#f0e6d2}.auto-select-champ-select-menu__content{display:grid;gap:4px;width:100%;margin-bottom:4px;border:1px solid #785a28;background:rgba(1,10,19,.96);box-shadow:0 0 18px #000000a6;box-sizing:border-box;pointer-events:auto;padding:8px}.auto-select-champ-select-menu__title{position:relative;display:flex;align-items:center;justify-content:center;min-height:24px;padding-right:24px;padding-bottom:4px;border-bottom:thin solid #1e282d;color:#f0e6d2;font-family:var(--font-display);font-size:14px;font-weight:700;text-align:center}.auto-select-champ-select-menu .auto-select-checkboxes-div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:center;border-top:0;border-bottom:thin solid #1e282d;padding-bottom:6px}.auto-select-champ-select-menu .auto-select-checkbox{justify-self:center;margin:0}.auto-select-champ-select-menu .dropdown-champions-default{min-height:32px}.auto-select-champ-select-menu .champion-priority-selector__scroll{height:56px}.auto-select-champ-select-menu--collapsed .auto-select-champ-select-menu__content{display:none}`)),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
2
2
  /**
3
3
  * @author balaclava
4
4
  * @name auto-champion-select
5
5
  * @link https://github.com/controlado/auto-champion-select#readme
6
6
  * @description Pick or ban automatically! 🐧
7
- * @version 1.9.6
7
+ * @version 1.11.0
8
8
  * @license GPL-3.0-or-later
9
9
  */
10
- import{request as S,sleep as T,linkEndpoint as pt}from"https://cdn.jsdelivr.net/npm/balaclava-utils@latest";const ee="1.9.6",ne={enabled:!1},oe={enabled:!1,force:!1,quickAction:!1,champions:[432,235],randomAssignedPositions:[],randomPoolPositions:[],positionsByChampionId:{235:["BOTTOM","UTILITY"],432:["UTILITY"]}},ie={enabled:!1,force:!1,quickAction:!1,champions:[157,777,238,38],randomPoolPositions:[]},se={controladoAutoAccept:ne,controladoPick:oe,controladoBan:ie};function u(i){const t=Number(i);return Number.isSafeInteger(t)&&t>0?t:null}function re(i,t=null){const e=[],n=new Set,o=ae(t);if(!Array.isArray(i))return e;for(const s of i){const r=u(s);r===null||n.has(r)||o&&!o.has(r)||(e.push(r),n.add(r))}return e}function ae(i){return i?new Set(Array.from(i,u).filter(t=>t!==null)):null}const F=[{value:"TOP",label:"Top",iconPath:"/fe/lol-parties/icon-position-top.png"},{value:"JUNGLE",label:"Jungle",iconPath:"/fe/lol-parties/icon-position-jungle.png"},{value:"MIDDLE",label:"Mid",iconPath:"/fe/lol-parties/icon-position-middle.png"},{value:"BOTTOM",label:"ADC",iconPath:"/fe/lol-parties/icon-position-bottom.png"},{value:"UTILITY",label:"Support",iconPath:"/fe/lol-parties/icon-position-utility.png"}],ce=new Set(F.map(i=>i.value));function x(i){const t=String(i??"").toUpperCase();return ce.has(t)?t:null}function A(i){if(!Array.isArray(i))return[];const t=new Set;for(const e of i){const n=x(e);n&&t.add(n)}return F.map(e=>e.value).filter(e=>t.has(e))}function G(i,t=null){const e={};if(!i||typeof i!="object"||Array.isArray(i))return e;const n=le(t);for(const[o,s]of Object.entries(i)){const r=u(o);if(r===null||!Array.isArray(s))continue;const a=String(r);if(n&&!n.has(a))continue;const c=[],d=new Set;for(const g of s){const z=x(g);!z||d.has(z)||(c.push(z),d.add(z))}c.length>0&&(e[a]=c)}return e}function le(i){if(!i)return null;const t=new Set;for(const e of i){const n=u(e);n!==null&&t.add(String(n))}return t}function mt(i){return F.find(t=>t.value===i)}function Dt(i,t){var n;const e=u(t);return e===null?[]:((n=i==null?void 0:i.positionsByChampionId)==null?void 0:n[String(e)])||[]}function de(i,t,e){const n=Dt(i,t);if(n.length===0)return!0;const o=x(e);return o!==null&&n.includes(o)}const b="random",E="bravery";function p(i){return i===b}function C(i){return i===E}function _(i){return p(i)?b:C(i)?E:u(i)}function w(i){const t=_(i);return t===null?null:String(t)}function ct(i,t=null){const e=[],n=new Set,o=he(t);if(!Array.isArray(i))return e;for(const s of i){const r=_(s);if(r===null)continue;const a=String(r);n.has(a)||typeof r=="number"&&o&&!o.has(r)||(e.push(r),n.add(a))}return e}function M(i){return i?Array.from(i,u).filter(t=>t!==null):[]}function he(i){return i?new Set(Array.from(i,u).filter(t=>t!==null)):null}const ft=new Set;function xt(i,t){return Object.prototype.hasOwnProperty.call(i,t)}function R(i,t){return xt(i,t)}function ue(i){return Array.isArray(i.priorityOptions)?i.priorityOptions:i.champions}function pe(i,t){return xt(i,"randomPoolPositions")?i.randomPoolPositions:t.randomPositions}function lt(){if(!globalThis.DataStore)throw new Error("DataStore is not available");return globalThis.DataStore}function me(i){return i!==null&&typeof i=="object"&&!Array.isArray(i)}function dt(i){if(i!==void 0)return JSON.parse(JSON.stringify(i))}function $t(i){const t=se[i];if(!t)throw new Error(`Unknown auto-champion-select config key: ${i}`);return dt(t)}function qt(i,t,e={}){const n=$t(i),o=me(t)?dt(t):{},s={...n,...o},r={enabled:s.enabled===!0};return R(n,"force")&&(r.force=s.force===!0),R(n,"quickAction")&&(r.quickAction=s.quickAction===!0),R(n,"champions")&&(r.priorityOptions=ct(ue(s),e.allowedChampionIds),r.champions=M(r.priorityOptions)),R(n,"randomAssignedPositions")&&(r.randomAssignedPositions=A(s.randomAssignedPositions)),R(n,"randomPoolPositions")&&(r.randomPoolPositions=A(pe(o,s))),R(n,"positionsByChampionId")&&(r.positionsByChampionId=G(s.positionsByChampionId,e.selectedChampionIds||r.champions)),r}function zt(i,t,e={}){const n=t===void 0?$t(i):t;return qt(i,n,e)}function k(i,t={}){const n=lt().get(i);return zt(i,n,t)}function fe(i,t,e={}){const n=lt(),o=qt(i,t,e);return n.set(i,o),o}function ge(i,t){return JSON.stringify(i)===JSON.stringify(t)}function Pe(i,t,e){ft.has(i)||(ft.add(i),console.warn(`auto-champion-select: Repaired ${i} in DataStore. The stored value used a different schema; plugins like reynbow/auto-champ-lock write this shape. Saved normalized config.`,{storedConfig:t,normalizedConfig:e}))}function Yt(i,t={}){const e=lt(),n=e.get(i),o=zt(i,n,t);return(n===void 0||!ge(n,o))&&(n!==void 0&&Pe(i,n,o),e.set(i,o)),o}function H(i,t,e={}){const n=k(i,e),o=dt(n),s=t(o)||o;return fe(i,s,e)}const m=Object.freeze({readyCheckAccept:"/lol-matchmaking/v1/ready-check/accept",gameflowPhase:"/lol-gameflow/v1/gameflow-phase",wallet:"/lol-inventory/v1/wallet",ownedChampions:"/lol-champions/v1/owned-champions-minimal",championSummary:"/lol-game-data/assets/v1/champion-summary.json",recommendedChampionPositions:"/lol-perks/v1/recommended-champion-positions",champSelectSession:"/lol-champ-select/v1/session",pickableChampionIds:"/lol-champ-select/v1/pickable-champion-ids",bannableChampionIds:"/lol-champ-select/v1/bannable-champion-ids",championIcon(i){return`/lol-game-data/assets/v1/champion-icons/${i}.png`},champSelectAction(i){return`/lol-champ-select/v1/session/actions/${i}`}}),ye=1e3;function ht(i){let t=null;return function(){return t||(t=Promise.resolve().then(i).finally(()=>{t=null})),t}}function Ut(i,t={}){const e=[],n=new Set;if(!Array.isArray(i))return e;for(const o of i){if(!o||typeof o!="object")continue;const s=u(o.id),r=typeof o.name=="string"?o.name:"";s===null||!r||n.has(r)||(e.push({...o,id:s,name:r,squarePortraitPath:o.squarePortraitPath||m.championIcon(s),recommendedPositions:t[String(s)]||[]}),n.add(r))}return e.sort((o,s)=>o.name.localeCompare(s.name)),e}function be(i){const t={};if(!i||typeof i!="object"||Array.isArray(i))return t;for(const[e,n]of Object.entries(i))!n||typeof n!="object"||Array.isArray(n)||(t[e]=n.recommendedPositions);return G(t)}async function Ae(){try{const i=await S("GET",m.recommendedChampionPositions);return i.ok?be(await i.json()):(console.warn("auto-champion-select(recommended-champion-positions): Request failed",i),{})}catch(i){return console.warn("auto-champion-select(recommended-champion-positions): Failed to load",i),{}}}const j=ht(Ae);async function Ce(){let i=await S("GET",m.ownedChampions);for(;!i.ok;)console.debug("auto-champion-select(owned-champions-minimal): Retrying..."),i=await S("GET",m.ownedChampions),await T(ye);return Ut(await i.json(),await j())}async function Se(){const[i,t]=await Promise.all([S("GET",m.championSummary),j()]);return Ut(await i.json(),t)}const Oe=ht(Ce),Gt=ht(Se),gt=300,Pt=2e3,we=4e3,Ee=-1,Ht=-3,P=Object.freeze({SATISFIED:"satisfied",TRY_NEXT_CHAMPION:"try-next-champion",STOP_CYCLE:"stop-cycle"}),v=Object.freeze({CONTINUE:"continue-cycle",STOP:"stop-cycle"}),y=Object.freeze({READY:"ready",SKIP_ACTION:"skip-action",STOP_CYCLE:"stop-cycle"}),f=Object.freeze({SATISFIED:"satisfied",TRY_NEXT_PRIORITY_OPTION:"try-next-priority-option",STOP_CYCLE:"stop-cycle"});function ot(i){return Array.isArray(i)?i.flat():[]}function Ie(i){return ot(i).filter(t=>t.type==="ban"&&t.completed===!0).map(t=>t.championId)}function yt(i){return Array.isArray(i)?i:[]}function Q(i){const t=new Set;for(const e of i){const n=u(e);n!==null&&t.add(n)}return t}function bt(i){return i.type==="pick"?0:1}function At(){return{pickConfig:k("controladoPick"),banConfig:k("controladoBan")}}function Te(i){return i.quickAction===!0}function _e(){const i=we-Pt;return Pt+Math.floor(Math.random()*(i+1))}function ke(i){const t=[...i];for(let e=t.length-1;e>0;e--){const n=Math.floor(Math.random()*(e+1));[t[e],t[n]]=[t[n],t[e]]}return t}function Re(i){return Array.isArray(i)&&i.length===1&&i[0]===Ee}function W(i){return Number(i)===Ht}class ve{constructor(){this.session=null,this.actions=null,this.localPlayerCellId=null,this.teammateIntentChampionIds=new Set,this.localPlayerIntentChampionId=null,this.localPlayerIntentIsBravery=!1,this.pickedChampionIds=new Set,this.bannedChampionIds=new Set,this.localPlayerAssignedPosition=null,this.rejectedBraveryActionIds=new Set,this.watchTask=null,this.watchVersion=0,this.mounted=!1}mount(){this.mounted||(this.mounted=!0,this.rejectedBraveryActionIds.clear(),this.watchVersion+=1,this.watchTask||(this.watchTask=this.watch()))}unmount(){this.mounted&&(this.mounted=!1,this.rejectedBraveryActionIds.clear(),this.watchVersion+=1)}async watch(){try{for(;this.mounted;){const t=this.watchVersion;let e=!1;try{await this.refreshSessionState(),e=!0}catch(n){console.debug("auto-champion-select: Failed to update champion select",n)}if(!e||!this.mounted||t!==this.watchVersion){this.mounted&&t===this.watchVersion&&await T(gt);continue}try{await this.runAutoSelectCycle()}catch(n){console.debug("auto-champion-select: Failed to run champion select cycle",n)}this.mounted&&t===this.watchVersion&&await T(gt)}}finally{this.watchTask=null}}async refreshSessionState(){var s,r;const t=await S("GET",m.champSelectSession);if(!t.ok)throw new Error(`Session request failed with status ${t.status}`);this.session=await t.json(),this.actions=this.session.actions,this.localPlayerCellId=this.session.localPlayerCellId;const e=yt(this.session.myTeam),n=yt(this.session.theirTeam),o=e.find(a=>a.cellId===this.localPlayerCellId);this.localPlayerAssignedPosition=x(o==null?void 0:o.assignedPosition),this.localPlayerIntentChampionId=u(o==null?void 0:o.championPickIntent),this.localPlayerIntentIsBravery=W(o==null?void 0:o.championPickIntent),this.pickedChampionIds=Q([...e,...n].map(a=>a.championId)),this.bannedChampionIds=Q([...((s=this.session.bans)==null?void 0:s.myTeamBans)||[],...((r=this.session.bans)==null?void 0:r.theirTeamBans)||[],...Ie(this.actions)]),this.teammateIntentChampionIds=Q(e.map(a=>a.championPickIntent))}async runAutoSelectCycle(){const t=At();if(!t.pickConfig.enabled&&!t.banConfig.enabled)return;const e=this.getLocalPlayerActions();if(e.length===0){console.debug("auto-champion-select: No local player sub actions found, skipping..."),this.unmount();return}for(const n of e)if(await this.runAutoSelectForAction(n,t)===v.STOP)return}async runAutoSelectForAction(t,e){const n=await this.prepareActionForAutoSelect(t,e);switch(n.status){case y.READY:return this.tryAutoSelectPlan(n.plan);case y.SKIP_ACTION:return v.CONTINUE;case y.STOP_CYCLE:return v.STOP;default:throw new Error(`Unexpected auto-select plan status: ${n.status}`)}}async prepareActionForAutoSelect(t,e){if(!this.isActionAvailable(t))return{status:y.SKIP_ACTION};const n=this.getConfigForActionType(t.type,e);if(!(n!=null&&n.enabled))return{status:y.SKIP_ACTION};const o=this.createAutoSelectPlan(t,n);if(!o)return{status:y.SKIP_ACTION};const s=this.createPlanLimitedToAlreadySatisfiedPriorityOption(o);if(s)return{status:y.READY,plan:s};if(Te(n))return{status:y.READY,plan:o};const r=await this.delayAndRefreshAutoSelectPlan(t);return r?{status:y.READY,plan:this.createPlanLimitedToAlreadySatisfiedPriorityOption(r)||r}:{status:y.STOP_CYCLE}}async tryAutoSelectPlan(t){for(const e of t.priorityOptions){const n=await this.tryPriorityOptionForAction(t.action,e,t.config);if(n===f.SATISFIED)return v.CONTINUE;if(n===f.STOP_CYCLE)return v.STOP}return v.CONTINUE}async tryPriorityOptionForAction(t,e,n){if(this.isPriorityOptionAlreadySatisfied(t,e))return f.SATISFIED;if(C(e))return this.tryBraveryForAction(t);const o=await this.resolveChampionIdsForPriorityOption(t,e,n),s=p(e)&&!this.isLockingExistingPickIntent(t,o);for(const r of o){const a={tryNextRandomCandidateOnFailure:s},c=await this.attemptChampionForAction(t,r,n,a);if(c===P.SATISFIED)return f.SATISFIED;if(c===P.STOP_CYCLE)return f.STOP_CYCLE}return f.TRY_NEXT_PRIORITY_OPTION}async tryBraveryForAction(t){if(t.type!=="pick")return f.TRY_NEXT_PRIORITY_OPTION;if(this.isBraveryPickIntentSet(t))return f.SATISFIED;console.debug("auto-champion-select: Trying to pick Bravery...");const e=await this.selectChampion(t.id,Ht);console.debug(e.ok?"auto-champion-select: Bravery request accepted, refreshing champ select state...":"auto-champion-select: Failed to pick Bravery, refreshing champ select state...");const n=await this.refreshPendingAction(t);return!n||!this.isActionAvailable(n)?e.ok?f.SATISFIED:f.STOP_CYCLE:this.isBraveryPickIntentSet(n)?f.SATISFIED:(this.rejectedBraveryActionIds.add(t.id),console.debug("auto-champion-select: Bravery was not applied after refresh, trying next pick..."),f.TRY_NEXT_PRIORITY_OPTION)}getLocalPlayerActions(){return ot(this.actions).filter(t=>this.isPendingLocalPlayerAction(t)).sort((t,e)=>bt(t)-bt(e))}isPendingLocalPlayerAction(t){return t.actorCellId===this.localPlayerCellId&&t.completed===!1}isActionAvailable(t){return t.type==="pick"||t.isInProgress===!0}getConfigForActionType(t,e){return t==="pick"?e.pickConfig:t==="ban"?e.banConfig:null}createAutoSelectPlan(t,e){const n=this.getAvailablePriorityOptionsForAction(t,e);return n.length===0?null:{action:t,config:e,priorityOptions:n}}getAvailablePriorityOptionsForAction(t,e){return ct(e.priorityOptions||e.champions).filter(n=>!this.isPriorityOptionUnavailableForAction(t,n,e))}isPriorityOptionUnavailableForAction(t,e,n){return p(e)?this.isRandomPriorityOptionUnavailableForAction(t,n):C(e)?t.type!=="pick"||this.rejectedBraveryActionIds.has(t.id):this.isChampionUnavailableForAction(t,e,n)}isRandomPriorityOptionUnavailableForAction(t,e){if(t.type!=="pick")return!1;const n=A(e.randomAssignedPositions);return n.length===0?!1:this.localPlayerAssignedPosition?n.includes(this.localPlayerAssignedPosition)?!1:(console.debug(`auto-champion-select: Skipping random pick because assigned position ${this.localPlayerAssignedPosition} is not in ${n.join(", ")}.`),!0):(console.debug(`auto-champion-select: Skipping random pick because no assigned position is available for ${n.join(", ")} restriction.`),!0)}createPlanLimitedToAlreadySatisfiedPriorityOption(t){const e=t.priorityOptions.find(n=>this.isPriorityOptionAlreadySatisfied(t.action,n));return e===void 0?null:{...t,priorityOptions:[e]}}isPriorityOptionAlreadySatisfied(t,e){return p(e)?this.hasAnyPickIntentSet(t):C(e)?this.isBraveryPickIntentSet(t):this.isPickIntentSetToChampion(t,e)}hasAnyPickIntentSet(t){return t.type==="pick"&&t.isInProgress!==!0&&(this.localPlayerIntentChampionId!==null||this.localPlayerIntentIsBravery||u(t.championId)!==null||W(t.championId))}isBraveryPickIntentSet(t){return t.type==="pick"&&t.isInProgress!==!0&&(this.localPlayerIntentIsBravery||W(t.championId))}isLockingExistingPickIntent(t,e){return t.type==="pick"&&t.isInProgress===!0&&e.length===1&&e[0]===this.getPickIntentChampionId(t)}getPickIntentChampionId(t){return t.type!=="pick"?null:u(t.championId)??this.localPlayerIntentChampionId}async delayAndRefreshAutoSelectPlan(t){const e=_e();console.debug(`auto-champion-select: Quick action is off, waiting ${e}ms before ${t.type}...`);const n=this.watchVersion;if(await T(e),!this.mounted||n!==this.watchVersion)return null;let o=null;try{await this.refreshSessionState(),o=this.findPendingAction(t)}catch(r){return console.debug("auto-champion-select: Failed to refresh champion select after action delay",r),null}if(!o||!this.isActionAvailable(o))return null;const s=this.getConfigForActionType(t.type,At());return s!=null&&s.enabled?this.createAutoSelectPlan(o,s):null}async resolveChampionIdsForPriorityOption(t,e,n){return C(e)?[]:p(e)?this.resolveRandomChampionIdsForAction(t,n):[e]}async resolveRandomChampionIdsForAction(t,e){if(t.type==="pick"&&t.isInProgress===!0){const r=this.getPickIntentChampionId(t);if(r!==null&&!this.isChampionUnavailableForAction(t,r,e))return[r]}const n=await this.fetchRandomCandidateChampionIds(t);if(n.length===0)return[];const o=n.filter(r=>!this.isChampionUnavailableForAction(t,r,e)),s=t.type==="pick"&&!this.hasConfiguredRandomPoolPositions(e)?await this.preferAssignedPositionRandomPickCandidates(o):await this.filterRandomChampionIdsByConfiguredPoolPositions(o,e);return ke(s)}async fetchRandomCandidateChampionIds(t){const e=t.type==="pick"?m.pickableChampionIds:m.bannableChampionIds;try{const n=await S("GET",e);if(!n.ok)return console.debug(`auto-champion-select: Failed to load random ${t.type} candidates`,n),[];const o=await n.json();return t.type==="ban"&&Re(o)?(console.debug("auto-champion-select: Random ban endpoint returned unrestricted sentinel, falling back to all champions..."),await this.fetchAllChampionIdsForRandomBan()):re(o)}catch(n){return console.debug(`auto-champion-select: Failed to load random ${t.type} candidates`,n),[]}}async fetchAllChampionIdsForRandomBan(){return(await Gt()).map(e=>e.id)}hasConfiguredRandomPoolPositions(t){return A(t.randomPoolPositions).length>0}async filterRandomChampionIdsByConfiguredPoolPositions(t,e){const n=A(e.randomPoolPositions);if(n.length===0)return t;const o=new Set(n),s=await j(),r=t.filter(a=>{var c;return(c=s[String(a)])==null?void 0:c.some(d=>o.has(d))});return r.length===0&&console.debug(`auto-champion-select: No random candidates matched ${n.join(", ")} restriction.`),r}async preferAssignedPositionRandomPickCandidates(t){if(!this.localPlayerAssignedPosition)return t;const e=await j(),n=t.filter(o=>{var s;return(s=e[String(o)])==null?void 0:s.includes(this.localPlayerAssignedPosition)});return n.length>0?n:t}async attemptChampionForAction(t,e,n,o={}){const s=u(e);if(s===null||this.isChampionUnavailableForAction(t,s,n))return P.TRY_NEXT_CHAMPION;if(this.isPickIntentSetToChampion(t,s)||(console.debug(`auto-champion-select: Trying to ${t.type} ${s}...`),(await this.selectChampion(t.id,s)).ok))return P.SATISFIED;console.debug(`auto-champion-select: Failed to ${t.type} ${s}, refreshing champ select state...`);const a=await this.refreshPendingAction(t);return!a||!this.isActionAvailable(a)?P.STOP_CYCLE:o.tryNextRandomCandidateOnFailure===!0?this.hasAnyPickIntentSet(a)?P.SATISFIED:(console.debug(`auto-champion-select: Failed random ${t.type} candidate ${s}, trying next ${t.type}...`),P.TRY_NEXT_CHAMPION):this.isChampionUnavailableForAction(a,s,n)?(console.debug(`auto-champion-select: ${s} is unavailable after refresh, trying next ${t.type}...`),P.TRY_NEXT_CHAMPION):P.STOP_CYCLE}isPickIntentSetToChampion(t,e){return t.type==="pick"&&t.isInProgress!==!0&&(this.localPlayerIntentChampionId===e||u(t.championId)===e)}async refreshPendingAction(t){try{await this.refreshSessionState()}catch(e){return console.debug("auto-champion-select: Failed to refresh champion select action",e),null}return this.findPendingAction(t)}findPendingAction(t){return ot(this.actions).find(e=>e.id===t.id&&e.actorCellId===t.actorCellId&&e.type===t.type&&e.completed===!1)||null}isChampionUnavailableForAction(t,e,n){if(t.type==="pick"&&!de(n,e,this.localPlayerAssignedPosition)){const o=Dt(n,e);return this.localPlayerAssignedPosition?console.debug(`auto-champion-select: Picking ${e} but assigned position ${this.localPlayerAssignedPosition} is not in ${o.join(", ")}, skipping...`):console.debug(`auto-champion-select: Picking ${e} but no assigned position is available for ${o.join(", ")} restriction, skipping...`),!0}if(this.bannedChampionIds.has(e))return console.debug(`auto-champion-select: Banning ${e} but it's already banned, skipping...`),!0;if(t.type==="ban"&&this.teammateIntentChampionIds.has(e))if(n.force===!0)console.debug(`auto-champion-select: Banning ${e} but it's already picked, forcing...`);else return console.debug(`auto-champion-select: Banning ${e} but it's already picked, skipping...`),!0;if(t.type==="pick"&&this.pickedChampionIds.has(e))if(n.force===!0)console.debug(`auto-champion-select: Picking ${e} but it's already picked, forcing...`);else return console.debug(`auto-champion-select: Picking ${e} but it's already picked, skipping...`),!0;return!1}selectChampion(t,e){const n=m.champSelectAction(t);return S("PATCH",n,{body:{championId:e,completed:!0}})}}const O=Object.freeze({dropdown:"lol-uikit-framed-dropdown",dropdownOption:"lol-uikit-dropdown-option",radioInputOption:"lol-uikit-radio-input-option",scrollable:"lol-uikit-scrollable",socialRosterGroup:"lol-social-roster-group"}),l=Object.freeze({socialRoster:".lol-social-roster",champSelectButtons:".bottom-right-buttons",firstChampSelectSquareButton:"lol-social-chat-toggle-button, .missions-tracker-button-component, .champ-select-voice-button-wrapper",dropdownRoot:".ui-dropdown",dropdownCurrent:".ui-dropdown-current",dropdownCurrentContent:".ui-dropdown-current-content",dropdownOption:O.dropdownOption,dropdownOptionSelected:`${O.dropdownOption}[selected]`,dropdownOptionsContainer:".ui-dropdown-options-container",dropdownOptions:".ui-dropdown-options",dropdownScrollable:O.scrollable,socialRosterGroupArrow:".arrow",socialRosterGroupHeader:".group-header",socialRosterGroupLabel:"span"});function Ct(){return document.querySelector(l.socialRoster)}function it(){return document.querySelector(l.champSelectButtons)}const Le=50,Me=100,V=210,K=40,U="controlado-position-filter",st="controlado-position-filter-visible",I="controlado-position-filter__badge",rt="controlado-position-filter__badge--active",St="controlado-placeholder",Ot="controlado-search",jt="controlado-filter-input",Qt="controlado-tag--search",X="controlado-quick-action",q="controlado-quick-action-toggle",Wt="controlado-quick-action-toggle--active",Be=`url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M13.1 2 4 13.2h6.7L9.9 22 20 9.8h-6.9L13.1 2z'/%3E%3C/svg%3E")`,Vt="controlado-tag",Kt="controlado-filter-icon",B="controlado-filter-icon--trash",wt="controlado-champion-option__content",Et="controlado-champion-option__icon",Ne="controlado-champion-option__text",It="controlado-champion-option__name",Fe="controlado-champion-option__description",De="controlado-champion-option__static-icon",Tt=`
11
- ${l.dropdownRoot} {
10
+ import{request as b,sleep as v,linkEndpoint as bt}from"https://cdn.jsdelivr.net/npm/balaclava-utils@latest";const be="1.11.0",Ee={enabled:!1,hideAutoAcceptPrompt:!0},Oe={minMs:2e3,maxMs:4e3},we={enabled:!1,force:!1,champions:[432,235],randomAssignedPositions:[],randomPoolPositions:[],positionsByChampionId:{235:["BOTTOM","UTILITY"],432:["UTILITY"]}},Te={enabled:!1,force:!1,champions:[157,777,238,38],randomPoolPositions:[]},Ie={controladoAutoAccept:Ee,controladoActionDelay:Oe,controladoPick:we,controladoBan:Te},Qt=0,Zt=8e3,st=100,at=2e3,ke=4e3;function rt(o,t){const e=Number(o),n=Number.isFinite(t)?t:at;if(!Number.isFinite(e))return rt(n,at);const i=Math.round(e/st)*st;return Math.max(Qt,Math.min(Zt,i))}function $(o,t,e=at,n=ke){const i=rt(o,e),s=rt(t,n);return{minMs:Math.min(i,s),maxMs:Math.max(i,s)}}function Le(o){const{minMs:t,maxMs:e}=$(o.minMs,o.maxMs),n=e-t;return t+Math.floor(Math.random()*(n+1))}function z(o){const t=o/1e3;return`${Number.isInteger(t)?t.toFixed(0):t.toFixed(1)}s`}function p(o){const t=Number(o);return Number.isSafeInteger(t)&&t>0?t:null}function _e(o,t=null){const e=[],n=new Set,i=ve(t);if(!Array.isArray(o))return e;for(const s of o){const a=p(s);a===null||n.has(a)||i&&!i.has(a)||(e.push(a),n.add(a))}return e}function ve(o){return o?new Set(Array.from(o,p).filter(t=>t!==null)):null}const B=[{value:"TOP",label:"Top",iconPath:"/fe/lol-parties/icon-position-top.png"},{value:"JUNGLE",label:"Jungle",iconPath:"/fe/lol-parties/icon-position-jungle.png"},{value:"MIDDLE",label:"Mid",iconPath:"/fe/lol-parties/icon-position-middle.png"},{value:"BOTTOM",label:"ADC",iconPath:"/fe/lol-parties/icon-position-bottom.png"},{value:"UTILITY",label:"Support",iconPath:"/fe/lol-parties/icon-position-utility.png"}],Re=new Set(B.map(o=>o.value));function D(o){const t=String(o??"").toUpperCase();return Re.has(t)?t:null}function T(o){if(!Array.isArray(o))return[];const t=new Set;for(const e of o){const n=D(e);n&&t.add(n)}return B.map(e=>e.value).filter(e=>t.has(e))}function q(o,t=null){const e={};if(!o||typeof o!="object"||Array.isArray(o))return e;const n=Me(t);for(const[i,s]of Object.entries(o)){const a=p(i);if(a===null||!Array.isArray(s))continue;const r=String(a);if(n&&!n.has(r))continue;const c=[],h=new Set;for(const S of s){const H=D(S);!H||h.has(H)||(c.push(H),h.add(H))}c.length>0&&(e[r]=c)}return e}function Me(o){if(!o)return null;const t=new Set;for(const e of o){const n=p(e);n!==null&&t.add(String(n))}return t}function te(o){return B.find(t=>t.value===o)}function ee(o,t){var n;const e=p(t);return e===null?[]:((n=o==null?void 0:o.positionsByChampionId)==null?void 0:n[String(e)])||[]}function Ne(o,t,e){const n=ee(o,t);if(n.length===0)return!0;const i=D(e);return i!==null&&n.includes(i)}const C="random",L="bravery";function g(o){return o===C}function I(o){return o===L}function R(o){return g(o)?C:I(o)?L:p(o)}function k(o){const t=R(o);return t===null?null:String(t)}function mt(o,t=null){const e=[],n=new Set,i=Be(t);if(!Array.isArray(o))return e;for(const s of o){const a=R(s);if(a===null)continue;const r=String(a);n.has(r)||typeof a=="number"&&i&&!i.has(a)||(e.push(a),n.add(r))}return e}function F(o){return o?Array.from(o,p).filter(t=>t!==null):[]}function Be(o){return o?new Set(Array.from(o,p).filter(t=>t!==null)):null}const Et=new Set;function ne(o,t){return Object.prototype.hasOwnProperty.call(o,t)}function O(o,t){return ne(o,t)}function De(o){return Array.isArray(o.priorityOptions)?o.priorityOptions:o.champions}function xe(o,t){return ne(o,"randomPoolPositions")?o.randomPoolPositions:t.randomPositions}function gt(){if(!DataStore)throw new Error("DataStore is not available");return DataStore}function Fe(o){return o!==null&&typeof o=="object"&&!Array.isArray(o)}function ft(o){if(o!==void 0)return JSON.parse(JSON.stringify(o))}function oe(o){const t=Ie[o];if(!t)throw new Error(`Unknown auto-champion-select config key: ${o}`);return ft(t)}function ie(o,t,e={}){const n=oe(o),i=Fe(t)?ft(t):{},s={...n,...i},a={};if(O(n,"enabled")&&(a.enabled=s.enabled===!0),O(n,"hideAutoAcceptPrompt")&&(a.hideAutoAcceptPrompt=s.hideAutoAcceptPrompt===!0),O(n,"minMs")&&O(n,"maxMs")){const{minMs:r,maxMs:c}=$(s.minMs,s.maxMs,n.minMs,n.maxMs);a.minMs=r,a.maxMs=c}return O(n,"force")&&(a.force=s.force===!0),O(n,"champions")&&(a.priorityOptions=mt(De(s),e.allowedChampionIds),a.champions=F(a.priorityOptions)),O(n,"randomAssignedPositions")&&(a.randomAssignedPositions=T(s.randomAssignedPositions)),O(n,"randomPoolPositions")&&(a.randomPoolPositions=T(xe(i,s))),O(n,"positionsByChampionId")&&(a.positionsByChampionId=q(s.positionsByChampionId,e.selectedChampionIds||a.champions)),a}function se(o,t,e={}){const n=t===void 0?oe(o):t;return ie(o,n,e)}function P(o,t={}){const n=gt().get(o);return se(o,n,t)}function $e(o,t,e={}){const n=gt(),i=ie(o,t,e);return n.set(o,i),i}function He(o,t){return JSON.stringify(o)===JSON.stringify(t)}function ze(o,t,e){Et.has(o)||(Et.add(o),console.warn(`auto-champion-select: Repaired ${o} in DataStore. The stored value used a different schema; plugins like reynbow/auto-champ-lock write this shape. Saved normalized config.`,{storedConfig:t,normalizedConfig:e}))}function ae(o,t={}){const e=gt(),n=e.get(o),i=se(o,n,t);return(n===void 0||!He(n,i))&&(n!==void 0&&ze(o,n,i),e.set(o,i)),i}function x(o,t,e={}){const n=P(o,e),i=ft(n),s=t(i)||i;return $e(o,s,e)}const m=Object.freeze({readyCheckAccept:"/lol-matchmaking/v1/ready-check/accept",regionLocale:"/riotclient/region-locale",gameflowPhase:"/lol-gameflow/v1/gameflow-phase",wallet:"/lol-inventory/v1/wallet",ownedChampions:"/lol-champions/v1/owned-champions-minimal",championSummary:"/lol-game-data/assets/v1/champion-summary.json",recommendedChampionPositions:"/lol-perks/v1/recommended-champion-positions",champSelectSession:"/lol-champ-select/v1/session",pickableChampionIds:"/lol-champ-select/v1/pickable-champion-ids",bannableChampionIds:"/lol-champ-select/v1/bannable-champion-ids",championIcon(o){return`/lol-game-data/assets/v1/champion-icons/${o}.png`},champSelectAction(o){return`/lol-champ-select/v1/session/actions/${o}`}}),Ve=1e3;function yt(o){let t=null;return function(){return t||(t=Promise.resolve().then(o).finally(()=>{t=null})),t}}function re(o,t={}){const e=[],n=new Set;if(!Array.isArray(o))return e;for(const i of o){if(!i||typeof i!="object")continue;const s=p(i.id),a=typeof i.name=="string"?i.name:"";s===null||!a||n.has(a)||(e.push({...i,id:s,name:a,squarePortraitPath:i.squarePortraitPath||m.championIcon(s),recommendedPositions:t[String(s)]||[]}),n.add(a))}return e.sort((i,s)=>i.name.localeCompare(s.name)),e}function Ge(o){const t={};if(!o||typeof o!="object"||Array.isArray(o))return t;for(const[e,n]of Object.entries(o))!n||typeof n!="object"||Array.isArray(n)||(t[e]=n.recommendedPositions);return q(t)}async function Ue(){try{const o=await b("GET",m.recommendedChampionPositions);return o.ok?Ge(await o.json()):(console.warn("auto-champion-select(recommended-champion-positions): Request failed",o),{})}catch(o){return console.warn("auto-champion-select(recommended-champion-positions): Failed to load",o),{}}}const j=yt(Ue);async function Ye(){let o=await b("GET",m.ownedChampions);for(;!o.ok;)console.debug("auto-champion-select(owned-champions-minimal): Retrying..."),o=await b("GET",m.ownedChampions),await v(Ve);return re(await o.json(),await j())}async function qe(){const[o,t]=await Promise.all([b("GET",m.championSummary),j()]);return re(await o.json(),t)}const je=yt(Ye),le=yt(qe),Ot=300,Ke=-1,ce=-3,A=Object.freeze({SATISFIED:"satisfied",TRY_NEXT_CHAMPION:"try-next-champion",STOP_CYCLE:"stop-cycle"}),M=Object.freeze({CONTINUE:"continue-cycle",STOP:"stop-cycle"}),w=Object.freeze({READY:"ready",SKIP_ACTION:"skip-action",STOP_CYCLE:"stop-cycle"}),y=Object.freeze({SATISFIED:"satisfied",TRY_NEXT_PRIORITY_OPTION:"try-next-priority-option",STOP_CYCLE:"stop-cycle"});function lt(o){return Array.isArray(o)?o.flat():[]}function We(o){return lt(o).filter(t=>t.type==="ban"&&t.completed===!0).map(t=>t.championId)}function wt(o){return Array.isArray(o)?o:[]}function V(o){const t=new Set;for(const e of o){const n=p(e);n!==null&&t.add(n)}return t}function Tt(o){return o.type==="pick"?0:1}function It(){return{pickConfig:P("controladoPick"),banConfig:P("controladoBan"),actionDelayConfig:P("controladoActionDelay")}}function Xe(o){const t=[...o];for(let e=t.length-1;e>0;e--){const n=Math.floor(Math.random()*(e+1));[t[e],t[n]]=[t[n],t[e]]}return t}function Je(o){return Array.isArray(o)&&o.length===1&&o[0]===Ke}function X(o){return Number(o)===ce}class Qe{constructor(){this.session=null,this.actions=null,this.localPlayerCellId=null,this.alliedIntentChampionIds=new Set,this.teammateIntentChampionIds=new Set,this.localPlayerIntentChampionId=null,this.localPlayerIntentIsBravery=!1,this.pickedChampionIds=new Set,this.bannedChampionIds=new Set,this.localPlayerAssignedPosition=null,this.rejectedBraveryActionIds=new Set,this.watchTask=null,this.watchVersion=0,this.mounted=!1}mount(){this.mounted||(this.mounted=!0,this.rejectedBraveryActionIds.clear(),this.watchVersion+=1,this.watchTask||(this.watchTask=this.watch()))}unmount(){this.mounted&&(this.mounted=!1,this.rejectedBraveryActionIds.clear(),this.watchVersion+=1)}async watch(){try{for(;this.mounted;){const t=this.watchVersion;let e=!1;try{await this.refreshSessionState(),e=!0}catch(n){console.debug("auto-champion-select: Failed to update champion select",n)}if(!e||!this.mounted||t!==this.watchVersion){this.mounted&&t===this.watchVersion&&await v(Ot);continue}try{await this.runAutoSelectCycle()}catch(n){console.debug("auto-champion-select: Failed to run champion select cycle",n)}this.mounted&&t===this.watchVersion&&await v(Ot)}}finally{this.watchTask=null}}async refreshSessionState(){var a,r;const t=await b("GET",m.champSelectSession);if(!t.ok)throw new Error(`Session request failed with status ${t.status}`);this.session=await t.json(),this.actions=this.session.actions,this.localPlayerCellId=this.session.localPlayerCellId;const e=wt(this.session.myTeam),n=wt(this.session.theirTeam),i=e.find(c=>c.cellId===this.localPlayerCellId),s=e.filter(c=>c.cellId!==this.localPlayerCellId);this.localPlayerAssignedPosition=D(i==null?void 0:i.assignedPosition),this.localPlayerIntentChampionId=p(i==null?void 0:i.championPickIntent),this.localPlayerIntentIsBravery=X(i==null?void 0:i.championPickIntent),this.pickedChampionIds=V([...e,...n].map(c=>c.championId)),this.bannedChampionIds=V([...((a=this.session.bans)==null?void 0:a.myTeamBans)||[],...((r=this.session.bans)==null?void 0:r.theirTeamBans)||[],...We(this.actions)]),this.alliedIntentChampionIds=V(e.map(c=>c.championPickIntent)),this.teammateIntentChampionIds=V(s.map(c=>c.championPickIntent))}async runAutoSelectCycle(){const t=It();if(!t.pickConfig.enabled&&!t.banConfig.enabled)return;const e=this.getLocalPlayerActions();if(e.length===0){console.debug("auto-champion-select: No local player sub actions found, skipping..."),this.unmount();return}for(const n of e)if(await this.runAutoSelectForAction(n,t)===M.STOP)return}async runAutoSelectForAction(t,e){const n=await this.prepareActionForAutoSelect(t,e);switch(n.status){case w.READY:return this.tryAutoSelectPlan(n.plan);case w.SKIP_ACTION:return M.CONTINUE;case w.STOP_CYCLE:return M.STOP;default:throw new Error(`Unexpected auto-select plan status: ${n.status}`)}}async prepareActionForAutoSelect(t,e){if(!this.isActionAvailable(t))return{status:w.SKIP_ACTION};const n=this.getConfigForActionType(t.type,e);if(!(n!=null&&n.enabled))return{status:w.SKIP_ACTION};const i=this.createAutoSelectPlan(t,n);if(!i)return{status:w.SKIP_ACTION};const s=this.createPlanLimitedToAlreadySatisfiedPriorityOption(i);if(s)return{status:w.READY,plan:s};const a=await this.delayAndRefreshAutoSelectPlan(t,n,e.actionDelayConfig);return a?{status:w.READY,plan:this.createPlanLimitedToAlreadySatisfiedPriorityOption(a)||a}:{status:w.STOP_CYCLE}}async tryAutoSelectPlan(t){for(const e of t.priorityOptions){const n=await this.tryPriorityOptionForAction(t.action,e,t.config);if(n===y.SATISFIED)return M.CONTINUE;if(n===y.STOP_CYCLE)return M.STOP}return M.CONTINUE}async tryPriorityOptionForAction(t,e,n){if(this.isPriorityOptionAlreadySatisfied(t,e))return y.SATISFIED;if(I(e))return this.tryBraveryForAction(t);const i=await this.resolveChampionIdsForPriorityOption(t,e,n),s=g(e)&&!this.isLockingExistingPickIntent(t,i);for(const a of i){const r={tryNextRandomCandidateOnFailure:s},c=await this.attemptChampionForAction(t,a,n,r);if(c===A.SATISFIED)return y.SATISFIED;if(c===A.STOP_CYCLE)return y.STOP_CYCLE}return y.TRY_NEXT_PRIORITY_OPTION}async tryBraveryForAction(t){if(t.type!=="pick")return y.TRY_NEXT_PRIORITY_OPTION;if(this.isBraveryPickIntentSet(t))return y.SATISFIED;console.debug("auto-champion-select: Trying to pick Bravery...");const e=await this.selectChampion(t.id,ce);console.debug(e.ok?"auto-champion-select: Bravery request accepted, refreshing champ select state...":"auto-champion-select: Failed to pick Bravery, refreshing champ select state...");const n=await this.refreshPendingAction(t);return!n||!this.isActionAvailable(n)?e.ok?y.SATISFIED:y.STOP_CYCLE:this.isBraveryPickIntentSet(n)?y.SATISFIED:(this.rejectedBraveryActionIds.add(t.id),console.debug("auto-champion-select: Bravery was not applied after refresh, trying next pick..."),y.TRY_NEXT_PRIORITY_OPTION)}getLocalPlayerActions(){return lt(this.actions).filter(t=>this.isPendingLocalPlayerAction(t)).sort((t,e)=>Tt(t)-Tt(e))}isPendingLocalPlayerAction(t){return t.actorCellId===this.localPlayerCellId&&t.completed===!1}isActionAvailable(t){return t.type==="pick"||t.isInProgress===!0}getConfigForActionType(t,e){return t==="pick"?e.pickConfig:t==="ban"?e.banConfig:null}createAutoSelectPlan(t,e){const n=this.getAvailablePriorityOptionsForAction(t,e);return n.length===0?null:{action:t,config:e,priorityOptions:n}}getAvailablePriorityOptionsForAction(t,e){return mt(e.priorityOptions||e.champions).filter(n=>!this.isPriorityOptionUnavailableForAction(t,n,e))}isPriorityOptionUnavailableForAction(t,e,n){return g(e)?this.isRandomPriorityOptionUnavailableForAction(t,n):I(e)?t.type!=="pick"||this.rejectedBraveryActionIds.has(t.id):this.isChampionUnavailableForAction(t,e,n)}isRandomPriorityOptionUnavailableForAction(t,e){if(t.type!=="pick")return!1;const n=T(e.randomAssignedPositions);return n.length===0?!1:this.localPlayerAssignedPosition?n.includes(this.localPlayerAssignedPosition)?!1:(console.debug(`auto-champion-select: Skipping random pick because assigned position ${this.localPlayerAssignedPosition} is not in ${n.join(", ")}.`),!0):(console.debug(`auto-champion-select: Skipping random pick because no assigned position is available for ${n.join(", ")} restriction.`),!0)}createPlanLimitedToAlreadySatisfiedPriorityOption(t){const e=t.priorityOptions.find(n=>this.isPriorityOptionAlreadySatisfied(t.action,n));return e===void 0?null:{...t,priorityOptions:[e]}}isPriorityOptionAlreadySatisfied(t,e){return g(e)?this.hasAnyPickIntentSet(t):I(e)?this.isBraveryPickIntentSet(t):this.isPickIntentSetToChampion(t,e)}hasAnyPickIntentSet(t){return t.type==="pick"&&t.isInProgress!==!0&&(this.localPlayerIntentChampionId!==null||this.localPlayerIntentIsBravery||p(t.championId)!==null||X(t.championId))}isBraveryPickIntentSet(t){return t.type==="pick"&&t.isInProgress!==!0&&(this.localPlayerIntentIsBravery||X(t.championId))}isLockingExistingPickIntent(t,e){return t.type==="pick"&&t.isInProgress===!0&&e.length===1&&e[0]===this.getPickIntentChampionId(t)}getPickIntentChampionId(t){return t.type!=="pick"?null:p(t.championId)??this.localPlayerIntentChampionId}async delayAndRefreshAutoSelectPlan(t,e,n){const i=Le(n);if(i<=0)return console.debug(`auto-champion-select: Action delay is instant for ${t.type}.`),this.createAutoSelectPlan(t,e);console.debug(`auto-champion-select: Waiting ${i}ms before ${t.type}...`);const s=this.watchVersion;if(await v(i),!this.mounted||s!==this.watchVersion)return null;let a=null;try{await this.refreshSessionState(),a=this.findPendingAction(t)}catch(c){return console.debug("auto-champion-select: Failed to refresh champion select after action delay",c),null}if(!a||!this.isActionAvailable(a))return null;const r=this.getConfigForActionType(t.type,It());return r!=null&&r.enabled?this.createAutoSelectPlan(a,r):null}async resolveChampionIdsForPriorityOption(t,e,n){return I(e)?[]:g(e)?this.resolveRandomChampionIdsForAction(t,n):[e]}async resolveRandomChampionIdsForAction(t,e){if(t.type==="pick"&&t.isInProgress===!0){const a=this.getPickIntentChampionId(t);if(a!==null&&!this.isChampionUnavailableForAction(t,a,e))return[a]}const n=await this.fetchRandomCandidateChampionIds(t);if(n.length===0)return[];const i=n.filter(a=>!this.isChampionUnavailableForAction(t,a,e)),s=t.type==="pick"&&!this.hasConfiguredRandomPoolPositions(e)?await this.preferAssignedPositionRandomPickCandidates(i):await this.filterRandomChampionIdsByConfiguredPoolPositions(i,e);return Xe(s)}async fetchRandomCandidateChampionIds(t){const e=t.type==="pick"?m.pickableChampionIds:m.bannableChampionIds;try{const n=await b("GET",e);if(!n.ok)return console.debug(`auto-champion-select: Failed to load random ${t.type} candidates`,n),[];const i=await n.json();return t.type==="ban"&&Je(i)?(console.debug("auto-champion-select: Random ban endpoint returned unrestricted sentinel, falling back to all champions..."),await this.fetchAllChampionIdsForRandomBan()):_e(i)}catch(n){return console.debug(`auto-champion-select: Failed to load random ${t.type} candidates`,n),[]}}async fetchAllChampionIdsForRandomBan(){return(await le()).map(e=>e.id)}hasConfiguredRandomPoolPositions(t){return T(t.randomPoolPositions).length>0}async filterRandomChampionIdsByConfiguredPoolPositions(t,e){const n=T(e.randomPoolPositions);if(n.length===0)return t;const i=new Set(n),s=await j(),a=t.filter(r=>{var c;return(c=s[String(r)])==null?void 0:c.some(h=>i.has(h))});return a.length===0&&console.debug(`auto-champion-select: No random candidates matched ${n.join(", ")} restriction.`),a}async preferAssignedPositionRandomPickCandidates(t){if(!this.localPlayerAssignedPosition)return t;const e=await j(),n=t.filter(i=>{var s;return(s=e[String(i)])==null?void 0:s.includes(this.localPlayerAssignedPosition)});return n.length>0?n:t}async attemptChampionForAction(t,e,n,i={}){const s=p(e);if(s===null||this.isChampionUnavailableForAction(t,s,n))return A.TRY_NEXT_CHAMPION;if(this.isPickIntentSetToChampion(t,s)||(console.debug(`auto-champion-select: Trying to ${t.type} ${s}...`),(await this.selectChampion(t.id,s)).ok))return A.SATISFIED;console.debug(`auto-champion-select: Failed to ${t.type} ${s}, refreshing champ select state...`);const r=await this.refreshPendingAction(t);return!r||!this.isActionAvailable(r)?A.STOP_CYCLE:i.tryNextRandomCandidateOnFailure===!0?this.hasAnyPickIntentSet(r)?A.SATISFIED:(console.debug(`auto-champion-select: Failed random ${t.type} candidate ${s}, trying next ${t.type}...`),A.TRY_NEXT_CHAMPION):this.isChampionUnavailableForAction(r,s,n)?(console.debug(`auto-champion-select: ${s} is unavailable after refresh, trying next ${t.type}...`),A.TRY_NEXT_CHAMPION):A.STOP_CYCLE}isPickIntentSetToChampion(t,e){return t.type==="pick"&&t.isInProgress!==!0&&(this.localPlayerIntentChampionId===e||p(t.championId)===e)}async refreshPendingAction(t){try{await this.refreshSessionState()}catch(e){return console.debug("auto-champion-select: Failed to refresh champion select action",e),null}return this.findPendingAction(t)}findPendingAction(t){return lt(this.actions).find(e=>e.id===t.id&&e.actorCellId===t.actorCellId&&e.type===t.type&&e.completed===!1)||null}isChampionUnavailableForAction(t,e,n){if(t.type==="pick"&&!Ne(n,e,this.localPlayerAssignedPosition)){const i=ee(n,e);return this.localPlayerAssignedPosition?console.debug(`auto-champion-select: Picking ${e} but assigned position ${this.localPlayerAssignedPosition} is not in ${i.join(", ")}, skipping...`):console.debug(`auto-champion-select: Picking ${e} but no assigned position is available for ${i.join(", ")} restriction, skipping...`),!0}if(this.bannedChampionIds.has(e))return console.debug(`auto-champion-select: Banning ${e} but it's already banned, skipping...`),!0;if(t.type==="ban"&&this.alliedIntentChampionIds.has(e))if(n.force===!0)console.debug(`auto-champion-select: Banning ${e} but it has an allied pick intent, forcing...`);else return console.debug(`auto-champion-select: Banning ${e} but it has an allied pick intent, skipping...`),!0;if(t.type==="pick"&&this.teammateIntentChampionIds.has(e))if(n.force===!0)console.debug(`auto-champion-select: Picking ${e} but it has a teammate pick intent, forcing...`);else return console.debug(`auto-champion-select: Picking ${e} but it has a teammate pick intent, skipping...`),!0;return t.type==="pick"&&this.pickedChampionIds.has(e)?(console.debug(`auto-champion-select: Picking ${e} but it's already picked, skipping...`),!0):!1}selectChampion(t,e){const n=m.champSelectAction(t);return b("PATCH",n,{body:{championId:e,completed:!0}})}}const Ze={socialRosterTitle:"AUTO CHAMPION SELECT",champSelectMenuTitle:"Auto Champion Select"},tn={autoAccept:"Accept",pick:"Pick",ban:"Ban"},en={on:"ON",off:"OFF"},nn={pick:"Pick",ban:"Ban"},on={TOP:"Top",JUNGLE:"Jungle",MIDDLE:"Mid",BOTTOM:"ADC",UTILITY:"Support"},sn={two:"{first} or {second}",many:"{items}, or {last}"},an={pickPlaceholder:"Add pick",banPlaceholder:"Add ban",search:"Search",emptyTitle:"No champions",pickEmptyHint:"Use the menu to add a pick",banEmptyHint:"Use the menu to add a ban",remove:"Remove {name}",positionFilterLabel:"Filter champions by position",random:{label:"Random",assignedTitlePart:"runs only when assigned role matches {positions}",poolTitlePart:"limits Random pool to {positions}"},bravery:{label:"Bravery",description:"For Arena mode"},positionBadge:{randomAssignedAny:"The plugin can use Random in any role. Click to run it only in selected draft roles.",randomAssignedSome:"The plugin will use Random only when your assigned role matches {positions}. Draft modes only. Click to edit.",randomPoolAny:"The plugin can choose any available champion at random. Click to filter the pool first.",randomPoolSome:"The plugin filters Random to champions for {positions}, then picks one. Click to edit.",championSome:"The plugin will pick this champion only when your assigned role matches {positions}. Draft modes only. Click to edit.",championAny:"The plugin can pick this champion in any role. Click to limit it to selected draft roles."}},rn={triggerLabel:"Auto champion select settings",empty:"No settings available",actionDelay:"Action delay",forcePick:"Ignore ally pick intent",forceBan:"Ignore ally pick intent when banning",hideAutoAcceptPrompt:"Hide auto-accept prompt",handleLabel:"{label} {handle}",handles:{min:"min",max:"max"},actionDelayValue:{instant:"Instant",exact:"Delays actions for {delay}",upTo:"Delays actions up to {delay}",range:"Delays actions {min}-{max}"}},ln={readyCheckAccepted:"Match accepted!",readyCheckAcceptFailed:"Failed to accept match. Check console."},cn={group:"Balaclava: Auto Champion Select",autoSwitchName:"Auto {name} [{state}]",turnOn:"Turn ON",turnOff:"Turn OFF",autoSwitchOn:"Auto {name} is ON!",autoSwitchOff:"Auto {name} is OFF!",autoSwitchError:"Failed to toggle Auto {name}. Check console.",forcePickName:"Ignore Team Intent Pick",forceBanName:"Ignore Team Intent Ban",forceSwitchName:"{name} [{state}]",forcePickLegend:"Pick even if a teammate intends that champion",forceBanLegend:"Ban even if a teammate intends that champion",forceSwitchOn:"{name} is ON!",forceSwitchOff:"{name} is OFF!",forceSwitchError:"Failed to toggle {name}. Check console.",refreshChampionsName:"Refresh Champions",refreshChampionsLegend:"Normally champion selectors refresh automatically...",refreshChampionsSuccess:"Refreshed Champions!",refreshChampionsError:"Failed to refresh Champions. Check console."},dn={plugin:Ze,toggles:tn,states:en,actions:nn,positions:on,list:sn,selectors:an,settings:rn,toasts:ln,commandBar:cn},hn={socialRosterTitle:"AUTO CHAMPION SELECT",champSelectMenuTitle:"Auto Champion Select"},un={autoAccept:"Aceptar",pick:"Pick",ban:"Ban"},pn={on:"ON",off:"OFF"},mn={pick:"Pick",ban:"Ban"},gn={TOP:"Top",JUNGLE:"Jungla",MIDDLE:"Mid",BOTTOM:"ADC",UTILITY:"Soporte"},fn={two:"{first} o {second}",many:"{items} o {last}"},yn={pickPlaceholder:"Agregar pick",banPlaceholder:"Agregar ban",search:"Buscar",emptyTitle:"Sin campeones",pickEmptyHint:"Usa el menú para agregar",banEmptyHint:"Usa el menú para agregar",remove:"Quitar {name}",positionFilterLabel:"Filtrar campeones por posición",random:{label:"Aleatorio",assignedTitlePart:"solo si la posición asignada es {positions}",poolTitlePart:"filtra el pool a {positions}"},bravery:{label:"Valentía",description:"Para Arena"},positionBadge:{randomAssignedAny:"Aleatorio sirve en cualquier posición. Haz clic para limitar posiciones de draft.",randomAssignedSome:"Aleatorio solo si tu posición es {positions}. Solo draft; haz clic para editar.",randomPoolAny:"Aleatorio puede elegir cualquier campeón disponible. Haz clic para filtrar.",randomPoolSome:"Aleatorio elige campeones de {positions}. Haz clic para editar.",championSome:"Este campeón solo se elige si tu posición es {positions}. Solo draft; haz clic para editar.",championAny:"Este campeón sirve en cualquier posición. Haz clic para limitar posiciones."}},Pn={triggerLabel:"Ajustes de Auto Champion Select",empty:"Sin ajustes",actionDelay:"Retraso de acción",forcePick:"Ignorar intención aliada al pickear",forceBan:"Ignorar intención aliada al banear",hideAutoAcceptPrompt:"Ocultar confirmación de partida",handleLabel:"{label} {handle}",handles:{min:"mín",max:"máx"},actionDelayValue:{instant:"Sin retraso",exact:"Retraso de {delay}",upTo:"Hasta {delay}",range:"Retraso de {min}-{max}"}},Sn={readyCheckAccepted:"¡Partida aceptada!",readyCheckAcceptFailed:"No se pudo aceptar la partida. Revisa la consola."},An={group:"Balaclava: Auto Champion Select",autoSwitchName:"Auto {name} [{state}]",turnOn:"Activar",turnOff:"Desactivar",autoSwitchOn:"Auto {name} está ON!",autoSwitchOff:"Auto {name} está OFF!",autoSwitchError:"No se pudo cambiar Auto {name}. Revisa la consola.",forcePickName:"Ignorar intención aliada al pickear",forceBanName:"Ignorar intención aliada al banear",forceSwitchName:"{name} [{state}]",forcePickLegend:"Pickea aunque un aliado quiera el mismo campeón",forceBanLegend:"Banea aunque un aliado quiera ese campeón",forceSwitchOn:"{name} está ON!",forceSwitchOff:"{name} está OFF!",forceSwitchError:"No se pudo cambiar {name}. Revisa la consola.",refreshChampionsName:"Actualizar campeones",refreshChampionsLegend:"Normalmente los selectores se actualizan solos...",refreshChampionsSuccess:"¡Campeones actualizados!",refreshChampionsError:"No se actualizaron campeones. Revisa la consola."},Cn={plugin:hn,toggles:un,states:pn,actions:mn,positions:gn,list:fn,selectors:yn,settings:Pn,toasts:Sn,commandBar:An},bn={socialRosterTitle:"AUTO CHAMPION SELECT",champSelectMenuTitle:"Auto Champion Select"},En={autoAccept:"수락",pick:"선택",ban:"밴"},On={on:"ON",off:"OFF"},wn={pick:"선택",ban:"밴"},Tn={TOP:"탑",JUNGLE:"정글",MIDDLE:"미드",BOTTOM:"원딜",UTILITY:"서폿"},In={two:"{first} 또는 {second}",many:"{items} 또는 {last}"},kn={pickPlaceholder:"픽 추가",banPlaceholder:"밴 추가",search:"검색",emptyTitle:"챔피언 없음",pickEmptyHint:"메뉴에서 추가",banEmptyHint:"메뉴에서 추가",remove:"{name} 제거",positionFilterLabel:"포지션별 챔피언 필터",random:{label:"랜덤",assignedTitlePart:"배정 포지션이 {positions}일 때만 실행",poolTitlePart:"랜덤 풀을 {positions}로 제한"},bravery:{label:"용기",description:"아레나용"},positionBadge:{randomAssignedAny:"랜덤은 모든 포지션에서 사용 가능. 클릭해 드래프트 포지션 제한.",randomAssignedSome:"랜덤은 배정 포지션이 {positions}일 때만 사용. 드래프트 전용; 클릭해 편집.",randomPoolAny:"랜덤은 가능한 모든 챔피언 중 선택 가능. 클릭해 풀 필터.",randomPoolSome:"랜덤은 {positions} 챔피언 중 선택. 클릭해 편집.",championSome:"이 챔피언은 배정 포지션이 {positions}일 때만 선택. 드래프트 전용; 클릭해 편집.",championAny:"이 챔피언은 모든 포지션에서 선택 가능. 클릭해 포지션 제한."}},Ln={triggerLabel:"Auto Champion Select 설정",empty:"설정 없음",actionDelay:"동작 지연",forcePick:"아군 희망 챔피언 무시하고 선택",forceBan:"아군 희망 챔피언 무시하고 밴",hideAutoAcceptPrompt:"자동 수락 알림 숨기기",handleLabel:"{label} {handle}",handles:{min:"최소",max:"최대"},actionDelayValue:{instant:"즉시",exact:"{delay} 지연",upTo:"{delay}까지 지연",range:"{min}-{max} 지연"}},_n={readyCheckAccepted:"게임 수락됨!",readyCheckAcceptFailed:"게임 수락 실패. 콘솔 확인."},vn={group:"Balaclava: Auto Champion Select",autoSwitchName:"자동 {name} [{state}]",turnOn:"켜기",turnOff:"끄기",autoSwitchOn:"자동 {name} 켜짐!",autoSwitchOff:"자동 {name} 꺼짐!",autoSwitchError:"자동 {name} 전환 실패. 콘솔 확인.",forcePickName:"희망 챔피언 무시 선택",forceBanName:"희망 챔피언 무시 밴",forceSwitchName:"{name} [{state}]",forcePickLegend:"팀원이 같은 챔피언을 희망해도 선택",forceBanLegend:"팀원이 같은 챔피언을 희망해도 밴",forceSwitchOn:"{name} 켜짐!",forceSwitchOff:"{name} 꺼짐!",forceSwitchError:"{name} 전환 실패. 콘솔 확인.",refreshChampionsName:"챔피언 새로고침",refreshChampionsLegend:"챔피언 목록은 보통 자동으로 새로고침됩니다...",refreshChampionsSuccess:"챔피언 새로고침 완료!",refreshChampionsError:"챔피언 새로고침 실패. 콘솔 확인."},Rn={plugin:bn,toggles:En,states:On,actions:wn,positions:Tn,list:In,selectors:kn,settings:Ln,toasts:_n,commandBar:vn},Mn={socialRosterTitle:"AUTO CHAMPION SELECT",champSelectMenuTitle:"Auto Champion Select"},Nn={autoAccept:"Aceitar",pick:"Pick",ban:"Ban"},Bn={on:"ON",off:"OFF"},Dn={pick:"Pick",ban:"Ban"},xn={TOP:"Top",JUNGLE:"Jungle",MIDDLE:"Mid",BOTTOM:"ADC",UTILITY:"Suporte"},Fn={two:"{first} ou {second}",many:"{items} ou {last}"},$n={pickPlaceholder:"Adicionar pick",banPlaceholder:"Adicionar ban",search:"Buscar",emptyTitle:"Nenhum campeão",pickEmptyHint:"Use o menu para adicionar um pick",banEmptyHint:"Use o menu para adicionar um ban",remove:"Remover {name}",positionFilterLabel:"Filtrar campeões por posição",random:{label:"Aleatório",assignedTitlePart:"só roda quando sua rota for {positions}",poolTitlePart:"limita o pool a {positions}"},bravery:{label:"Bravura",description:"Para o modo Arena"},positionBadge:{randomAssignedAny:"Aleatório pode rodar em qualquer rota. Clique para limitar às rotas do draft.",randomAssignedSome:"Aleatório só roda se sua rota for {positions}. Draft apenas. Clique para editar.",randomPoolAny:"Aleatório pode escolher qualquer campeão disponível. Clique para filtrar o pool.",randomPoolSome:"Aleatório escolhe campeões de {positions}. Clique para editar.",championSome:"Este campeão só será escolhido se sua rota for {positions}. Draft apenas. Clique para editar.",championAny:"Este campeão pode ser escolhido em qualquer rota. Clique para limitar às rotas do draft."}},Hn={triggerLabel:"Configurações do Auto Champion Select",empty:"Nenhuma configuração disponível",actionDelay:"Delay de ação",forcePick:"Ignorar intenção aliada no pick",forceBan:"Ignorar intenção aliada no ban",hideAutoAcceptPrompt:"Ocultar confirmação da fila",handleLabel:"{label} {handle}",handles:{min:"mínimo",max:"máximo"},actionDelayValue:{instant:"Sem delay",exact:"Delay de {delay}",upTo:"Delay de até {delay}",range:"Delay de {min}-{max}"}},zn={readyCheckAccepted:"Fila aceita!",readyCheckAcceptFailed:"Falha ao aceitar a fila. Verifique o console."},Vn={group:"Balaclava: Auto Champion Select",autoSwitchName:"Auto {name} [{state}]",turnOn:"Ativar",turnOff:"Desativar",autoSwitchOn:"Auto {name} está ON!",autoSwitchOff:"Auto {name} está OFF!",autoSwitchError:"Falha ao alternar Auto {name}. Verifique o console.",forcePickName:"Ignorar intenção aliada no pick",forceBanName:"Ignorar intenção aliada no ban",forceSwitchName:"{name} [{state}]",forcePickLegend:"Escolhe mesmo se um aliado indicar o mesmo campeão",forceBanLegend:"Bane mesmo se um aliado indicar o campeão",forceSwitchOn:"{name} está ON!",forceSwitchOff:"{name} está OFF!",forceSwitchError:"Falha ao alternar {name}. Verifique o console.",refreshChampionsName:"Atualizar campeões",refreshChampionsLegend:"Normalmente as listas de campeões atualizam automaticamente...",refreshChampionsSuccess:"Campeões atualizados!",refreshChampionsError:"Falha ao atualizar campeões. Verifique o console."},Gn={plugin:Mn,toggles:Nn,states:Bn,actions:Dn,positions:xn,list:Fn,selectors:$n,settings:Hn,toasts:zn,commandBar:Vn},Un={socialRosterTitle:"AUTO CHAMPION SELECT",champSelectMenuTitle:"Auto Champion Select"},Yn={autoAccept:"Kabul Et",pick:"Seç",ban:"Yasakla"},qn={on:"ON",off:"OFF"},jn={pick:"Seç",ban:"Yasakla"},Kn={TOP:"Üst",JUNGLE:"Orman",MIDDLE:"Orta",BOTTOM:"Alt",UTILITY:"Destek"},Wn={two:"{first} veya {second}",many:"{items} veya {last}"},Xn={pickPlaceholder:"Seçim ekle",banPlaceholder:"Yasaklama ekle",search:"Ara",emptyTitle:"Şampiyon yok",pickEmptyHint:"Menüden seçenek ekle",banEmptyHint:"Menüden seçenek ekle",remove:"{name} kaldır",positionFilterLabel:"Şampiyonları konuma göre filtrele",random:{label:"Rastgele",assignedTitlePart:"atanan konum {positions} ise çalışır",poolTitlePart:"rastgele havuzu {positions} ile sınırlar"},bravery:{label:"Cesaret",description:"Arena modu için"},positionBadge:{randomAssignedAny:"Rastgele her konumda kullanılabilir. Draft konumlarıyla sınırla.",randomAssignedSome:"Rastgele yalnız atanan konum {positions} ise kullanılır. Sadece draft; düzenle.",randomPoolAny:"Rastgele tüm uygun şampiyonlardan seçebilir. Havuzu filtrele.",randomPoolSome:"Rastgele, {positions} şampiyonlarından seçer. Düzenle.",championSome:"Bu şampiyon yalnız atanan konum {positions} ise seçilir. Sadece draft; düzenle.",championAny:"Bu şampiyon her konumda seçilebilir. Konumları sınırla."}},Jn={triggerLabel:"Auto Champion Select ayarları",empty:"Ayar yok",actionDelay:"İşlem gecikmesi",forcePick:"Seçim niyetini yok sayarak seç",forceBan:"Seçim niyetini yok sayarak yasakla",hideAutoAcceptPrompt:"Karşılaşma kabul penceresini gizle",handleLabel:"{label} {handle}",handles:{min:"min",max:"maks"},actionDelayValue:{instant:"Anında",exact:"{delay} gecikme",upTo:"{delay} kadar gecikme",range:"{min}-{max} gecikme"}},Qn={readyCheckAccepted:"Karşılaşma kabul edildi!",readyCheckAcceptFailed:"Karşılaşma kabul edilemedi. Konsola bakın."},Zn={group:"Balaclava: Auto Champion Select",autoSwitchName:"Oto {name} [{state}]",turnOn:"Aç",turnOff:"Kapat",autoSwitchOn:"Oto {name} açık!",autoSwitchOff:"Oto {name} kapalı!",autoSwitchError:"Oto {name} değiştirilemedi. Konsola bakın.",forcePickName:"Seçim niyetini yok sayarak seç",forceBanName:"Seçim niyetini yok sayarak yasakla",forceSwitchName:"{name} [{state}]",forcePickLegend:"Takım arkadaşı aynı şampiyonu istese de seçer",forceBanLegend:"Takım arkadaşı aynı şampiyonu istese de yasaklar",forceSwitchOn:"{name} açık!",forceSwitchOff:"{name} kapalı!",forceSwitchError:"{name} değiştirilemedi. Konsola bakın.",refreshChampionsName:"Şampiyonları yenile",refreshChampionsLegend:"Seçiciler normalde otomatik yenilenir...",refreshChampionsSuccess:"Şampiyonlar yenilendi!",refreshChampionsError:"Şampiyonlar yenilenemedi. Konsola bakın."},to={plugin:Un,toggles:Yn,states:qn,actions:jn,positions:Kn,list:Wn,selectors:Xn,settings:Jn,toasts:Qn,commandBar:Zn},eo={socialRosterTitle:"AUTO CHAMPION SELECT",champSelectMenuTitle:"Auto Champion Select"},no={autoAccept:"Chấp nhận",pick:"Chọn",ban:"Cấm"},oo={on:"ON",off:"OFF"},io={pick:"Chọn",ban:"Cấm"},so={TOP:"Đường trên",JUNGLE:"Rừng",MIDDLE:"Đường giữa",BOTTOM:"Đường dưới",UTILITY:"Hỗ trợ"},ao={two:"{first} hoặc {second}",many:"{items} hoặc {last}"},ro={pickPlaceholder:"Thêm tướng chọn",banPlaceholder:"Thêm tướng cấm",search:"Tìm",emptyTitle:"Không có tướng",pickEmptyHint:"Dùng menu để thêm",banEmptyHint:"Dùng menu để thêm",remove:"Xóa {name}",positionFilterLabel:"Lọc tướng theo vị trí",random:{label:"Ngẫu nhiên",assignedTitlePart:"chỉ chạy khi vị trí là {positions}",poolTitlePart:"lọc bể tướng theo {positions}"},bravery:{label:"Quả Cảm",description:"Cho chế độ Võ Đài"},positionBadge:{randomAssignedAny:"Ngẫu nhiên dùng được mọi vị trí. Bấm để giới hạn vị trí Cấm Chọn.",randomAssignedSome:"Ngẫu nhiên chỉ dùng khi vị trí là {positions}. Chỉ Cấm Chọn; bấm để sửa.",randomPoolAny:"Ngẫu nhiên có thể chọn mọi tướng hợp lệ. Bấm để lọc nhóm.",randomPoolSome:"Ngẫu nhiên chọn tướng thuộc {positions}. Bấm để sửa.",championSome:"Tướng này chỉ được chọn khi vị trí là {positions}. Chỉ Cấm Chọn; bấm để sửa.",championAny:"Tướng này dùng được mọi vị trí. Bấm để giới hạn."}},lo={triggerLabel:"Cài đặt Auto Champion Select",empty:"Không có cài đặt",actionDelay:"Độ trễ thao tác",forcePick:"Bỏ qua ý định chọn tướng",forceBan:"Bỏ qua ý định chọn khi cấm",hideAutoAcceptPrompt:"Ẩn lời nhắc chấp nhận trận",handleLabel:"{label} {handle}",handles:{min:"tối thiểu",max:"tối đa"},actionDelayValue:{instant:"Ngay",exact:"Trễ {delay}",upTo:"Tới {delay}",range:"Trễ {min}-{max}"}},co={readyCheckAccepted:"Đã chấp nhận trận!",readyCheckAcceptFailed:"Không thể chấp nhận trận. Xem console."},ho={group:"Balaclava: Auto Champion Select",autoSwitchName:"Tự động {name} [{state}]",turnOn:"Bật",turnOff:"Tắt",autoSwitchOn:"Tự động {name} đã bật!",autoSwitchOff:"Tự động {name} đã tắt!",autoSwitchError:"Không đổi được tự động {name}. Xem console.",forcePickName:"Bỏ qua ý định chọn tướng",forceBanName:"Bỏ qua ý định chọn khi cấm",forceSwitchName:"{name} [{state}]",forcePickLegend:"Vẫn chọn dù đồng đội cũng định chọn",forceBanLegend:"Vẫn cấm dù đồng đội định chọn",forceSwitchOn:"{name} đã bật!",forceSwitchOff:"{name} đã tắt!",forceSwitchError:"Không đổi được {name}. Xem console.",refreshChampionsName:"Làm mới tướng",refreshChampionsLegend:"Danh sách tướng thường tự làm mới...",refreshChampionsSuccess:"Đã làm mới tướng!",refreshChampionsError:"Không thể làm mới tướng. Xem console."},kt={plugin:eo,toggles:no,states:oo,actions:io,positions:so,list:ao,selectors:ro,settings:lo,toasts:co,commandBar:ho},uo={socialRosterTitle:"AUTO CHAMPION SELECT",champSelectMenuTitle:"Auto Champion Select"},po={autoAccept:"接受",pick:"选择",ban:"禁用"},mo={on:"ON",off:"OFF"},go={pick:"选择",ban:"禁用"},fo={TOP:"上路",JUNGLE:"打野",MIDDLE:"中路",BOTTOM:"下路",UTILITY:"辅助"},yo={two:"{first}或{second}",many:"{items}或{last}"},Po={pickPlaceholder:"添加选用英雄",banPlaceholder:"添加禁用英雄",search:"搜索",emptyTitle:"无英雄",pickEmptyHint:"用菜单添加",banEmptyHint:"用菜单添加",remove:"移除{name}",positionFilterLabel:"按分路筛选英雄",random:{label:"随机",assignedTitlePart:"仅在分配位置为{positions}时执行",poolTitlePart:"将随机英雄池限制为{positions}"},bravery:{label:"勇敢举动",description:"用于斗魂竞技场"},positionBadge:{randomAssignedAny:"随机可用于任意位置。点击限制为选定征召位置。",randomAssignedSome:"随机仅在分配位置为{positions}时使用。仅征召;点击编辑。",randomPoolAny:"随机可从所有可用英雄中选择。点击筛选英雄池。",randomPoolSome:"随机从{positions}英雄中选择。点击编辑。",championSome:"仅当分配位置为{positions}时选择此英雄。仅征召;点击编辑。",championAny:"此英雄可用于任意位置。点击限制位置。"}},So={triggerLabel:"Auto Champion Select 设置",empty:"无设置",actionDelay:"操作延迟",forcePick:"无视队友意向并选用",forceBan:"无视队友意向并禁用",hideAutoAcceptPrompt:"隐藏对局接受提示",handleLabel:"{label} {handle}",handles:{min:"最小",max:"最大"},actionDelayValue:{instant:"立即",exact:"延迟{delay}",upTo:"最多{delay}",range:"延迟{min}-{max}"}},Ao={readyCheckAccepted:"对局已接受!",readyCheckAcceptFailed:"接受对局失败。查看控制台。"},Co={group:"Balaclava: Auto Champion Select",autoSwitchName:"自动{name} [{state}]",turnOn:"开启",turnOff:"关闭",autoSwitchOn:"自动{name}已开启!",autoSwitchOff:"自动{name}已关闭!",autoSwitchError:"切换自动{name}失败。查看控制台。",forcePickName:"无视队友意向选用",forceBanName:"无视队友意向禁用",forceSwitchName:"{name} [{state}]",forcePickLegend:"即使队友也想用该英雄也会选用",forceBanLegend:"即使队友想用该英雄也会禁用",forceSwitchOn:"{name}已开启!",forceSwitchOff:"{name}已关闭!",forceSwitchError:"切换{name}失败。查看控制台。",refreshChampionsName:"刷新英雄列表",refreshChampionsLegend:"英雄列表通常会自动刷新...",refreshChampionsSuccess:"英雄列表已刷新!",refreshChampionsError:"刷新英雄列表失败。查看控制台。"},bo={plugin:uo,toggles:po,states:mo,actions:go,positions:fo,list:yo,selectors:Po,settings:So,toasts:Ao,commandBar:Co},Pt="en-US",K=Object.freeze({"en-US":dn,"es-MX":Cn,"ko-KR":Rn,"pt-BR":Gn,"tr-TR":to,"vi-VN":kt,"vn-VN":kt,"zh-CN":bo});let ct=Pt,de=!1;function Eo(){var o,t,e;return typeof document<"u"?((t=(o=document.body)==null?void 0:o.dataset)==null?void 0:t.locale)||((e=document.documentElement)==null?void 0:e.lang)||"":typeof navigator<"u"&&navigator.language||""}async function Oo(){try{const o=await b("GET",m.regionLocale);if(!o.ok)return"";const t=await o.json();return typeof(t==null?void 0:t.locale)=="string"?t.locale:""}catch{return""}}function wo(o){var s;const t=String(o||"").replace("_","-"),e=Object.keys(K).find(a=>a.toLowerCase()===t.toLowerCase());if(e)return e;const n=(s=t.split("-")[0])==null?void 0:s.toLowerCase();return Object.keys(K).find(a=>a.toLowerCase().startsWith(`${n}-`))||Pt}function he(o){return ct=wo(o),ct}function Lt(o,t){return t.split(".").reduce((e,n)=>{if(!(!e||typeof e!="object"||Array.isArray(e)))return e[n]},o)}function To(o,t){return o.replace(/\{(\w+)\}/g,(e,n)=>Object.prototype.hasOwnProperty.call(t,n)?String(t[n]):e)}function ue(){return de||he(Eo()),ct}async function Io(){const o=await Oo();return o?(de=!0,he(o)):ue()}function l(o,t={}){const e=ue(),n=Lt(K[e],o),i=Lt(K[Pt],o);return To(typeof n=="string"?n:typeof i=="string"?i:o,t)}function ko(o){const t=o.map(e=>String(e));return t.length===0?"":t.length===1?t[0]:t.length===2?l("list.two",{first:t[0],second:t[1]}):l("list.many",{items:t.slice(0,-1).join(", "),last:t[t.length-1]})}function W(o){const t=`positions.${o.value}`,e=l(t);return e===t?o.label:e}function Lo(o){const t=te(o);return t?W(t):""}const E=Object.freeze({dropdown:"lol-uikit-framed-dropdown",dropdownOption:"lol-uikit-dropdown-option",radioInputOption:"lol-uikit-radio-input-option",scrollable:"lol-uikit-scrollable",socialRosterGroup:"lol-social-roster-group"}),d=Object.freeze({socialRoster:".lol-social-roster",champSelectButtons:".bottom-right-buttons",firstChampSelectSquareButton:"lol-social-chat-toggle-button, .missions-tracker-button-component, .champ-select-voice-button-wrapper",dropdownRoot:".ui-dropdown",dropdownCurrent:".ui-dropdown-current",dropdownCurrentContent:".ui-dropdown-current-content",dropdownOption:E.dropdownOption,dropdownOptionSelected:`${E.dropdownOption}[selected]`,dropdownOptionsContainer:".ui-dropdown-options-container",dropdownOptions:".ui-dropdown-options",dropdownScrollable:E.scrollable,socialRosterGroupArrow:".arrow",socialRosterGroupHeader:".group-header",socialRosterGroupLabel:"span"});function _t(){return document.querySelector(d.socialRoster)}function dt(){return document.querySelector(d.champSelectButtons)}const _o=50,vo=100,J=210,Q=40,Y="controlado-position-filter",ht="controlado-position-filter-visible",_="controlado-position-filter__badge",ut="controlado-position-filter__badge--active",vt="controlado-placeholder",Rt="controlado-search",pe="controlado-filter-input",me="controlado-tag--search",ge="controlado-tag",fe="controlado-filter-icon",N="controlado-filter-icon--trash",Mt="controlado-champion-option__content",Nt="controlado-champion-option__icon",Ro="controlado-champion-option__text",Bt="controlado-champion-option__name",Mo="controlado-champion-option__description",No="controlado-champion-option__static-icon",Dt=`
11
+ ${d.dropdownRoot} {
12
12
  position: relative;
13
13
  }
14
14
 
15
15
  :host {
16
- --framed-dropdown-scrollable-max-height: ${V}px;
16
+ --framed-dropdown-scrollable-max-height: ${J}px;
17
17
  }
18
18
 
19
- :host ${l.dropdownRoot} dt${l.dropdownCurrent} {
19
+ :host ${d.dropdownRoot} dt${d.dropdownCurrent} {
20
20
  display: grid;
21
- grid-template-columns: minmax(0, 1fr) max-content max-content;
21
+ grid-template-columns: minmax(0, 1fr) max-content;
22
22
  align-items: center;
23
23
  column-gap: 8px;
24
24
  padding: 7px 8px 7px 10px;
25
25
  }
26
26
 
27
- :host ${l.dropdownRoot} dt${l.dropdownCurrent}::after {
27
+ :host ${d.dropdownRoot} dt${d.dropdownCurrent}::after {
28
28
  display: none;
29
29
  }
30
30
 
31
- :host ${l.dropdownRoot} dt${l.dropdownCurrent} ${l.dropdownCurrentContent} {
31
+ :host ${d.dropdownRoot} dt${d.dropdownCurrent} ${d.dropdownCurrentContent} {
32
32
  min-width: 0;
33
33
  padding: 0;
34
34
  text-align: left;
35
35
  }
36
36
 
37
- ${l.dropdownOptionsContainer} {
37
+ ${d.dropdownOptionsContainer} {
38
38
  position: absolute;
39
39
  top: auto;
40
40
  bottom: 100%;
41
- height: ${V}px;
41
+ height: ${J}px;
42
42
  overflow: hidden;
43
43
  transform-origin: bottom;
44
44
  transform: translateY(0);
45
45
  }
46
46
 
47
- ${l.dropdownOptions},
48
- ${l.dropdownScrollable} {
49
- height: ${V}px;
47
+ ${d.dropdownOptions},
48
+ ${d.dropdownScrollable} {
49
+ height: ${J}px;
50
50
  }
51
51
 
52
- ${l.dropdownOptions} {
52
+ ${d.dropdownOptions} {
53
53
  width: 100%;
54
54
  box-sizing: border-box;
55
55
  }
56
56
 
57
- ${l.dropdownOptions} ${l.dropdownScrollable} {
57
+ ${d.dropdownOptions} ${d.dropdownScrollable} {
58
58
  box-sizing: border-box;
59
59
  }
60
60
 
61
- ${l.dropdownOptionsContainer}.${st} ${l.dropdownOptions} ${l.dropdownScrollable} {
62
- padding-top: ${K}px;
61
+ ${d.dropdownOptionsContainer}.${ht} ${d.dropdownOptions} ${d.dropdownScrollable} {
62
+ padding-top: ${Q}px;
63
63
  }
64
64
 
65
- .${U} {
65
+ .${Y} {
66
66
  position: absolute;
67
67
  left: 0;
68
68
  right: 0;
@@ -71,8 +71,8 @@ import{request as S,sleep as T,linkEndpoint as pt}from"https://cdn.jsdelivr.net/
71
71
  display: flex;
72
72
  align-items: center;
73
73
  justify-content: space-between;
74
- height: ${K}px;
75
- min-height: ${K}px;
74
+ height: ${Q}px;
75
+ min-height: ${Q}px;
76
76
  padding: 0 17px;
77
77
  border-bottom: 1px solid #1e282d;
78
78
  background: #010a13;
@@ -80,7 +80,7 @@ import{request as S,sleep as T,linkEndpoint as pt}from"https://cdn.jsdelivr.net/
80
80
  box-sizing: border-box;
81
81
  }
82
82
 
83
- .${I} {
83
+ .${_} {
84
84
  appearance: none;
85
85
  display: grid;
86
86
  place-items: center;
@@ -97,19 +97,19 @@ import{request as S,sleep as T,linkEndpoint as pt}from"https://cdn.jsdelivr.net/
97
97
  outline: none;
98
98
  }
99
99
 
100
- .${I}:hover,
101
- .${I}:focus {
100
+ .${_}:hover,
101
+ .${_}:focus {
102
102
  border-color: #c8aa6e;
103
103
  background: #0f1b2d;
104
104
  }
105
105
 
106
- .${rt} {
106
+ .${ut} {
107
107
  border-color: #f0e6d2;
108
108
  background: #09202c;
109
109
  box-shadow: 0 0 0 1px #c89b3c, 0 0 10px rgba(200, 155, 60, 0.45);
110
110
  }
111
111
 
112
- .${I} img {
112
+ .${_} img {
113
113
  display: block;
114
114
  width: 18px;
115
115
  height: 18px;
@@ -118,13 +118,13 @@ import{request as S,sleep as T,linkEndpoint as pt}from"https://cdn.jsdelivr.net/
118
118
  pointer-events: none;
119
119
  }
120
120
 
121
- .${I}:hover img,
122
- .${I}:focus img,
123
- .${rt} img {
121
+ .${_}:hover img,
122
+ .${_}:focus img,
123
+ .${ut} img {
124
124
  opacity: 1;
125
125
  }
126
126
 
127
- .${Kt} {
127
+ .${fe} {
128
128
  cursor: default;
129
129
  display: inline-block;
130
130
  flex: 0 0 auto;
@@ -137,14 +137,14 @@ import{request as S,sleep as T,linkEndpoint as pt}from"https://cdn.jsdelivr.net/
137
137
  -webkit-mask-size: 18px 18px;
138
138
  }
139
139
 
140
- .${B} {
140
+ .${N} {
141
141
  cursor: pointer;
142
142
  background-color: #c86e6e;
143
143
  -webkit-mask-image: url('/fe/lol-uikit/images/icon_delete.png');
144
144
  -webkit-mask-size: 12px 12px;
145
145
  }
146
146
 
147
- .${jt} {
147
+ .${pe} {
148
148
  flex: 0 0 auto;
149
149
  min-width: 0;
150
150
  width: auto;
@@ -158,7 +158,7 @@ import{request as S,sleep as T,linkEndpoint as pt}from"https://cdn.jsdelivr.net/
158
158
  font-weight: inherit;
159
159
  }
160
160
 
161
- .${Vt} {
161
+ .${ge} {
162
162
  cursor: default;
163
163
  display: inline-flex;
164
164
  align-items: center;
@@ -176,7 +176,7 @@ import{request as S,sleep as T,linkEndpoint as pt}from"https://cdn.jsdelivr.net/
176
176
  box-shadow: inset 0 0 8px rgba(15, 30, 45, 0.6);
177
177
  }
178
178
 
179
- .${Qt} {
179
+ .${me} {
180
180
  border-color: #d7b46a;
181
181
  color: #f6e1b2;
182
182
  background: #1a232f;
@@ -185,47 +185,8 @@ import{request as S,sleep as T,linkEndpoint as pt}from"https://cdn.jsdelivr.net/
185
185
  box-sizing: border-box;
186
186
  justify-content: flex-start;
187
187
  justify-self: end;
188
- order: 2;
188
+ order: 1;
189
189
  text-transform: none;
190
190
  font-weight: 500;
191
191
  }
192
-
193
- .${q} {
194
- appearance: none;
195
- display: inline-grid;
196
- place-items: center;
197
- width: 18px;
198
- height: 18px;
199
- padding: 0;
200
- border: 0;
201
- background: transparent;
202
- box-sizing: border-box;
203
- cursor: pointer;
204
- justify-self: end;
205
- order: 1;
206
- outline: none;
207
- }
208
-
209
- .${q}::before {
210
- content: "";
211
- display: block;
212
- width: 16px;
213
- height: 16px;
214
- background-color: #785a28;
215
- -webkit-mask-image: ${Be};
216
- -webkit-mask-repeat: no-repeat;
217
- -webkit-mask-position: center;
218
- -webkit-mask-size: 16px 16px;
219
- filter: drop-shadow(0 0 1px #010a13);
220
- }
221
-
222
- .${q}:hover::before,
223
- .${q}:focus::before {
224
- background-color: #c8aa6e;
225
- }
226
-
227
- .${Wt}::before {
228
- background-color: #f0e6d2;
229
- filter: drop-shadow(0 0 3px rgba(200, 170, 110, 0.75));
230
- }
231
- `;function J(i){const t=document.createElement(O.dropdownOption);return t.setAttribute("slot",O.dropdownOption),t.innerText=i,t}class xe{constructor(t,e,n,o={}){this.dropdownElement=t,this.placeholderText=e,this.searchPlaceholderText=o.searchPlaceholderText||"Search",this.quickActionLabel=o.quickActionLabel||"Pick/ban instantly",this.staticOptions=Array.isArray(o.staticOptions)?o.staticOptions:[],this.isQuickActionEnabled=typeof o.isQuickActionEnabled=="function"?o.isQuickActionEnabled:null,this.onQuickActionToggle=typeof o.onQuickActionToggle=="function"?o.onQuickActionToggle:null,this.onPriorityOptionSelected=n,this.placeholderOption=null,this.searchQuery="",this.activePositionFilter=null,this.hasRecommendedPositionData=!1,this.recommendedPositionsByOption=new WeakMap,this.staticOptionElements=new WeakSet}renderOptions(t){this.dropdownElement.replaceChildren(),this.hasRecommendedPositionData=!1,this.staticOptionElements=new WeakSet,this.placeholderOption=J(this.placeholderText),this.placeholderOption.setAttribute("selected","true"),this.hidePlaceholderOption(),this.dropdownElement.appendChild(this.placeholderOption);for(const e of this.staticOptions)this.dropdownElement.appendChild(this.createStaticOption(e));for(const e of t){const n=this.getChampionRecommendedPositions(e),o=this.createChampionOption(e,n);n.length>0&&(this.hasRecommendedPositionData=!0),this.dropdownElement.appendChild(o)}this.hasRecommendedPositionData||(this.activePositionFilter=null),this.applyOptionFilters()}createChampionOption(t,e){const n=J("");return this.recommendedPositionsByOption.set(n,new Set(e)),n.title=t.name,n.appendChild(this.createChampionOptionContent(t)),n.addEventListener("click",()=>{this.onPriorityOptionSelected(t.id),requestAnimationFrame(()=>this.reset())}),n}createStaticOption(t){const e=J(""),n=typeof t.description=="string"?t.description:"";return this.staticOptionElements.add(e),e.title=n?`${t.label}. ${n}`:t.label,e.appendChild(this.createStaticOptionContent(t,n)),e.addEventListener("click",()=>{this.onPriorityOptionSelected(t.value),requestAnimationFrame(()=>this.reset())}),e}createChampionOptionContent(t){const e=document.createElement("span");e.classList.add(wt);const n=document.createElement("img");n.classList.add(Et),n.src=t.squarePortraitPath,n.alt="",n.draggable=!1,n.loading="lazy";const o=document.createElement("span");return o.classList.add(It),o.innerText=t.name,e.append(n,o),e}createStaticOptionContent(t,e=""){const n=document.createElement("span");n.classList.add(wt);const o=t.iconPath?document.createElement("img"):document.createElement("span");o.classList.add(Et),t.iconClass&&o.classList.add(t.iconClass),t.iconPath?(o.src=t.iconPath,o.alt="",o.draggable=!1,o.loading="lazy"):(o.classList.add(De),o.innerText=t.iconText||"?");const s=document.createElement("span");s.classList.add(It),s.innerText=t.label;const r=document.createElement("span");if(r.classList.add(Ne),r.appendChild(s),e){const a=document.createElement("span");a.classList.add(Fe),a.innerText=e,r.appendChild(a)}return n.append(o,r),n}getChampionRecommendedPositions(t){return Array.isArray(t.recommendedPositions)?t.recommendedPositions:[]}async waitForRender(){for(let t=0;t<Le;t++){const e=this.dropdownElement.shadowRoot;if(this.dropdownElement.isConnected&&(e!=null&&e.querySelector(l.dropdownCurrent)))return e;await T(Me)}return null}ensureSearchPlaceholder(t){if(t.querySelector(`#${St}`))return;const e=t.querySelector(l.dropdownCurrent);e&&e.appendChild(this.createSearchPlaceholder())}ensureQuickActionToggle(t){if(!this.isQuickActionAvailable()||t.querySelector(`#${X}`)){this.syncQuickActionToggle(t);return}const e=t.querySelector(l.dropdownCurrent);e&&(e.appendChild(this.createQuickActionToggle()),this.syncQuickActionToggle(t))}ensurePositionFilter(t){var n;const e=t.querySelector(l.dropdownOptionsContainer);if(e){if(!this.hasRecommendedPositionData){(n=t.querySelector(`.${U}`))==null||n.remove(),e.classList.remove(st),this.activePositionFilter=null;return}e.classList.add(st),t.querySelector(`.${U}`)||e.insertBefore(this.createPositionFilter(),e.firstChild),this.syncPositionFilter(t)}}createPositionFilter(){const t=document.createElement("div");t.classList.add(U),t.setAttribute("role","toolbar"),t.setAttribute("aria-label","Filter champions by position");for(const e of F)t.appendChild(this.createPositionFilterBadge(e));return t}createPositionFilterBadge(t){const e=document.createElement("button");e.classList.add(I),e.type="button",e.dataset.position=t.value,e.title=t.label,e.setAttribute("aria-label",t.label),e.setAttribute("aria-pressed","false");const n=document.createElement("img");return n.src=t.iconPath,n.alt="",n.draggable=!1,e.appendChild(n),e.addEventListener("pointerdown",o=>{o.preventDefault(),o.stopPropagation()}),e.addEventListener("click",o=>{o.preventDefault(),o.stopPropagation(),this.togglePositionFilter(t.value)}),e}createSearchPlaceholder(){const t=document.createElement("div");t.classList.add(Vt,Qt),t.id=St;const e=document.createElement("input");e.classList.add(jt),e.id=Ot,e.type="text",e.placeholder=this.searchPlaceholderText,e.setAttribute("aria-label",this.searchPlaceholderText),e.size=Math.max(this.searchPlaceholderText.length,1);const n=document.createElement("span");return n.classList.add(Kt),n.addEventListener("click",()=>{n.classList.contains(B)&&this.clearSearch(e,n)}),e.addEventListener("input",o=>{this.ensureOpen(),this.setSearchQuery(o.target.value),n.classList.toggle(B,!!o.target.value)}),["pointerdown","click"].forEach(o=>{t.addEventListener(o,s=>s.stopPropagation()),n.addEventListener(o,s=>s.stopPropagation())}),["pointerdown","focusin"].forEach(o=>{e.addEventListener(o,s=>s.stopPropagation(),!0)}),t.appendChild(n),t.appendChild(e),t}createQuickActionToggle(){const t=document.createElement("button");return t.classList.add(q),t.id=X,t.type="button",t.title=this.quickActionLabel,t.setAttribute("aria-label",this.quickActionLabel),t.setAttribute("aria-pressed","false"),["pointerdown","click"].forEach(e=>{t.addEventListener(e,n=>{n.preventDefault(),n.stopPropagation()})}),t.addEventListener("click",()=>{var e;(e=this.onQuickActionToggle)==null||e.call(this),this.syncQuickActionToggle()}),t}isQuickActionAvailable(){return!!(this.isQuickActionEnabled&&this.onQuickActionToggle)}syncQuickActionToggle(t=this.dropdownElement.shadowRoot){if(!this.isQuickActionAvailable()||!t)return;const e=t.querySelector(`#${X}`);if(!e)return;const n=this.isQuickActionEnabled()===!0;e.classList.toggle(Wt,n),e.setAttribute("aria-pressed",String(n)),e.title=this.quickActionLabel,e.setAttribute("aria-label",this.quickActionLabel)}togglePositionFilter(t){const e=x(t);e&&(this.activePositionFilter=this.activePositionFilter===e?null:e,this.withShadowRoot(n=>this.syncPositionFilter(n)),this.applyOptionFilters())}syncPositionFilter(t){t.querySelectorAll(`.${I}`).forEach(e=>{const n=e.dataset.position===this.activePositionFilter;e.classList.toggle(rt,n),e.setAttribute("aria-pressed",String(n))})}clearSearch(t,e){t.value="",this.setSearchQuery(""),e.classList.toggle(B,!1)}setSearchQuery(t){this.searchQuery=t,this.applyOptionFilters()}applyOptionFilters(){const t=this.searchQuery.toLowerCase();this.dropdownElement.querySelectorAll(l.dropdownOption).forEach(n=>{if(n===this.placeholderOption){this.hidePlaceholderOption();return}this.matchesSearchQuery(n,t)&&this.matchesPositionFilter(n)?n.style.display="":n.style.display="none"})}matchesSearchQuery(t,e){return(t.textContent??"").toLowerCase().includes(e)}matchesPositionFilter(t){var e;return this.staticOptionElements.has(t)||!this.activePositionFilter?!0:((e=this.recommendedPositionsByOption.get(t))==null?void 0:e.has(this.activePositionFilter))===!0}hidePlaceholderOption(){this.placeholderOption&&(this.placeholderOption.style.display="none")}reset(){var t;this.dropdownElement.querySelectorAll(l.dropdownOptionSelected).forEach(e=>{e.removeAttribute("selected")}),(t=this.placeholderOption)==null||t.setAttribute("selected","true"),this.withShadowRoot(e=>{var s;const n=e.querySelector(`#${Ot}`),o=e.querySelector(`.${B}`);n&&o?this.clearSearch(n,o):(n&&(n.value="",this.setSearchQuery("")),o&&o.classList.remove(B)),this.isOpen()&&((s=e.querySelector(l.dropdownCurrent))==null||s.click())})}isOpen(){return this.dropdownElement.classList.contains("active")}ensureOpen(){this.isOpen()||this.withShadowRoot(t=>{const e=t.querySelector(l.dropdownCurrent);e&&e.click()})}patchDropdownShadowDom(){this.withShadowRoot(t=>{this.ensureDropdownOpensUpward(t),this.injectDropdownSearchStyles(t),this.ensurePositionFilter(t)})}ensureDropdownOpensUpward(t){var e;(e=t.querySelector(l.dropdownRoot))==null||e.classList.add("opens-upward")}injectDropdownSearchStyles(t){const e=t.querySelector("style[data-controlado='dropdown-tags']");if(e){e.textContent=Tt;return}const n=document.createElement("style");n.dataset.controlado="dropdown-tags",n.textContent=Tt,t.appendChild(n)}withShadowRoot(t){const e=this.dropdownElement.shadowRoot;e&&t(e)}}const $e=".champion-priority-selector__position-badge",qe=".champion-priority-selector__position-option",Z=".champion-priority-selector__remove",tt="✕",_t="?",$="Random",L="Bravery",ze="For Arena mode",kt="/fe/lol-champ-select/images/champion-grid/bravery-champion.png",Ye="controlado-champion-option__icon--bravery",Ue="champion-priority-selector__icon--bravery",Ge=0,Rt=1,Y=8,h=Object.freeze({CHAMPION_ASSIGNED:"champion-assigned",RANDOM_ASSIGNED:"random-assigned",RANDOM_POOL:"random-pool"}),He=5,je=150,Qe="cubic-bezier(0.2, 0, 0, 1)";class vt{constructor(t,e,n,o={}){this.element=this.createRootElement(),this.dropdownElement=this.createDropdownElement();const s=[];o.enableBraveryOption===!0&&s.push({value:E,label:L,description:ze,iconPath:kt,iconClass:Ye}),s.push({value:b,label:$,iconText:_t}),this.championDropdown=new xe(this.dropdownElement,t,c=>this.addPriorityOption(c),{quickActionLabel:o.quickActionLabel,searchPlaceholderText:o.searchPlaceholderText,staticOptions:s,isQuickActionEnabled:()=>this.isQuickActionEnabled(),onQuickActionToggle:()=>this.toggleQuickAction()});const{scrollElement:r,trackElement:a}=this.createSelectedChampionsScroll();this.scrollElement=r,this.trackElement=a,this.enablePositionRestrictions=o.enablePositionRestrictions===!0,this.enableRandomPoolPositionFilters=o.enableRandomPoolPositionFilters===!0,this.enableRandomAssignedPositionRestrictions=o.enableRandomAssignedPositionRestrictions===!0,this.enableBraveryOption=o.enableBraveryOption===!0,this.enablePositionMenu=this.enablePositionRestrictions||this.enableRandomAssignedPositionRestrictions||this.enableRandomPoolPositionFilters,this.positionMenuElement=this.enablePositionMenu?this.createPositionMenu():null,this.positionMenuTarget=null,this.positionsByChampionId={},this.randomAssignedPositions=[],this.randomPoolPositions=[],this.emptyElement=this.createEmptyState(t),this.element.append(this.dropdownElement,this.scrollElement),this.positionMenuElement&&this.element.appendChild(this.positionMenuElement),this.config=null,this.configKey=e,this.quickAction=!1,this.loadChampions=n,this.champions=[],this.championById=new Map,this.selectedPriorityOptions=[],this.optionButtons=new Map,this.dragState=null,this.handleWindowPointerMove=c=>this.moveDrag(c),this.handleWindowPointerUp=c=>this.finishDrag(c),this.handleWindowPointerCancel=c=>this.cancelDrag(c),this.handlePositionMenuOutsidePointerDown=c=>this.closePositionMenuOnOutsidePointerDown(c),this.handlePositionMenuKeyDown=c=>this.closePositionMenuOnKeyDown(c),this.setupInFlight=null,this.setupPending=!1}createRootElement(){const t=document.createElement("div");return t.classList.add("champion-priority-selector"),t}createDropdownElement(){const t=document.createElement(O.dropdown);return t.classList.add("dropdown-champions-default","dropdown-drop-up"),t}createSelectedChampionsScroll(){const t=document.createElement(O.scrollable);t.classList.add("champion-priority-selector__scroll"),t.setAttribute("direction","horizontal"),t.setAttribute("overflow-masks","disabled"),t.setAttribute("side-scroll-wheel","true");const e=document.createElement("div");return e.classList.add("champion-priority-selector__track"),t.appendChild(e),{scrollElement:t,trackElement:e}}createEmptyState(t){const e=document.createElement("div");e.classList.add("champion-priority-selector__empty");const n=document.createElement("span");n.innerText="No champions";const o=document.createElement("span"),s=t.replace(/^Add\s+/i,"").toLowerCase();return o.innerText=`Use dropdown to add ${s} option`,e.append(n,o),e}createPositionMenu(){const t=document.createElement("div");t.classList.add("champion-priority-selector__position-menu"),t.hidden=!0;for(const e of F)t.appendChild(this.createPositionOption(e));return t}createPositionOption(t){const e=document.createElement("button");e.classList.add("champion-priority-selector__position-option"),e.type="button",e.dataset.position=t.value,e.title=t.label,e.setAttribute("aria-label",t.label),e.setAttribute("aria-pressed","false"),e.addEventListener("pointerdown",o=>o.stopPropagation()),e.addEventListener("click",o=>{o.stopPropagation(),this.togglePositionMenuPosition(t.value)});const n=document.createElement("img");return n.src=t.iconPath,n.alt=t.label,n.draggable=!1,e.appendChild(n),e}async setup(){return this.setupPending=!0,this.setupInFlight||(this.setupInFlight=this.runSetupLoop()),this.setupInFlight}refresh(){return this.setup()}async runSetupLoop(){try{for(;this.setupPending;)this.setupPending=!1,await this.performSetup()}finally{this.setupInFlight=null}}async performSetup(){this.champions=await this.loadChampions(),this.championById=new Map(this.champions.map(n=>[n.id,n]));const t=this.getAllowedChampionIds();this.config=Yt(this.configKey,{allowedChampionIds:t}),this.quickAction=this.config.quickAction===!0,this.selectedPriorityOptions=ct(this.config.priorityOptions||this.config.champions,t).filter(n=>this.isPriorityOptionEnabled(n)),this.enablePositionRestrictions&&(this.positionsByChampionId=G(this.config.positionsByChampionId,M(this.selectedPriorityOptions))),this.enableRandomAssignedPositionRestrictions&&(this.randomAssignedPositions=A(this.config.randomAssignedPositions)),this.enableRandomPoolPositionFilters&&(this.randomPoolPositions=A(this.config.randomPoolPositions)),this.championDropdown.renderOptions(this.champions),this.renderSelectedPriorityOptions();const e=await this.championDropdown.waitForRender();e&&(this.championDropdown.ensureSearchPlaceholder(e),this.championDropdown.ensureQuickActionToggle(e),this.championDropdown.patchDropdownShadowDom())}getAllowedChampionIds(){return new Set(this.championById.keys())}isQuickActionEnabled(){return this.quickAction===!0}isPriorityOptionEnabled(t){return!C(t)||this.enableBraveryOption}toggleQuickAction(){const t=this.getAllowedChampionIds();return this.config=H(this.configKey,e=>(e.quickAction=e.quickAction!==!0,e),{allowedChampionIds:t,selectedChampionIds:M(this.selectedPriorityOptions)}),this.quickAction=this.config.quickAction===!0,this.championDropdown.syncQuickActionToggle(),this.quickAction}addPriorityOption(t){const e=_(t);e===null||this.selectedPriorityOptions.includes(e)||!this.isPriorityOptionEnabled(e)||!p(e)&&!C(e)&&!this.championById.has(e)||(this.selectedPriorityOptions.push(e),this.renderSelectedPriorityOptions(),this.saveConfig())}removePriorityOption(t){var s;const e=_(t),n=this.selectedPriorityOptions.indexOf(e);if(e===null||n===-1)return;this.selectedPriorityOptions.splice(n,1);const o=typeof e=="number"?e:null;((s=this.positionMenuTarget)==null?void 0:s.option)===e&&this.closePositionMenu(),this.enablePositionRestrictions&&o!==null&&delete this.positionsByChampionId[String(o)],this.enableRandomAssignedPositionRestrictions&&p(e)&&(this.randomAssignedPositions=[]),this.enableRandomPoolPositionFilters&&p(e)&&(this.randomPoolPositions=[]),this.renderSelectedPriorityOptions(),this.saveConfig()}movePriorityOptionToIndex(t,e){const n=_(t),o=this.selectedPriorityOptions.indexOf(n);if(n===null||o===-1)return!1;const[s]=this.selectedPriorityOptions.splice(o,1),r=Math.max(0,Math.min(e,this.selectedPriorityOptions.length));return this.selectedPriorityOptions.splice(r,0,s),o!==r}syncPositionsByChampionId(){this.enablePositionRestrictions&&(this.positionsByChampionId=G(this.positionsByChampionId,M(this.selectedPriorityOptions)))}syncRandomPoolPositions(){this.enableRandomPoolPositionFilters&&(this.randomPoolPositions=A(this.randomPoolPositions))}syncRandomAssignedPositions(){this.enableRandomAssignedPositionRestrictions&&(this.randomAssignedPositions=A(this.randomAssignedPositions))}saveConfig(){this.syncPositionsByChampionId(),this.syncRandomAssignedPositions(),this.syncRandomPoolPositions();const t=this.getAllowedChampionIds();this.config=H(this.configKey,e=>(e.priorityOptions=[...this.selectedPriorityOptions],e.champions=M(this.selectedPriorityOptions),this.enableRandomAssignedPositionRestrictions&&(e.randomAssignedPositions=[...this.randomAssignedPositions]),this.enableRandomPoolPositionFilters&&(e.randomPoolPositions=[...this.randomPoolPositions]),this.enablePositionRestrictions&&(e.positionsByChampionId={...this.positionsByChampionId}),e),{allowedChampionIds:t,selectedChampionIds:M(this.selectedPriorityOptions)}),this.enablePositionRestrictions&&(this.positionsByChampionId=this.config.positionsByChampionId||{}),this.enableRandomAssignedPositionRestrictions&&(this.randomAssignedPositions=this.config.randomAssignedPositions||[]),this.enableRandomPoolPositionFilters&&(this.randomPoolPositions=this.config.randomPoolPositions||[]),console.debug(this.configKey,this.config)}renderSelectedPriorityOptions(t=null,e=null){this.positionMenuTarget!==null&&this.closePositionMenu();const n=new Set(this.selectedPriorityOptions.map(s=>w(s)));for(const[s,r]of this.optionButtons)n.has(s)||(r.remove(),this.optionButtons.delete(s));if(this.selectedPriorityOptions.length===0){this.trackElement.replaceChildren(this.emptyElement);return}this.emptyElement.remove();const o=this.selectedPriorityOptions.map((s,r)=>this.getPriorityOptionButton(s,r)).filter(Boolean);this.trackElement.append(...o),t&&this.animateReorder(t,e)}getPriorityOptionButton(t,e){return p(t)?this.getRandomOptionButton(e):C(t)?this.enableBraveryOption?this.getBraveryOptionButton(e):null:this.getChampionOptionButton(t,e)}getChampionOptionButton(t,e){const n=this.championById.get(t);if(!n)return null;const o=String(t);let s=this.optionButtons.get(o);s||(s=this.createIconButton(n),this.optionButtons.set(o,s)),s.dataset.rank=String(e+1),s.classList.toggle("champion-priority-selector__icon--random",!1);const r=this.getChampionPositionTitleSuffix(t);s.title=`${e+1}. ${n.name}${r}`,s.setAttribute("aria-label",`${e+1}. ${n.name}${r}`);const a=s.querySelector("img");a.src=n.squarePortraitPath,a.alt=n.name;const c=s.querySelector(Z);return c.setAttribute("aria-label",`Remove ${n.name}`),c.title=`Remove ${n.name}`,this.renderPositionBadge(s,t),s}getRandomOptionButton(t){let e=this.optionButtons.get(b);e||(e=this.createRandomOptionButton(),this.optionButtons.set(b,e)),e.dataset.rank=String(t+1);const n=this.getRandomPositionTitleSuffix();e.title=`${t+1}. ${$}${n}`,e.setAttribute("aria-label",`${t+1}. ${$}${n}`);const o=e.querySelector(Z);return o.setAttribute("aria-label",`Remove ${$}`),o.title=`Remove ${$}`,this.renderPositionBadge(e,b),e}getBraveryOptionButton(t){let e=this.optionButtons.get(E);e||(e=this.createBraveryOptionButton(),this.optionButtons.set(E,e)),e.dataset.rank=String(t+1),e.title=`${t+1}. ${L}`,e.setAttribute("aria-label",`${t+1}. ${L}`);const n=e.querySelector("img");n.src=kt,n.alt=L;const o=e.querySelector(Z);return o.setAttribute("aria-label",`Remove ${L}`),o.title=`Remove ${L}`,e}createIconButton(t){const e=document.createElement("div");e.classList.add("champion-priority-selector__icon"),e.setAttribute("role","button"),e.tabIndex=0;const n=document.createElement("img");n.draggable=!1;const o=document.createElement("button");if(o.classList.add("champion-priority-selector__remove"),o.type="button",o.dataset.icon=tt,o.addEventListener("pointerdown",s=>s.stopPropagation()),o.addEventListener("click",s=>{s.stopPropagation(),this.removePriorityOption(t.id)}),e.addEventListener("pointerdown",s=>this.startDrag(s,t.id)),e.addEventListener("auxclick",s=>this.removePriorityOptionOnMiddleClick(s,t.id)),this.enablePositionRestrictions){const s={option:t.id,kind:h.CHAMPION_ASSIGNED};e.addEventListener("contextmenu",r=>this.openPositionMenu(r,s))}return e.append(n,o),e}createRandomOptionButton(){const t=document.createElement("div");t.classList.add("champion-priority-selector__icon","champion-priority-selector__icon--random"),t.setAttribute("role","button"),t.tabIndex=0;const e=document.createElement("span");e.classList.add("champion-priority-selector__random-icon"),e.innerText=_t;const n=document.createElement("button");if(n.classList.add("champion-priority-selector__remove"),n.type="button",n.dataset.icon=tt,n.addEventListener("pointerdown",o=>o.stopPropagation()),n.addEventListener("click",o=>{o.stopPropagation(),this.removePriorityOption(b)}),t.addEventListener("pointerdown",o=>this.startDrag(o,b)),t.addEventListener("auxclick",o=>this.removePriorityOptionOnMiddleClick(o,b)),this.enableRandomPoolPositionFilters){const o={option:b,kind:h.RANDOM_POOL};t.addEventListener("contextmenu",s=>this.openPositionMenu(s,o))}return t.append(e,n),t}createBraveryOptionButton(){const t=document.createElement("div");t.classList.add("champion-priority-selector__icon",Ue),t.setAttribute("role","button"),t.tabIndex=0;const e=document.createElement("img");e.draggable=!1;const n=document.createElement("button");return n.classList.add("champion-priority-selector__remove"),n.type="button",n.dataset.icon=tt,n.addEventListener("pointerdown",o=>o.stopPropagation()),n.addEventListener("click",o=>{o.stopPropagation(),this.removePriorityOption(E)}),t.addEventListener("pointerdown",o=>this.startDrag(o,E)),t.addEventListener("auxclick",o=>this.removePriorityOptionOnMiddleClick(o,E)),t.append(e,n),t}getChampionAllowedPositions(t){const e=u(t);return e===null?[]:this.positionsByChampionId[String(e)]||[]}getRandomPoolPositions(){return this.randomPoolPositions}getRandomAssignedPositions(){return this.randomAssignedPositions}getPositionLabels(t){return t.map(e=>{var n;return(n=mt(e))==null?void 0:n.label}).filter(Boolean)}getChampionAllowedPositionLabels(t){return this.getPositionLabels(this.getChampionAllowedPositions(t))}getRandomPoolPositionLabels(){return this.getPositionLabels(this.getRandomPoolPositions())}getRandomAssignedPositionLabels(){return this.getPositionLabels(this.getRandomAssignedPositions())}getChampionPositionTitleSuffix(t){const e=this.getChampionAllowedPositionLabels(t);return e.length>0?` (${e.join(", ")})`:""}getRandomPositionTitleSuffix(){const t=[],e=this.getRandomAssignedPositionLabels(),n=this.getRandomPoolPositionLabels();return e.length>0&&t.push(`runs only when assigned lane matches ${this.formatPositionLabelsForSentence(e)}`),n.length>0&&t.push(`filters random pool to ${this.formatPositionLabelsForSentence(n)}`),t.length>0?` (${t.join("; ")})`:""}formatPositionLabelsForSentence(t){return t.length<=1?t[0]||"":t.length===2?`${t[0]} or ${t[1]}`:`${t.slice(0,-1).join(", ")}, or ${t[t.length-1]}`}renderPositionBadge(t,e){t.querySelectorAll($e).forEach(o=>o.remove());const n=_(e);if(n!==null)for(const o of this.getPositionBadgeTargetsForOption(n)){const s=this.createPositionBadge(o);s&&t.appendChild(s)}}getPositionBadgeTargetsForOption(t){return this.selectedPriorityOptions.includes(t)?p(t)?[{option:t,kind:h.RANDOM_ASSIGNED},{option:t,kind:h.RANDOM_POOL}].filter(e=>this.canOpenPositionMenuForTarget(e)):C(t)?[]:[{option:t,kind:h.CHAMPION_ASSIGNED}].filter(e=>this.canOpenPositionMenuForTarget(e)):[]}createPositionBadge(t){const e=this.getAllowedPositionsForPositionMenuTarget(t),n=this.getAllowedPositionLabelsForPositionMenuTarget(t),o=t.kind===h.RANDOM_POOL,s=document.createElement("button");if(s.classList.add("champion-priority-selector__position-badge"),s.classList.toggle("champion-priority-selector__position-badge--random",o),s.type="button",s.dataset.positionTarget=t.kind,s.title=this.getPositionBadgeTitle(n,t),s.setAttribute("aria-label",s.title),s.addEventListener("pointerdown",c=>c.stopPropagation()),s.addEventListener("click",c=>this.openPositionMenu(c,t,s)),o)return e.length>0?(s.classList.add("champion-priority-selector__position-badge--active"),s.dataset.count=String(e.length)):s.classList.add("champion-priority-selector__position-badge--empty"),s;if(e.length===0)return s.classList.add("champion-priority-selector__position-badge--empty"),s.innerText="+",s;const r=mt(e[0]);if(!r)return null;e.length>1&&(s.dataset.count=String(e.length));const a=document.createElement("img");return a.src=r.iconPath,a.alt=r.label,a.draggable=!1,s.appendChild(a),s}getPositionBadgeTitle(t,e){return e.kind===h.RANDOM_ASSIGNED?t.length===0?"The plugin can use Random in any lane. Click to run it only in selected draft lanes.":`The plugin will use Random only when your assigned lane matches ${this.formatPositionLabelsForSentence(t)}. Draft modes only. Click to edit.`:e.kind===h.RANDOM_POOL?t.length===0?"The plugin can choose any available champion at random. Click to filter the pool first.":`The plugin filters Random to champions for ${this.formatPositionLabelsForSentence(t)}, then picks one. Click to edit.`:t.length>0?`The plugin will pick this champion only when your assigned lane matches ${this.formatPositionLabelsForSentence(t)}. Draft modes only. Click to edit.`:"The plugin can pick this champion in any lane. Click to limit it to selected draft lanes."}canOpenPositionMenuForTarget(t){if(!this.selectedPriorityOptions.includes(t.option))return!1;switch(t.kind){case h.CHAMPION_ASSIGNED:return typeof t.option=="number"&&this.enablePositionRestrictions;case h.RANDOM_ASSIGNED:return p(t.option)&&this.enableRandomAssignedPositionRestrictions;case h.RANDOM_POOL:return p(t.option)&&this.enableRandomPoolPositionFilters;default:return!1}}normalizePositionMenuTarget(t){if(!t||typeof t!="object"||Array.isArray(t)||!("option"in t)||!("kind"in t))return null;const e=_(t.option),n=e===null?null:{option:e,kind:String(t.kind)};return n&&this.canOpenPositionMenuForTarget(n)?n:null}getAllowedPositionsForPositionMenuTarget(t){switch(t.kind){case h.CHAMPION_ASSIGNED:return this.getChampionAllowedPositions(t.option);case h.RANDOM_ASSIGNED:return this.getRandomAssignedPositions();case h.RANDOM_POOL:return this.getRandomPoolPositions();default:return[]}}getAllowedPositionLabelsForPositionMenuTarget(t){return this.getPositionLabels(this.getAllowedPositionsForPositionMenuTarget(t))}setAllowedPositionsForPositionMenuTarget(t,e){switch(t.kind){case h.CHAMPION_ASSIGNED:{const n=String(t.option);e.length>0?this.positionsByChampionId[n]=e:delete this.positionsByChampionId[n];break}case h.RANDOM_ASSIGNED:this.randomAssignedPositions=e;break;case h.RANDOM_POOL:this.randomPoolPositions=e;break}}openPositionMenu(t,e,n=null){if(!this.positionMenuElement)return;const o=this.normalizePositionMenuTarget(e);if(o===null)return;t.preventDefault(),t.stopPropagation(),this.positionMenuTarget=o,this.renderPositionMenu(),this.positionMenuElement.hidden=!1,this.positionMenuElement.style.left="0px",this.positionMenuElement.style.top="0px";const{left:s,top:r}=this.getPositionMenuCoordinates(t,n);this.positionMenuElement.style.left=`${s}px`,this.positionMenuElement.style.top=`${r}px`,document.addEventListener("pointerdown",this.handlePositionMenuOutsidePointerDown,!0),document.addEventListener("keydown",this.handlePositionMenuKeyDown,!0)}getPositionMenuCoordinates(t,e=null){const n=this.positionMenuElement.getBoundingClientRect();let o=t.clientX,s=t.clientY;if(e&&t.type==="click"&&t.detail===0){const c=e.getBoundingClientRect();o=c.left+c.width/2,s=c.bottom}const r=Math.min(Math.max(o,Y),window.innerWidth-n.width-Y),a=Math.min(Math.max(s,Y),window.innerHeight-n.height-Y);return{left:r,top:a}}renderPositionMenu(){if(!this.positionMenuElement||this.positionMenuTarget===null)return;const t=new Set(this.getAllowedPositionsForPositionMenuTarget(this.positionMenuTarget));this.positionMenuElement.querySelectorAll(qe).forEach(e=>{const n=t.has(e.dataset.position);e.classList.toggle("champion-priority-selector__position-option--selected",n),e.setAttribute("aria-pressed",String(n))})}togglePositionMenuPosition(t){if(!this.positionMenuElement||this.positionMenuTarget===null)return;const e=x(t);if(!e)return;const n=this.positionMenuTarget,o=n.option,s=new Set(this.getAllowedPositionsForPositionMenuTarget(n));s.has(e)?s.delete(e):s.add(e);const r=F.map(g=>g.value).filter(g=>s.has(g));this.setAllowedPositionsForPositionMenuTarget(n,r),this.renderPositionMenu();const a=w(o),c=a?this.optionButtons.get(a):null,d=this.selectedPriorityOptions.indexOf(o);c&&d!==-1&&(p(o)?this.getRandomOptionButton(d):this.getChampionOptionButton(o,d)),this.saveConfig()}closePositionMenuOnOutsidePointerDown(t){var e;(e=this.positionMenuElement)!=null&&e.contains(t.target)||this.closePositionMenu()}closePositionMenuOnKeyDown(t){t.key==="Escape"&&this.closePositionMenu()}closePositionMenu(){this.positionMenuElement&&(this.positionMenuElement.hidden=!0,this.positionMenuTarget=null,document.removeEventListener("pointerdown",this.handlePositionMenuOutsidePointerDown,!0),document.removeEventListener("keydown",this.handlePositionMenuKeyDown,!0))}startDrag(t,e){var s;if(t.button===Rt){t.preventDefault();return}if(t.button!==Ge)return;this.dragState&&this.clearDragState();const n=w(e),o=n?this.optionButtons.get(n):null;if(o){this.dragState={option:e,pointerId:t.pointerId,startX:t.clientX,startY:t.clientY,active:!1,moved:!1};try{(s=o.setPointerCapture)==null||s.call(o,t.pointerId)}catch{}window.addEventListener("pointermove",this.handleWindowPointerMove),window.addEventListener("pointerup",this.handleWindowPointerUp),window.addEventListener("pointercancel",this.handleWindowPointerCancel)}}removePriorityOptionOnMiddleClick(t,e){t.button===Rt&&(t.preventDefault(),t.stopPropagation(),this.removePriorityOption(e))}moveDrag(t){var g;if(!this.dragState||this.dragState.pointerId!==t.pointerId)return;const e=this.dragState.option,n=w(e),o=t.clientX-this.dragState.startX,s=t.clientY-this.dragState.startY,r=Math.hypot(o,s);if(!this.dragState.active){if(r<He)return;this.dragState.active=!0,n&&((g=this.optionButtons.get(n))==null||g.classList.add("champion-priority-selector__icon--dragging"))}t.preventDefault();const a=this.getDropIndex(t.clientX,e),c=this.selectedPriorityOptions.indexOf(e);if(a===c||a===-1)return;const d=this.getIconPositions();this.movePriorityOptionToIndex(e,a)&&(this.dragState.moved=!0,this.renderSelectedPriorityOptions(d,e))}finishDrag(t){if(!this.dragState||this.dragState.pointerId!==t.pointerId)return;const e=this.dragState.active,n=this.dragState.moved;this.clearDragState(),e&&n&&this.saveConfig()}cancelDrag(t){!this.dragState||this.dragState.pointerId!==t.pointerId||this.clearDragState()}clearDragState(){var s;if(!this.dragState)return;const{option:t,pointerId:e}=this.dragState,n=w(t),o=n?this.optionButtons.get(n):null;o==null||o.classList.remove("champion-priority-selector__icon--dragging");try{(s=o==null?void 0:o.releasePointerCapture)==null||s.call(o,e)}catch{}window.removeEventListener("pointermove",this.handleWindowPointerMove),window.removeEventListener("pointerup",this.handleWindowPointerUp),window.removeEventListener("pointercancel",this.handleWindowPointerCancel),this.dragState=null}getDropIndex(t,e){const n=this.selectedPriorityOptions.filter(o=>o!==e);for(let o=0;o<n.length;o++){const s=w(n[o]),r=s?this.optionButtons.get(s):null;if(!r)continue;const a=r.getBoundingClientRect();if(t<a.left+a.width/2)return o}return n.length}getIconPositions(){const t=new Map;for(const e of this.selectedPriorityOptions){const n=w(e),o=n?this.optionButtons.get(n):null;o&&t.set(n,o.getBoundingClientRect())}return t}animateReorder(t,e){for(const n of this.selectedPriorityOptions){if(n===e)continue;const o=w(n),s=o?this.optionButtons.get(o):null,r=o?t.get(o):null;if(!s||!r||typeof s.animate!="function")continue;const a=s.getBoundingClientRect(),c=r.left-a.left,d=r.top-a.top;c===0&&d===0||s.animate([{transform:`translate(${c}px, ${d}px)`},{transform:"translate(0, 0)"}],{duration:je,easing:Qe})}}}const We=200,et="auto-select-champ-select-menu--collapsed",Ve="auto-select-champ-select-menu-button-wrapper--open";class nt{constructor(t,e){this.element=document.createElement(O.radioInputOption),this.element.classList.add("lol-settings-voice-input-mode-option","auto-select-checkbox"),this.element.innerText=t,this.config=null,this.configKey=e,this.setupComplete=!1}setup(){this.syncFromConfig(),this.setupComplete||(this.element.addEventListener("click",()=>this.toggle()),this.setupComplete=!0)}syncFromConfig(){this.config=Yt(this.configKey),this.element.toggleAttribute("selected",this.config.enabled===!0)}toggle(){return console.debug("auto-champion-select: Toggling",this.configKey),this.config=H(this.configKey,t=>(t.enabled=!t.enabled,t)),this.element.toggleAttribute("selected",this.config.enabled===!0),this.config.enabled}}class Ke{constructor(t,e,n){this.element=document.createElement("div"),this.element.classList.add("auto-select-champ-select-menu",et),this.buttonWrapper=document.createElement("div"),this.buttonWrapper.classList.add("auto-select-champ-select-menu-button-wrapper"),this.headerElement=document.createElement("button"),this.headerElement.classList.add("auto-select-champ-select-menu__header"),this.headerElement.type="button",this.headerElement.setAttribute("aria-label",t),this.headerElement.setAttribute("aria-expanded","false"),this.headerElement.addEventListener("click",()=>this.toggle()),this.contentElement=document.createElement("div"),this.contentElement.classList.add("auto-select-champ-select-menu__content"),this.titleElement=document.createElement("div"),this.titleElement.classList.add("auto-select-champ-select-menu__title"),this.titleElement.textContent=t,this.buttonWrapper.append(this.headerElement,this.element),this.contentElement.appendChild(this.titleElement),this.element.appendChild(this.contentElement),this.returnControlsToSocialRoster=e,this.controlElements=n,this.boundCloseOnOutsideInteraction=o=>this.closeOnOutsideInteraction(o),this.buttonObserver=null,this.buttonMountFrame=null,this.buttonMountTask=null,this.hiddenStates=new WeakMap,this.mounted=!1}async mount(){return this.mounted?this.mountButton():(this.mounted=!0,this.controlElements.forEach(t=>{this.hiddenStates.set(t,t.classList.contains("hidden")),t.classList.remove("hidden"),this.contentElement.appendChild(t)}),this.observeButtonContainer(),document.addEventListener("pointerdown",this.boundCloseOnOutsideInteraction,!0),this.mountButton())}unmount(){return this.mounted?(this.mounted=!1,this.stopButtonMounting(),document.removeEventListener("pointerdown",this.boundCloseOnOutsideInteraction,!0),this.setOpen(!1),this.buttonWrapper.remove(),this.restoreHiddenStates(),this.returnControlsToSocialRoster()):this.returnControlsToSocialRoster()}stopButtonMounting(){var t;(t=this.buttonObserver)==null||t.disconnect(),this.buttonObserver=null,this.buttonMountFrame!==null&&(cancelAnimationFrame(this.buttonMountFrame),this.buttonMountFrame=null),this.buttonMountTask=null}restoreHiddenStates(){this.controlElements.forEach(t=>{t.classList.toggle("hidden",this.hiddenStates.get(t)===!0),this.hiddenStates.delete(t)})}isOpen(){return!this.element.classList.contains(et)}setOpen(t){this.element.classList.toggle(et,!t),this.buttonWrapper.classList.toggle(Ve,t),this.headerElement.setAttribute("aria-expanded",String(t))}toggle(){this.setOpen(!this.isOpen())}closeOnOutsideInteraction(t){if(!this.isOpen())return;(typeof t.composedPath=="function"?t.composedPath():[]).includes(this.buttonWrapper)||this.buttonWrapper.contains(t.target)||this.setOpen(!1)}observeButtonContainer(){this.buttonObserver=new MutationObserver(()=>this.scheduleMountButton()),this.buttonObserver.observe(document.body,{childList:!0,subtree:!0})}scheduleMountButton(){this.buttonMountFrame===null&&(this.buttonMountFrame=requestAnimationFrame(()=>{this.buttonMountFrame=null,this.mountButton()}))}mountButton(){return this.buttonMountTask||(this.buttonMountTask=this.appendButtonToContainer().finally(()=>{this.buttonMountTask=null})),this.buttonMountTask}async appendButtonToContainer(){let t=it();for(;this.mounted&&!t;)await T(We),t=it();if(!this.mounted||!t)return;const e=t.querySelector(l.firstChampSelectSquareButton);this.buttonWrapper.parentNode===t&&this.buttonWrapper.nextSibling===e||t.insertBefore(this.buttonWrapper,e)}}class Xe{constructor(t,...e){this.element=document.createElement(O.socialRosterGroup),this.element.addEventListener("post-render",()=>this.onPostRender()),this.element.addEventListener("click",()=>this.onClick()),this.label=t,this.collapsibleElements=e,this.waitRender()}waitRender(){new MutationObserver((t,e)=>{if(this.element.querySelector(l.socialRosterGroupLabel)){const n=new Event("post-render");this.element.dispatchEvent(n),e.disconnect()}}).observe(this.element,{childList:!0})}onPostRender(){var t;this.element.querySelector(l.socialRosterGroupLabel).innerText=this.label,(t=this.element.querySelector(l.socialRosterGroupHeader))==null||t.removeAttribute("draggable")}onClick(){var t;this.collapsibleElements.forEach(e=>{e.closest(".auto-select-champ-select-menu")||e.classList.toggle("hidden")}),(t=this.element.querySelector(l.socialRosterGroupArrow))==null||t.toggleAttribute("open")}}function Xt(i){var t,e;i&&((e=(t=globalThis.Toast)==null?void 0:t.success)==null||e.call(t,i))}function at(i){var t,e;i&&((e=(t=globalThis.Toast)==null?void 0:t.error)==null||e.call(t,i))}function Je(i,t){const e=globalThis.Toast;return typeof(e==null?void 0:e.promise)=="function"?e.promise(i,t):i}const D="Balaclava: Auto Champion Select";function Ze(i){return typeof(i==null?void 0:i.then)=="function"}class ut{constructor({id:t,name:e,legend:n,tags:o,group:s,callback:r,toasts:a}){this.id=t,this.name=e,this.legend=n,this.tags=o,this.group=s,this.perform=this.perform.bind(this),this.callback=r,this.toasts=a}perform(){try{const t=this.callback();if(Ze(t))return Je(t,{loading:this.toasts.loading,success:this.toasts.success,error:this.toasts.error});const e=this.toasts.success||(t?this.toasts.on:this.toasts.off);Xt(e)}catch(t){at(this.toasts.error),console.error(t)}}}class Jt extends ut{constructor(t,e,n){super({id:`${e}Switch`,name:()=>`Auto ${t} [${k(e).enabled?"ON":"OFF"}]`,legend:()=>k(e).enabled?"Turn OFF":"Turn ON",tags:[D,e,"switch"],group:D,callback:n,toasts:{on:`Auto ${t} is ON!`,off:`Auto ${t} is OFF!`,error:`Failed to toggle Auto ${t}. Check console.`}})}}function tn(i){return H(i,e=>(e.force=!e.force,e)).force}class Zt extends ut{constructor(t,e){super({id:`${e}ForceSwitch`,name:()=>`Force ${t} [${k(e).force?"ON":"OFF"}]`,legend:()=>`Ignore team intent and force ${t} the selected champion`,tags:[D,e,"force","switch"],group:D,callback:()=>tn(e),toasts:{on:`Force ${t} is ON!`,off:`Force ${t} is OFF!`,error:`Failed to toggle Force ${t}. Check console.`}})}}class en extends ut{constructor(t){super({id:"RefreshDropdowns",name:()=>"Refresh Champions",legend:()=>"Normally champion selectors refresh automatically...",tags:[D,"refresh"],group:D,callback:t,toasts:{success:"Refreshed Champions!",error:"Failed to refresh Champions. Check console."}})}}class nn extends Jt{constructor(t){super("Pick","controladoPick",t)}}class on extends Jt{constructor(t){super("Ban","controladoBan",t)}}class sn extends Zt{constructor(){super("Pick","controladoPick")}}class rn extends Zt{constructor(){super("Ban","controladoBan")}}function an(i){for(const t of i)CommandBar.addAction(t)}const cn=200,ln=6e4,Lt=2e3,dn=".ready-check-root-element",hn="#lol-uikit-layer-manager-wrapper > .modal",un="Accepted ready check!",Mt="Failed to accept ready check. Check console.",pn=".auto-select-champ-select-menu__header",N=Object.freeze({autoAccept:"controladoAutoAccept",pick:"controladoPick",ban:"controladoBan"});function te(){return k(N.autoAccept).enabled===!0}class mn{constructor(t){this.isEnabled=t,this.observer=null,this.hiddenModal=null,this.hiddenModalStyles=new WeakMap,this.sync=this.sync.bind(this)}start(){this.observer||(this.observer=new MutationObserver(()=>this.sync()),this.observer.observe(document.body,{childList:!0,subtree:!0}),this.sync())}sync(){const t=fn();if(!t){this.restore();return}if(!this.isEnabled()){this.restore();return}this.hide(t)}hide(t){this.hiddenModal!==t&&(this.restore(),this.hiddenModal=t,this.hiddenModalStyles.set(t,{display:t.style.getPropertyValue("display"),displayPriority:t.style.getPropertyPriority("display"),pointerEvents:t.style.getPropertyValue("pointer-events"),pointerEventsPriority:t.style.getPropertyPriority("pointer-events")}),t.style.setProperty("display","none","important"),t.style.setProperty("pointer-events","none","important"))}restore(){if(!this.hiddenModal)return;const t=this.hiddenModal,e=this.hiddenModalStyles.get(t);Bt(t,"display",e==null?void 0:e.display,e==null?void 0:e.displayPriority),Bt(t,"pointer-events",e==null?void 0:e.pointerEvents,e==null?void 0:e.pointerEventsPriority),this.hiddenModalStyles.delete(t),this.hiddenModal=null}}function fn(){const i=document.querySelector(dn);return(i==null?void 0:i.closest(hn))||null}function Bt(i,t,e,n){e?i.style.setProperty(t,e,n||""):i.style.removeProperty(t)}async function gn(i){function t(){return te()?!1:(i.restore(),!0)}if(t()||(console.debug(`auto-champion-select(auto-accept): Ready check detected, accepting in ${Lt}ms...`),await T(Lt),t()))return;let e=!1;try{e=await Pn()}catch(n){throw i.restore(),at(Mt),n}e?Xt(un):(i.restore(),at(Mt))}async function Pn(){const i=await S("POST",m.readyCheckAccept);return i.ok?(console.debug("auto-champion-select(auto-accept): Accepted ready check"),!0):(console.error("auto-champion-select(auto-accept): Failed to accept ready check",i),!1)}async function yn(i){const t=await S("GET",m.gameflowPhase),e=t.ok?await t.json():null;i.handleGameflowPhase(e)}function bn({championSelect:i,champSelectControlsMenu:t,readyCheckModalSuppressor:e,setupChampionSelectors:n}){let o=0;return async function(c){const d=++o;try{await s(c,d)}catch(g){console.error("auto-champion-select: Failed to handle gameflow phase",g)}};async function s(a,c){a==="ReadyCheck"?gn(e).catch(d=>{console.error("auto-champion-select(auto-accept): Failed to handle ready check",d)}):e.restore(),await r(a),c===o&&await n()}async function r(a){a==="ChampSelect"?(i.mount(),await t.mount()):(i.unmount(),await t.unmount())}}function An(){const i=new ve,t=new nt("Accept",N.autoAccept),e=new nt("Pick",N.pick),n=new vt("Add pick",N.pick,Oe,{enablePositionRestrictions:!0,enableRandomAssignedPositionRestrictions:!0,enableBraveryOption:!0,quickActionLabel:"Pick instantly",enableRandomPoolPositionFilters:!0}),o=new nt("Ban",N.ban),s=new vt("Add ban",N.ban,Gt,{quickActionLabel:"Ban instantly",enableRandomPoolPositionFilters:!0}),r=Cn(n,s),a=Sn(t,e,o),c=new Xe("Auto champion select",r,a);return{championSelect:i,autoAcceptToggle:t,pickToggle:e,banToggle:o,pickChampionSelector:n,banChampionSelector:s,selectorsContainer:r,checkboxesContainer:a,pluginSection:c,championSelectors:[n,s]}}function Cn(...i){const t=document.createElement("div");return t.append(...i.map(e=>e.element)),t}function Sn(...i){const t=document.createElement("div");return t.classList.add("auto-select-checkboxes-div"),t.append(...i.map(e=>e.element)),t}function On({pluginSection:i,checkboxesContainer:t,selectorsContainer:e}){let n=null,o=0,s=()=>!1;async function r(a){let c=Ct();for(;!c;){if(s()||a!==o)return;await T(cn),c=Ct()}s()||a!==o||c.append(i.element,t,e)}return{setIsChampSelectControlsMounted(a){s=a},returnControlsToSocialRoster(){if(n)return n;const a=++o;return n=r(a).catch(c=>console.error("auto-champion-select: Failed to return controls to social roster",c)).finally(()=>{n=null}),n}}}function wn({autoAcceptToggle:i,pickToggle:t,banToggle:e,readyCheckModalSuppressor:n}){i.setup(),i.element.addEventListener("click",()=>n.sync()),t.setup(),e.setup()}async function En(i){await Promise.all(i.map(t=>t.setup()))}async function In(i){await Promise.all(i.map(t=>t.refresh()))}function Tn(){const i=An(),t=new mn(te),e=On(i),n=new Ke("Auto Champion Select",e.returnControlsToSocialRoster,[i.checkboxesContainer,i.selectorsContainer]);e.setIsChampSelectControlsMounted(()=>n.mounted);const o={...i,champSelectControlsMenu:n,readyCheckModalSuppressor:t,setupToggles:()=>wn({...i,readyCheckModalSuppressor:t}),setupChampionSelectors:()=>En(i.championSelectors),refreshChampionSelectors:()=>In(i.championSelectors),refreshPickChampionSelector:async()=>{await i.pickChampionSelector.refresh()}};return o.handleGameflowPhase=bn(o),o}function _n(i){pt(m.gameflowPhase,t=>{i.handleGameflowPhase(t.data)}),pt(m.wallet,async t=>{if(t.eventType==="Update"){console.debug("auto-champion-select(wallet): Refreshing champion selectors...");try{await i.refreshPickChampionSelector()}catch(e){console.error("auto-champion-select(wallet): Failed to refresh champion selectors",e)}}})}function kn({pickToggle:i,banToggle:t,refreshChampionSelectors:e}){an([new nn(()=>i.toggle()),new on(()=>t.toggle()),new sn,new rn,new en(e)])}function Rn(i){let t=null,e=null;function n(){e==null||e.disconnect(),e=null,t!==null&&(cancelAnimationFrame(t),t=null)}const o=setTimeout(()=>{n()},ln);function s(){if(!(it()!==null))return;clearTimeout(o),n(),document.querySelector(pn)!==null||i.handleGameflowPhase("ChampSelect")}e=new MutationObserver(()=>{t===null&&(t=requestAnimationFrame(()=>{t=null,s()}))}),e.observe(document.body,{childList:!0,subtree:!0}),s()}async function vn(){const i=Tn();i.setupToggles(),i.readyCheckModalSuppressor.start(),kn(i),_n(i),await yn(i),Rn(i),console.debug(`auto-champion-select(${ee}): Report bugs to Balaclava#1912`)}let Nt=!1;function Ft(){Nt||(Nt=!0,vn().catch(i=>console.error("auto-champion-select: Failed to initialize",i)))}document.readyState==="loading"?window.addEventListener("load",Ft,{once:!0}):Ft();export{Ft as load};
192
+ `;function Z(o){const t=document.createElement(E.dropdownOption);return t.setAttribute("slot",E.dropdownOption),t.innerText=o,t}class Bo{constructor(t,e,n,i={}){this.dropdownElement=t,this.placeholderText=e,this.searchPlaceholderText=i.searchPlaceholderText||l("selectors.search"),this.staticOptions=Array.isArray(i.staticOptions)?i.staticOptions:[],this.onPriorityOptionSelected=n,this.placeholderOption=null,this.searchQuery="",this.activePositionFilter=null,this.hasRecommendedPositionData=!1,this.recommendedPositionsByOption=new WeakMap,this.staticOptionElements=new WeakSet}renderOptions(t){this.dropdownElement.replaceChildren(),this.hasRecommendedPositionData=!1,this.staticOptionElements=new WeakSet,this.placeholderOption=Z(this.placeholderText),this.placeholderOption.setAttribute("selected","true"),this.hidePlaceholderOption(),this.dropdownElement.appendChild(this.placeholderOption);for(const e of this.staticOptions)this.dropdownElement.appendChild(this.createStaticOption(e));for(const e of t){const n=this.getChampionRecommendedPositions(e),i=this.createChampionOption(e,n);n.length>0&&(this.hasRecommendedPositionData=!0),this.dropdownElement.appendChild(i)}this.hasRecommendedPositionData||(this.activePositionFilter=null),this.applyOptionFilters()}createChampionOption(t,e){const n=Z("");return this.recommendedPositionsByOption.set(n,new Set(e)),n.title=t.name,n.appendChild(this.createChampionOptionContent(t)),n.addEventListener("click",()=>{this.onPriorityOptionSelected(t.id),requestAnimationFrame(()=>this.reset())}),n}createStaticOption(t){const e=Z(""),n=typeof t.description=="string"?t.description:"";return this.staticOptionElements.add(e),e.title=n?`${t.label}. ${n}`:t.label,e.appendChild(this.createStaticOptionContent(t,n)),e.addEventListener("click",()=>{this.onPriorityOptionSelected(t.value),requestAnimationFrame(()=>this.reset())}),e}createChampionOptionContent(t){const e=document.createElement("span");e.classList.add(Mt);const n=document.createElement("img");n.classList.add(Nt),n.src=t.squarePortraitPath,n.alt="",n.draggable=!1,n.loading="lazy";const i=document.createElement("span");return i.classList.add(Bt),i.innerText=t.name,e.append(n,i),e}createStaticOptionContent(t,e=""){const n=document.createElement("span");n.classList.add(Mt);const i=t.iconPath?document.createElement("img"):document.createElement("span");i.classList.add(Nt),t.iconClass&&i.classList.add(t.iconClass),t.iconPath?(i.src=t.iconPath,i.alt="",i.draggable=!1,i.loading="lazy"):(i.classList.add(No),i.innerText=t.iconText||"?");const s=document.createElement("span");s.classList.add(Bt),s.innerText=t.label;const a=document.createElement("span");if(a.classList.add(Ro),a.appendChild(s),e){const r=document.createElement("span");r.classList.add(Mo),r.innerText=e,a.appendChild(r)}return n.append(i,a),n}getChampionRecommendedPositions(t){return Array.isArray(t.recommendedPositions)?t.recommendedPositions:[]}async waitForRender(){for(let t=0;t<_o;t++){const e=this.dropdownElement.shadowRoot;if(this.dropdownElement.isConnected&&(e!=null&&e.querySelector(d.dropdownCurrent)))return e;await v(vo)}return null}ensureSearchPlaceholder(t){if(t.querySelector(`#${vt}`))return;const e=t.querySelector(d.dropdownCurrent);e&&e.appendChild(this.createSearchPlaceholder())}ensurePositionFilter(t){var n;const e=t.querySelector(d.dropdownOptionsContainer);if(e){if(!this.hasRecommendedPositionData){(n=t.querySelector(`.${Y}`))==null||n.remove(),e.classList.remove(ht),this.activePositionFilter=null;return}e.classList.add(ht),t.querySelector(`.${Y}`)||e.insertBefore(this.createPositionFilter(),e.firstChild),this.syncPositionFilter(t)}}createPositionFilter(){const t=document.createElement("div");t.classList.add(Y),t.setAttribute("role","toolbar"),t.setAttribute("aria-label",l("selectors.positionFilterLabel"));for(const e of B)t.appendChild(this.createPositionFilterBadge(e));return t}createPositionFilterBadge(t){const e=W(t),n=document.createElement("button");n.classList.add(_),n.type="button",n.dataset.position=t.value,n.title=e,n.setAttribute("aria-label",e),n.setAttribute("aria-pressed","false");const i=document.createElement("img");return i.src=t.iconPath,i.alt="",i.draggable=!1,n.appendChild(i),n.addEventListener("pointerdown",s=>{s.preventDefault(),s.stopPropagation()}),n.addEventListener("click",s=>{s.preventDefault(),s.stopPropagation(),this.togglePositionFilter(t.value)}),n}createSearchPlaceholder(){const t=document.createElement("div");t.classList.add(ge,me),t.id=vt;const e=document.createElement("input");e.classList.add(pe),e.id=Rt,e.type="text",e.placeholder=this.searchPlaceholderText,e.setAttribute("aria-label",this.searchPlaceholderText),e.size=Math.max(this.searchPlaceholderText.length,1);const n=document.createElement("span");return n.classList.add(fe),n.addEventListener("click",()=>{n.classList.contains(N)&&this.clearSearch(e,n)}),e.addEventListener("input",i=>{this.ensureOpen(),this.setSearchQuery(i.target.value),n.classList.toggle(N,!!i.target.value)}),["pointerdown","click"].forEach(i=>{t.addEventListener(i,s=>s.stopPropagation()),n.addEventListener(i,s=>s.stopPropagation())}),["pointerdown","focusin"].forEach(i=>{e.addEventListener(i,s=>s.stopPropagation(),!0)}),t.appendChild(n),t.appendChild(e),t}togglePositionFilter(t){const e=D(t);e&&(this.activePositionFilter=this.activePositionFilter===e?null:e,this.withShadowRoot(n=>this.syncPositionFilter(n)),this.applyOptionFilters())}syncPositionFilter(t){t.querySelectorAll(`.${_}`).forEach(e=>{const n=e.dataset.position===this.activePositionFilter;e.classList.toggle(ut,n),e.setAttribute("aria-pressed",String(n))})}clearSearch(t,e){t.value="",this.setSearchQuery(""),e.classList.toggle(N,!1)}setSearchQuery(t){this.searchQuery=t,this.applyOptionFilters()}applyOptionFilters(){const t=this.searchQuery.toLowerCase();this.dropdownElement.querySelectorAll(d.dropdownOption).forEach(n=>{if(n===this.placeholderOption){this.hidePlaceholderOption();return}this.matchesSearchQuery(n,t)&&this.matchesPositionFilter(n)?n.style.display="":n.style.display="none"})}matchesSearchQuery(t,e){return(t.textContent??"").toLowerCase().includes(e)}matchesPositionFilter(t){var e;return this.staticOptionElements.has(t)||!this.activePositionFilter?!0:((e=this.recommendedPositionsByOption.get(t))==null?void 0:e.has(this.activePositionFilter))===!0}hidePlaceholderOption(){this.placeholderOption&&(this.placeholderOption.style.display="none")}reset(){var t;this.dropdownElement.querySelectorAll(d.dropdownOptionSelected).forEach(e=>{e.removeAttribute("selected")}),(t=this.placeholderOption)==null||t.setAttribute("selected","true"),this.withShadowRoot(e=>{var s;const n=e.querySelector(`#${Rt}`),i=e.querySelector(`.${N}`);n&&i?this.clearSearch(n,i):(n&&(n.value="",this.setSearchQuery("")),i&&i.classList.remove(N)),this.isOpen()&&((s=e.querySelector(d.dropdownCurrent))==null||s.click())})}isOpen(){return this.dropdownElement.classList.contains("active")}ensureOpen(){this.isOpen()||this.withShadowRoot(t=>{const e=t.querySelector(d.dropdownCurrent);e&&e.click()})}patchDropdownShadowDom(){this.withShadowRoot(t=>{this.ensureDropdownOpensUpward(t),this.injectDropdownSearchStyles(t),this.ensurePositionFilter(t)})}ensureDropdownOpensUpward(t){var e;(e=t.querySelector(d.dropdownRoot))==null||e.classList.add("opens-upward")}injectDropdownSearchStyles(t){const e=t.querySelector("style[data-controlado='dropdown-tags']");if(e){e.textContent=Dt;return}const n=document.createElement("style");n.dataset.controlado="dropdown-tags",n.textContent=Dt,t.appendChild(n)}withShadowRoot(t){const e=this.dropdownElement.shadowRoot;e&&t(e)}}const Do=".champion-priority-selector__position-badge",xo=".champion-priority-selector__position-option",tt=".champion-priority-selector__remove",et="✕",xt="?",Ft="/fe/lol-champ-select/images/champion-grid/bravery-champion.png",Fo="controlado-champion-option__icon--bravery",$o="champion-priority-selector__icon--bravery",Ho=0,$t=1,G=8,u=Object.freeze({CHAMPION_ASSIGNED:"champion-assigned",RANDOM_ASSIGNED:"random-assigned",RANDOM_POOL:"random-pool"}),zo=5,Vo=150,Go="cubic-bezier(0.2, 0, 0, 1)";function Ht(){return l("selectors.random.label")}function zt(){return l("selectors.bravery.label")}class Vt{constructor(t,e,n,i={}){this.element=this.createRootElement(),this.dropdownElement=this.createDropdownElement();const s=[];i.enableBraveryOption===!0&&s.push({value:L,label:zt(),description:l("selectors.bravery.description"),iconPath:Ft,iconClass:Fo}),s.push({value:C,label:Ht(),iconText:xt}),this.championDropdown=new Bo(this.dropdownElement,t,c=>this.addPriorityOption(c),{searchPlaceholderText:i.searchPlaceholderText,staticOptions:s});const{scrollElement:a,trackElement:r}=this.createSelectedChampionsScroll();this.scrollElement=a,this.trackElement=r,this.enablePositionRestrictions=i.enablePositionRestrictions===!0,this.enableRandomPoolPositionFilters=i.enableRandomPoolPositionFilters===!0,this.enableRandomAssignedPositionRestrictions=i.enableRandomAssignedPositionRestrictions===!0,this.enableBraveryOption=i.enableBraveryOption===!0,this.enablePositionMenu=this.enablePositionRestrictions||this.enableRandomAssignedPositionRestrictions||this.enableRandomPoolPositionFilters,this.positionMenuElement=this.enablePositionMenu?this.createPositionMenu():null,this.positionMenuTarget=null,this.positionsByChampionId={},this.randomAssignedPositions=[],this.randomPoolPositions=[],this.emptyElement=this.createEmptyState(e),this.element.append(this.dropdownElement,this.scrollElement),this.positionMenuElement&&this.element.appendChild(this.positionMenuElement),this.config=null,this.configKey=e,this.loadChampions=n,this.champions=[],this.championById=new Map,this.selectedPriorityOptions=[],this.optionButtons=new Map,this.dragState=null,this.handleWindowPointerMove=c=>this.moveDrag(c),this.handleWindowPointerUp=c=>this.finishDrag(c),this.handleWindowPointerCancel=c=>this.cancelDrag(c),this.handlePositionMenuOutsidePointerDown=c=>this.closePositionMenuOnOutsidePointerDown(c),this.handlePositionMenuKeyDown=c=>this.closePositionMenuOnKeyDown(c),this.setupInFlight=null,this.setupPending=!1}createRootElement(){const t=document.createElement("div");return t.classList.add("champion-priority-selector"),t}createDropdownElement(){const t=document.createElement(E.dropdown);return t.classList.add("dropdown-champions-default","dropdown-drop-up"),t}createSelectedChampionsScroll(){const t=document.createElement(E.scrollable);t.classList.add("champion-priority-selector__scroll"),t.setAttribute("direction","horizontal"),t.setAttribute("overflow-masks","disabled"),t.setAttribute("side-scroll-wheel","true");const e=document.createElement("div");return e.classList.add("champion-priority-selector__track"),t.appendChild(e),{scrollElement:t,trackElement:e}}createEmptyState(t){const e=document.createElement("div");e.classList.add("champion-priority-selector__empty");const n=document.createElement("span");n.innerText=l("selectors.emptyTitle");const i=document.createElement("span");return i.innerText=l(t==="controladoPick"?"selectors.pickEmptyHint":"selectors.banEmptyHint"),e.append(n,i),e}createPositionMenu(){const t=document.createElement("div");t.classList.add("champion-priority-selector__position-menu"),t.hidden=!0;for(const e of B)t.appendChild(this.createPositionOption(e));return t}createPositionOption(t){const e=W(t),n=document.createElement("button");n.classList.add("champion-priority-selector__position-option"),n.type="button",n.dataset.position=t.value,n.title=e,n.setAttribute("aria-label",e),n.setAttribute("aria-pressed","false"),n.addEventListener("pointerdown",s=>s.stopPropagation()),n.addEventListener("click",s=>{s.stopPropagation(),this.togglePositionMenuPosition(t.value)});const i=document.createElement("img");return i.src=t.iconPath,i.alt=e,i.draggable=!1,n.appendChild(i),n}async setup(){return this.setupPending=!0,this.setupInFlight||(this.setupInFlight=this.runSetupLoop()),this.setupInFlight}refresh(){return this.setup()}async runSetupLoop(){try{for(;this.setupPending;)this.setupPending=!1,await this.performSetup()}finally{this.setupInFlight=null}}async performSetup(){this.champions=await this.loadChampions(),this.championById=new Map(this.champions.map(n=>[n.id,n]));const t=this.getAllowedChampionIds();this.config=ae(this.configKey,{allowedChampionIds:t}),this.selectedPriorityOptions=mt(this.config.priorityOptions||this.config.champions,t).filter(n=>this.isPriorityOptionEnabled(n)),this.enablePositionRestrictions&&(this.positionsByChampionId=q(this.config.positionsByChampionId,F(this.selectedPriorityOptions))),this.enableRandomAssignedPositionRestrictions&&(this.randomAssignedPositions=T(this.config.randomAssignedPositions)),this.enableRandomPoolPositionFilters&&(this.randomPoolPositions=T(this.config.randomPoolPositions)),this.championDropdown.renderOptions(this.champions),this.renderSelectedPriorityOptions();const e=await this.championDropdown.waitForRender();e&&(this.championDropdown.ensureSearchPlaceholder(e),this.championDropdown.patchDropdownShadowDom())}getAllowedChampionIds(){return new Set(this.championById.keys())}isPriorityOptionEnabled(t){return!I(t)||this.enableBraveryOption}addPriorityOption(t){const e=R(t);e===null||this.selectedPriorityOptions.includes(e)||!this.isPriorityOptionEnabled(e)||!g(e)&&!I(e)&&!this.championById.has(e)||(this.selectedPriorityOptions.push(e),this.renderSelectedPriorityOptions(),this.saveConfig())}removePriorityOption(t){var s;const e=R(t),n=this.selectedPriorityOptions.indexOf(e);if(e===null||n===-1)return;this.selectedPriorityOptions.splice(n,1);const i=typeof e=="number"?e:null;((s=this.positionMenuTarget)==null?void 0:s.option)===e&&this.closePositionMenu(),this.enablePositionRestrictions&&i!==null&&delete this.positionsByChampionId[String(i)],this.enableRandomAssignedPositionRestrictions&&g(e)&&(this.randomAssignedPositions=[]),this.enableRandomPoolPositionFilters&&g(e)&&(this.randomPoolPositions=[]),this.renderSelectedPriorityOptions(),this.saveConfig()}movePriorityOptionToIndex(t,e){const n=R(t),i=this.selectedPriorityOptions.indexOf(n);if(n===null||i===-1)return!1;const[s]=this.selectedPriorityOptions.splice(i,1),a=Math.max(0,Math.min(e,this.selectedPriorityOptions.length));return this.selectedPriorityOptions.splice(a,0,s),i!==a}syncPositionsByChampionId(){this.enablePositionRestrictions&&(this.positionsByChampionId=q(this.positionsByChampionId,F(this.selectedPriorityOptions)))}syncRandomPoolPositions(){this.enableRandomPoolPositionFilters&&(this.randomPoolPositions=T(this.randomPoolPositions))}syncRandomAssignedPositions(){this.enableRandomAssignedPositionRestrictions&&(this.randomAssignedPositions=T(this.randomAssignedPositions))}saveConfig(){this.syncPositionsByChampionId(),this.syncRandomAssignedPositions(),this.syncRandomPoolPositions();const t=this.getAllowedChampionIds();this.config=x(this.configKey,e=>(e.priorityOptions=[...this.selectedPriorityOptions],e.champions=F(this.selectedPriorityOptions),this.enableRandomAssignedPositionRestrictions&&(e.randomAssignedPositions=[...this.randomAssignedPositions]),this.enableRandomPoolPositionFilters&&(e.randomPoolPositions=[...this.randomPoolPositions]),this.enablePositionRestrictions&&(e.positionsByChampionId={...this.positionsByChampionId}),e),{allowedChampionIds:t,selectedChampionIds:F(this.selectedPriorityOptions)}),this.enablePositionRestrictions&&(this.positionsByChampionId=this.config.positionsByChampionId||{}),this.enableRandomAssignedPositionRestrictions&&(this.randomAssignedPositions=this.config.randomAssignedPositions||[]),this.enableRandomPoolPositionFilters&&(this.randomPoolPositions=this.config.randomPoolPositions||[]),console.debug(this.configKey,this.config)}renderSelectedPriorityOptions(t=null,e=null){this.positionMenuTarget!==null&&this.closePositionMenu();const n=new Set(this.selectedPriorityOptions.map(s=>k(s)));for(const[s,a]of this.optionButtons)n.has(s)||(a.remove(),this.optionButtons.delete(s));if(this.selectedPriorityOptions.length===0){this.trackElement.replaceChildren(this.emptyElement);return}this.emptyElement.remove();const i=this.selectedPriorityOptions.map((s,a)=>this.getPriorityOptionButton(s,a)).filter(Boolean);this.trackElement.append(...i),t&&this.animateReorder(t,e)}getPriorityOptionButton(t,e){return g(t)?this.getRandomOptionButton(e):I(t)?this.enableBraveryOption?this.getBraveryOptionButton(e):null:this.getChampionOptionButton(t,e)}getChampionOptionButton(t,e){const n=this.championById.get(t);if(!n)return null;const i=String(t);let s=this.optionButtons.get(i);s||(s=this.createIconButton(n),this.optionButtons.set(i,s)),s.dataset.rank=String(e+1),s.classList.toggle("champion-priority-selector__icon--random",!1);const a=this.getChampionPositionTitleSuffix(t);s.title=`${e+1}. ${n.name}${a}`,s.setAttribute("aria-label",`${e+1}. ${n.name}${a}`);const r=s.querySelector("img");r.src=n.squarePortraitPath,r.alt=n.name;const c=s.querySelector(tt);return c.setAttribute("aria-label",l("selectors.remove",{name:n.name})),c.title=l("selectors.remove",{name:n.name}),this.renderPositionBadge(s,t),s}getRandomOptionButton(t){let e=this.optionButtons.get(C);e||(e=this.createRandomOptionButton(),this.optionButtons.set(C,e)),e.dataset.rank=String(t+1);const n=Ht(),i=this.getRandomPositionTitleSuffix();e.title=`${t+1}. ${n}${i}`,e.setAttribute("aria-label",`${t+1}. ${n}${i}`);const s=e.querySelector(tt);return s.setAttribute("aria-label",l("selectors.remove",{name:n})),s.title=l("selectors.remove",{name:n}),this.renderPositionBadge(e,C),e}getBraveryOptionButton(t){let e=this.optionButtons.get(L);e||(e=this.createBraveryOptionButton(),this.optionButtons.set(L,e)),e.dataset.rank=String(t+1);const n=zt();e.title=`${t+1}. ${n}`,e.setAttribute("aria-label",`${t+1}. ${n}`);const i=e.querySelector("img");i.src=Ft,i.alt=n;const s=e.querySelector(tt);return s.setAttribute("aria-label",l("selectors.remove",{name:n})),s.title=l("selectors.remove",{name:n}),e}createIconButton(t){const e=document.createElement("div");e.classList.add("champion-priority-selector__icon"),e.setAttribute("role","button"),e.tabIndex=0;const n=document.createElement("img");n.draggable=!1;const i=document.createElement("button");if(i.classList.add("champion-priority-selector__remove"),i.type="button",i.dataset.icon=et,i.addEventListener("pointerdown",s=>s.stopPropagation()),i.addEventListener("click",s=>{s.stopPropagation(),this.removePriorityOption(t.id)}),e.addEventListener("pointerdown",s=>this.startDrag(s,t.id)),e.addEventListener("auxclick",s=>this.removePriorityOptionOnMiddleClick(s,t.id)),this.enablePositionRestrictions){const s={option:t.id,kind:u.CHAMPION_ASSIGNED};e.addEventListener("contextmenu",a=>this.openPositionMenu(a,s))}return e.append(n,i),e}createRandomOptionButton(){const t=document.createElement("div");t.classList.add("champion-priority-selector__icon","champion-priority-selector__icon--random"),t.setAttribute("role","button"),t.tabIndex=0;const e=document.createElement("span");e.classList.add("champion-priority-selector__random-icon"),e.innerText=xt;const n=document.createElement("button");if(n.classList.add("champion-priority-selector__remove"),n.type="button",n.dataset.icon=et,n.addEventListener("pointerdown",i=>i.stopPropagation()),n.addEventListener("click",i=>{i.stopPropagation(),this.removePriorityOption(C)}),t.addEventListener("pointerdown",i=>this.startDrag(i,C)),t.addEventListener("auxclick",i=>this.removePriorityOptionOnMiddleClick(i,C)),this.enableRandomPoolPositionFilters){const i={option:C,kind:u.RANDOM_POOL};t.addEventListener("contextmenu",s=>this.openPositionMenu(s,i))}return t.append(e,n),t}createBraveryOptionButton(){const t=document.createElement("div");t.classList.add("champion-priority-selector__icon",$o),t.setAttribute("role","button"),t.tabIndex=0;const e=document.createElement("img");e.draggable=!1;const n=document.createElement("button");return n.classList.add("champion-priority-selector__remove"),n.type="button",n.dataset.icon=et,n.addEventListener("pointerdown",i=>i.stopPropagation()),n.addEventListener("click",i=>{i.stopPropagation(),this.removePriorityOption(L)}),t.addEventListener("pointerdown",i=>this.startDrag(i,L)),t.addEventListener("auxclick",i=>this.removePriorityOptionOnMiddleClick(i,L)),t.append(e,n),t}getChampionAllowedPositions(t){const e=p(t);return e===null?[]:this.positionsByChampionId[String(e)]||[]}getRandomPoolPositions(){return this.randomPoolPositions}getRandomAssignedPositions(){return this.randomAssignedPositions}getPositionLabels(t){return t.map(e=>Lo(e)).filter(Boolean)}getChampionAllowedPositionLabels(t){return this.getPositionLabels(this.getChampionAllowedPositions(t))}getRandomPoolPositionLabels(){return this.getPositionLabels(this.getRandomPoolPositions())}getRandomAssignedPositionLabels(){return this.getPositionLabels(this.getRandomAssignedPositions())}getChampionPositionTitleSuffix(t){const e=this.getChampionAllowedPositionLabels(t);return e.length>0?` (${e.join(", ")})`:""}getRandomPositionTitleSuffix(){const t=[],e=this.getRandomAssignedPositionLabels(),n=this.getRandomPoolPositionLabels();return e.length>0&&t.push(l("selectors.random.assignedTitlePart",{positions:this.formatPositionLabelsForSentence(e)})),n.length>0&&t.push(l("selectors.random.poolTitlePart",{positions:this.formatPositionLabelsForSentence(n)})),t.length>0?` (${t.join("; ")})`:""}formatPositionLabelsForSentence(t){return ko(t)}renderPositionBadge(t,e){t.querySelectorAll(Do).forEach(i=>i.remove());const n=R(e);if(n!==null)for(const i of this.getPositionBadgeTargetsForOption(n)){const s=this.createPositionBadge(i);s&&t.appendChild(s)}}getPositionBadgeTargetsForOption(t){return this.selectedPriorityOptions.includes(t)?g(t)?[{option:t,kind:u.RANDOM_ASSIGNED},{option:t,kind:u.RANDOM_POOL}].filter(e=>this.canOpenPositionMenuForTarget(e)):I(t)?[]:[{option:t,kind:u.CHAMPION_ASSIGNED}].filter(e=>this.canOpenPositionMenuForTarget(e)):[]}createPositionBadge(t){const e=this.getAllowedPositionsForPositionMenuTarget(t),n=this.getAllowedPositionLabelsForPositionMenuTarget(t),i=t.kind===u.RANDOM_POOL,s=document.createElement("button");if(s.classList.add("champion-priority-selector__position-badge"),s.classList.toggle("champion-priority-selector__position-badge--random",i),s.type="button",s.dataset.positionTarget=t.kind,s.title=this.getPositionBadgeTitle(n,t),s.setAttribute("aria-label",s.title),s.addEventListener("pointerdown",c=>c.stopPropagation()),s.addEventListener("click",c=>this.openPositionMenu(c,t,s)),i)return e.length>0?(s.classList.add("champion-priority-selector__position-badge--active"),s.dataset.count=String(e.length)):s.classList.add("champion-priority-selector__position-badge--empty"),s;if(e.length===0)return s.classList.add("champion-priority-selector__position-badge--empty"),s.innerText="+",s;const a=te(e[0]);if(!a)return null;e.length>1&&(s.dataset.count=String(e.length));const r=document.createElement("img");return r.src=a.iconPath,r.alt=W(a),r.draggable=!1,s.appendChild(r),s}getPositionBadgeTitle(t,e){return e.kind===u.RANDOM_ASSIGNED?t.length===0?l("selectors.positionBadge.randomAssignedAny"):l("selectors.positionBadge.randomAssignedSome",{positions:this.formatPositionLabelsForSentence(t)}):e.kind===u.RANDOM_POOL?t.length===0?l("selectors.positionBadge.randomPoolAny"):l("selectors.positionBadge.randomPoolSome",{positions:this.formatPositionLabelsForSentence(t)}):t.length>0?l("selectors.positionBadge.championSome",{positions:this.formatPositionLabelsForSentence(t)}):l("selectors.positionBadge.championAny")}canOpenPositionMenuForTarget(t){if(!this.selectedPriorityOptions.includes(t.option))return!1;switch(t.kind){case u.CHAMPION_ASSIGNED:return typeof t.option=="number"&&this.enablePositionRestrictions;case u.RANDOM_ASSIGNED:return g(t.option)&&this.enableRandomAssignedPositionRestrictions;case u.RANDOM_POOL:return g(t.option)&&this.enableRandomPoolPositionFilters;default:return!1}}normalizePositionMenuTarget(t){if(!t||typeof t!="object"||Array.isArray(t)||!("option"in t)||!("kind"in t))return null;const e=R(t.option),n=e===null?null:{option:e,kind:String(t.kind)};return n&&this.canOpenPositionMenuForTarget(n)?n:null}getAllowedPositionsForPositionMenuTarget(t){switch(t.kind){case u.CHAMPION_ASSIGNED:return this.getChampionAllowedPositions(t.option);case u.RANDOM_ASSIGNED:return this.getRandomAssignedPositions();case u.RANDOM_POOL:return this.getRandomPoolPositions();default:return[]}}getAllowedPositionLabelsForPositionMenuTarget(t){return this.getPositionLabels(this.getAllowedPositionsForPositionMenuTarget(t))}setAllowedPositionsForPositionMenuTarget(t,e){switch(t.kind){case u.CHAMPION_ASSIGNED:{const n=String(t.option);e.length>0?this.positionsByChampionId[n]=e:delete this.positionsByChampionId[n];break}case u.RANDOM_ASSIGNED:this.randomAssignedPositions=e;break;case u.RANDOM_POOL:this.randomPoolPositions=e;break}}openPositionMenu(t,e,n=null){if(!this.positionMenuElement)return;const i=this.normalizePositionMenuTarget(e);if(i===null)return;t.preventDefault(),t.stopPropagation(),this.positionMenuTarget=i,this.renderPositionMenu(),this.positionMenuElement.hidden=!1,this.positionMenuElement.style.left="0px",this.positionMenuElement.style.top="0px";const{left:s,top:a}=this.getPositionMenuCoordinates(t,n);this.positionMenuElement.style.left=`${s}px`,this.positionMenuElement.style.top=`${a}px`,document.addEventListener("pointerdown",this.handlePositionMenuOutsidePointerDown,!0),document.addEventListener("keydown",this.handlePositionMenuKeyDown,!0)}getPositionMenuCoordinates(t,e=null){const n=this.positionMenuElement.getBoundingClientRect();let i=t.clientX,s=t.clientY;if(e&&t.type==="click"&&t.detail===0){const c=e.getBoundingClientRect();i=c.left+c.width/2,s=c.bottom}const a=Math.min(Math.max(i,G),window.innerWidth-n.width-G),r=Math.min(Math.max(s,G),window.innerHeight-n.height-G);return{left:a,top:r}}renderPositionMenu(){if(!this.positionMenuElement||this.positionMenuTarget===null)return;const t=new Set(this.getAllowedPositionsForPositionMenuTarget(this.positionMenuTarget));this.positionMenuElement.querySelectorAll(xo).forEach(e=>{const n=t.has(e.dataset.position);e.classList.toggle("champion-priority-selector__position-option--selected",n),e.setAttribute("aria-pressed",String(n))})}togglePositionMenuPosition(t){if(!this.positionMenuElement||this.positionMenuTarget===null)return;const e=D(t);if(!e)return;const n=this.positionMenuTarget,i=n.option,s=new Set(this.getAllowedPositionsForPositionMenuTarget(n));s.has(e)?s.delete(e):s.add(e);const a=B.map(S=>S.value).filter(S=>s.has(S));this.setAllowedPositionsForPositionMenuTarget(n,a),this.renderPositionMenu();const r=k(i),c=r?this.optionButtons.get(r):null,h=this.selectedPriorityOptions.indexOf(i);c&&h!==-1&&(g(i)?this.getRandomOptionButton(h):this.getChampionOptionButton(i,h)),this.saveConfig()}closePositionMenuOnOutsidePointerDown(t){var e;(e=this.positionMenuElement)!=null&&e.contains(t.target)||this.closePositionMenu()}closePositionMenuOnKeyDown(t){t.key==="Escape"&&this.closePositionMenu()}closePositionMenu(){this.positionMenuElement&&(this.positionMenuElement.hidden=!0,this.positionMenuTarget=null,document.removeEventListener("pointerdown",this.handlePositionMenuOutsidePointerDown,!0),document.removeEventListener("keydown",this.handlePositionMenuKeyDown,!0))}startDrag(t,e){var s;if(t.button===$t){t.preventDefault();return}if(t.button!==Ho)return;this.dragState&&this.clearDragState();const n=k(e),i=n?this.optionButtons.get(n):null;if(i){this.dragState={option:e,pointerId:t.pointerId,startX:t.clientX,startY:t.clientY,active:!1,moved:!1};try{(s=i.setPointerCapture)==null||s.call(i,t.pointerId)}catch{}window.addEventListener("pointermove",this.handleWindowPointerMove),window.addEventListener("pointerup",this.handleWindowPointerUp),window.addEventListener("pointercancel",this.handleWindowPointerCancel)}}removePriorityOptionOnMiddleClick(t,e){t.button===$t&&(t.preventDefault(),t.stopPropagation(),this.removePriorityOption(e))}moveDrag(t){var S;if(!this.dragState||this.dragState.pointerId!==t.pointerId)return;const e=this.dragState.option,n=k(e),i=t.clientX-this.dragState.startX,s=t.clientY-this.dragState.startY,a=Math.hypot(i,s);if(!this.dragState.active){if(a<zo)return;this.dragState.active=!0,n&&((S=this.optionButtons.get(n))==null||S.classList.add("champion-priority-selector__icon--dragging"))}t.preventDefault();const r=this.getDropIndex(t.clientX,e),c=this.selectedPriorityOptions.indexOf(e);if(r===c||r===-1)return;const h=this.getIconPositions();this.movePriorityOptionToIndex(e,r)&&(this.dragState.moved=!0,this.renderSelectedPriorityOptions(h,e))}finishDrag(t){if(!this.dragState||this.dragState.pointerId!==t.pointerId)return;const e=this.dragState.active,n=this.dragState.moved;this.clearDragState(),e&&n&&this.saveConfig()}cancelDrag(t){!this.dragState||this.dragState.pointerId!==t.pointerId||this.clearDragState()}clearDragState(){var s;if(!this.dragState)return;const{option:t,pointerId:e}=this.dragState,n=k(t),i=n?this.optionButtons.get(n):null;i==null||i.classList.remove("champion-priority-selector__icon--dragging");try{(s=i==null?void 0:i.releasePointerCapture)==null||s.call(i,e)}catch{}window.removeEventListener("pointermove",this.handleWindowPointerMove),window.removeEventListener("pointerup",this.handleWindowPointerUp),window.removeEventListener("pointercancel",this.handleWindowPointerCancel),this.dragState=null}getDropIndex(t,e){const n=this.selectedPriorityOptions.filter(i=>i!==e);for(let i=0;i<n.length;i++){const s=k(n[i]),a=s?this.optionButtons.get(s):null;if(!a)continue;const r=a.getBoundingClientRect();if(t<r.left+r.width/2)return i}return n.length}getIconPositions(){const t=new Map;for(const e of this.selectedPriorityOptions){const n=k(e),i=n?this.optionButtons.get(n):null;i&&t.set(n,i.getBoundingClientRect())}return t}animateReorder(t,e){for(const n of this.selectedPriorityOptions){if(n===e)continue;const i=k(n),s=i?this.optionButtons.get(i):null,a=i?t.get(i):null;if(!s||!a||typeof s.animate!="function")continue;const r=s.getBoundingClientRect(),c=a.left-r.left,h=a.top-r.top;c===0&&h===0||s.animate([{transform:`translate(${c}px, ${h}px)`},{transform:"translate(0, 0)"}],{duration:Vo,easing:Go})}}}const Uo=200,nt="auto-select-champ-select-menu--collapsed",Yo="auto-select-champ-select-menu-button-wrapper--open";class qo{constructor(t,e,n){this.element=document.createElement("div"),this.element.classList.add("auto-select-champ-select-menu",nt),this.buttonWrapper=document.createElement("div"),this.buttonWrapper.classList.add("auto-select-champ-select-menu-button-wrapper"),this.headerElement=document.createElement("button"),this.headerElement.classList.add("auto-select-champ-select-menu__header"),this.headerElement.type="button",this.headerElement.setAttribute("aria-label",t),this.headerElement.setAttribute("aria-expanded","false"),this.headerElement.addEventListener("click",()=>this.toggle()),this.contentElement=document.createElement("div"),this.contentElement.classList.add("auto-select-champ-select-menu__content"),this.titleElement=document.createElement("div"),this.titleElement.classList.add("auto-select-champ-select-menu__title"),this.titleElement.textContent=t,this.titleAccessoryElement=null,this.buttonWrapper.append(this.headerElement,this.element),this.contentElement.appendChild(this.titleElement),this.element.appendChild(this.contentElement),this.returnControlsToSocialRoster=e,this.controlElements=n,this.boundCloseOnOutsideInteraction=i=>this.closeOnOutsideInteraction(i),this.buttonObserver=null,this.buttonMountFrame=null,this.buttonMountTask=null,this.hiddenStates=new WeakMap,this.mounted=!1}async mount(){return this.mounted?this.mountButton():(this.mounted=!0,this.controlElements.forEach(t=>{this.hiddenStates.set(t,t.classList.contains("hidden")),t.classList.remove("hidden"),this.contentElement.appendChild(t)}),this.observeButtonContainer(),document.addEventListener("pointerdown",this.boundCloseOnOutsideInteraction,!0),this.mountButton())}unmount(){return this.mounted?(this.mounted=!1,this.stopButtonMounting(),document.removeEventListener("pointerdown",this.boundCloseOnOutsideInteraction,!0),this.setOpen(!1),this.buttonWrapper.remove(),this.restoreHiddenStates(),this.returnControlsToSocialRoster()):this.returnControlsToSocialRoster()}stopButtonMounting(){var t;(t=this.buttonObserver)==null||t.disconnect(),this.buttonObserver=null,this.buttonMountFrame!==null&&(cancelAnimationFrame(this.buttonMountFrame),this.buttonMountFrame=null),this.buttonMountTask=null}restoreHiddenStates(){this.controlElements.forEach(t=>{t.classList.toggle("hidden",this.hiddenStates.get(t)===!0),this.hiddenStates.delete(t)})}isOpen(){return!this.element.classList.contains(nt)}setOpen(t){this.element.classList.toggle(nt,!t),this.buttonWrapper.classList.toggle(Yo,t),this.headerElement.setAttribute("aria-expanded",String(t))}toggle(){this.setOpen(!this.isOpen())}closeOnOutsideInteraction(t){if(!this.isOpen())return;(typeof t.composedPath=="function"?t.composedPath():[]).includes(this.buttonWrapper)||this.buttonWrapper.contains(t.target)||this.setOpen(!1)}observeButtonContainer(){this.buttonObserver=new MutationObserver(()=>this.scheduleMountButton()),this.buttonObserver.observe(document.body,{childList:!0,subtree:!0})}scheduleMountButton(){this.buttonMountFrame===null&&(this.buttonMountFrame=requestAnimationFrame(()=>{this.buttonMountFrame=null,this.mountButton()}))}mountButton(){return this.buttonMountTask||(this.buttonMountTask=this.appendButtonToContainer().finally(()=>{this.buttonMountTask=null})),this.buttonMountTask}async appendButtonToContainer(){let t=dt();for(;this.mounted&&!t;)await v(Uo),t=dt();if(!this.mounted||!t)return;const e=t.querySelector(d.firstChampSelectSquareButton);this.buttonWrapper.parentNode===t&&this.buttonWrapper.nextSibling===e||t.insertBefore(this.buttonWrapper,e)}setTitleAccessory(t){this.titleAccessoryElement=t,(!t.isConnected||t.parentNode!==this.titleElement)&&this.titleElement.appendChild(t)}}class ot{constructor(t,e){this.element=document.createElement(E.radioInputOption),this.element.classList.add("lol-settings-voice-input-mode-option","auto-select-checkbox"),this.element.innerText=t,this.config=null,this.configKey=e,this.setupComplete=!1}setup(){this.syncFromConfig(),this.setupComplete||(this.element.addEventListener("click",()=>this.toggle()),this.setupComplete=!0)}syncFromConfig(){this.config=ae(this.configKey),this.element.toggleAttribute("selected",this.config.enabled===!0)}toggle(){return console.debug("auto-champion-select: Toggling",this.configKey),this.config=x(this.configKey,t=>(t.enabled=!t.enabled,t)),this.element.toggleAttribute("selected",this.config.enabled===!0),this.config.enabled}}const jo=224,Ko="auto-select-settings-trigger",Gt="auto-select-settings-flyout",Ut="auto-select-settings-menu",Wo="auto-select-settings-menu__empty",Xo="auto-select-settings-checkbox",Jo="auto-select-settings-range",Qo="auto-select-settings-range__header",Zo="auto-select-settings-range__label",ti="auto-select-settings-range__value",ei="auto-select-settings-range__track",ni="auto-select-settings-range__fill",oi="auto-select-settings-range__handle",ii="auto-select-settings-range__handle--min",si="auto-select-settings-range__handle--max",U="auto-select-settings-range__handle--dragging";class ai{constructor(t=[]){this.controls=t,this.triggerElements=new Set,this.flyoutElement=this.createFlyoutElement(),this.open=!1,this.activeTriggerElement=null,this.setupComplete=!1,this.boundCloseOnOutsideInteraction=e=>this.closeOnOutsideInteraction(e),this.boundCloseOnEscape=e=>this.closeOnEscape(e),this.boundPositionFlyout=()=>this.positionFlyout(),this.renderControls()}setup(){this.ensureFlyoutConnected(),this.controls.forEach(t=>{var e;return(e=t.setup)==null?void 0:e.call(t)}),this.sync(),!this.setupComplete&&(document.addEventListener("pointerdown",this.boundCloseOnOutsideInteraction,!0),document.addEventListener("keydown",this.boundCloseOnEscape,!0),window.addEventListener("resize",this.boundPositionFlyout),this.setupComplete=!0)}setControls(t){this.controls=t,this.renderControls(),this.setupComplete&&this.controls.forEach(e=>{var n;return(n=e.setup)==null?void 0:n.call(e)}),this.sync()}createTriggerElement(t=l("settings.triggerLabel")){const e=document.createElement("button");return e.type="button",e.classList.add(Ko),e.dataset.autoSelectSettings="trigger",e.setAttribute("aria-label",t),e.setAttribute("aria-expanded","false"),e.title=t,e.addEventListener("click",n=>{n.preventDefault(),n.stopImmediatePropagation(),n.stopPropagation(),this.toggleFlyout(e)},!0),this.triggerElements.add(e),e}createFlyoutElement(){const t=document.createElement("lol-uikit-flyout-frame");t.classList.add("flyout",Gt),t.dataset.autoSelectSettings="flyout",t.setAttribute("orientation","bottom"),t.setAttribute("animated","true"),t.setAttribute("caretless","true"),t.style.position="fixed",t.style.overflow="visible",t.style.display="none";const e=document.createElement("lc-flyout-content"),n=document.createElement("div");return n.classList.add("social-options-menu","active",Ut),e.appendChild(n),t.appendChild(e),t}renderControls(){const t=this.flyoutElement.querySelector(`.${Ut}`);if(t){if(t.replaceChildren(),this.controls.length===0){const e=document.createElement("div");e.classList.add(Wo),e.textContent=l("settings.empty"),t.appendChild(e);return}t.append(...this.controls.map(e=>e.element))}}sync(){this.controls.forEach(t=>{var e;return(e=t.sync)==null?void 0:e.call(t)})}ensureFlyoutConnected(){document.querySelectorAll(`.${Gt}`).forEach(t=>{t!==this.flyoutElement&&t.remove()}),this.flyoutElement.isConnected||document.body.appendChild(this.flyoutElement)}isOpen(){return this.open&&this.flyoutElement.isConnected&&getComputedStyle(this.flyoutElement).display!=="none"}setOpen(t,e=this.activeTriggerElement){this.open=t,this.activeTriggerElement=t?e:null,this.ensureFlyoutConnected(),this.flyoutElement.style.display=t?"block":"none",this.flyoutElement.toggleAttribute("show",t),this.triggerElements.forEach(n=>{n.setAttribute("aria-expanded",String(t&&n===this.activeTriggerElement))}),t&&(this.sync(),this.positionFlyout())}toggleFlyout(t){const e=!this.isOpen()||this.activeTriggerElement!==t;this.setOpen(e,t)}positionFlyout(){if(!this.isOpen()||!this.activeTriggerElement)return;const t=this.activeTriggerElement.getBoundingClientRect(),e=Math.min(jo,window.innerWidth-16);this.flyoutElement.style.width=`${e}px`;const n=this.flyoutElement.getBoundingClientRect(),i=t.right-e+4,s=Math.max(8,Math.min(window.innerWidth-e-8,i)),a=t.bottom+4,r=a+n.height<=window.innerHeight-8?a:Math.max(8,t.top-n.height-4);this.flyoutElement.style.left=`${Math.round(s)}px`,this.flyoutElement.style.top=`${Math.round(r)}px`}closeOnOutsideInteraction(t){if(!this.isOpen())return;const e=typeof t.composedPath=="function"?t.composedPath():[],n=[...this.triggerElements].some(s=>e.includes(s)),i=e.includes(this.flyoutElement);!n&&!i&&this.setOpen(!1)}closeOnEscape(t){t.key==="Escape"&&this.isOpen()&&this.setOpen(!1)}}class it{constructor(t,e){this.label=t,this.options=e,this.element=document.createElement(E.radioInputOption),this.element.classList.add("lol-settings-voice-input-mode-option",Xo),this.element.textContent=t,this.element.title=t,this.setupComplete=!1}setup(){this.sync(),!this.setupComplete&&(this.element.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),this.options.toggle(),this.sync()}),this.setupComplete=!0)}sync(){this.element.toggleAttribute("selected",this.options.isSelected()===!0)}}class ri{constructor(t,e){this.label=t,this.options=e,this.dragHandle=null,this.dragStartedCollapsed=!1,this.setupComplete=!1,this.boundPointerMove=i=>this.onPointerMove(i),this.boundPointerUp=()=>this.stopDragging(),this.element=document.createElement("div"),this.element.classList.add(Jo);const n=document.createElement("div");n.classList.add(Qo),this.labelElement=document.createElement("span"),this.labelElement.classList.add(Zo),this.labelElement.textContent=t,this.valueElement=document.createElement("span"),this.valueElement.classList.add(ti),this.trackElement=document.createElement("div"),this.trackElement.classList.add(ei),this.fillElement=document.createElement("div"),this.fillElement.classList.add(ni),this.minHandleElement=this.createHandle("min"),this.maxHandleElement=this.createHandle("max"),n.append(this.labelElement,this.valueElement),this.trackElement.append(this.fillElement,this.minHandleElement,this.maxHandleElement),this.element.append(n,this.trackElement)}setup(){this.sync(),!this.setupComplete&&(this.trackElement.addEventListener("pointerdown",t=>this.onTrackPointerDown(t)),this.minHandleElement.addEventListener("pointerdown",t=>this.startDragging(t,"min")),this.maxHandleElement.addEventListener("pointerdown",t=>this.startDragging(t,"max")),this.minHandleElement.addEventListener("keydown",t=>this.onHandleKeyDown(t,"min")),this.maxHandleElement.addEventListener("keydown",t=>this.onHandleKeyDown(t,"max")),this.setupComplete=!0)}createHandle(t){const e=document.createElement("button");return e.type="button",e.classList.add(oi,t==="min"?ii:si),e.setAttribute("aria-label",l("settings.handleLabel",{label:this.label,handle:l(`settings.handles.${t}`)})),e.setAttribute("aria-valuemin",String(this.options.min)),e.setAttribute("aria-valuemax",String(this.options.max)),e.setAttribute("role","slider"),e}getNormalizedValue(){const t=this.options.getValue(),e=this.snapValue(t.min),n=this.snapValue(t.max);return{min:Math.min(e,n),max:Math.max(e,n)}}snapValue(t){const e=this.options.min,n=this.options.max,i=this.options.step,s=Number(t),a=Number.isFinite(s)?s:e,r=Math.round((a-e)/i)*i+e;return Math.max(e,Math.min(n,r))}sync(){const t=this.getNormalizedValue(),e=this.valueToPercent(t.min),n=this.valueToPercent(t.max);this.valueElement.textContent=this.options.formatValue(t),this.fillElement.style.left=`${e}%`,this.fillElement.style.width=`${n-e}%`,this.minHandleElement.style.left=`${e}%`,this.maxHandleElement.style.left=`${n}%`,this.syncHandle(this.minHandleElement,t.min),this.syncHandle(this.maxHandleElement,t.max)}syncHandle(t,e){t.setAttribute("aria-valuenow",String(e)),t.setAttribute("aria-valuetext",this.options.formatValue({min:e,max:e}))}valueToPercent(t){const e=this.options.max-this.options.min;return e<=0?0:(t-this.options.min)/e*100}clientXToValue(t){const e=this.trackElement.getBoundingClientRect(),n=e.width<=0?0:(t-e.left)/e.width;return this.snapValue(this.options.min+(this.options.max-this.options.min)*n)}onTrackPointerDown(t){if(t.target===this.minHandleElement||t.target===this.maxHandleElement)return;const e=this.clientXToValue(t.clientX),n=this.getNormalizedValue(),i=Math.abs(e-n.min)<=Math.abs(e-n.max)?"min":"max";this.startDragging(t,i),this.setHandleValue(i,e)}startDragging(t,e){t.preventDefault(),t.stopPropagation(),this.dragHandle=e;const n=this.getNormalizedValue();this.dragStartedCollapsed=n.min===n.max,this.syncDraggingHandle(),document.addEventListener("pointermove",this.boundPointerMove,!0),document.addEventListener("pointerup",this.boundPointerUp,!0)}onPointerMove(t){if(!this.dragHandle)return;t.preventDefault();const e=this.clientXToValue(t.clientX),n=this.resolveDragHandleForValue(e);this.dragHandle=n,this.syncDraggingHandle(),this.setHandleValue(n,e)}stopDragging(){this.clearDraggingHandle(),this.dragHandle=null,this.dragStartedCollapsed=!1,document.removeEventListener("pointermove",this.boundPointerMove,!0),document.removeEventListener("pointerup",this.boundPointerUp,!0)}syncDraggingHandle(){this.minHandleElement.classList.toggle(U,this.dragHandle==="min"),this.maxHandleElement.classList.toggle(U,this.dragHandle==="max")}clearDraggingHandle(){this.minHandleElement.classList.remove(U),this.maxHandleElement.classList.remove(U)}onHandleKeyDown(t,e){const n=this.getNormalizedValue();let s=e==="min"?n.min:n.max;if(t.key==="ArrowLeft"||t.key==="ArrowDown")s-=this.options.step;else if(t.key==="ArrowRight"||t.key==="ArrowUp")s+=this.options.step;else if(t.key==="Home")s=this.options.min;else if(t.key==="End")s=this.options.max;else return;t.preventDefault(),this.setHandleValue(e,s)}resolveDragHandleForValue(t){if(!this.dragHandle)return"min";if(!this.dragStartedCollapsed)return this.dragHandle;const e=this.getNormalizedValue();return t<e.min?"min":t>e.max?"max":this.dragHandle}setHandleValue(t,e){const n=this.getNormalizedValue(),i=this.snapValue(e),s=t==="min"?{min:Math.min(i,n.max),max:n.max}:{min:n.min,max:Math.max(i,n.min)};this.options.setValue(s),this.sync()}}const li="auto-select-social-roster-section",Yt="auto-select-social-roster-section__header";class ci{constructor(t,...e){this.element=document.createElement(E.socialRosterGroup),this.element.classList.add(li),this.element.addEventListener("post-render",()=>this.onPostRender()),this.element.addEventListener("click",()=>this.onClick()),this.label=t,this.collapsibleElements=e,this.headerAccessoryElement=null,this.waitRender()}waitRender(){new MutationObserver((t,e)=>{if(this.element.querySelector(d.socialRosterGroupLabel)){const n=new Event("post-render");this.element.dispatchEvent(n),e.disconnect()}}).observe(this.element,{childList:!0})}onPostRender(){this.element.querySelector(d.socialRosterGroupLabel).innerText=this.label;const t=this.element.querySelector(d.socialRosterGroupHeader);t==null||t.removeAttribute("draggable"),t&&this.headerAccessoryElement&&(t.classList.add(Yt),t.appendChild(this.headerAccessoryElement))}setHeaderAccessory(t){this.headerAccessoryElement=t;const e=this.element.querySelector(d.socialRosterGroupHeader);e&&(e.classList.add(Yt),e.appendChild(t))}onClick(){var t;this.collapsibleElements.forEach(e=>{e.closest(".auto-select-champ-select-menu")||e.classList.toggle("hidden")}),(t=this.element.querySelector(d.socialRosterGroupArrow))==null||t.toggleAttribute("open")}}function ye(o){o&&Toast.success(o)}function pt(o){o&&Toast.error(o)}function di(o,t){return typeof Toast.promise=="function"?Toast.promise(o,t):o}const St="Balaclava: Auto Champion Select";function At(){return l("commandBar.group")}function hi(o){return typeof(o==null?void 0:o.then)=="function"}class Ct{constructor({id:t,name:e,legend:n,tags:i,group:s,callback:a,toasts:r}){this.id=t,this.name=e,this.legend=n,this.tags=i,this.group=s,this.perform=this.perform.bind(this),this.callback=a,this.toasts=r}perform(){try{const t=this.callback();if(hi(t))return di(t,{loading:this.toasts.loading,success:this.toasts.success,error:this.toasts.error});const e=this.toasts.success||(t?this.toasts.on:this.toasts.off);ye(e)}catch(t){pt(this.toasts.error),console.error(t)}}}class Pe extends Ct{constructor(t,e,n){super({id:`${e}Switch`,name:()=>l("commandBar.autoSwitchName",{name:t,state:P(e).enabled?l("states.on"):l("states.off")}),legend:()=>P(e).enabled?l("commandBar.turnOff"):l("commandBar.turnOn"),tags:[St,e,"switch"],group:At(),callback:n,toasts:{on:l("commandBar.autoSwitchOn",{name:t}),off:l("commandBar.autoSwitchOff",{name:t}),error:l("commandBar.autoSwitchError",{name:t})}})}}function ui(o){return x(o,e=>(e.force=!e.force,e)).force}class Se extends Ct{constructor(t){const e=t==="controladoPick",n=l(e?"commandBar.forcePickName":"commandBar.forceBanName");super({id:`${t}ForceSwitch`,name:()=>l("commandBar.forceSwitchName",{name:n,state:P(t).force?l("states.on"):l("states.off")}),legend:()=>l(e?"commandBar.forcePickLegend":"commandBar.forceBanLegend"),tags:[St,t,"force","intent","switch"],group:At(),callback:()=>ui(t),toasts:{on:l("commandBar.forceSwitchOn",{name:n}),off:l("commandBar.forceSwitchOff",{name:n}),error:l("commandBar.forceSwitchError",{name:n})}})}}class pi extends Ct{constructor(t){super({id:"RefreshDropdowns",name:()=>l("commandBar.refreshChampionsName"),legend:()=>l("commandBar.refreshChampionsLegend"),tags:[St,"refresh"],group:At(),callback:t,toasts:{success:l("commandBar.refreshChampionsSuccess"),error:l("commandBar.refreshChampionsError")}})}}class mi extends Pe{constructor(t){super(l("actions.pick"),"controladoPick",t)}}class gi extends Pe{constructor(t){super(l("actions.ban"),"controladoBan",t)}}class fi extends Se{constructor(){super("controladoPick")}}class yi extends Se{constructor(){super("controladoBan")}}function Pi(o){for(const t of o)CommandBar.addAction(t)}const Si=200,Ai=6e4,qt=2e3,Ci=".ready-check-root-element",bi="#lol-uikit-layer-manager-wrapper > .modal",Ei=".auto-select-champ-select-menu__header",f=Object.freeze({autoAccept:"controladoAutoAccept",actionDelay:"controladoActionDelay",pick:"controladoPick",ban:"controladoBan"});function Oi(){return P(f.autoAccept).enabled===!0}function Ae(){return P(f.autoAccept).hideAutoAcceptPrompt===!0}function wi(){const o=P(f.autoAccept);return o.enabled===!0&&o.hideAutoAcceptPrompt===!0}function Ti(){const o=Ae();x(f.autoAccept,t=>(t.hideAutoAcceptPrompt=!o,t))}function Ce(o){return o==="pick"?f.pick:f.ban}function jt(o){return P(Ce(o)).force===!0}function Kt(o){x(Ce(o),t=>(t.force=t.force!==!0,t))}function Ii(){const o=P(f.actionDelay),{minMs:t,maxMs:e}=$(o.minMs,o.maxMs);return{min:t,max:e}}function ki(o){const{minMs:t,maxMs:e}=$(o.min,o.max);x(f.actionDelay,n=>(n.minMs=t,n.maxMs=e,n))}function Li(o){const{minMs:t,maxMs:e}=$(o.min,o.max);return t===0&&e===0?l("settings.actionDelayValue.instant"):t===e?l("settings.actionDelayValue.exact",{delay:z(e)}):t===0?l("settings.actionDelayValue.upTo",{delay:z(e)}):l("settings.actionDelayValue.range",{min:z(t),max:z(e)})}class _i{constructor(t){this.isEnabled=t,this.observer=null,this.hiddenModal=null,this.hiddenModalStyles=new WeakMap,this.sync=this.sync.bind(this)}start(){this.observer||(this.observer=new MutationObserver(()=>this.sync()),this.observer.observe(document.body,{childList:!0,subtree:!0}),this.sync())}sync(){const t=vi();if(!t){this.restore();return}if(!this.isEnabled()){this.restore();return}this.hide(t)}hide(t){this.hiddenModal!==t&&(this.restore(),this.hiddenModal=t,this.hiddenModalStyles.set(t,{display:t.style.getPropertyValue("display"),displayPriority:t.style.getPropertyPriority("display"),pointerEvents:t.style.getPropertyValue("pointer-events"),pointerEventsPriority:t.style.getPropertyPriority("pointer-events")}),t.style.setProperty("display","none","important"),t.style.setProperty("pointer-events","none","important"))}restore(){if(!this.hiddenModal)return;const t=this.hiddenModal,e=this.hiddenModalStyles.get(t);Wt(t,"display",e==null?void 0:e.display,e==null?void 0:e.displayPriority),Wt(t,"pointer-events",e==null?void 0:e.pointerEvents,e==null?void 0:e.pointerEventsPriority),this.hiddenModalStyles.delete(t),this.hiddenModal=null}}function vi(){const o=document.querySelector(Ci);return(o==null?void 0:o.closest(bi))||null}function Wt(o,t,e,n){e?o.style.setProperty(t,e,n||""):o.style.removeProperty(t)}async function Ri(o){function t(){return Oi()?!1:(o.restore(),!0)}if(t()||(console.debug(`auto-champion-select(auto-accept): Ready check detected, accepting in ${qt}ms...`),await v(qt),t()))return;let e=!1;try{e=await Mi()}catch(n){throw o.restore(),pt(l("toasts.readyCheckAcceptFailed")),n}e?ye(l("toasts.readyCheckAccepted")):(o.restore(),pt(l("toasts.readyCheckAcceptFailed")))}async function Mi(){const o=await b("POST",m.readyCheckAccept);return o.ok?(console.debug("auto-champion-select(auto-accept): Accepted ready check"),!0):(console.error("auto-champion-select(auto-accept): Failed to accept ready check",o),!1)}async function Ni(o){const t=await b("GET",m.gameflowPhase),e=t.ok?await t.json():null;o.handleGameflowPhase(e)}function Bi({championSelect:o,champSelectControlsMenu:t,readyCheckModalSuppressor:e,setupChampionSelectors:n}){let i=0;return async function(c){const h=++i;try{await s(c,h)}catch(S){console.error("auto-champion-select: Failed to handle gameflow phase",S)}};async function s(r,c){r==="ReadyCheck"?Ri(e).catch(h=>{console.error("auto-champion-select(auto-accept): Failed to handle ready check",h)}):e.restore(),await a(r),c===i&&await n()}async function a(r){r==="ChampSelect"?(o.mount(),await t.mount()):(o.unmount(),await t.unmount())}}function Di(){const o=new Qe,t=new ot(l("toggles.autoAccept"),f.autoAccept),e=new ot(l("toggles.pick"),f.pick),n=new Vt(l("selectors.pickPlaceholder"),f.pick,je,{enablePositionRestrictions:!0,enableRandomAssignedPositionRestrictions:!0,enableBraveryOption:!0,enableRandomPoolPositionFilters:!0}),i=new ot(l("toggles.ban"),f.ban),s=new Vt(l("selectors.banPlaceholder"),f.ban,le,{enableRandomPoolPositionFilters:!0}),a=Fi(n,s),r=$i(t,e,i),c=new ai,h=new ci(l("plugin.socialRosterTitle"),a,r);return h.setHeaderAccessory(c.createTriggerElement()),{championSelect:o,autoAcceptToggle:t,pickToggle:e,banToggle:i,pickChampionSelector:n,banChampionSelector:s,selectorsContainer:a,checkboxesContainer:r,pluginSection:h,settingsMenu:c,championSelectors:[n,s]}}function xi(o){return[new ri(l("settings.actionDelay"),{min:Qt,max:Zt,step:st,getValue:Ii,setValue:ki,formatValue:Li}),new it(l("settings.forcePick"),{isSelected:()=>jt("pick"),toggle:()=>Kt("pick")}),new it(l("settings.forceBan"),{isSelected:()=>jt("ban"),toggle:()=>Kt("ban")}),new it(l("settings.hideAutoAcceptPrompt"),{isSelected:()=>Ae(),toggle:()=>{Ti(),o.sync()}})]}function Fi(...o){const t=document.createElement("div");return t.append(...o.map(e=>e.element)),t}function $i(...o){const t=document.createElement("div");return t.classList.add("auto-select-checkboxes-div"),t.append(...o.map(e=>e.element)),t}function Hi({pluginSection:o,checkboxesContainer:t,selectorsContainer:e}){let n=null,i=0,s=()=>!1;async function a(r){let c=_t();for(;!c;){if(s()||r!==i)return;await v(Si),c=_t()}s()||r!==i||c.append(o.element,t,e)}return{setIsChampSelectControlsMounted(r){s=r},returnControlsToSocialRoster(){if(n)return n;const r=++i;return n=a(r).catch(c=>console.error("auto-champion-select: Failed to return controls to social roster",c)).finally(()=>{n=null}),n}}}function zi({autoAcceptToggle:o,pickToggle:t,banToggle:e,readyCheckModalSuppressor:n}){o.setup(),o.element.addEventListener("click",()=>n.sync()),t.setup(),e.setup()}async function Vi(o){await Promise.all(o.map(t=>t.setup()))}async function Gi(o){await Promise.all(o.map(t=>t.refresh()))}function Ui(){const o=Di(),t=new _i(wi);o.settingsMenu.setControls(xi(t));const e=Hi(o),n=new qo(l("plugin.champSelectMenuTitle"),e.returnControlsToSocialRoster,[o.checkboxesContainer,o.selectorsContainer]);n.setTitleAccessory(o.settingsMenu.createTriggerElement()),e.setIsChampSelectControlsMounted(()=>n.mounted);const i={...o,champSelectControlsMenu:n,readyCheckModalSuppressor:t,setupToggles:()=>zi({...o,readyCheckModalSuppressor:t}),setupSettingsMenu:()=>o.settingsMenu.setup(),setupChampionSelectors:()=>Vi(o.championSelectors),refreshChampionSelectors:()=>Gi(o.championSelectors),refreshPickChampionSelector:async()=>{await o.pickChampionSelector.refresh()}};return i.handleGameflowPhase=Bi(i),i}function Yi(o){bt(m.gameflowPhase,t=>{o.handleGameflowPhase(t.data)}),bt(m.wallet,async t=>{if(t.eventType==="Update"){console.debug("auto-champion-select(wallet): Refreshing champion selectors...");try{await o.refreshPickChampionSelector()}catch(e){console.error("auto-champion-select(wallet): Failed to refresh champion selectors",e)}}})}function qi({pickToggle:o,banToggle:t,refreshChampionSelectors:e}){Pi([new mi(()=>o.toggle()),new gi(()=>t.toggle()),new fi,new yi,new pi(e)])}function ji(o){let t=null,e=null;function n(){e==null||e.disconnect(),e=null,t!==null&&(cancelAnimationFrame(t),t=null)}const i=setTimeout(()=>{n()},Ai);function s(){if(!(dt()!==null))return;clearTimeout(i),n(),document.querySelector(Ei)!==null||o.handleGameflowPhase("ChampSelect")}e=new MutationObserver(()=>{t===null&&(t=requestAnimationFrame(()=>{t=null,s()}))}),e.observe(document.body,{childList:!0,subtree:!0}),s()}async function Ki(){await Io();const o=Ui();o.setupToggles(),o.setupSettingsMenu(),o.readyCheckModalSuppressor.start(),qi(o),Yi(o),await Ni(o),ji(o),console.debug(`auto-champion-select(${be}): Report bugs to Balaclava#1912`)}let Xt=!1;function Jt(){Xt||(Xt=!0,Ki().catch(o=>console.error("auto-champion-select: Failed to initialize",o)))}document.readyState==="loading"?window.addEventListener("load",Jt,{once:!0}):Jt();export{Jt as load};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "auto-champion-select",
3
- "version": "1.9.6",
3
+ "version": "1.11.0",
4
4
  "description": "Pick or ban automatically! 🐧",
5
5
  "author": "balaclava",
6
6
  "repository": {