{"version":3,"file":"index.mjs","sources":[""],"sourcesContent":["import { bubble } from \"@web3r/flowerkit/evt\";\r\nimport { createRef } from \"react\";\r\nimport type { RefObject } from \"react\";\r\nimport { createRoot } from \"react-dom/client\";\r\nimport type { Root } from \"react-dom/client\";\r\nimport { getDocument } from \"ssr-window\";\r\nimport { Collection } from \"../collection\";\r\nimport type { TCollectionItemDefaultCfg } from \"../collection\";\r\nimport { CollectionItem } from \"../collectionItem\";\r\n\r\n/**\r\n * Factory. Служит инициализатором React-компонентов и содержит те же поля, что и `CollectionItem`, а также `root`, куда будет монтироваться компонент, и метод `unmount` — для размонтирования при необходимости.\r\n * При монтировании и размонтировании триггерит всплывающие события на документ, которые можно найти в `Collection.bubbles`\r\n * @module CollectionReactItem\r\n * @memberof CollectionItem\r\n * @param element{Element} передаваемый элемент DOM\r\n * @param selector{String} передаваемый селектор элемента\r\n * @param defaultCfg{Object=} конфигурация плагина по умолчанию\r\n * @example\r\n * import { CollectionReactItem } from \"@delement/ui/plugins\"\r\n *\r\n * class MyPlugin extends CollectionReactItem {\r\n *\r\n *   constructor(el) {\r\n *     super(el);\r\n *     // console.debug(this.root, this.unmount);\r\n *   }\r\n *\r\n * }\r\n */\r\nclass CollectionReactItem<\r\n  T extends TCollectionItemDefaultCfg = TCollectionItemDefaultCfg,\r\n  TRef = unknown\r\n> extends CollectionItem<T> {\r\n\r\n  root: Root;\r\n\r\n  ref: RefObject<TRef | null>;\r\n\r\n  constructor(element: HTMLElement, selector = \"\", defaultCfg: T = {} as T) {\r\n    super(element, selector, defaultCfg);\r\n    /**\r\n     * Элемент createRoot\r\n     */\r\n    this.root = createRoot(this.instance);\r\n    /**\r\n     * Референс на компонент\r\n     */\r\n    this.ref = createRef<TRef | null>();\r\n  }\r\n\r\n  /**\r\n   * Callback, выполняющийся ДО НАЧАЛА монтирования компонента\r\n   */\r\n  onBeforeMount() {\r\n  }\r\n\r\n  /**\r\n   * Callback, выполняющийся ПОСЛЕ размонтирования компонента\r\n   */\r\n  onUnmount() {\r\n    bubble(getDocument(), Collection.bubbles.unmount, this);\r\n  }\r\n\r\n  /**\r\n   * Callback, выполняющийся ПОСЛЕ монтирования компонента\r\n   */\r\n  onMount() {\r\n    bubble(getDocument(), Collection.bubbles.mount, this);\r\n  }\r\n\r\n  /**\r\n   * Размонтирует компонент\r\n   */\r\n  unmount() {\r\n    this.root.unmount();\r\n    this.onUnmount();\r\n  }\r\n\r\n}\r\n\r\nexport { CollectionReactItem };\r\n"],"names":["CollectionReactItem","CollectionItem","root","ref","constructor","element","selector","defaultCfg","super","this","createRoot","instance","createRef","onBeforeMount","onUnmount","bubble","getDocument","Collection","bubbles","unmount","onMount","mount"],"mappings":";;;;;;;;;;;;;;;;;;;;GA8BA,MAAMA,4BAGIC,eAERC,KAEAC,IAEA,WAAAC,CAAYC,QAAsBC,SAAW,GAAIC,WAAgB,CAAA,GAC/DC,MAAMH,QAASC,SAAUC;;;OAIzBE,KAAKP,KAAOQ,WAAWD,KAAKE;;;OAI5BF,KAAKN,IAAMS,WACb;;;KAKA,aAAAC,GACA;;;KAKA,SAAAC,GACEC,OAAOC,cAAeC,WAAWC,QAAQC,QAASV,KACpD;;;KAKA,OAAAW,GACEL,OAAOC,cAAeC,WAAWC,QAAQG,MAAOZ,KAClD;;;KAKA,OAAAU,GACEV,KAAKP,KAAKiB,UACVV,KAAKK,WACP"}