Skip to content

cdaringe/d3-svg-path-editor

Folders and files

NameName
Last commit message
Last commit date
Jan 25, 2024
Dec 1, 2019
Dec 2, 2019
Dec 1, 2019
Jan 29, 2020
Dec 2, 2019
Dec 2, 2019
Dec 1, 2019
Jan 26, 2024
Dec 1, 2019
Apr 23, 2024
Dec 2, 2019
Jan 29, 2020
Dec 1, 2019
Dec 1, 2019
Dec 1, 2019
Dec 1, 2019
Dec 1, 2019
Apr 23, 2024

Repository files navigation

@dino-dna/d3-svg-path-editor

create an editable svg path. a library to enable in-app path editing

main JavaScript Style Guide semantic-release TypeScript package

see the live, interactive demo

install

npm install --save @dino-dna/d3-svg-path-editor d3

on the topic of d3 and bundle performance, some minimal subset of d3 packages must be installed and added onto the d3 instance. we use d3-line, d3-selection, and d3 events. d3 experts are welcome to add documentation on how to optimize web builds here for d3 bundles!

usage

create a path from a set of points and d3 svg instance

import { fromPoints } from '@dino-dna/d3-svg-path-editor'
const points: [number, number][] = [[0, 0], [10, 10]]
const svg$ = d3.select((document.getElementById('my_svg')) as SVGSVGElement)
const {
  path$, // d3 path selection
  nodes, // abstract point datas. mutable
  undo, // undo last edits
  disableEditing, // call to disable editing
  enableEditing, // call to enable editing
  render, // call to trigger a manual/forced rerender. useful if state changes externally
  setNodeVisibility, // call to show/hide nodes
  snapper // new node creator (snapper) instance
} = fromPoints({
  // # required
  points,
  svg$,
  // # optional
  // onStateChange: nodes => { ... },
  // testCanEditNode: node => boolean // control node edit-ability
  // transformLine: d3Line => d3Line // e.g. line => line.curve(d3.curveCatmullRom.alpha(0.9))
})