text: export default function (part, demo = false) {
    const { Point, Path, points, paths, snippets, Snippet, store, options } = part.shorthand()
  
    if (options.only === 'snippets' || demo) {
      let y = store.get('y')
      let w = store.get('w')
  
      const snips = {
        logo: 35,
        notch: 15,
        bnotch: 15,
        button: 15,
        buttonhole: 25,
        'buttonhole-start': 15,
        'buttonhole-end': 25,
        'snap-socket': 25,
        'snap-stud': 15,
      }
      y += 20
      if (!demo)
        paths.noClip = new Path()
          .move(new Point(0, y - 5))
          .line(new Point(10, y - 5))
          .attr('class', 'hidden')
      else
        points.snippets = new Point(0, y)
          .attr('data-text', 'Snippets')
          .attr('data-text-class', 'text-lg bold')
      y += 10
      points['sl1'] = new Point(w * 0.25, y)
      points['sl2'] = new Point(w * 0.5, y)
      points['sl3'] = new Point(w * 0.75, y)
      points['sl1']
        .attr('data-text', 'data-scale: 1\ndata-rotate: 0')
        .attr('data-text-class', 'center text')
        .attr('data-text-lineheight', 7)
      points['sl2']
        .attr('data-text', 'data-scale: 1.25\ndata-rotate: 0')
        .attr('data-text-class', 'center text')
        .attr('data-text-lineheight', 7)
      points['sl3']
        .attr('data-text', 'data-scale: 0.75\ndata-rotate: 90')
        .attr('data-text-class', 'center text')
        .attr('data-text-lineheight', 7)
      y += 55
      for (let i in snips) {
        points['snt' + i] = new Point(0, y)
        points['snt' + i].attr('data-text', i)
        points['sn1' + i] = new Point(w * 0.3, y)
        points['sn2' + i] = new Point(w * 0.55, y)
        points['sn3' + i] = new Point(w * 0.8, y)
        snippets['sn1' + i] = new Snippet(i, points['sn1' + i])
        snippets['sn2' + i] = new Snippet(i, points['sn2' + i])
        snippets['sn2' + i].attr('data-scale', 1.25)
        snippets['sn3' + i] = new Snippet(i, points['sn3' + i])
        snippets['sn3' + i].attr('data-scale', 0.75).attr('data-rotate', 90)
        y += snips[i]
      }
      store.set('y', y)
      if (!demo) paths.noClip.line(new Point(w, y))
    }
  
    return part
  }
  