export default (part) => {
  let { Point, points, Path, paths, options } = part.shorthand()

  const textClasses = (label) =>
    options.focus === label ? 'center text-xs fill-note' : 'center text-xs'

  points.A = new Point(10, 10)
    .attr('data-text', 'Path.move()')
    .attr('data-text-class', textClasses('move'))
  points.B = new Point(70, 30)
  points.BCp2 = new Point(40, 10)
  points.C = new Point(90, -50)
  points.CCp1 = new Point(125, -30)
  points.D = new Point(20, -50)
  points.DCp = new Point(40, 0)
  points.E = new Point(-20, -20)
  points.ECp = new Point(-20, -50)

  paths.line = new Path()
    .move(points.A)
    .line(points.B)
    .attr('data-text', 'Path.line()')
    .attr('data-text-class', textClasses('line'))

  paths.curve = new Path()
    .move(points.B)
    .curve(points.BCp2, points.CCp1, points.C)
    .attr('data-text', 'Path.curve()')
    .attr('data-text-class', textClasses('curve'))

  paths._curve = new Path()
    .move(points.C)
    ._curve(points.DCp, points.D)
    .attr('data-text', 'Path._curve()')
    .attr('data-text-class', textClasses('_curve'))

  paths.curve_ = new Path()
    .move(points.D)
    .curve_(points.ECp, points.E)
    .attr('data-text', 'Path.curve_()')
    .attr('data-text-class', textClasses('curve_'))

  paths.close = new Path()
    .move(points.E)
    .line(points.A)
    .attr('data-text', 'Path.close()')
    .attr('data-text-class', textClasses('close'))

  paths.example = paths.line.join(paths.curve).join(paths._curve).join(paths.curve_).close()

  return part
}