{"version":3,"file":"index.mjs","sources":[""],"sourcesContent":["import { bubble } from \"@web3r/flowerkit/evt\";\r\nimport { getDocument } from \"ssr-window\";\r\nimport { selectors } from \"./constants/defaultCfg\";\r\nimport { FormSend } from \"./send\";\r\nimport { FormValidation } from \"./validation\";\r\nimport { getInputForm } from \"../../utils/getInputForm\";\r\n\r\n/**\r\n * Singleton. Плагин для работы с формами. Предоставляет возможность асинхронной отправки и валидации всех форм, для которых указан атрибут `data-js-form`.\r\n * @module Forms\r\n * @example\r\n * // <form data-js-form='{}'></form>\r\n */\r\nexport class Forms {\r\n\r\n  static #instance: Forms | null = null;\r\n\r\n  validation: FormValidation;\r\n\r\n  send: FormSend;\r\n\r\n  constructor() {\r\n    if (Forms.#instance) {\r\n      return Forms.#instance;\r\n    }\r\n    this.validation = new FormValidation();\r\n    this.send = new FormSend();\r\n    this.#bindEvents();\r\n    Forms.#instance = this;\r\n  }\r\n\r\n  #handleClick(e: MouseEvent) {\r\n    const { target } = e;\r\n    if (target && (target as Element).matches(\"[type=\\\"submit\\\"]\")) {\r\n      const form = getInputForm(target as HTMLInputElement);\r\n      if (form && form.matches(selectors.form)) {\r\n        e.preventDefault();\r\n        (form as HTMLFormElement & { handler?: HTMLElement; }).handler = target as HTMLElement;\r\n        bubble(form, \"submit\");\r\n      }\r\n    }\r\n  }\r\n\r\n  #bindEvents() {\r\n    getDocument().addEventListener(\"click\", (e: Event) => this.#handleClick(e as MouseEvent));\r\n  }\r\n\r\n}\r\n"],"names":["Forms","static","validation","send","constructor","instance","this","FormValidation","FormSend","bindEvents","handleClick","e","target","matches","form","getInputForm","selectors","preventDefault","handler","bubble","getDocument","addEventListener"],"mappings":";;;;;;GAaO,MAAMA,MAEXC,gBAAiC,KAEjCC,WAEAC,KAEA,WAAAC,GACE,GAAIJ,OAAMK,SACR,OAAOL,OAAMK,SAEfC,KAAKJ,WAAa,IAAIK,eACtBD,KAAKH,KAAO,IAAIK,SAChBF,MAAKG,aACLT,OAAMK,SAAYC,IACpB,CAEA,YAAAI,CAAaC,GACX,MAAMC,OAAEA,QAAWD,EACnB,GAAIC,QAAWA,OAAmBC,QAAQ,mBAAsB,CAC9D,MAAMC,KAAOC,aAAaH,QAC1B,GAAIE,MAAQA,KAAKD,QAAQG,UAAUF,MAAO,CACxCH,EAAEM,iBACDH,KAAsDI,QAAUN,OACjEO,OAAOL,KAAM,SACf,CACF,CACF,CAEA,WAAAL,GACEW,cAAcC,iBAAiB,QAAUV,GAAaL,MAAKI,YAAaC,GAC1E"}