text: export default function(part) {
    let {
      macro,
      Path,
      points,
      paths,
      complete,
      paperless,
      snippets,
      Snippet,
      sa,
      options
    } = part.shorthand()
  
    if (!options.pocket) return part
  
    // Clear paths, apart from the pocket
    for (let p of Object.keys(paths)) delete paths[p]
  
    // Paths
    paths.seam = new Path()
      .move(points.cfHem)
      .line(points.pocketHem)
      .line(points.pocketTip)
      .curve_(points.pocketTipCp2, points.pocketTopRight)
      .line(points.pocketCfTop)
      .line(points.cfHem)
      .close()
      .attr('class', 'fabric')
  
    // Complete?
    if (complete) {
      points.logo = points.pocketCfTop.shiftFractionTowards(points.pocketHem, 0.3)
      points.title = points.pocketCfTop.shiftFractionTowards(points.pocketHem, 0.5)
      snippets.logo = new Snippet('logo', points.logo)
      macro('title', {
        at: points.title,
        nr: 4,
        title: 'pocket'
      })
      if (sa) {
        paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa')
      }
    }
  
    // Paperless?
    if (paperless) {
      macro('hd', {
        from: points.cfHem,
        to: points.pocketHem,
        y: points.cfHem.y + sa + 15
      })
      macro('hd', {
        from: points.cfHem,
        to: points.pocketTip,
        y: points.cfHem.y + sa + 30
      })
      macro('hd', {
        from: points.pocketCfTop,
        to: points.pocketTopRight,
        y: points.pocketCfTop.y - sa - 15
      })
      macro('vd', {
        from: points.cfHem,
        to: points.pocketCfTop,
        x: points.cfHem.x - sa - 15
      })
      macro('vd', {
        from: points.pocketHem,
        to: points.pocketTip,
        x: points.pocketTip.x + sa + 15
      })
    }
  
    return part
  }
  