PHP 8.2.30
Preview: util.js Size: 2.29 KB
/proc/thread-self/root/home/byroehnu/.trash/node_modules11/css-to-react-native/src/transforms/util.js

import {
  LENGTH,
  UNSUPPORTED_LENGTH_UNIT,
  PERCENT,
  COLOR,
  SPACE,
  NONE,
} from '../tokenTypes'

export const directionFactory = ({
  types = [LENGTH, UNSUPPORTED_LENGTH_UNIT, PERCENT],
  directions = ['Top', 'Right', 'Bottom', 'Left'],
  prefix = '',
  suffix = '',
}) => tokenStream => {
  const values = []

  // borderWidth doesn't currently allow a percent value, but may do in the future
  values.push(tokenStream.expect(...types))

  while (values.length < 4 && tokenStream.hasTokens()) {
    tokenStream.expect(SPACE)
    values.push(tokenStream.expect(...types))
  }

  tokenStream.expectEmpty()

  const [top, right = top, bottom = top, left = right] = values

  const keyFor = n => `${prefix}${directions[n]}${suffix}`

  return {
    [keyFor(0)]: top,
    [keyFor(1)]: right,
    [keyFor(2)]: bottom,
    [keyFor(3)]: left,
  }
}

export const parseShadowOffset = tokenStream => {
  const width = tokenStream.expect(LENGTH)
  const height = tokenStream.matches(SPACE) ? tokenStream.expect(LENGTH) : width
  tokenStream.expectEmpty()
  return { width, height }
}

export const parseShadow = tokenStream => {
  let offsetX
  let offsetY
  let radius
  let color

  if (tokenStream.matches(NONE)) {
    tokenStream.expectEmpty()
    return {
      offset: { width: 0, height: 0 },
      radius: 0,
      color: 'black',
    }
  }

  let didParseFirst = false
  while (tokenStream.hasTokens()) {
    if (didParseFirst) tokenStream.expect(SPACE)

    if (
      offsetX === undefined &&
      tokenStream.matches(LENGTH, UNSUPPORTED_LENGTH_UNIT)
    ) {
      offsetX = tokenStream.lastValue
      tokenStream.expect(SPACE)
      offsetY = tokenStream.expect(LENGTH, UNSUPPORTED_LENGTH_UNIT)

      tokenStream.saveRewindPoint()
      if (
        tokenStream.matches(SPACE) &&
        tokenStream.matches(LENGTH, UNSUPPORTED_LENGTH_UNIT)
      ) {
        radius = tokenStream.lastValue
      } else {
        tokenStream.rewind()
      }
    } else if (color === undefined && tokenStream.matches(COLOR)) {
      color = tokenStream.lastValue
    } else {
      tokenStream.throw()
    }

    didParseFirst = true
  }

  if (offsetX === undefined) tokenStream.throw()

  return {
    offset: { width: offsetX, height: offsetY },
    radius: radius !== undefined ? radius : 0,
    color: color !== undefined ? color : 'black',
  }
}

Directory Contents

Dirs: 0 × Files: 15

Name Size Perms Modified Actions
268 B lrw-r--r-- 2026-02-28 00:26:54
Edit Download
1.35 KB lrw-r--r-- 2026-02-28 00:27:14
Edit Download
246 B lrw-r--r-- 2026-02-28 00:27:46
Edit Download
1.58 KB lrw-r--r-- 2026-02-28 00:28:08
Edit Download
983 B lrw-r--r-- 2026-02-28 00:28:18
Edit Download
1.75 KB lrw-r--r-- 2026-02-28 00:28:26
Edit Download
456 B lrw-r--r-- 2026-02-28 00:28:28
Edit Download
280 B lrw-r--r-- 2026-02-28 00:28:30
Edit Download
1.82 KB lrw-r--r-- 2026-02-28 00:28:38
Edit Download
609 B lrw-r--r-- 2026-02-28 00:28:42
Edit Download
1.45 KB lrw-r--r-- 2026-02-28 00:28:46
Edit Download
374 B lrw-r--r-- 2026-02-28 00:28:50
Edit Download
236 B lrw-r--r-- 2026-02-28 00:28:54
Edit Download
1.97 KB lrw-r--r-- 2026-02-28 00:28:58
Edit Download
2.29 KB lrw-r--r-- 2026-02-28 00:29:00
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).