Skip to main content

Documentation Index

Fetch the complete documentation index at: https://bym.lonestill.uk/llms.txt

Use this file to discover all available pages before exploring further.

CSS и наблюдатели снимаются при stop() автоматически.

Поиск элементов

api.DOM.query(selector, root?)     // → Element | null
api.DOM.queryAll(selector, root?)  // → Element[]

waitFor

await api.DOM.waitFor(selector, timeout = 10000)  // → Element
Ждёт появления элемента через MutationObserver. Если уже есть — резолвится сразу. Бросает Error при таймауте.
const bar = await api.DOM.waitFor('[class*="PlayerBarDesktop"]');

observe

const stop = api.DOM.observe(selector, callback, root?)
Вызывает callback(el) для каждого нового элемента. Сразу проверяет существующие. Один элемент дважды не попадёт.
api.DOM.observe('[class*="TrackTitle"]', (el) => {
  api.Logger.log('Трек:', el.textContent?.trim());
});

injectCSS / removeCSS

api.DOM.injectCSS('my-style', `
  [class*="PlayerBarDesktop"] {
    box-shadow: 0 0 20px rgba(255, 190, 92, 0.3);
  }
`)
api.DOM.removeCSS('my-style')
Создаёт <style id="bym-css-{pluginId}-{cssId}">. Повторный вызов — обновляет стиль. Удаляется при stop().

Пример

BYM.register({ id: 'highlight' }, (api) => ({
  start() {
    api.DOM.injectCSS('glow', `
      [class*="PlayerBarDesktop"] { outline: 2px solid #ffbe5c; }
    `);
    api.DOM.observe('[class*="TrackTitle"]', (el) => {
      api.Logger.log('Новый трек:', el.textContent?.trim());
    });
  },
  stop() {},
}));