{"version":3,"file":"index.mjs","sources":[""],"sourcesContent":["import type { RefObject } from \"react\";\r\nimport { createElement, createRef } from \"react\";\r\nimport { FilesUploader as FilesUploaderApp } from \"../../components/filesUploader\";\r\nimport type { IFilesUploaderRef } from \"../../components/filesUploader\";\r\nimport { constants } from \"../../constants\";\r\nimport { Collection } from \"../collection\";\r\nimport type { TCollectionElement } from \"../collection\";\r\nimport { CollectionReactItem } from \"../collectionReactItem\";\r\nimport type { TValidationEvent } from \"../forms/validation\";\r\n\r\ntype TCollectionArgs = [ string, typeof FilesUploader, boolean? ];\r\n\r\n/**\r\n * Класс для рендеринга элемента коллекции загрузчиков файлов статичной верстки\r\n */\r\nexport class FilesUploader extends CollectionReactItem {\r\n\r\n  ref: RefObject<IFilesUploaderRef | null>;\r\n\r\n  constructor(el: TCollectionElement, params?: Record<string, unknown>) {\r\n    super(el as HTMLElement, FilesUploaderCollection.selector, params);\r\n    this.ref = createRef<IFilesUploaderRef | null>();\r\n    this.render();\r\n    this.#bindEvents();\r\n  }\r\n\r\n  render() {\r\n    this.onBeforeMount();\r\n    this.root.render(createElement(FilesUploaderApp, {\r\n      ref: this.ref,\r\n      onUnmount: this.onUnmount.bind(this),\r\n      onMount: this.onMount.bind(this),\r\n      ...this.cfg as Record<string, unknown>,\r\n    }));\r\n  }\r\n\r\n  #onValidation({ detail }: TValidationEvent) {\r\n    if (detail.updateValidationUI) {\r\n      detail.updateValidationUI();\r\n    }\r\n  }\r\n\r\n  #bindEvents() {\r\n\r\n    this.instance.addEventListener(constants.formBubbles.inputInvalid, this.#onValidation.bind(this) as EventListener);\r\n\r\n    this.instance.addEventListener(constants.formBubbles.inputValid, this.#onValidation.bind(this) as EventListener);\r\n  }\r\n\r\n}\r\n\r\n/**\r\n * Плагин для автоматического рендера загрузчика файлов. Является коллекцией.\r\n * @module FilesUploaderCollection\r\n * @memberof Collection\r\n * @example\r\n * // <div data-js-files-uploader='{}'><div>\r\n */\r\nexport class FilesUploaderCollection extends Collection<FilesUploader> {\r\n\r\n  /**\r\n   * Признак регистрации коллекции в глобальном namespace Core.\r\n   * @type {boolean}\r\n   */\r\n  static isApp: boolean = true;\r\n\r\n  /**\r\n   * CSS-селектор контейнеров FilesUploader для автоподключения коллекции.\r\n   * @type {string}\r\n   */\r\n  static selector: string = \"[data-js-files-uploader]\";\r\n\r\n  constructor(...args: TCollectionArgs) {\r\n    const defaultArgs: TCollectionArgs = [ FilesUploaderCollection.selector, FilesUploader, true ];\r\n    const finalArgs = args.length ? args : defaultArgs;\r\n    super(...finalArgs);\r\n  }\r\n\r\n}\r\n"],"names":["FilesUploader","CollectionReactItem","ref","constructor","el","params","super","FilesUploaderCollection","selector","this","createRef","render","bindEvents","onBeforeMount","root","createElement","FilesUploaderApp","onUnmount","bind","onMount","cfg","onValidation","detail","updateValidationUI","instance","addEventListener","constants","formBubbles","inputInvalid","inputValid","Collection","static","args","defaultArgs","finalArgs","length"],"mappings":";;;GAeO,MAAMA,sBAAsBC,oBAEjCC,IAEA,WAAAC,CAAYC,GAAwBC,QAClCC,MAAMF,GAAmBG,wBAAwBC,SAAUH,QAC3DI,KAAKP,IAAMQ,YACXD,KAAKE,SACLF,MAAKG,YACP,CAEA,MAAAD,GACEF,KAAKI,gBACLJ,KAAKK,KAAKH,OAAOI,cAAcC,gBAAkB,CAC/Cd,IAAKO,KAAKP,IACVe,UAAWR,KAAKQ,UAAUC,KAAKT,MAC/BU,QAASV,KAAKU,QAAQD,KAAKT,SACxBA,KAAKW,MAEZ,CAEA,aAAAC,EAAcC,OAAEA,SACd,GAAIA,OAAOC,mBACTD,OAAOC,oBAEX,CAEA,WAAAX,GAEEH,KAAKe,SAASC,iBAAiBC,UAAUC,YAAYC,aAAcnB,MAAKY,aAAcH,KAAKT,OAE3FA,KAAKe,SAASC,iBAAiBC,UAAUC,YAAYE,WAAYpB,MAAKY,aAAcH,KAAKT,MAC3F;;;;;;;GAWK,MAAMF,gCAAgCuB;;;;;AAM3CC,aAAwB;;;;;AAMxBA,gBAA0B,2BAE1B,WAAA5B,IAAe6B,MACb,MAAMC,YAA+B,CAAE1B,wBAAwBC,SAAUR,cAAe,MACxF,MAAMkC,UAAYF,KAAKG,OAASH,KAAOC,YACvC3B,SAAS4B,UACX"}