mirror of
https://github.com/withastro/astro.git
synced 2025-02-24 22:46:02 -05:00
feat: new event to toggle a plugin from itself (#8968)
This commit is contained in:
parent
49bb7bea1f
commit
d0dc18cd1c
2 changed files with 13 additions and 4 deletions
|
@ -51,7 +51,7 @@ document.addEventListener('DOMContentLoaded', async () => {
|
||||||
};
|
};
|
||||||
|
|
||||||
// Events plugins can send to the overlay to update their status
|
// Events plugins can send to the overlay to update their status
|
||||||
eventTarget.addEventListener('plugin-notification', (evt) => {
|
eventTarget.addEventListener('toggle-notification', (evt) => {
|
||||||
const target = overlay.shadowRoot?.querySelector(`[data-plugin-id="${plugin.id}"]`);
|
const target = overlay.shadowRoot?.querySelector(`[data-plugin-id="${plugin.id}"]`);
|
||||||
if (!target) return;
|
if (!target) return;
|
||||||
|
|
||||||
|
@ -63,6 +63,15 @@ document.addEventListener('DOMContentLoaded', async () => {
|
||||||
target.querySelector('.notification')?.toggleAttribute('data-active', newState);
|
target.querySelector('.notification')?.toggleAttribute('data-active', newState);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
eventTarget.addEventListener('toggle-plugin', (evt) => {
|
||||||
|
let newState = undefined;
|
||||||
|
if (evt instanceof CustomEvent) {
|
||||||
|
newState = evt.detail.state ?? true;
|
||||||
|
}
|
||||||
|
|
||||||
|
overlay.togglePluginStatus(plugin, newState);
|
||||||
|
});
|
||||||
|
|
||||||
return plugin;
|
return plugin;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -363,7 +363,7 @@ export class AstroDevOverlay extends HTMLElement {
|
||||||
plugin.status = 'ready';
|
plugin.status = 'ready';
|
||||||
|
|
||||||
if (import.meta.hot) {
|
if (import.meta.hot) {
|
||||||
import.meta.hot.send(`${WS_EVENT_NAME}:${plugin.id}:init`);
|
import.meta.hot.send(`${WS_EVENT_NAME}:${plugin.id}:initialized`);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(`Failed to init plugin ${plugin.id}, error: ${e}`);
|
console.error(`Failed to init plugin ${plugin.id}, error: ${e}`);
|
||||||
|
@ -402,7 +402,7 @@ export class AstroDevOverlay extends HTMLElement {
|
||||||
this.getPluginCanvasById(plugin.id)?.toggleAttribute('data-active', plugin.active);
|
this.getPluginCanvasById(plugin.id)?.toggleAttribute('data-active', plugin.active);
|
||||||
|
|
||||||
plugin.eventTarget.dispatchEvent(
|
plugin.eventTarget.dispatchEvent(
|
||||||
new CustomEvent('plugin-toggle', {
|
new CustomEvent('plugin-toggled', {
|
||||||
detail: {
|
detail: {
|
||||||
state: plugin.active,
|
state: plugin.active,
|
||||||
plugin,
|
plugin,
|
||||||
|
@ -411,7 +411,7 @@ export class AstroDevOverlay extends HTMLElement {
|
||||||
);
|
);
|
||||||
|
|
||||||
if (import.meta.hot) {
|
if (import.meta.hot) {
|
||||||
import.meta.hot.send(`${WS_EVENT_NAME}:${plugin.id}:toggle`, { state: plugin.active });
|
import.meta.hot.send(`${WS_EVENT_NAME}:${plugin.id}:toggled`, { state: plugin.active });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue