{"version":3,"file":"elpro-css-styles.cjs.mjs","sources":["../../src/utils/index.js","../../src/serialize/serialize.cssToArray.js","../../src/utils/unitlessKeys.js","../../src/sanitize/sanitize.critical.chars.js","../../src/sanitize/sanitize.prettify.js","../../src/sanitize/sanitize.js","../../src/serialize/serialize.replace.js","../../src/serialize/serialize.tokenizer.js","../../src/serialize/serialize.string.js","../../src/serialize/serialize.object.js","../../src/serialize/serialize.js"],"sourcesContent":["// ......................................\r\n////  compose\r\n// ......................................\r\n\r\nexport const compose =\r\n  (...fns) =>\r\n  (arg) =>\r\n    fns.reduceRight((acc, fn) => (fn ? fn(acc) : acc), arg);\r\n\r\n// ......................................\r\n////  partition\r\n// ......................................\r\n\r\nconst accept = ([x, ...xs], fn, index = 0) => {\r\n  if (undef(x)) return [];\r\n  if (fn(x, index)) {\r\n    return [x, ...accept(xs, fn, (index += 1))];\r\n  } else {\r\n    return [...accept(xs, fn, (index += 1))];\r\n  }\r\n};\r\n\r\nconst reject = ([x, ...xs], fn, index = 0) => {\r\n  if (undef(x)) return [];\r\n  if (!fn(x, index)) {\r\n    return [x, ...reject(xs, fn, (index += 1))];\r\n  } else {\r\n    return [...reject(xs, fn, (index += 1))];\r\n  }\r\n};\r\n\r\n// ......................................\r\n////  partition\r\n// ......................................\r\n\r\nexport const partition = (xs, fn) => [accept(xs, fn), reject(xs, fn)];\r\n\r\nexport const def = (x) => typeof x !== 'undefined' && x !== null;\r\nexport const undef = (x) => !def(x);\r\n\r\n//--- pattern\r\nexport const labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\r\nexport const lineBreakPattern = /(\\r\\n|\\n|\\r)/gm;\r\nexport const removeCommentPattern = /\\/\\*[\\s\\S]*?\\*\\//g;\r\nexport const inLineCommentsPattern = /(\\/\\/).*?__\\$__/gm;\r\n\r\n\r\n//--- regex\r\nexport const newRegexExp = (pattern, flag = '') => {\r\n  const regex = new RegExp(pattern, flag);\r\n  regex.lastIndex = 0;\r\n  return regex;\r\n};\r\nexport const regExp = {\r\n  regex: (pattern, flag) => newRegexExp(pattern, flag),\r\n  match: (str, pattern, flag) => str.match(regExp.regex(pattern, flag)) || [],\r\n  test: (str, pattern, flag) => regExp.regex(pattern, flag).test(str),\r\n  exec: (str, pattern, flag) => regExp.regex(pattern, flag).exec(str) || [],\r\n};\r\n\r\n//--- object\r\nexport const ownkey = (obj) => Object.keys(obj)[0];\r\nexport const ownValue = (obj) => Object.values(obj)[0];\r\nexport const arrayOwnProperties = (obj) =>\r\n  isArray(obj) ? obj : Object.keys(obj).map((m) => ({ [m]: obj[m] }));\r\n\r\n//--- remove\r\nexport const removeDoubleSpace = (x) =>\r\n  isArray(x)\r\n    ? x.map((str) => str.replace(/\\s{2,}/g, ' '))\r\n    : x.replace(/\\s{2,}/g, ' ');\r\nexport const removeLabel = (str) => str.replace(labelPattern, '');\r\nexport const removeSpace = (str) => str.split(/\\s+/).join('');\r\nexport const removeLineBreak = (str) => str.replaceAll(lineBreakPattern, '');\r\n\r\n//--- is\r\nexport const isArray = (x) => Array.isArray(x);\r\nexport const isObject = (x) =>\r\n  x != null && !Array.isArray(x) && typeof x === 'object';\r\nexport const isString = (x) => def(x) && typeof x === 'string';\r\nexport const isFunc = (x) => def(x) && typeof x === 'function';\r\nexport const isBrowser = typeof document !== 'undefined';\r\nexport const isPlainObject = (x) =>\r\n  x !== null &&\r\n  typeof x === 'object' &&\r\n  x.constructor.name === Object.name &&\r\n  !('props' in x && x.$$typeof);\r\nexport const isFalsish = (x) =>\r\n  x === undefined || x === null || x === false || x === '';\r\n\r\n//---  Memoize\r\n\r\nexport const memoize = (func, src) => {\r\n  const cache = {};\r\n  return (...args) => {\r\n    const key = JSON.stringify(args);\r\n    if (!cache[key]) {\r\n      cache[key] = func(...args);\r\n    }\r\n    console.log('memodized...', `[ ${src} ]`);\r\n    return cache[key];\r\n  };\r\n};\r\n","import { compose } from '../utils';\n\nconst parseCssArray =\n  (fn) =>\n  ([head, ...tail], result = []) => {\n    let index = 0;\n    if (!head) {\n      return result;\n    }\n    let array = [head, ...tail];\n    const current = head; //.trim()\n    const next = tail[0];\n\n    const [cssString, nextArray] = fn(current, next, index, array);\n\n    // console.log({ current, next, array, cssString, nextArray });\n    result.push(cssString);\n    tail = nextArray ? nextArray : tail;\n\n    return parseCssArray(fn)(tail, result);\n  };\n\n// ......................................\n////  accumulateMultValues\n// ......................................\n\nconst accumulateMultValues = ([head, ...tail], fn, result = []) => {\n  if (!head) {\n    return result;\n  }\n  if (fn(head)) {\n    return accumulateMultValues([], fn, [...result, head]);\n  }\n  return accumulateMultValues(tail, fn, [...result, head]);\n};\n\n// ......................................\n////  declFn\n// ......................................\n\nconst filterArray = (index, limiter, array) => {\n  return array.filter((_, i) => i < index || i > index + limiter);\n};\n\n/*--- declarations with multiple values e.g. border: 2mm rgba(211, 220,50,.8);*/\nconst declFn = (current, next, index, array) => {\n  if (next && current.endsWith(':')) {\n    const slice = array.slice(index + 1);\n    const accumulated = accumulateMultValues(slice, (x) =>\n      x.trim().endsWith(';')\n    );\n\n    const cssString = `${current} ${accumulated.join(' ')}`;\n    const filteredArray = filterArray(index, accumulated.length, array);\n\n    return [cssString, filteredArray];\n  }\n  return [current];\n};\n\n// ......................................\n////  classnamesFn\n// ......................................\n\n/*--- \n classnames with multiple names\n  e.g. .class-1 .class-2 , element attribules .... || @keyframes\n */\nconst classnamesFn = (current, next, index, array) => {\n  //--- ignore atrules for example @media because it doesn't have multiple classes\n  if (\n    current.startsWith('.') ||\n    current.startsWith('&.') ||\n    current.startsWith('&:') ||\n    current.includes('@')\n  ) {\n    if (next && next !== '{') {\n      const slice = array.slice(index + 1);\n      const accumulated = accumulateMultValues(slice, (x) =>\n        x.trim().endsWith('{')\n      ).slice(0, -1);\n\n      const cssString = `${current} ${accumulated.join(' ')}`;\n\n      const filteredArray = filterArray(index, accumulated.length, array);\n      return [cssString, filteredArray];\n    }\n    //--- single clasname\n    return [current];\n  }\n\n  return [current];\n};\n\n// ......................................\n////  stringToArray\n// ......................................\n\nconst stringToArray = (str) =>\n  str\n    .split(' ')\n    .filter(Boolean)\n    .filter((f) => !f.includes('undefined'));\n\n// ......................................\n////  sanitizeArray\n// ......................................\n\nconst sanitizeArray = compose(\n  parseCssArray(classnamesFn),\n  parseCssArray(declFn),\n  stringToArray\n);\n\n// ......................................\n////  css To Array\n// ......................................\n\nexport const cssToArray = (str) => {\n\n  return sanitizeArray(str);\n};\n","\nexport const unitlessKeys = {\n    animationIterationCount: 1,\n    aspectRatio: 1,\n    borderImageOutset: 1,\n    borderImageSlice: 1,\n    borderImageWidth: 1,\n    boxFlex: 1,\n    boxFlexGroup: 1,\n    boxOrdinalGroup: 1,\n    columnCount: 1,\n    columns: 1,\n    flex: 1,\n    flexGrow: 1,\n    flexPositive: 1,\n    flexShrink: 1,\n    flexNegative: 1,\n    flexOrder: 1,\n    gridRow: 1,\n    gridRowEnd: 1,\n    gridRowSpan: 1,\n    gridRowStart: 1,\n    gridColumn: 1,\n    gridColumnEnd: 1,\n    gridColumnSpan: 1,\n    gridColumnStart: 1,\n    msGridRow: 1,\n    msGridRowSpan: 1,\n    msGridColumn: 1,\n    msGridColumnSpan: 1,\n    fontWeight: 1,\n    lineHeight: 1,\n    opacity: 1,\n    order: 1,\n    orphans: 1,\n    tabSize: 1,\n    widows: 1,\n    zIndex: 1,\n    zoom: 1,\n    WebkitLineClamp: 1,\n  \n    // SVG-related properties\n    fillOpacity: 1,\n    floodOpacity: 1,\n    stopOpacity: 1,\n    strokeDasharray: 1,\n    strokeDashoffset: 1,\n    strokeMiterlimit: 1,\n    strokeOpacity: 1,\n    strokeWidth: 1,\n  };\n\n\n  \n  /* https://www.quackit.com/css/at-rules/ */\n  \nexport const CSSPseudo = [\n  ':active',\n  '::after',\n  '::backdrop ',\n  '::before',\n  ':checked',\n  ':default',\n  ':dir',\n  ':disabled',\n  ':empty',\n  ':enabled',\n  ':first-child',\n  ':first-of-type',\n  ':focus',\n  ':fullscreen ',\n  ':hover',\n  ':in-range',\n  ':indeterminate',\n  ':invalid',\n  ':lang',\n  ' :last-child',\n  ':last-of-type',\n  ':not',\n  ':nth-child',\n  ':nth-last-child',\n  ':nth-last-of-type',\n  ':nth-of-type',\n  ':only-child',\n  ':only-of-type',\n  ':optional',\n  ':out-of-range',\n  '::placeholder',\n  ':read-only',\n  ':read-write',\n  ':required',\n  ':root',\n  '::selection',\n  ':scope',\n  ':target',\n  ':valid',\n  ':visited',\n];\n\nexport const CSSatRules =[\n  '@bottom-center',\n  '@bottom-left',\n  '@bottom-left-corner',\n  '@bottom-right',\n  '@bottom-right-corner',\n  '@charset',\n  '@counter-style',\n  '@document',\n  '@font-face',\n  '@font-feature-values',\n  '@import',\n  '@left-bottom',\n  '@left-middle',\n  '@left-top',\n  '@keyframes',\n  '@media',\n  '@namespace',\n  '@page',\n  '@right-bottom',\n  '@right-middle',\n  '@right-top',\n  '@supports',\n  '@top-center',\n  '@top-left',\n  '@top-left-corner',\n  '@top-right',\n  '@top-right-corner', \n]\n\nexport const CSSatRulesDescriptors = [\n  \"additive-symbols\",\n  \"bleed\",\n  \"fallback\",\n  \"font-family\",\n  \"font-feature-settings\",\n  \"font-style\",\n  \"font-weight\",\n  \"font-stretch\",\n  \"font-variant\",\n  \"marks\",\n  \"negative\",\n  \"pad\",\n  \"prefix\",\n  \"range\",\n  \"speak-as\",\n  \"src\",\n  \"suffix\",\n  \"symbols\",\n  \"system\",\n  \"unicode-range\"\n]","\nimport { removeDoubleSpace, removeLineBreak } from \"../utils\";\n\n// ......................................\n////  critical Decl Char\n// ......................................\n\n/*--- prevents replacing class names with colons\n      e.g. &.classname p:not(.classic)\n*/\nconst preventClassnameColons = (str) => {\n    const index = str.indexOf('{');\n    const noReplaceable = str.substring(0, index);\n    const replaceable = str.substring(index);\n    return `${noReplaceable}${replaceable\n      .replaceAll(':', ':  ')\n      .replaceAll(';', ';  ')}`;\n  };\n  \n  const replacementCriticalDecl = (match, p1, p2, p3) => {\n    if (match.includes('{')) {\n      return preventClassnameColons(match);\n    }\n    return match.replaceAll(':', ':  ').replaceAll(';', ';  ');\n  };\n  \n  // ......................................\n  ////  critical Class Char\n  // ......................................\n  \n  const criticalDeclChar = (str) => {\n    return str.replaceAll(/[a-z\\-\\s]+:.*?;/gm, replacementCriticalDecl);\n  };\n  \n  // ......................................\n  ////  critical Class Char\n  // ......................................\n  \n  const criticalClassChar = (str) => {\n    return str\n      .replaceAll(/\\{|\\}/g, ' $& ')\n      .replaceAll('&', '  &');\n  };\n  \n  // ......................................\n  ////  sanitize Critical Chars\n  // ......................................\n  \n  export const sanitizeCriticalChars = (str) => {\n    const string = removeDoubleSpace(\n      removeLineBreak(str).trim()\n    );\n  \n    return criticalDeclChar(criticalClassChar(string));\n  };","import { regExp, removeDoubleSpace, removeSpace } from '../utils';\n\n// ......................................\n////  prettify Attributes\n// ......................................\n\nconst attributePattern = /\\(.*?\\)|\\[.*?\\]/gm;\n\nconst replacementPrettifyAttrs = (match, p1, p2) => {\n  if (match.includes('[')) {\n    return removeSpace(match);\n    //--- match.includes('(')\n  } else {\n    //--- hyphenated compound words  e.g. min-width:\n    if (regExp.test(match, /[a-z]-[a-z]/gm)) {\n      return removeSpace(match);\n    }\n    // no replace\n    return match;\n  }\n};\n\n/*--- prevents substitution in case of declaration value\n   e.g. translate3d(0, 100, 0)  , calc(100% - 30px) \n   and in case of classes with attributes or atrules\n   e.g. @media (min-width:760px)\n   */\nconst prettifyAttributes = (str) => {\n  return str.replaceAll(attributePattern, replacementPrettifyAttrs);\n};\n\n\n// ......................................\n////  prettify Atrules\n// ......................................\n\nconst replacementPrettifyAtrules = (match, p1, p2) => {\nreturn removeSpace(match).replace('{', ' {')\n}\n\nconst prettifyAtrules = (str) => {\n  return str.replaceAll(/@.*?\\{/gm, replacementPrettifyAtrules);\n};\n\n// ......................................\n////  prettify\n// ......................................\n\nexport const prettify = (str) => {\n  const string = removeDoubleSpace(str)\n    .replaceAll(' ;', ';')\n    .replaceAll(' :', ':')\n    .replaceAll(' (', '(')\n    .replaceAll('( ', '(')\n    .replaceAll(' )', ')')\n    .replaceAll(' [', '[')\n    .replaceAll('[ ', '[')\n    .replaceAll(' ]', ']')\n    .replaceAll(/(;){1,}/gm, '; ')\n    .replaceAll(/;\\s{1,};/gm, '; ')\n    .replaceAll('};', '}');\n\n  const attrPrettified = prettifyAttributes(string);\n  const atrulesPrettified =prettifyAtrules(attrPrettified)   \n  return removeDoubleSpace(atrulesPrettified).trim();\n};\n","import { isArray, removeDoubleSpace } from '../utils';\nimport { sanitizeCriticalChars } from './sanitize.critical.chars';\nimport { prettify } from './sanitize.prettify';\n\n// ......................................\n////  sanitizeString\n// ......................................\n\nconst sanitizeString = (str) => {\n  const sanitized = sanitizeCriticalChars(str);\n \n  const string = prettify(sanitized);\n\n  return string\n};\n\n// ......................................\n////  sanitize\n// ......................................\n\nexport const sanitize = (x) => {\n  if (!x) {\n    return isArray(x) ? [] : '';\n  }\n\n  return isArray(x) ? x.map((_x) => sanitizeString(_x)) : sanitizeString(x);\n};\n","import { partition, regExp, removeDoubleSpace } from '../utils';\n\n\n// ......................................\n////    Mult Slectors\n// ......................................\n\nconst multSlectors = (props) => {\n  // console.log({props});\n  const [classnameRoot, nameRoot, ...ignore] = props;\n  //--- multiSelectors\n  if (nameRoot.includes(',')) {\n    const split = nameRoot.split(',');\n    const [h, ...t] = split;\n    const replaceH = h.includes('&')\n      ? `${h.replaceAll('&', classnameRoot)}`\n      : `${classnameRoot} ${h}`;\n\n    const replaceT = t.map((m) =>\n      m.includes('&')\n        ? `, ${m.replaceAll('&', classnameRoot)}`\n        : `, ${classnameRoot} ${m}`\n    );\n    const multiSelectors = removeDoubleSpace(\n      `${replaceH}${replaceT.join(' ')}`\n    ).trim();\n\n    return multiSelectors;\n  }\n};\n\n// ......................................\n////   replace Props Mult Slectors\n// ......................................\n\nconst replacePropsMultSlectors = (props) => {\n  const [propsRoot, propsMult] = partition(\n    props,\n    (elel, indx) => !elel.includes(',')\n  );\n  const propsRootReplaced = replaceProps.sigleSelectors(propsRoot).join(' ');\n\n  const propsMultReplaced = [multSlectors([propsRootReplaced, ...propsMult])];\n\n  return [propsRootReplaced, propsMultReplaced];\n};\n\n// ......................................\n////   replace Props\n// ......................................\n\nlet count = 0;\nconst sigleSelectors = (props, result = '') => {\n  count += 1;\n  if (props.length === 1) {\n    return props;\n  }\n\n  const [a, b, ...tail] = props;\n\n  if (count === 20 || !a || !b) {\n    return [result];\n  }\n\n  const replace = b.includes('&') ? b.replaceAll('&', a) : `${a} ${b}`;\n\n  return sigleSelectors([replace, ...tail], replace);\n};\n\n// ......................................\n////   replace Props\n// ......................................\n\nconst replaceSigleSelectors = (props) => {\n  return sigleSelectors(props);\n};\n\nexport const replaceProps = {\n  sigleSelectors: (props) => replaceSigleSelectors(props),\n  multSlectors: (props) => replacePropsMultSlectors(props),\n};\n\n// ......................................\n////   replaceName\n// ......................................\n\nexport const replaceName = (name, classname) => {\n  const ampersandName = Array.isArray(classname)\n    ? classname.join(' ')\n    : classname;\n  if (name.includes('&:')) {\n    return `${ampersandName.replaceAll('&', '')}${name.replace(\n      '&',\n      ''\n    )}`.trim();\n  }\n  return name.replaceAll('&', '').trim();\n};\n","// ......................................\n////  extract To Chunks\n// ......................................\n\nexport const extractToChunks = (array, fn) => {\n  let nameIndex = 0;\n  let name = undefined;\n  let open = [];\n  let close = [];\n  let closure = false;\n  let indexArray = 0;\n\n  array.forEach((element, index) => {\n    if (!closure) {\n      if (fn(element, index, array)) {\n        nameIndex = index;\n        name = element;\n      }\n      if (name) {\n        if (element.includes('{')) {\n          open.push(index);\n        }\n        if (element.includes('}')) {\n          close.push(index);\n        }\n      }\n      //--- closure class\n      if (open.length > 0) {\n        if (open.length === close.length) {\n          closure = true;\n          indexArray = index;\n        }\n      }\n    }\n  });\n  open = open[0];\n  close = close[close.length - 1];\n\n  return {\n    array,\n    index: indexArray,\n    name,\n    nameIndex,\n    open,\n    close,\n    props: [name],\n    value: array.filter((_, index) => index > open && index < close),\n    remaining: array.filter((_, index) => index < nameIndex || index > close),\n  };\n};\n\n// ......................................\n////  create Tokens\n// ......................................\n\nconst createTokens = (array, indexArray = -1, result = [], cssArray) => {\n  indexArray += 1;\n  const [head, ...tail] = array;\n  if (!head) {\n    return result;\n  }\n\n  const next = tail[0] ? tail[0] : '';\n\n  if (next.includes('{')) {\n    const classname = head;\n    const chunks = extractToChunks(\n      array,\n      (element, index, array) => element === classname\n    );\n    \n    result = [...result, chunks];\n    return createTokens(chunks.remaining, -1, result, cssArray);\n  }\n  return createTokens(tail, indexArray, result, cssArray);\n};\n\n// ......................................\n////  tokenizer\n// ......................................\n\nexport const tokenizer = (cssArray) => {\n  let result = [];\n  const tokens = createTokens(cssArray, -1, [], cssArray);\n\n  return tokens;\n};\n","import sanitize from '../sanitize';\nimport { memoize, partition } from '../utils';\n\nimport { cssToArray } from './serialize.cssToArray';\nimport { replaceProps, replaceName } from './serialize.replace';\nimport { extractToChunks, tokenizer } from './serialize.tokenizer';\n\n// ......................................\n////  hasChildren\n// ......................................\n\nexport const hasChildren = (obj) => {\n  return obj.children.length ? true : false;\n};\n\n// ......................................\n////   tokenizer Root Children Child\n// ......................................\n\nlet count = 0;\nconst tokenizerRootChildrenChild = (child, props, result = []) => {\n  if (count === 30) {\n    return result;\n  }\n\n  const value = child.value;\n  const tokenized = tokenizer(value);\n  const rootChildren = createRoot(tokenized, value, props);\n  props = [...props, child.name].flat();\n\n  //--- children\n  if (hasChildren(rootChildren)) {\n    return tokenized\n      .map((m) => {\n        return tokenizerRootChildrenChild(\n          m,\n          props,\n          [\n            ...result,\n            {\n              ...rootChildren,\n              type: '',\n              name: child.name,\n              props: props,\n            },\n          ].flat()\n        );\n      })\n      .flat();\n  } else {\n    //--- root\n    return [\n      ...result.flat(),\n      {\n        ...rootChildren,\n        type: '',\n        name: child.name,\n        props: props,\n      },\n    ].flat();\n  }\n};\n\nconst getNameAtrules = (props) => {\n  return props.filter((f) => f.includes('@'))[0];\n};\n\n// ......................................\n////  tokenizerRootChildren\n// ......................................\n\nconst tokenizerRootChildren = (child, tokenized, rootChildren) => {\n  const children = tokenized\n    .map((m) => tokenizerRootChildrenChild(m, rootChildren.props))\n    .flat();\n\n  return [\n    ...children.map((child) => {\n      const props = child.props.flat();\n      const name = props.join(' ').includes('@')\n        ? getNameAtrules(props)\n        : child.name;\n      return {\n        ...child,\n        props,\n        name: name,\n        type: 'children-root-children',\n      };\n    }),\n  ];\n};\n\n// ......................................\n////  processChildren\n// ......................................\n\nconst processChildren = (child, classnameRoot) => {\n  const { value, name } = child;\n  const classname = [`${classnameRoot}`, name];\n\n  if (\n    name.includes('@') &&\n    !name.includes('@media') &&\n    !name.includes('@document')\n  ) {\n    return [\n      {\n        children: [],\n        name: name,\n        props: classname, //[classnameRoot],\n        type: 'children-root-atrule',\n        value: child.value,\n      },\n    ];\n  }\n\n  //--- root with children\n  const tokenized = tokenizer(value);\n  const rootChildren = createRoot(tokenized, value, classname);\n  // console.log({child, tokenized, rootChildren, value});\n  if (hasChildren(rootChildren)) {\n    const rootChildrenChild = tokenizerRootChildren(\n      child,\n      tokenized,\n      rootChildren\n    );\n\n    const props = rootChildren.props.flat();\n    const name = child.name;\n\n    return [\n      {\n        ...rootChildren,\n        children: [],\n        name: name,\n        props: props,\n        type: 'children-root',\n      },\n      ...rootChildrenChild,\n    ].flat();\n  } else {\n    //--- root without children\n    const props = rootChildren.props.flat();\n    const _name = child.name;\n\n    return [\n      {\n        ...rootChildren,\n        name: _name,\n        props: props,\n        type: 'children-root',\n      },\n    ].flat();\n  }\n};\n\n// ......................................\n////  value Root\n// ......................................\n\nconst valueRoot = (tokenized, init) =>\n  tokenized.reduce((acc, tokens) => {\n    acc = acc.replaceAll(`${tokens.name} { ${tokens.value.join(' ')} }`, '');\n    return acc;\n  }, init);\n\n// ......................................\n////   create Root\n// ......................................\n\nconst createRoot = (tokenized, array, props) => {\n  const init = array.join(' ');\n  props = props.flat();\n  const name = props[props.length - 1];\n  const value = valueRoot(tokenized, init).split(' ').filter(Boolean);\n\n  return {\n    children: tokenized.map((child) => processChildren(child, name)).flat(),\n    name: name,\n    props: props,\n    type: 'root',\n    value: value,\n  };\n};\n\n// ......................................\n////  parseProps\n// ......................................\n\nconst parseProps = (childrens, classnameRoot) => {\n  return childrens.reduce((acc, child) => {\n    const propsArray = child.props.map((str) => str.trim());\n\n    if (propsArray.length === 1) {\n      return [...acc, child];\n    }\n\n    if (child.name.includes('@')) {\n      const props = replaceProps.sigleSelectors(\n        propsArray.filter((f) => !f.includes('@'))\n      );\n\n      const name = child.name; //replaceName(child.name, classnameRoot);\n\n      return [...acc, { ...child, props, name }];\n    }\n\n    //--- mult selectors\n    if (child.name.includes(',')) {\n      const [propsRoot, propsMult] = replaceProps.multSlectors(propsArray);\n\n      const props = propsMult;\n      const name = replaceName(child.name, propsRoot);\n\n      return [...acc, { ...child, props, name }];\n    }\n\n    //--- sigle selectors\n    const props = replaceProps.sigleSelectors(propsArray);\n    const name = replaceName(child.name, classnameRoot);\n\n    return [...acc, { ...child, props, name }];\n  }, []);\n};\n\n// ......................................\n////  flat Atrules\n// ......................................\n\nconst flatAtrules = (atrules) => {\n  const childrenValue = atrules.reduce((acc, prev) => {\n    const name = prev.name;\n    const classname = prev.props.join(' ');\n    const value = prev.value.join(' ');\n    const str = `${classname} { ${value} } `;\n    acc[name] = acc[name]\n      ? (acc[name] += [...new Set([str])])\n      : (acc[name] = [...new Set([str])]);\n    return acc;\n  }, {});\n\n  return Object.entries(childrenValue).map(([name, value]) => {\n    const atruleValue = Array.isArray(value)\n      ? value.map((v) => v.trim())\n      : [value.trim()];\n    return {\n      children: [],\n      name,\n      props: [],\n      type: '@media',\n      value: atruleValue,\n    };\n  });\n};\n\n// ......................................\n////  flat Atrules\n// ......................................\n\nconst compiledChildren = (children, classnameRoot) => {\n  const compiled = parseProps(children, classnameRoot);\n  const [atrulesClassnames, regularClassnames] = partition(\n    compiled,\n    (elel, indx) => elel.name.includes('@') && !elel.name.includes('@keyframes')\n  );\n\n  return [...regularClassnames, ...flatAtrules(atrulesClassnames)];\n};\n\n// ......................................\n////  compile\n// ......................................\n\nconst compile = (cssArray, classnameRoot) => {\n  //--- an array of existing classes in css template strings\n  const tokenized = tokenizer(cssArray);\n\n  //--- root class created with classnameRoot\n  const root = createRoot(tokenized, cssArray, [`.${classnameRoot}`]);\n\n  //--- classes belonging to root class\n  const childrens = compiledChildren(root.children, classnameRoot);\n\n  const compiled = [{ ...root, children: [] }, ...childrens];\n\n  return compiled;\n};\n\n// ......................................\n////  compiled (memoize)\n// ......................................\n\nconst compiled = memoize((cssString, classnameRoot) => {\n  const string = sanitize(cssString);\n\n  const cssArray = cssToArray(string);\n  const _compile = compile(cssArray, [classnameRoot]);\n\n  return _compile;\n}, 'compile');\n\n// ......................................\n////  serialize String\n// ......................................\n\nexport const serializeString = (cssString, classnameRoot = 'css') => {\n  return compiled(cssString, classnameRoot);\n};\n","import { isFalsish, isFunc, isPlainObject } from '../utils';\nimport { unitlessKeys } from '../utils/unitlessKeys';\nimport { serializeString } from './serialize.string';\n\n\n\nconst isUpper = (c) => c >= 'A' && c <= 'Z';\n\n\n// ......................................\n//// add Unit If Needed\n// ......................................\n\nfunction addUnitIfNeeded(name, value) {\n  if (value == null || typeof value === 'boolean' || value === '') {\n    return '';\n  }\n  if (\n    typeof value === 'number' &&\n    value !== 0 &&\n    !(name in unitlessKeys) &&\n    !name.startsWith('--')\n  ) {\n    return `${value}px`;\n  }\n\n  return String(value).trim();\n}\n\n\n// ......................................\n//// hyphenate\n// ......................................\n\nexport  function hyphenate(string) {\n  let output = '';\n\n  for (let i = 0; i < string.length; i++) {\n    const c = string[i];\n    // Check for CSS variable prefix\n    if (i === 1 && c === '-' && string[0] === '-') {\n      return string;\n    }\n\n    if (isUpper(c)) {\n      output += '-' + c.toLowerCase();\n    } else {\n      output += c;\n    }\n  }\n\n  return output.startsWith('ms-') ? '-' + output : output;\n}\n\n\n// ......................................\n////  obj To CssString\n// ......................................\n\nexport const objToCssString = (obj) => {\n  const rules = [];\n\n  for (const key in obj) {\n    const val = obj[key];\n    if (!obj.hasOwnProperty(key) || isFalsish(val)) continue;\n\n    if ((Array.isArray(val) ) || isFunc(val)) {\n      rules.push(`${hyphenate(key)}:`, val, ';');\n    } else if (isPlainObject(val)) {\n      rules.push(`${key} {`, ...objToCssString(val), '}');\n    } else { \n      rules.push(`${hyphenate(key)}: ${addUnitIfNeeded(key, val)};`);\n    }\n  }\n\n  return rules.join('');\n};\n\n// ......................................\n////  serialize Object\n// ......................................\n\nexport const serializeObject = (args, classnameRoot) => {\n return serializeString (objToCssString(args), classnameRoot)\n};\n\n\n\n","import {\n  arrayOwnProperties,\n  regExp,\n  removeDoubleSpace,\n} from '../utils/index.js';\nimport { serializeObject } from './serialize.object.js';\nimport { serializeString } from './serialize.string.js';\n\n// ......................................\n////  prettier\n// ......................................\n\nconst prettierString = (str) => removeDoubleSpace(str).trim();\n\nexport const prettier = (obj) => {\n  return Object.entries(obj).reduce((acc, [key, value]) => {\n    return {\n      ...acc,\n      [prettierString(key)]: prettierString(value),\n    };\n  }, {});\n};\n\nconst getLabelHash = (str) => {\n  const match = str.split(' ');\n  return match[0];\n};\n\n// ......................................\n////  resolver Atrules\n// ......................................\n\n// const _resolverAtrules = ([current, ...tail], result = {}) => {\n//   if (!current) {\n//     return result;\n//   }\n//   const [key, value] = current;\n\n//   const match = regExp.match(key, /@(.*?)\\)/gm, '');\n//   const matchString = key.replace(match[0], '').replaceAll(' :', ':');\n\n//   const stringKey = removeDoubleSpace(matchString.trim());\n\n//   if (stringKey.includes('@')) {\n//     return _resolverAtrules([[stringKey, value], ...tail], result);\n//   } else {\n//     const labelHash = getLabelHash(key);\n//     const str = ` ${stringKey} { label: ${labelHash}; ${value} } `;\n\n//     result[match[0]] = result[match[0]]\n//       ? (result[match[0]] += str)\n//       : (result[match[0]] = str);\n//     return _resolverAtrules(tail, result);\n//   }\n// };\n\n// ......................................\n////  resolver Keyframes\n// ......................................\n\nconst resolverKeyframes = (array) => {\n  return array.reduce((acc, [key, value]) => {\n    if (!value) {\n      return acc;\n    }\n    const propArray = key.split(' ');\n    const prop = `${propArray[propArray.length - 2]}`;\n    const rulename = `${propArray[propArray.length - 1]}`;\n    const labelHash = getLabelHash(key);\n    const str = `label: ${labelHash}; ${value} `;\n\n    acc[`@keyframes ${rulename}`] = acc[`@keyframes ${rulename}`]\n      ? (acc[`@keyframes ${rulename}`] += str)\n      : (acc[`@keyframes ${rulename}`] = str);\n    return acc;\n  }, {});\n};\n\n// ......................................\n////  resolver Rulename\n// ......................................\n\nconst resolverRulename = (array) => {\n  return array.reduce((acc, [key, value]) => {\n    const labelHash = getLabelHash(key);\n    const k = key.includes('@') ? key.match(/@.*/gm)[0].trim() : key;\n    return { ...acc, [k]: `label: ${labelHash}; ${value}` };\n  }, {});\n};\n\nconst resolverAtrules = (atrules) => {\n\n  return atrules.reduce((acc, [key, value]) => {\n    const labelHash = getLabelHash(value);\n    return {\n      ...acc,\n      [key]: `label: ${labelHash}; ${value}`,\n    };\n  }, {});\n};\n\n// ......................................\n////  resolver\n// ......................................\n\nconst resolver = (styles) => {\n\n  const serialized = styles.reduce((acc, prev) => {\n    const key = prev.name.includes('@') ? prev.name : prev.props.join(' ');\n    const value = prev.value.join(' ');\n   \n    return {\n      ...acc,\n      [key]: value,\n    };\n  }, {});\n\n  //--- rules\n  const rules = Object.entries(serialized).reduce(\n    (acc, [key, value]) => {\n  \n      const prop = regExp.test(key, /@(.*?)\\)/gm, '')\n        ? 'atrule'\n        : regExp.test(key, /@keyframes/gm, '')\n        ? 'keyframes'\n        : 'rulename';\n\n      acc[prop] = { ...acc[prop], [key]: value };\n      return acc;\n    },\n    {\n      rulename: {},\n      atrule: {},\n      keyframes: {},\n    }\n  );\n\n  const rulenames = resolverRulename(Object.entries(rules.rulename));\n  const atrules = resolverAtrules(Object.entries(rules.atrule));\n  const keyframes = resolverKeyframes(Object.entries(rules.keyframes));\n  \n  return prettier({ ...rulenames, ...atrules, ...keyframes });\n};\n\n// ......................................\n////  serializeResolver\n// ......................................\n\nconst serializeResolver = (styles) => arrayOwnProperties(resolver(styles));\n\n// ......................................\n////  serialize\n// ......................................\n\nexport const serialize = (args, classnameRoot) => {\n\n  return typeof args === 'string'\n    ? {\n        name: classnameRoot,\n        styles: serializeResolver(serializeString(args, classnameRoot)),\n      }\n    : {\n        name: classnameRoot,\n        styles: serializeResolver(serializeObject(args, classnameRoot)),\n      };\n};\n"],"names":["compose","_len","arguments","length","fns","Array","_key","arg","reduceRight","acc","fn","accept","_ref","_ref2","_toArray","x","xs","slice","index","undefined","undef","concat","_toConsumableArray","reject","_ref3","_ref4","partition","def","lineBreakPattern","newRegexExp","pattern","flag","regex","RegExp","lastIndex","regExp","match","str","test","exec","arrayOwnProperties","obj","isArray","Object","keys","map","m","_defineProperty","removeDoubleSpace","replace","removeSpace","split","join","removeLineBreak","replaceAll","isFunc","isPlainObject","_typeof","constructor","name","$$typeof","isFalsish","memoize","func","src","cache","_len2","args","_key2","key","JSON","stringify","apply","console","log","parseCssArray","head","tail","result","array","current","next","_fn","_fn2","_slicedToArray","cssString","nextArray","push","accumulateMultValues","filterArray","limiter","filter","_","i","declFn","endsWith","accumulated","trim","filteredArray","classnamesFn","startsWith","includes","stringToArray","Boolean","f","sanitizeArray","cssToArray","unitlessKeys","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","fontWeight","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","preventClassnameColons","indexOf","noReplaceable","substring","replaceable","replacementCriticalDecl","p1","p2","p3","criticalDeclChar","criticalClassChar","sanitizeCriticalChars","string","attributePattern","replacementPrettifyAttrs","prettifyAttributes","replacementPrettifyAtrules","prettifyAtrules","prettify","attrPrettified","atrulesPrettified","sanitizeString","sanitized","sanitize","_x","multSlectors","props","_props","classnameRoot","nameRoot","_split","h","t","replaceH","replaceT","multiSelectors","replacePropsMultSlectors","_partition","elel","indx","_partition2","propsRoot","propsMult","propsRootReplaced","replaceProps","sigleSelectors","propsMultReplaced","count","_props2","a","b","replaceSigleSelectors","replaceName","classname","ampersandName","extractToChunks","nameIndex","open","close","closure","indexArray","forEach","element","value","remaining","createTokens","cssArray","_array","chunks","tokenizer","tokens","hasChildren","children","tokenizerRootChildrenChild","child","tokenized","rootChildren","createRoot","flat","_objectSpread","type","getNameAtrules","tokenizerRootChildren","processChildren","rootChildrenChild","_name","valueRoot","init","reduce","parseProps","childrens","propsArray","_replaceProps$multSle","_replaceProps$multSle2","flatAtrules","atrules","childrenValue","prev","Set","entries","atruleValue","v","compiledChildren","compiled","atrulesClassnames","regularClassnames","compile","root","_compile","serializeString","isUpper","c","addUnitIfNeeded","String","hyphenate","output","toLowerCase","objToCssString","rules","val","hasOwnProperty","serializeObject","prettierString","prettier","getLabelHash","resolverKeyframes","propArray","rulename","labelHash","resolverRulename","_ref5","_ref6","k","resolverAtrules","_ref7","_ref8","resolver","styles","serialized","_ref9","_ref10","prop","atrule","keyframes","rulenames","serializeResolver","serialize"],"mappings":"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"}