PHP 7.4.33
Preview: splitAtTopLevelOnly.js Size: 1.49 KB
/var/www/uibuilder.cmshelp.dk/httpdocs/node_modules/tailwindcss/src/util/splitAtTopLevelOnly.js
/**
 * This splits a string on a top-level character.
 *
 * Regex doesn't support recursion (at least not the JS-flavored version).
 * So we have to use a tiny state machine to keep track of paren placement.
 *
 * Expected behavior using commas:
 * var(--a, 0 0 1px rgb(0, 0, 0)), 0 0 1px rgb(0, 0, 0)
 *       ─┬─             ┬  ┬    ┬
 *        x              x  x    ╰──────── Split because top-level
 *        ╰──────────────┴──┴───────────── Ignored b/c inside >= 1 levels of parens
 *
 * @param {string} input
 * @param {string} separator
 */
export function splitAtTopLevelOnly(input, separator) {
  let stack = []
  let parts = []
  let lastPos = 0
  let isEscaped = false

  for (let idx = 0; idx < input.length; idx++) {
    let char = input[idx]

    if (stack.length === 0 && char === separator[0] && !isEscaped) {
      if (separator.length === 1 || input.slice(idx, idx + separator.length) === separator) {
        parts.push(input.slice(lastPos, idx))
        lastPos = idx + separator.length
      }
    }

    isEscaped = isEscaped ? false : char === '\\'

    if (char === '(' || char === '[' || char === '{') {
      stack.push(char)
    } else if (
      (char === ')' && stack[stack.length - 1] === '(') ||
      (char === ']' && stack[stack.length - 1] === '[') ||
      (char === '}' && stack[stack.length - 1] === '{')
    ) {
      stack.pop()
    }
  }

  parts.push(input.slice(lastPos))

  return parts
}

Directory Contents

Dirs: 0 × Files: 46
Name Size Perms Modified Actions
774 B lrw-r--r-- 2025-03-28 11:04:37
Edit Download
98 B lrw-r--r-- 2025-03-28 11:04:37
Edit Download
560 B lrw-r--r-- 2025-03-28 11:04:37
Edit Download
283 B lrw-r--r-- 2025-03-28 11:04:37
Edit Download
1.30 KB lrw-r--r-- 2025-03-28 11:04:37
Edit Download
2.65 KB lrw-r--r-- 2025-03-28 11:04:37
Edit Download
4.20 KB lrw-r--r-- 2025-03-28 11:04:37
Edit Download
578 B lrw-r--r-- 2025-03-28 11:04:37
Edit Download
703 B lrw-r--r-- 2025-03-28 11:04:37
Edit Download
1.19 KB lrw-r--r-- 2025-03-28 11:04:37
Edit Download
10.00 KB lrw-r--r-- 2025-03-28 11:04:37
Edit Download
361 B lrw-r--r-- 2025-03-28 11:04:37
Edit Download
255 B lrw-r--r-- 2025-03-28 11:04:37
Edit Download
96 B lrw-r--r-- 2025-03-28 11:04:37
Edit Download
410 B lrw-r--r-- 2025-03-28 11:04:37
Edit Download
9.63 KB lrw-r--r-- 2025-03-28 11:04:37
Edit Download
1.01 KB lrw-r--r-- 2025-03-28 11:04:37
Edit Download
126 B lrw-r--r-- 2025-03-28 11:04:37
Edit Download
142 B lrw-r--r-- 2025-03-28 11:04:38
Edit Download
262 B lrw-r--r-- 2025-03-28 11:04:38
Edit Download
1.57 KB lrw-r--r-- 2025-03-28 11:04:38
Edit Download
789 B lrw-r--r-- 2025-03-28 11:04:38
Edit Download
634 B lrw-r--r-- 2025-03-28 11:04:38
Edit Download
771 B lrw-r--r-- 2025-03-28 11:04:38
Edit Download
8.81 KB lrw-r--r-- 2025-03-28 11:04:38
Edit Download
4.24 KB lrw-r--r-- 2025-03-28 11:04:38
Edit Download
2.30 KB lrw-r--r-- 2025-03-28 11:04:38
Edit Download
1.81 KB lrw-r--r-- 2025-03-28 11:04:38
Edit Download
867 B lrw-r--r-- 2025-03-28 11:04:38
Edit Download
510 B lrw-r--r-- 2025-03-28 11:04:38
Edit Download
429 B lrw-r--r-- 2025-03-28 11:04:38
Edit Download
7.99 KB lrw-r--r-- 2025-03-28 11:04:38
Edit Download
992 B lrw-r--r-- 2025-03-28 11:04:38
Edit Download
5.58 KB lrw-r--r-- 2025-03-28 11:04:38
Edit Download
785 B lrw-r--r-- 2025-03-28 11:04:38
Edit Download
6.80 KB lrw-r--r-- 2025-03-28 11:04:38
Edit Download
1.55 KB lrw-r--r-- 2025-03-28 11:04:38
Edit Download
243 B lrw-r--r-- 2025-03-28 11:04:38
Edit Download
1.49 KB lrw-r--r-- 2025-03-28 11:04:38
Edit Download
72 B lrw-r--r-- 2025-03-28 11:04:38
Edit Download
137 B lrw-r--r-- 2025-03-28 11:04:38
Edit Download
739 B lrw-r--r-- 2025-03-28 11:04:38
Edit Download
1.60 KB lrw-r--r-- 2025-03-28 11:04:38
Edit Download
888 B lrw-r--r-- 2025-03-28 11:04:38
Edit Download
1020 B lrw-r--r-- 2025-03-28 11:04:38
Edit Download
1.19 KB lrw-r--r-- 2025-03-28 11:04:38
Edit Download
If ZipArchive is unavailable, a .tar will be created (no compression).