{"version":3,"file":"index.mjs","sources":[""],"sourcesContent":["import { createElement } from \"react\";\r\nimport { Select as SelectApp } from \"../../components/select\";\r\nimport type { ISelectRef } from \"../../components/select\";\r\nimport { constants } from \"../../constants\";\r\nimport { Collection } from \"../collection\";\r\nimport type { TCollectionElement, TCollectionItemDefaultCfg } from \"../collection\";\r\nimport { CollectionReactItem } from \"../collectionReactItem\";\r\nimport type { TValidationEvent } from \"../forms/validation\";\r\n\r\ntype TCollectionArgs = [ string, typeof Select, boolean? ];\r\n\r\nconst isValidationEvent = (event: Event): event is TValidationEvent => {\r\n  return event instanceof CustomEvent && typeof event.detail === \"object\" && event.detail !== null;\r\n};\r\n\r\n/**\r\n * Класс для рендеринга элемента коллекции селектов статичной верстки\r\n */\r\nclass Select extends CollectionReactItem<TCollectionItemDefaultCfg, ISelectRef> {\r\n\r\n  constructor(el: TCollectionElement, params?: TCollectionItemDefaultCfg) {\r\n    if (!(el instanceof HTMLElement)) {\r\n      throw new TypeError(`[Select] HTMLElement is expected, but got \"${el?.constructor?.name || typeof el}\"`);\r\n    }\r\n    super(el, SelectCollection.selector);\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(SelectApp, {\r\n      onUnmount: this.onUnmount.bind(this),\r\n      onMount: this.onMount.bind(this),\r\n      ref: this.ref,\r\n      ...this.cfg,\r\n    }));\r\n  }\r\n\r\n  #onValidation(event: Event) {\r\n    if (isValidationEvent(event)) {\r\n      event.detail.updateValidationUI?.();\r\n    }\r\n  }\r\n\r\n  #bindEvents() {\r\n    this.instance.addEventListener(constants.formBubbles.inputInvalid, (e) => this.#onValidation(e));\r\n    this.instance.addEventListener(constants.formBubbles.inputValid, (e) => this.#onValidation(e));\r\n  }\r\n\r\n}\r\n\r\n/**\r\n * Плагин для автоматического рендера селектов. Является коллекцией.\r\n * @module SelectCollection\r\n * @memberof Collection\r\n * @example\r\n * // <div data-js-select='{}'><div>\r\n */\r\nclass SelectCollection extends Collection<Select> {\n\n  /**\n   * Признак регистрации коллекции в глобальном namespace Core.\n   * @type {boolean}\n   */\n  static isApp = true;\n\n  /**\n   * CSS-селектор контейнеров Select для автоподключения коллекции.\n   * @type {string}\n   */\n  static selector = \"[data-js-select]\";\n\r\n  constructor(...args: TCollectionArgs) {\r\n    const defaultArgs: TCollectionArgs = [ SelectCollection.selector, Select, true ];\r\n    const finalArgs = args.length ? args : defaultArgs;\r\n    super(...finalArgs);\r\n  }\r\n\r\n}\r\n\r\nexport {\r\n  Select,\r\n  SelectCollection,\r\n};\r\n"],"names":["isValidationEvent","event","CustomEvent","detail","Select","CollectionReactItem","constructor","el","params","HTMLElement","TypeError","name","super","SelectCollection","selector","this","render","bindEvents","onBeforeMount","root","createElement","SelectApp","onUnmount","bind","onMount","ref","cfg","onValidation","updateValidationUI","instance","addEventListener","constants","formBubbles","inputInvalid","e","inputValid","Collection","static","args","defaultArgs","finalArgs","length"],"mappings":"sQAWA,MAAMA,kBAAqBC,OAClBA,iBAAiBC,oBAAsBD,MAAME,SAAW,UAAYF,MAAME,SAAW;;;GAM9F,MAAMC,eAAeC,oBAEnB,WAAAC,CAAYC,GAAwBC,QAClC,KAAMD,cAAcE,aAClB,MAAM,IAAIC,UAAU,8CAA8CH,IAAID,aAAaK,aAAeJ,OAEpGK,MAAML,GAAIM,iBAAiBC,UAC3BC,KAAKC,SACLD,MAAKE,YACP,CAEA,MAAAD,GACED,KAAKG,gBACLH,KAAKI,KAAKH,OAAOI,cAAcC,SAAW,CACxCC,UAAWP,KAAKO,UAAUC,KAAKR,MAC/BS,QAAST,KAAKS,QAAQD,KAAKR,MAC3BU,IAAKV,KAAKU,OACPV,KAAKW,MAEZ,CAEA,aAAAC,CAAc1B,OACZ,GAAID,kBAAkBC,OACpBA,MAAME,OAAOyB,sBAEjB,CAEA,WAAAX,GACEF,KAAKc,SAASC,iBAAiBC,UAAUC,YAAYC,aAAeC,GAAMnB,MAAKY,aAAcO,IAC7FnB,KAAKc,SAASC,iBAAiBC,UAAUC,YAAYG,WAAaD,GAAMnB,MAAKY,aAAcO,GAC7F;;;;;;;GAWF,MAAMrB,yBAAyBuB;;;;;AAM7BC,aAAe;;;;;AAMfA,gBAAkB,mBAElB,WAAA/B,IAAegC,MACb,MAAMC,YAA+B,CAAE1B,iBAAiBC,SAAUV,OAAQ,MAC1E,MAAMoC,UAAYF,KAAKG,OAASH,KAAOC,YACvC3B,SAAS4B,UACX"}