{"version":3,"file":"index.mjs","sources":[""],"sourcesContent":["import \"./style.pcss\";\r\n\r\nimport type {\r\n  FC, CSSProperties, ReactElement,\r\n} from \"react\";\r\nimport { createElement, useMemo } from \"react\";\r\nimport { defaultGaps, defaultColumns } from \"./config\";\r\nimport type { IGrid } from \"./config/types\";\r\nimport { GridContext } from \"./context\";\r\nimport {\r\n  getColumnsAdapter,\r\n  isSameObjects,\r\n  getGapAdapter,\r\n  getPropAdapter,\r\n} from \"./lib\";\r\nimport { GridItem } from \"./ui/GridItem\";\r\nimport type { IComponentBaseProps } from \"../../types/components/index\";\r\nimport { useCN } from \"../../utils/react/useCN\";\r\n\r\n/**\r\n * Компонент сетки\r\n * @returns {ReactElement}\r\n\r\n */\r\nconst Grid: FC<IComponentBaseProps & IGrid> = ({\r\n  baseClass = \"grid\",\r\n  extraClasses = {},\r\n  extraAttrs = {},\r\n  style = {} as CSSProperties,\r\n  tag = \"div\",\r\n  type = \"flex\",\r\n  columns = defaultColumns as IGrid[\"columns\"],\r\n  gaps = defaultGaps as IGrid[\"gaps\"],\r\n  align,\r\n  justify,\r\n  children = null,\r\n}): ReactElement => {\r\n\r\n  const { getCN } = useCN(baseClass);\r\n\r\n  const styles = useMemo(() => {\r\n\r\n    const props: {\r\n      [key: string]: string | number;\r\n    } = { ...(style || {}) };\r\n\r\n    const computedColumns = getColumnsAdapter(columns);\r\n    if (!isSameObjects(computedColumns, defaultColumns)) {\r\n      const [ columnsDesktop, columnsTablet, columnsMobile ] = computedColumns;\r\n      props[\"--gridColumnsDesktop\"] = columnsDesktop;\r\n      props[\"--gridColumnsTablet\"] = columnsTablet;\r\n      props[\"--gridColumnsMobile\"] = columnsMobile;\r\n    }\r\n\r\n    const computedGaps = getGapAdapter(gaps);\r\n    if (!isSameObjects(computedGaps, defaultGaps)) {\r\n      const [ gapsDesktop, gapsTablet, gapsMobile ] = computedGaps;\r\n      props[\"--gridGapDesktop\"] = gapsDesktop;\r\n      props[\"--gridGapTablet\"] = gapsTablet;\r\n      props[\"--gridGapMobile\"] = gapsMobile;\r\n    }\r\n\r\n    if (align) {\r\n      const [ alignDesktop, alignTablet, alignMobile ] = getPropAdapter(align);\r\n      props[\"--gridAlignItemsDesktop\"] = alignDesktop;\r\n      props[\"--gridAlignItemsTablet\"] = alignTablet;\r\n      props[\"--gridAlignItemsMobile\"] = alignMobile;\r\n    }\r\n\r\n    if (justify) {\r\n      const [ justifyDesktop, justifyTablet, justifyMobile ] = getPropAdapter(justify);\r\n      props[\"--gridJustifyContentDesktop\"] = justifyDesktop;\r\n      props[\"--gridJustifyContentTablet\"] = justifyTablet;\r\n      props[\"--gridJustifyContentMobile\"] = justifyMobile;\r\n    }\r\n\r\n    return props;\r\n  }, [ align, columns, gaps, justify, style ]);\r\n\r\n  const ctx = useMemo(() => ({ getCN, tag, styles }), [ getCN, tag, styles ]);\r\n\r\n  return (\r\n    <GridContext value={ctx}>\r\n      {createElement(tag, {\r\n        style: styles,\r\n        ...extraAttrs,\r\n        className: getCN(\"\", {\r\n          isFlex: type === \"flex\",\r\n          isGrid: type === \"grid\",\r\n          ...extraClasses,\r\n        }),\r\n      }, children)}\r\n    </GridContext>\r\n  );\r\n\r\n};\r\n\r\nexport type { IGrid };\r\nexport { Grid, GridItem };\r\n"],"names":["Grid","baseClass","extraClasses","extraAttrs","style","tag","type","columns","defaultColumns","gaps","defaultGaps","align","justify","children","getCN","useCN","styles","useMemo","props","computedColumns","getColumnsAdapter","isSameObjects","columnsDesktop","columnsTablet","columnsMobile","computedGaps","getGapAdapter","gapsDesktop","gapsTablet","gapsMobile","alignDesktop","alignTablet","alignMobile","getPropAdapter","justifyDesktop","justifyTablet","justifyMobile","ctx","_jsx","GridContext","value","createElement","className","isFlex","isGrid"],"mappings":"6TAwBA,MAAMA,KAAwC,EAC5CC,oBAAY,OACZC,0BAAe,CAAA,EACfC,sBAAa,CAAA,EACbC,YAAQ,CAAA,EACRC,QAAM,MACNC,UAAO,OACPC,gBAAUC,eACVC,UAAOC,YACPC,YACAC,gBACAC,kBAAW,SAGX,MAAMC,MAAEA,OAAUC,MAAMd,WAExB,MAAMe,OAASC,QAAQ,KAErB,MAAMC,MAEF,IAAMd,OAAS,CAAA,GAEnB,MAAMe,gBAAkBC,kBAAkBb,SAC1C,IAAKc,cAAcF,gBAAiBX,gBAAiB,CACnD,MAAQc,eAAgBC,cAAeC,eAAkBL,gBACzDD,MAAM,wBAA0BI,eAChCJ,MAAM,uBAAyBK,cAC/BL,MAAM,uBAAyBM,aACjC,CAEA,MAAMC,aAAeC,cAAcjB,MACnC,IAAKY,cAAcI,aAAcf,aAAc,CAC7C,MAAQiB,YAAaC,WAAYC,YAAeJ,aAChDP,MAAM,oBAAsBS,YAC5BT,MAAM,mBAAqBU,WAC3BV,MAAM,mBAAqBW,UAC7B,CAEA,GAAIlB,MAAO,CACT,MAAQmB,aAAcC,YAAaC,aAAgBC,eAAetB,OAClEO,MAAM,2BAA6BY,aACnCZ,MAAM,0BAA4Ba,YAClCb,MAAM,0BAA4Bc,WACpC,CAEA,GAAIpB,QAAS,CACX,MAAQsB,eAAgBC,cAAeC,eAAkBH,eAAerB,SACxEM,MAAM,+BAAiCgB,eACvChB,MAAM,8BAAgCiB,cACtCjB,MAAM,8BAAgCkB,aACxC,CAEA,OAAOlB,OACN,CAAEP,MAAOJ,QAASE,KAAMG,QAASR,QAEpC,MAAMiC,IAAMpB,QAAQ,KAAA,CAASH,YAAOT,QAAKW,gBAAW,CAAEF,MAAOT,IAAKW;AAElE,OACEsB,IAACC,YAAW,CAACC,MAAOH,IAAIxB,SACrB4B,cAAcpC,IAAK,CAClBD,MAAOY,UACJb,WACHuC,UAAW5B,MAAM,GAAI,CACnB6B,OAAQrC,OAAS,OACjBsC,OAAQtC,OAAS,UACdJ,gBAEJW"}