{"version":3,"file":"index.mjs","sources":[""],"sourcesContent":["import type { Root } from \"react-dom/client\";\r\nimport { createRoot } from \"react-dom/client\";\r\nimport { getDocument } from \"ssr-window\";\r\nimport { getCfg } from \"../../utils/getCfg\";\r\nimport type { TCollectionItemDefaultCfg } from \"../collection\";\r\n\r\n/**\r\n * Factory. Подходит в ситуациях, когда React-компонент выводится на страницу единожды без добавления в коллекцию. Он делает доступными поля `cfg`, `root`, а также методы `render`, который вызывается автоматически в случае нахождения элемента, и `unmount`.\r\n * @module StandaloneReactItem\r\n * @param selector{String} передаваемый селектор элемента\r\n * @param defaultCfg{Object=} конфигурация плагина по умолчанию\r\n * @example\r\n * import { StandaloneReactItem } from \"@delement/ui/plugins\"\r\n *\r\n * class MyPlugin extends StandaloneReactItem {\r\n *\r\n *   static selector = \"[data-js-MyPlugin]\";\r\n *\r\n *   static defaultCfg = {}\r\n *\r\n *   constructor() {\r\n *     super(MyPlugin.selector, MyPlugin.defaultCfg);\r\n *     // console.debug(this.cfg, this.root, this.render, this.unmount);\r\n *   }\r\n *\r\n *   render() {\r\n *     // вызывается автоматически, если был найден элемент\r\n *   }\r\n *\r\n * }\r\n */\r\nclass StandaloneReactItem {\r\n\r\n  instance: HTMLElement | null;\r\n\r\n  cfg: TCollectionItemDefaultCfg;\r\n\r\n  root: Root | null;\r\n\r\n  constructor(selector: string, defaultCfg: TCollectionItemDefaultCfg = {}) {\r\n    this.root = null;\r\n    const element = getDocument().querySelector(selector);\r\n    this.instance = element as HTMLElement | null;\r\n    if (this.instance) {\r\n      this.cfg = getCfg(this.instance, selector, defaultCfg);\r\n      this.root = createRoot(this.instance);\r\n      this.render();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Метод для рендера приложения, если его элемент существует на страницу\r\n   */\r\n  render() {\r\n  }\r\n\r\n  /**\r\n   * Метод для размонтирования приложения\r\n   */\r\n  unmount() {\r\n    this.root?.unmount();\r\n  }\r\n\r\n}\r\n\r\nexport { StandaloneReactItem };\r\n"],"names":["StandaloneReactItem","instance","cfg","root","constructor","selector","defaultCfg","this","element","getDocument","querySelector","getCfg","createRoot","render","unmount"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;GA+BA,MAAMA,oBAEJC,SAEAC,IAEAC,KAEA,WAAAC,CAAYC,SAAkBC,WAAwC,IACpEC,KAAKJ,KAAO,KACZ,MAAMK,QAAUC,cAAcC,cAAcL,UAC5CE,KAAKN,SAAWO,QAChB,GAAID,KAAKN,SAAU,CACjBM,KAAKL,IAAMS,OAAOJ,KAAKN,SAAUI,SAAUC,YAC3CC,KAAKJ,KAAOS,WAAWL,KAAKN,UAC5BM,KAAKM,QACP,CACF;;;KAKA,MAAAA,GACA;;;KAKA,OAAAC,GACEP,KAAKJ,MAAMW,SACb"}