auto-champion-select 1.6.2 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.br.md +2 -2
- package/README.md +1 -0
- package/dist/index.js +4 -4
- package/package.json +2 -2
package/README.br.md
CHANGED
|
@@ -18,8 +18,8 @@ Esse é o meu primeiro projeto utilizando JavaScript :)
|
|
|
18
18
|
|
|
19
19
|
## 📍 Novidades
|
|
20
20
|
|
|
21
|
-
-
|
|
22
|
-
-
|
|
21
|
+
- Menu na seleção de campeões
|
|
22
|
+
- Filtrar campeões
|
|
23
23
|
|
|
24
24
|
## Dependências
|
|
25
25
|
|
package/README.md
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
(function(){"use strict";try{if(typeof document<"u"){var
|
|
1
|
+
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode('.dropdown-champions-default{position:inherit;width:-webkit-fill-available}.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}.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;z-index:10000;flex:0 0 38px;box-sizing:border-box}.auto-select-champ-select-menu__header{position:relative;display:block;width:38px;height:32px;border:none;background-image:linear-gradient(#1e2328,#1e2328),url(/fe/lol-social/chat_button.png);background-position:center,0 0;background-repeat:no-repeat;background-size:30px 24px,cover;box-shadow:none;cursor:pointer;outline:none;padding:0}.auto-select-champ-select-menu-button-wrapper:after{content:"🐧 New";position:absolute;right:-17px;top:-8px;z-index:2;display:flex;align-items:center;justify-content:center;height:16px;box-sizing:border-box;min-width:44px;padding:0 5px;border-radius:3px;background-color:#c89b3c;box-shadow:#010a1380 0 0 2px;color:#010a13;filter:brightness(1.5) saturate(1.5);font-family:var(--font-body);font-size:12px;font-weight:700;line-height:16px;pointer-events:none}.auto-select-champ-select-menu__header:hover{background-position:center,0 -32px}.auto-select-champ-select-menu__header:active{background-position:center,0 -64px}.auto-select-champ-select-menu-button-wrapper--open .auto-select-champ-select-menu__header{background-position:center,0 -96px}.auto-select-champ-select-menu-button-wrapper--open .auto-select-champ-select-menu__header:hover{background-position:center,0 -128px}.auto-select-champ-select-menu-button-wrapper--open .auto-select-champ-select-menu__header:active{background-position:center,0 -160px}.auto-select-champ-select-menu__header:before{content:"";position:absolute;left:50%;top:50%;width:20px;height:20px;background:#c8aa6e;transform:translate(-50%,-50%);-webkit-mask-image:url(/fe/lol-static-assets/images/nav-icon-collections.svg);-webkit-mask-position:center;-webkit-mask-repeat:no-repeat;-webkit-mask-size:20px 20px}.auto-select-champ-select-menu__header:hover:before,.auto-select-champ-select-menu-button-wrapper--open .auto-select-champ-select-menu__header:before{background:#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--collapsed .auto-select-champ-select-menu__content{display:none}')),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
|
|
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.
|
|
7
|
+
* @version 1.7.0
|
|
8
8
|
* @license GPL-3.0-or-later
|
|
9
9
|
*/
|
|
10
|
-
import{sleep as u,request as
|
|
10
|
+
import{sleep as u,request as d,linkEndpoint as E}from"https://cdn.jsdelivr.net/npm/balaclava-utils@latest";const B={enabled:!1},D={enabled:!1,force:!1,champions:[21,21]},R={enabled:!1,force:!1,champions:[21,21]},g={controladoAutoAccept:B,controladoPick:D,controladoBan:R};class ${constructor(){this.session=null,this.actions=null,this.localPlayerCellId=null,this.teamIntents=null,this.allPicks=null,this.allBans=null,this.mounted=!1,this.watch()}mount(){this.mounted=!0}unmount(){this.mounted=!1}async watch(){for(;;)this.mounted&&(await this.updateProperties(),await this.task()),await u(300)}async updateProperties(){const t=await d("GET","/lol-champ-select/v1/session");this.session=await t.json(),this.actions=this.session.actions,this.localPlayerCellId=this.session.localPlayerCellId,this.allPicks=[...this.session.myTeam,...this.session.theirTeam],this.allBans=[...this.session.bans.myTeamBans,...this.session.bans.theirTeamBans],this.teamIntents=this.session.myTeam.map(e=>e.championPickIntent)}async task(){const t=DataStore.get("controladoPick")||g.controladoPick,e=DataStore.get("controladoBan")||g.controladoBan;if(!t.enabled&&!e.enabled)return;const o=this.getLocalPlayerSubActions();if(o.length===0){console.debug("auto-champion-select: No local player sub actions found, skipping..."),this.unmount();return}for(const n of o){const i=n.type==="pick"?t:e;if(i.enabled)for(const a of i.champions){if(this.allBans.some(c=>c==a)){console.debug(`auto-champion-select: Banning ${a} but it's already banned, skipping...`);continue}if(n.type==="ban"&&this.teamIntents.some(c=>c==a))if(i.force===!0)console.debug(`auto-champion-select: Banning ${a} but it's already picked, forcing...`);else{console.debug(`auto-champion-select: Banning ${a} but it's already picked, skipping...`);continue}if(n.type==="pick"&&this.allPicks.some(c=>c.championId==a))if(i.force===!0)console.debug(`auto-champion-select: Picking ${a} but it's already picked, forcing...`);else{console.debug(`auto-champion-select: Picking ${a} but it's already picked, skipping...`);continue}if(console.debug(`auto-champion-select: Trying to ${n.type} ${a}...`),(await this.selectChampion(n.id,a)).ok)break;return}}}getLocalPlayerSubActions(){return this.actions.flat().filter(t=>t.actorCellId===this.localPlayerCellId&&t.completed===!1).sort((t,e)=>{const o=t.type==="pick"?0:1,n=e.type==="pick"?0:1;return o-n})}selectChampion(t,e){const o=`/lol-champ-select/v1/session/actions/${t}`;return d("PATCH",o,{body:{championId:e,completed:!0}})}}class w{constructor(t,e,o,n){this.element=document.createElement("lol-uikit-framed-dropdown"),this.element.classList.add("dropdown-champions-default"),this.element.classList.add("dropdown-drop-up"),this.text=t,this.config=null,this.configKey=e,this.configIndex=o,this.championsFunction=n,this.champions=null,this.setupInFlight=null,this.setupPending=!1}async setup(){return this.setupPending=!0,this.setupInFlight||(this.setupInFlight=this.runSetupLoop()),this.setupInFlight}async runSetupLoop(){try{for(;this.setupPending;)this.setupPending=!1,await this.performSetup()}finally{this.setupInFlight=null}if(this.setupPending)return this.setup()}async performSetup(){this.champions=await this.championsFunction(),this.config=DataStore.get(this.configKey)||g[this.configKey],this.champions.some(o=>this.config.champions[this.configIndex]===o.id)||(this.config.champions[this.configIndex]=this.champions[0].id,DataStore.set(this.configKey,this.config)),this.element.replaceChildren();const t=new Set;for(const o of this.champions){if(t.has(o.name))continue;const n=this.getNewOption(o);this.element.appendChild(n),t.add(o.name)}const e=await this.waitForDropdownRender();e&&(this.ensureSearchPlaceholder(e),this.applyShadowStyles())}getNewOption(t){const e=document.createElement("lol-uikit-dropdown-option");return e.setAttribute("slot","lol-uikit-dropdown-option"),e.addEventListener("click",()=>{this.config.champions[this.configIndex]=t.id,DataStore.set(this.configKey,this.config),console.debug(this.configKey,DataStore.get(this.configKey)),this.shadowRoot(o=>{const n=o.querySelector("#controlado-search");n&&(n.value="",this.filterOptions(""));const i=o.querySelector(".controlado-filter-icon--trash");i&&i.classList.remove("controlado-filter-icon--trash")})}),this.config.champions[this.configIndex]===t.id&&e.setAttribute("selected","true"),e.innerText=t.name,e}getNewPlaceholder(){const t=document.createElement("div");t.classList.add("controlado-tag","controlado-tag--search"),t.id="controlado-placeholder";const e=document.createElement("input");e.classList.add("controlado-filter-input"),e.id="controlado-search",e.type="text",e.placeholder=this.text;const o=document.createElement("span");return o.classList.add("controlado-filter-icon"),o.addEventListener("click",n=>{o.classList.contains("controlado-filter-icon--trash")&&(e.value="",this.filterOptions(""),o.classList.toggle("controlado-filter-icon--trash",!1))}),e.addEventListener("input",n=>{this.ensureIsOpened(),this.filterOptions(n.target.value),o.classList.toggle("controlado-filter-icon--trash",!!n.target.value)}),["pointerdown","click"].forEach(n=>{t.addEventListener(n,i=>i.stopPropagation()),o.addEventListener(n,i=>i.stopPropagation())}),["pointerdown","focusin"].forEach(n=>{e.addEventListener(n,i=>i.stopPropagation(),!0)}),t.appendChild(o),t.appendChild(e),t}async waitForDropdownRender(){for(let t=0;t<50;t++){const e=this.element.shadowRoot;if(this.element.isConnected&&(e!=null&&e.querySelector(".ui-dropdown-current")))return e;await u(100)}return null}ensureSearchPlaceholder(t){if(t.querySelector("#controlado-placeholder"))return;const e=t.querySelector(".ui-dropdown-current");e&&(e.style="display: flex; justify-content: space-between;",e.appendChild(this.getNewPlaceholder()))}filterOptions(t){this.element.querySelectorAll("lol-uikit-dropdown-option").forEach(o=>{o.innerText.toLowerCase().includes(t.toLowerCase())?o.style.display="":o.style.display="none"})}refresh(){return this.setup()}isOpen(){return this.element.classList.contains("active")}ensureIsOpened(){this.isOpen()||this.shadowRoot(t=>{const e=t.querySelector(".ui-dropdown-current");e&&e.click()})}shadowRoot(t){const e=this.element.shadowRoot;e&&t(e)}applyShadowStyles(){this.shadowRoot(t=>{this.injectTagStyles(t);const e=t.querySelector(".ui-dropdown-current");e&&(e.style.paddingRight="28px");const o=t.querySelector(".ui-dropdown-options-container");o&&(o.style.top="auto",o.style.bottom="100%",o.style.transformOrigin="bottom",o.style.transform="translateY(0)");const n=t.querySelector("lol-uikit-scrollable");n&&(n.style.maxHeight="250px")})}injectTagStyles(t){if(t.querySelector("style[data-controlado='dropdown-tags']"))return;const e=document.createElement("style");e.dataset.controlado="dropdown-tags",e.textContent=`
|
|
11
11
|
.controlado-filter-icon {
|
|
12
12
|
cursor: default;
|
|
13
13
|
display: inline-block;
|
|
@@ -64,4 +64,4 @@ import{sleep as u,request as c,linkEndpoint as S}from"https://cdn.jsdelivr.net/n
|
|
|
64
64
|
text-transform: none;
|
|
65
65
|
font-weight: 500;
|
|
66
66
|
}
|
|
67
|
-
`,
|
|
67
|
+
`,t.appendChild(e)}}class S{constructor(t,e){this.element=document.createElement("lol-uikit-radio-input-option"),this.element.classList.add("lol-settings-voice-input-mode-option","auto-select-checkbox"),this.element.innerText=t,this.config=null,this.configKey=e}setup(){this.config=DataStore.get(this.configKey)||g[this.configKey],this.config.enabled&&this.element.setAttribute("selected","true"),this.element.addEventListener("click",()=>this.toggle())}toggle(){return console.debug("auto-champion-select: Toggling",this.configKey),this.config.enabled=!this.config.enabled,DataStore.set(this.configKey,this.config),this.element.toggleAttribute("selected"),this.config.enabled}}class q{constructor(t,e,...o){this.element=document.createElement("div"),this.element.classList.add("auto-select-champ-select-menu","auto-select-champ-select-menu--collapsed"),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.title=t,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.restoreControls=e,this.controlElements=o,this.boundCloseOnOutsideInteraction=n=>this.closeOnOutsideInteraction(n),this.buttonObserver=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(){var t;return this.mounted?(this.mounted=!1,(t=this.buttonObserver)==null||t.disconnect(),this.buttonObserver=null,this.buttonMountTask=null,document.removeEventListener("pointerdown",this.boundCloseOnOutsideInteraction,!0),this.setOpen(!1),this.buttonWrapper.remove(),this.restoreHiddenStates(),this.restoreControls()):this.restoreControls()}isOpen(){return!this.element.classList.contains("auto-select-champ-select-menu--collapsed")}setOpen(t){this.element.classList.toggle("auto-select-champ-select-menu--collapsed",!t),this.buttonWrapper.classList.toggle("auto-select-champ-select-menu-button-wrapper--open",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.mountButton()),this.buttonObserver.observe(document.body,{childList:!0,subtree:!0})}mountButton(){return this.buttonMountTask||(this.buttonMountTask=this.appendButtonToContainer().finally(()=>{this.buttonMountTask=null})),this.buttonMountTask}async appendButtonToContainer(){let t=document.querySelector(".bottom-right-buttons");for(;this.mounted&&!t;)await u(200),t=document.querySelector(".bottom-right-buttons");if(!this.mounted||!t)return;const e=t.querySelector("lol-social-chat-toggle-button, .missions-tracker-button-component, .champ-select-voice-button-wrapper");this.buttonWrapper.parentNode===t&&this.buttonWrapper.nextSibling===e||t.insertBefore(this.buttonWrapper,e)}restoreHiddenStates(){this.controlElements.forEach(t=>{t.classList.toggle("hidden",this.hiddenStates.get(t)===!0),this.hiddenStates.delete(t)})}}class M{constructor(t,...e){this.element=document.createElement("lol-social-roster-group"),this.element.addEventListener("post-render",()=>this.onPostRender()),this.element.addEventListener("click",()=>this.onClick()),this.label=t,this.hiddableElements=e,this.waitRender()}waitRender(){new MutationObserver((t,e)=>{if(this.element.querySelector("span")){const o=new Event("post-render");this.element.dispatchEvent(o),e.disconnect()}}).observe(this.element,{childList:!0})}onPostRender(){this.element.querySelector("span").innerText=this.label,this.element.querySelector(".group-header").removeAttribute("graggable")}onClick(){this.hiddableElements.forEach(t=>{t.closest(".auto-select-champ-select-menu")||t.classList.toggle("hidden")}),this.element.querySelector(".arrow").toggleAttribute("open")}}const h="Balaclava: Auto Champion Select";class C{constructor(t,e,o,n,i,a,l){this.id=t,this.name=e,this.legend=o,this.tags=n,this.group=i,this.perform=this.perform.bind(this),this.callback=a,this.toasts=l}perform(){if(typeof this.callback.then=="function")return Toast.promise(this.callback,{loading:this.toasts.loading,success:this.toasts.success,error:this.toasts.error});try{const t=this.callback();Toast.success(this.toasts.success||(t?this.toasts.on:this.toasts.off))}catch(t){Toast.error(this.toasts.error),console.error(t)}}}class O extends C{constructor(t,e,o){super(`${e}Switch`,()=>{var n;return`Auto ${t} [${(n=DataStore.get(e))!=null&&n.enabled?"ON":"OFF"}]`},()=>{var n;return(n=DataStore.get(e))!=null&&n.enabled?"Turn OFF":"Turn ON"},[h,e,"switch"],h,o,{on:`Auto ${t} is ON!`,off:`Auto ${t} is OFF!`,error:`Failed to toggle Auto ${t}. Check console.`})}}class L extends C{constructor(t,e){super(`${e}ForceSwitch`,()=>{var o;return`Force ${t} [${(o=DataStore.get(e))!=null&&o.force?"ON":"OFF"}]`},()=>`Ignore team intent and force ${t} the selected champion`,[h,e,"force","switch"],h,()=>this.switchDataStore(e),{on:`Force ${t} is ON!`,off:`Force ${t} is OFF!`,error:`Failed to toggle Force ${t}. Check console.`})}switchDataStore(t){const e=DataStore.get(t);return e.force=!e.force,DataStore.set(t,e),e.force}}class N extends C{constructor(t){super("RefreshDropdowns",()=>"Refresh Dropdowns",()=>"Normally dropdowns refresh automatically...",[h,"refresh"],h,()=>this.refreshDropdowns(t),{success:"Refreshed Dropdowns!",error:"Failed to refresh Dropdowns. Check console."})}refreshDropdowns(t){for(let e of t)e.refresh()}}class W extends O{constructor(t){super("Pick","controladoPick",t)}}class G extends O{constructor(t){super("Ban","controladoBan",t)}}class _ extends L{constructor(){super("Pick","controladoPick")}}class j extends L{constructor(){super("Ban","controladoBan")}}function z(s){for(let t of s)CommandBar.addAction(t)}const H="1.7.0";const K=new $,k=new S("Accept","controladoAutoAccept"),b=new S("Pick","controladoPick"),m=new w("1st pick","controladoPick",0,I),f=new w("2nd pick","controladoPick",1,I),y=new S("Ban","controladoBan"),P=new w("1st ban","controladoBan",0,T),v=new w("2nd ban","controladoBan",1,T);function x(){return document.querySelector(".lol-social-roster")}async function I(){let s=await d("GET","/lol-champions/v1/owned-champions-minimal");for(;!s.ok;)console.debug("auto-champion-select(owned-champions-minimal): Retrying..."),s=await d("GET","/lol-champions/v1/owned-champions-minimal"),await u(1e3);const t=await s.json();return t.sort((e,o)=>e.name.localeCompare(o.name)),t}async function T(){const t=await(await d("GET","/lol-game-data/assets/v1/champion-summary.json")).json();return t.sort((e,o)=>e.name.localeCompare(o.name)),t}async function U(){var s;((s=k.config)==null?void 0:s.enabled)===!0&&(console.debug("auto-champion-select(auto-accept): Ready check detected, accepting in 2 seconds..."),await u(2e3),await V())}async function V(){const s=await d("POST","/lol-matchmaking/v1/ready-check/accept");s.ok?console.debug("auto-champion-select(auto-accept): Accepted ready check"):console.error("auto-champion-select(auto-accept): Failed to accept ready check",s)}function Y({championSelect:s,championSelectMenu:t,setupDropdowns:e}){let o=0;return function(l){const c=++o;n(l,c).catch(p=>console.error("auto-champion-select: Failed to handle gameflow phase",p))};async function n(a,l){a==="ReadyCheck"&&U(),await i(a),l===o&&await e()}async function i(a){a==="ChampSelect"?(s.mount(),await t.mount()):(s.unmount(),await t.unmount())}}async function J(){const s=document.createElement("div"),t=document.createElement("div");t.classList.add("auto-select-checkboxes-div"),t.append(k.element,b.element,y.element),s.append(m.element,f.element),s.append(P.element,v.element);const e=new M("Auto champion select",s,t),o=[m,f,P,v];let n,i=null;async function a(){let r=x();for(;!r||n.mounted;)await u(200),r=x();r.append(e.element,t,s)}function l(){return i||(i=a().catch(r=>console.error("auto-champion-select: Failed to restore controls",r)).finally(()=>{i=null}),i)}n=new q("Auto Champion Select",l,t,s),k.setup(),b.setup(),y.setup();const c=Y({championSelect:K,championSelectMenu:n,setupDropdowns:F});E("/lol-gameflow/v1/gameflow-phase",r=>{c(r.data)});const p=await d("GET","/lol-gameflow/v1/gameflow-phase");p.ok?c(await p.json()):c(null),z([new W(()=>b.toggle()),new G(()=>y.toggle()),new _,new j,new N([m,f])]),E("/lol-inventory/v1/wallet",async r=>{r.eventType==="Update"&&(console.debug("auto-champion-select(wallet): Refreshing dropdowns..."),await Promise.all([m.refresh(),f.refresh()]))}),console.debug(`auto-champion-select(${H}): Report bugs to Balaclava#1912`);function F(){return Promise.all(o.map(r=>r.setup()))}}let A=!1;function X(){A||(A=!0,J().catch(s=>console.error("auto-champion-select: Failed to initialize",s)))}export{X as load};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "auto-champion-select",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "Pick or ban automatically! 🐧",
|
|
5
5
|
"author": "balaclava",
|
|
6
6
|
"repository": {
|
|
@@ -32,4 +32,4 @@
|
|
|
32
32
|
"vite": "^4.4.6",
|
|
33
33
|
"vite-plugin-css-injected-by-js": "^3.2.1"
|
|
34
34
|
}
|
|
35
|
-
}
|
|
35
|
+
}
|