{"version":3,"file":"getCfg.mjs","sources":[""],"sourcesContent":["import { getJSONFromStr } from \"@web3r/flowerkit/json\";\r\nimport { getAttr } from \"./getAttr\";\r\n\r\nexport type TStaticElementCfg<T> = T & {\r\n  el: HTMLElement;\r\n  selector: string;\r\n};\r\n\r\n/**\n * Получает конфигурацию компонента\n * @template T - тип пользовательской конфигурации, который ожидается в JSON-атрибуте и `defaultCfg`.\n * @param el{HTMLElement|Node} DOM-узел\n * @param selector{String=} селектор\n * @param defaultCfg{Object=} объект с конфигурацией по умолчанию\n * @returns {TStaticElementCfg<T>} Возвращает объединённую конфигурацию: `defaultCfg`, данные из атрибута и служебные поля `el`/`selector`.\n * @example\n * import { getCfg } from \"@delement/ui/utils\";\r\n *\r\n * const el = document.querySelector(\"[data-js-modal]\") as HTMLElement;\r\n * const cfg = getCfg<{ isOpen?: boolean }>(el, \"[data-js-modal]\", { isOpen: false });\r\n */\r\nexport const getCfg = <T>(el: HTMLElement, selector: string, defaultCfg: T = {} as T): TStaticElementCfg<T> => {\r\n\r\n  const attr = getAttr(selector);\r\n  const attrValue = selector && el.hasAttribute(attr) ? el.getAttribute(attr) : null;\r\n\r\n  const extraData = {\r\n    el, selector,\r\n  };\r\n\r\n  return {\r\n    ...defaultCfg,\r\n    ...extraData,\r\n    ...(attrValue ? getJSONFromStr<Partial<T>>(attrValue) : {}),\r\n  };\r\n\r\n};\r\n"],"names":["getCfg","el","selector","defaultCfg","attr","getAttr","attrValue","hasAttribute","getAttribute","extraData","getJSONFromStr"],"mappings":";;;;;;;;;;;;;GAqBO,MAAMA,OAAS,CAAIC,GAAiBC,SAAkBC,WAAgB,CAAA,KAE3E,MAAMC,KAAOC,QAAQH,UACrB,MAAMI,UAAYJ,UAAYD,GAAGM,aAAaH,MAAQH,GAAGO,aAAaJ,MAAQ,KAE9E,MAAMK,UAAY,CAChBR,MAAIC,mBAGN,MAAO,IACFC,cACAM,aACCH,UAAYI,eAA2BJ,WAAa,CAAA"}