{"version":3,"file":"d3-annotation.js","sources":["src/Annotation.js","src/AnnotationCollection.js","src/Handles.js","src/Note/alignment.js","src/Builder.js","src/Note/lineType-vertical.js","src/Note/lineType-horizontal.js","src/Connector/type-line.js","src/Connector/type-elbow.js","src/Connector/type-curve.js","src/Connector/end-arrow.js","src/Connector/end-dot.js","src/Subject/circle.js","src/Subject/rect.js","src/Subject/threshold.js","src/Subject/badge.js","src/Types-d3.js","src/Adapter-d3.js","index.js"],"sourcesContent":["export default class Annotation {\n constructor({\n x = 0,\n y = 0,\n nx,\n ny,\n dy = 0,\n dx = 0,\n color = \"grey\",\n data,\n type,\n subject,\n connector,\n note,\n disable,\n id,\n className\n }) {\n this._dx = nx !== undefined ? nx - x : dx\n this._dy = ny !== undefined ? ny - y : dy\n this._x = x\n this._y = y\n this._color = color\n this.id = id\n this._className = className || \"\"\n\n this.type = type || \"\"\n this.data = data\n\n this.note = note || {}\n this.connector = connector || {}\n this.subject = subject || {}\n\n this.disable = disable || []\n }\n\n updatePosition() {\n if (this.type.setPosition) {\n this.type.setPosition()\n if (this.type.subject.selectAll(\":not(.handle)\").nodes().length !== 0) {\n this.type.redrawSubject()\n }\n }\n }\n\n get className() {\n return this._className\n }\n\n set className(className) {\n this._className = className\n if (this.type.setClassName) this.type.setClassName()\n }\n\n updateOffset() {\n if (this.type.setOffset) {\n this.type.setOffset()\n\n if (this.type.connector.selectAll(\":not(.handle)\").nodes().length !== 0) {\n this.type.redrawConnector()\n }\n\n this.type.redrawNote()\n }\n }\n\n get x() {\n return this._x\n }\n set x(x) {\n this._x = x\n this.updatePosition()\n }\n\n get y() {\n return this._y\n }\n set y(y) {\n this._y = y\n this.updatePosition()\n }\n\n get color() {\n return this._color\n }\n set color(color) {\n this._color = color\n this.updatePosition()\n }\n\n get dx() {\n return this._dx\n }\n set dx(dx) {\n this._dx = dx\n this.updateOffset()\n }\n\n get dy() {\n return this._dy\n }\n set dy(dy) {\n this._dy = dy\n this.updateOffset()\n }\n\n set nx(nx) {\n this._dx = nx - this._x\n this.updateOffset()\n }\n\n set ny(ny) {\n this._dy = ny - this._y\n this.updateOffset()\n }\n\n get offset() {\n return { x: this._dx, y: this._dy }\n }\n\n set offset({ x, y }) {\n this._dx = x\n this._dy = y\n this.updateOffset()\n }\n\n get position() {\n return { x: this._x, y: this._y }\n }\n\n set position({ x, y }) {\n this._x = x\n this._y = y\n this.updatePosition()\n }\n\n get translation() {\n return {\n x: this._x + this._dx,\n y: this._y + this._dy\n }\n }\n\n get json() {\n const json = {\n x: this._x,\n y: this._y,\n dx: this._dx,\n dy: this._dy\n }\n\n if (this.data && Object.keys(this.data).length > 0) json.data = this.data\n if (this.type) json.type = this.type\n if (this._className) json.className = this._className\n\n if (Object.keys(this.connector).length > 0) json.connector = this.connector\n if (Object.keys(this.subject).length > 0) json.subject = this.subject\n if (Object.keys(this.note).length > 0) json.note = this.note\n\n return json\n }\n}\n","export default class AnnotationCollection {\n\n constructor ({ annotations, accessors, accessorsInverse }) {\n this.accessors = accessors\n this.accessorsInverse = accessorsInverse\n this.annotations = annotations\n }\n\n clearTypes (newSettings) {\n this.annotations.forEach(d => {\n d.type = undefined\n d.subject = newSettings && newSettings.subject || d.subject\n d.connector = newSettings && newSettings.connector || d.connector\n d.note = newSettings && newSettings.note || d.note\n })\n }\n\n setPositionWithAccessors () {\n this.annotations.forEach(d => {\n d.type.setPositionWithAccessors(this.accessors)\n })\n }\n\n editMode (editMode) { this.annotations.forEach(a => {\n if (a.type) {\n a.type.editMode = editMode\n a.type.updateEditMode()\n }\n })\n }\n\n updateDisable (disable) {\n this.annotations.forEach(a => {\n a.disable = disable\n if (a.type) {\n disable.forEach(d => {\n if (a.type[d]) {\n a.type[d].remove && a.type[d].remove()\n a.type[d] = undefined\n }\n })\n }\n })\n }\n\n updateTextWrap (textWrap) {\n this.annotations.forEach(a => {\n if (a.type && a.type.updateTextWrap) {\n a.type.updateTextWrap(textWrap)\n }\n })\n }\n\n updateText () {\n this.annotations.forEach(a => {\n if (a.type && a.type.drawText) {\n a.type.drawText()\n }\n })\n }\n\n updateNotePadding (notePadding) {\n this.annotations.forEach(a => {\n if (a.type) {\n a.type.notePadding = notePadding\n }\n })\n }\n\n get json () { \n return this.annotations.map(a => { \n const json = a.json\n if (this.accessorsInverse && a.data) {\n json.data = {}\n Object.keys(this.accessorsInverse).forEach(k => {\n json.data[k] = this.accessorsInverse[k]({ x: a.x, y: a.y})\n\n //TODO make this feasible to map back to data for other types of subjects\n })\n }\n return json\n })\n }\n\n get noteNodes () {\n return this.annotations.map(a => ({ ...a.type.getNoteBBoxOffset(), positionX: a.x, positionY: a.y }))\n }\n\n //TODO: come back and rethink if a.x and a.y are applicable in all situations\n // get connectorNodes() {\n // return this.annotations.map(a => ({ ...a.type.getConnectorBBox(), startX: a.x, startY: a.y}))\n // }\n\n // get subjectNodes() {\n // return this.annotations.map(a => ({ ...a.type.getSubjectBBox(), startX: a.x, startY: a.y}))\n // }\n\n // get annotationNodes() {\n // return this.annotations.map(a => ({ ...a.type.getAnnotationBBox(), startX: a.x, startY: a.y}))\n // }\n}\n","import { select } from \"d3-selection\"\nimport { drag } from \"d3-drag\"\n\nexport const pointHandle = ({ cx = 0, cy = 0 }) => {\n return { move: { x: cx, y: cy } }\n}\n\nexport const circleHandles = ({ cx = 0, cy = 0, r1, r2, padding }) => {\n const h = { move: { x: cx, y: cy } }\n\n if (r1 !== undefined) {\n h.r1 = { x: cx + r1 / Math.sqrt(2), y: cy + r1 / Math.sqrt(2) }\n }\n\n if (r2 !== undefined) {\n h.r2 = { x: cx + r2 / Math.sqrt(2), y: cy + r2 / Math.sqrt(2) }\n }\n\n if (padding !== undefined) {\n h.padding = { x: cx + r1 + padding, y: cy }\n }\n\n return h\n}\n\nexport const rectHandles = ({\n x1 = 0,\n y1 = 0,\n x2 = x1,\n y2 = y1,\n width,\n height\n}) => {\n const w = width || Math.abs(x2 - x1)\n const h = height || Math.abs(y2 - y1)\n\n return {\n move: {\n x: Math.min(x1, x2) + w / 2,\n y: Math.min(y1, y2) - 10\n },\n width: {\n x: Math.max(x1, x2),\n y: Math.min(y1, y2) + h / 2\n },\n height: {\n x: Math.min(x1, x2) + w / 2,\n y: Math.max(y1, y2)\n }\n }\n}\n\nexport const lineHandles = ({ x1, y1, x2, y2, x, y }) => {\n const minY = Math.min(y1, y2)\n const minX = Math.min(x1, x2)\n\n const height = Math.abs(y2 - y1)\n const width = Math.abs(x2 - x1)\n\n return {\n move: {\n x: x || minX + width / 2,\n y: y || minY + height / 2\n }\n }\n}\n\n//arc handles\nexport const addHandles = ({ group, handles, r = 10 }) => {\n //give it a group and x,y to draw handles\n //then give it instructions on what the handles change\n const h = group.selectAll(\"circle.handle\").data(handles)\n\n h\n .enter()\n .append(\"circle\")\n .attr(\"class\", \"handle\")\n .attr(\"fill\", \"grey\")\n .attr(\"fill-opacity\", 0.1)\n .attr(\"cursor\", \"move\")\n .attr(\"stroke-dasharray\", 5)\n .attr(\"stroke\", \"grey\")\n .call(\n drag()\n .container(select(\"g.annotations\").node())\n .on(\"start\", d => d.start && d.start(d))\n .on(\"drag\", d => d.drag && d.drag(d))\n .on(\"end\", d => d.end && d.end(d))\n )\n\n group\n .selectAll(\"circle.handle\")\n .attr(\"cx\", d => d.x)\n .attr(\"cy\", d => d.y)\n .attr(\"r\", d => d.r || r)\n .attr(\"class\", d => `handle ${d.className || \"\"}`)\n\n h.exit().remove()\n}\n","\nexport const leftRightDynamic = (align, y) => {\n if (align === \"dynamic\" || align === \"left\" || align === \"right\") {\n if (y < 0) { align = \"top\" }\n else { align = \"bottom\" } \n }\n return align\n}\n\nexport const topBottomDynamic = (align, x) => {\n if (align === \"dynamic\" || align === \"top\" || align === \"bottom\") {\n if (x < 0) { align = \"right\" }\n else { align = \"left\" } \n }\n return align\n}\n\nconst orientationTopBottom = [\"topBottom\", \"top\", \"bottom\"]\nconst orientationLeftRight = [\"leftRight\", \"left\", \"right\"]\n\nexport default ({ padding=0, bbox={x:0, y:0, width:0, height:0}, align, orientation, offset={x:0, y:0} }) => {\n let x = -bbox.x \n let y = 0//-bbox.y\n if ( orientationTopBottom.indexOf(orientation) !== -1 ) {\n align = topBottomDynamic(align, offset.x)\n if (offset.y < 0 && orientation === \"topBottom\" || orientation === \"top\") { \n y -= bbox.height + padding\n } else {\n y += padding\n }\n\n if ( align === \"middle\" ) {\n x -= bbox.width/2\n } else if (align === \"right\" ) {\n x -= bbox.width\n } \n\n } else if ( orientationLeftRight.indexOf(orientation) !== -1 ) {\n align = leftRightDynamic(align, offset.y)\n if (offset.x < 0 && orientation === \"leftRight\" || orientation === \"left\") { \n x -= bbox.width + padding\n } else {\n x += padding\n }\n\n if ( align === \"middle\" ) {\n y -= bbox.height/2\n } else if (align === \"top\" ) {\n y -= bbox.height\n }\n } \n\n return { x, y }\n}","import { line, arc, curveLinear } from \"d3-shape\"\n\nexport const lineBuilder = ({ data, curve=curveLinear, canvasContext, className, classID }) => { \n const lineGen = line()\n .curve(curve)\n\n const builder = {\n type: 'path',\n className,\n classID,\n data\n }\n\n if (canvasContext) {\n lineGen.context(canvasContext)\n builder.pathMethods = lineGen\n\n } else {\n builder.attrs = {\n d: lineGen(data)\n }\n }\n\n return builder\n}\n\nexport const arcBuilder = ({ data, canvasContext, className, classID }) => {\n\n const builder = {\n type: 'path',\n className,\n classID,\n data\n }\n\n const arcShape = arc()\n .innerRadius(data.innerRadius || 0)\n .outerRadius(data.outerRadius || data.radius || 2)\n .startAngle(data.startAngle || 0)\n .endAngle(data.endAngle || 2*Math.PI)\n\n if (canvasContext) {\n arcShape.context(canvasContext)\n builder.pathMethods = lineGen\n\n } else {\n \n builder.attrs = {\n d: arcShape()\n }\n }\n\n return builder\n}","import { lineBuilder } from '../Builder'\nimport { leftRightDynamic } from './alignment'\n\nexport default ({ align, x=0, y=0, bbox, offset }) => {\n align = leftRightDynamic(align, offset.y)\n\n if (align === \"top\") { y -= bbox.height } \n else if (align === \"middle\") { y -= bbox.height/2 }\n\n const data = [[x, y], [x, y + bbox.height]]\n return { components: [lineBuilder({ data, className : \"note-line\" })] }\n}","import { lineBuilder } from '../Builder'\nimport { topBottomDynamic } from './alignment'\n\nexport default ({ align, x=0, y=0, offset, bbox }) => {\n align = topBottomDynamic(align, offset.x)\n\n if (align === \"right\") { x -= bbox.width }\n else if (align === \"middle\") { x -= bbox.width/2 }\n\n const data = [[x, y], [x + bbox.width, y]]\n return { components: [lineBuilder({ data, className : \"note-line\" })] }\n}","import { lineBuilder } from '../Builder'\n\nexport const lineSetup = ({ type, subjectType }) => {\n let annotation = type.annotation\n let offset = annotation.position\n \n let x1 = annotation.x - offset.x,\n x2 = x1 + annotation.dx,\n y1 = annotation.y - offset.y,\n y2 = y1 + annotation.dy\n\n\n const subjectData = annotation.subject\n\n if (subjectType === \"circle\" && (subjectData.outerRadius || subjectData.radius)) {\n const h = Math.sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2))\n const angle = Math.asin(-y2/h)\n const r = subjectData.outerRadius || subjectData.radius + (subjectData.radiusPadding || 0)\n\n x1 = Math.abs(Math.cos(angle)*r)*(x2 < 0 ? -1 : 1)\n y1 = Math.abs(Math.sin(angle)*r)*(y2 < 0 ? -1 : 1)\n\n }\n\n if (subjectType === \"rect\") {\n const { width, height } = subjectData\n \n if (width > 0 && annotation.dx > 0 || width < 0 && annotation.dx < 0) {\n if (Math.abs(width) > Math.abs(annotation.dx)) x1 = width/2\n else x1 = width\n } \n if (height > 0 && annotation.dy > 0 || height < 0 && annotation.dy < 0) {\n if (Math.abs(height) > Math.abs(annotation.dy)) y1 = height/2\n else y1 = height\n }\n if (x1 === width/2 && y1 === height/2) { x1 = x2; y1 = y2;}\n }\n\n\n return [[x1, y1], [x2, y2]]\n}\n\nexport default (connectorData) => {\n const data = lineSetup(connectorData)\n return { components: [lineBuilder({ data, className : \"connector\" })]} \n}","import { lineBuilder } from '../Builder'\n\nexport default ({ type, subjectType }) => {\n\n const annotation = type.annotation\n const offset = annotation.position\n\n let x1 = annotation.x - offset.x,\n x2 = x1 + annotation.dx,\n y1 = annotation.y - offset.y,\n y2 = y1 + annotation.dy\n\n const subjectData = annotation.subject\n\n if (subjectType === \"rect\") {\n const { width, height } = subjectData\n \n if (width > 0 && annotation.dx > 0 || width < 0 && annotation.dx < 0) {\n if (Math.abs(width) > Math.abs(annotation.dx)) x1 = width/2\n else x1 = width\n } \n if (height > 0 && annotation.dy > 0 || height < 0 && annotation.dy < 0) {\n if (Math.abs(height) > Math.abs(annotation.dy)) y1 = height/2\n else y1 = height\n }\n if (x1 === width/2 && y1 === height/2) { x1 = x2; y1 = y2;}\n }\n\n let data = [[x1, y1], [x2, y2]]\n\n let diffY = y2 - y1\n let diffX = x2 - x1\n let xe = x2 \n let ye = y2\n let opposite = y2 < y1 && x2 > x1 || x2 < x1 && y2 > y1 ? -1 : 1\n\n if (Math.abs(diffX) < Math.abs(diffY)) {\n xe = x2\n ye = y1 + diffX*opposite\n } else {\n ye = y2\n xe = x1 + diffY*opposite\n }\n \n if (subjectType === \"circle\" && (subjectData.outerRadius || subjectData.radius)) {\n const r = (subjectData.outerRadius || subjectData.radius) + (subjectData.radiusPadding || 0)\n const length = r/Math.sqrt(2)\n\n if (Math.abs(diffX) > length && Math.abs(diffY) > length) {\n x1 = length*(x2 < 0 ? -1 : 1)\n y1 = length*(y2 < 0 ? -1 : 1)\n data = [[x1, y1], [xe , ye ], [x2, y2]]\n\n } else if (Math.abs(diffX) > Math.abs(diffY)) {\n const angle = Math.asin(-y2/r)\n x1 = Math.abs(Math.cos(angle)*r)*(x2 < 0 ? -1 : 1)\n data = [[ x1, y2], [x2, y2]]\n } else {\n const angle = Math.acos(x2/r)\n y1 = Math.abs(Math.sin(angle)*r)*(y2 < 0 ? -1 : 1)\n data = [[ x2, y1], [x2, y2]]\n }\n } else {\n data = [[x1, y1], [xe , ye], [x2, y2]]\n }\n\n return { components: [lineBuilder({ data, className: \"connector\"})]}\n}\n","import { lineBuilder } from '../Builder'\nimport { event } from 'd3-selection'\nimport { lineSetup } from './type-line'\nimport { curveCatmullRom } from 'd3-shape'\nimport { pointHandle } from '../Handles'\n\nexport default ({ type, connectorData, subjectType }) => {\n\n if (!connectorData) { connectorData = {} }\n if (!connectorData.points || typeof connectorData.points === \"number\") { \n connectorData.points = createPoints(type.annotation.offset, connectorData.points) \n }\n if (!connectorData.curve) { connectorData.curve = curveCatmullRom }\n\n let handles = []\n\n if (type.editMode) {\n const cHandles = connectorData.points\n .map((c,i) => ({...pointHandle({cx: c[0], cy: c[1]}), index: i}))\n\n const updatePoint = (index) => { \n connectorData.points[index][0] += event.dx\n connectorData.points[index][1] += event.dy\n type.redrawConnector()\n }\n \n handles = type.mapHandles(cHandles\n .map(h => ({ ...h.move, drag: updatePoint.bind(type, h.index)})))\n\n }\n\n let data = lineSetup({ type, subjectType })\n data = [data[0], ...connectorData.points, data[1]]\n const components = [lineBuilder({ data, curve: connectorData.curve, className: \"connector\" })]\n\n return { components , handles }\n}\n\nconst createPoints = function ( offset, anchors=2) {\n const diff = { x: offset.x/(anchors + 1), y: offset.y/(anchors + 1) }\n const p = []\n\n let i = 1 \n for (; i <= anchors; i++) {\n p.push([diff.x*i + i%2*20, diff.y*i - i%2*20])\n }\n return p\n}","import { lineBuilder } from \"../Builder\"\n\nexport default ({ annotation, start, end, scale = 1 }) => {\n const offset = annotation.position\n if (!start) {\n start = [annotation.dx, annotation.dy]\n } else {\n start = [-end[0] + start[0], -end[1] + start[1]]\n }\n if (!end) {\n end = [annotation.x - offset.x, annotation.y - offset.y]\n }\n\n let x1 = end[0],\n y1 = end[1]\n\n let dx = start[0]\n let dy = start[1]\n\n let size = 10 * scale\n let angleOffset = 16 / 180 * Math.PI\n let angle = Math.atan(dy / dx)\n\n if (dx < 0) {\n angle += Math.PI\n }\n\n const data = [\n [x1, y1],\n [\n Math.cos(angle + angleOffset) * size + x1,\n Math.sin(angle + angleOffset) * size + y1\n ],\n [\n Math.cos(angle - angleOffset) * size + x1,\n Math.sin(angle - angleOffset) * size + y1\n ],\n [x1, y1]\n ]\n\n //TODO add in reverse\n // if (canvasContext.arrowReverse){\n // data = [[x1, y1],\n // [Math.cos(angle + angleOffset)*size, Math.sin(angle + angleOffset)*size],\n // [Math.cos(angle - angleOffset)*size, Math.sin(angle - angleOffset)*size],\n // [x1, y1]\n // ]\n // } else {\n // data = [[x1, y1],\n // [Math.cos(angle + angleOffset)*size, Math.sin(angle + angleOffset)*size],\n // [Math.cos(angle - angleOffset)*size, Math.sin(angle - angleOffset)*size],\n // [x1, y1]\n // ]\n // }\n\n return {\n components: [\n lineBuilder({\n data,\n className: \"connector-end connector-arrow\",\n classID: \"connector-end\"\n })\n ]\n }\n}\n","import { arcBuilder } from \"../Builder\"\n\nexport default ({ line, scale = 1 }) => {\n let dot = arcBuilder({\n className: \"connector-end connector-dot\",\n classID: \"connector-end\",\n data: { radius: 3 * Math.sqrt(scale) }\n })\n dot.attrs.transform = `translate(${line.data[0][0]}, ${line.data[0][1]})`\n\n return { components: [dot] }\n}\n","import { circleHandles } from \"../Handles\"\nimport { arcBuilder } from \"../Builder\"\nimport { event } from \"d3-selection\"\n\nexport default ({ subjectData, type }) => {\n if (!subjectData.radius && !subjectData.outerRadius) {\n subjectData.radius = 20\n }\n\n let handles = []\n const c = arcBuilder({ data: subjectData, className: \"subject\" })\n if (type.editMode) {\n const h = circleHandles({\n r1: c.data.outerRadius || c.data.radius,\n r2: c.data.innerRadius,\n padding: subjectData.radiusPadding\n })\n\n const updateRadius = attr => {\n const r = subjectData[attr] + event.dx * Math.sqrt(2)\n subjectData[attr] = r\n type.redrawSubject()\n type.redrawConnector()\n }\n\n const cHandles = [\n {\n ...h.r1,\n drag: updateRadius.bind(\n type,\n subjectData.outerRadius !== undefined ? \"outerRadius\" : \"radius\"\n )\n }\n ]\n\n if (subjectData.innerRadius) {\n cHandles.push({ ...h.r2, drag: updateRadius.bind(type, \"innerRadius\") })\n }\n handles = type.mapHandles(cHandles)\n }\n\n c.attrs[\"fill-opacity\"] = 0\n\n return { components: [c], handles }\n}\n","import { lineBuilder } from \"../Builder\"\nimport { event } from \"d3-selection\"\n\nexport default ({ subjectData, type }) => {\n if (!subjectData.width) {\n subjectData.width = 100\n }\n if (!subjectData.height) {\n subjectData.height = 100\n }\n\n let handles = []\n let { width, height } = subjectData\n\n const data = [[0, 0], [width, 0], [width, height], [0, height], [0, 0]]\n let rect = lineBuilder({ data, className: \"subject\" })\n\n if (type.editMode) {\n const updateWidth = () => {\n subjectData.width = event.x\n type.redrawSubject()\n type.redrawConnector()\n }\n\n const updateHeight = () => {\n subjectData.height = event.y\n type.redrawSubject()\n type.redrawConnector()\n }\n\n const rHandles = [\n { x: width, y: height / 2, drag: updateWidth.bind(type) },\n { x: width / 2, y: height, drag: updateHeight.bind(type) }\n ]\n\n handles = type.mapHandles(rHandles)\n }\n rect.attrs[\"fill-opacity\"] = 0.1\n return { components: [rect], handles }\n}\n","import { lineBuilder } from '../Builder'\n\n\nexport default ({ subjectData, type }) => {\n const offset = type.annotation.position\n\n let x1 = (subjectData.x1 !== undefined ? subjectData.x1 : offset.x) - offset.x,\n x2 = (subjectData.x2 !== undefined ? subjectData.x2 : offset.x) - offset.x,\n y1 = (subjectData.y1 !== undefined ? subjectData.y1 : offset.y) - offset.y,\n y2 = (subjectData.y2 !== undefined ? subjectData.y2 : offset.y) - offset.y\n\n const data = [[x1, y1], [x2, y2]]\n return { components: [lineBuilder({ data, className : 'subject'})]}\n}","import { lineBuilder, arcBuilder } from \"../Builder\"\nimport { event } from \"d3-selection\"\n\nexport default ({ subjectData = {}, type = {} }, annotation = {}) => {\n const typeSettings = type.typeSettings && type.typeSettings.subject\n\n if (!subjectData.radius) {\n if (typeSettings && typeSettings.radius) {\n subjectData.radius = typeSettings.radius\n } else {\n subjectData.radius = 14\n }\n }\n if (!subjectData.x) {\n if (typeSettings && typeSettings.x) {\n subjectData.x = typeSettings.x\n }\n }\n if (!subjectData.y) {\n if (typeSettings && typeSettings.y) {\n subjectData.y = typeSettings.y\n }\n }\n\n let handles = []\n const components = []\n const radius = subjectData.radius\n const innerRadius = radius * 0.7\n let x = 0\n let y = 0\n\n const notCornerOffset = Math.sqrt(2) * radius\n const placement = {\n xleftcorner: -radius,\n xrightcorner: radius,\n ytopcorner: -radius,\n ybottomcorner: radius,\n xleft: -notCornerOffset,\n xright: notCornerOffset,\n ytop: -notCornerOffset,\n ybottom: notCornerOffset\n }\n\n if (subjectData.x && !subjectData.y) {\n x = placement[`x${subjectData.x}`]\n } else if (subjectData.y && !subjectData.x) {\n y = placement[`y${subjectData.y}`]\n } else if (subjectData.x && subjectData.y) {\n x = placement[`x${subjectData.x}corner`]\n y = placement[`y${subjectData.y}corner`]\n }\n\n const transform = `translate(${x}, ${y})`\n const circlebg = arcBuilder({ className: \"subject\", data: { radius } })\n circlebg.attrs.transform = transform\n circlebg.attrs.fill = annotation.color\n circlebg.attrs[\"stroke-linecap\"] = \"round\"\n circlebg.attrs[\"stroke-width\"] = \"3px\"\n\n const circle = arcBuilder({\n className: \"subject-ring\",\n data: { outerRadius: radius, innerRadius }\n })\n\n circle.attrs.transform = transform\n // circle.attrs.fill = annotation.color\n circle.attrs[\"stroke-width\"] = \"3px\"\n circle.attrs.fill = \"white\"\n\n let pointer\n if (x && y || !x && !y) {\n pointer = lineBuilder({\n className: \"subject-pointer\",\n data: [[0, 0], [x || 0, 0], [0, y || 0], [0, 0]]\n })\n } else if (x || y) {\n const notCornerPointerXY = (v, sign = 1) =>\n v && v / Math.sqrt(2) / Math.sqrt(2) || sign * radius / Math.sqrt(2)\n\n pointer = lineBuilder({\n className: \"subject-pointer\",\n data: [\n [0, 0],\n [notCornerPointerXY(x), notCornerPointerXY(y)],\n [notCornerPointerXY(x, -1), notCornerPointerXY(y, -1)],\n [0, 0]\n ]\n })\n }\n\n if (pointer) {\n pointer.attrs.fill = annotation.color\n pointer.attrs[\"stroke-linecap\"] = \"round\"\n pointer.attrs[\"stroke-width\"] = \"3px\"\n components.push(pointer)\n }\n\n if (type.editMode) {\n const dragBadge = () => {\n subjectData.x =\n event.x < -radius * 2\n ? \"left\"\n : event.x > radius * 2 ? \"right\" : undefined\n subjectData.y =\n event.y < -radius * 2\n ? \"top\"\n : event.y > radius * 2 ? \"bottom\" : undefined\n\n type.redrawSubject()\n }\n\n const bHandles = { x: x * 2, y: y * 2, drag: dragBadge.bind(type) }\n if (!bHandles.x && !bHandles.y) {\n bHandles.y = -radius\n }\n\n handles = type.mapHandles([bHandles])\n }\n\n let text\n if (subjectData.text) {\n text = {\n type: \"text\",\n className: \"badge-text\",\n attrs: {\n fill: \"white\",\n stroke: \"none\",\n \"font-size\": \".7em\",\n text: subjectData.text,\n \"text-anchor\": \"middle\",\n dy: \".25em\",\n x,\n y\n }\n }\n }\n\n components.push(circlebg)\n components.push(circle)\n components.push(text)\n\n return { components, handles }\n}\n","import { select, event } from \"d3-selection\"\nimport { drag } from \"d3-drag\"\nimport { addHandles } from \"./Handles\"\n\n//Note options\nimport noteAlignment from \"./Note/alignment\"\nimport noteVertical from \"./Note/lineType-vertical\"\nimport noteHorizontal from \"./Note/lineType-horizontal\"\n\n//Connector options\nimport connectorLine from \"./Connector/type-line\"\nimport connectorElbow from \"./Connector/type-elbow\"\nimport connectorCurve from \"./Connector/type-curve\"\nimport connectorArrow from \"./Connector/end-arrow\"\nimport connectorDot from \"./Connector/end-dot\"\n\n//Subject options\nimport subjectCircle from \"./Subject/circle\"\nimport subjectRect from \"./Subject/rect\"\nimport subjectThreshold from \"./Subject/threshold\"\nimport subjectBadge from \"./Subject/badge\"\n\nexport class Type {\n constructor({ a, annotation, editMode, dispatcher, notePadding, accessors }) {\n this.a = a\n\n this.note =\n annotation.disable.indexOf(\"note\") === -1 && a.select(\"g.annotation-note\")\n this.noteContent = this.note && a.select(\"g.annotation-note-content\")\n this.connector =\n annotation.disable.indexOf(\"connector\") === -1 &&\n a.select(\"g.annotation-connector\")\n this.subject =\n annotation.disable.indexOf(\"subject\") === -1 &&\n a.select(\"g.annotation-subject\")\n this.dispatcher = dispatcher\n\n if (dispatcher) {\n const handler = addHandlers.bind(null, dispatcher, annotation)\n handler({ component: this.note, name: \"note\" })\n handler({ component: this.connector, name: \"connector\" })\n handler({ component: this.subject, name: \"subject\" })\n }\n\n this.annotation = annotation\n this.editMode = annotation.editMode || editMode\n this.notePadding = notePadding !== undefined ? notePadding : 3\n this.offsetCornerX = 0\n this.offsetCornerY = 0\n\n if (accessors && annotation.data) {\n this.init(accessors)\n }\n }\n\n init(accessors) {\n if (!this.annotation.x) {\n this.mapX(accessors)\n }\n if (!this.annotation.y) {\n this.mapY(accessors)\n }\n }\n\n mapY(accessors) {\n if (accessors.y) {\n this.annotation.y = accessors.y(this.annotation.data)\n }\n }\n\n mapX(accessors) {\n if (accessors.x) {\n this.annotation.x = accessors.x(this.annotation.data)\n }\n }\n\n updateEditMode() {\n this.a.selectAll(\"circle.handle\").remove()\n }\n\n drawOnSVG(component, builders) {\n if (!Array.isArray(builders)) {\n builders = [builders]\n }\n\n builders\n .filter(b => b)\n .forEach(({ type, className, attrs, handles, classID }) => {\n if (type === \"handle\") {\n addHandles({ group: component, r: attrs && attrs.r, handles })\n } else {\n newWithClass(component, [this.annotation], type, className, classID)\n const el = component.select(`${type}.${classID || className}`)\n const addAttrs = Object.keys(attrs)\n const removeAttrs = []\n\n const currentAttrs = el.node().attributes\n for (let i = currentAttrs.length - 1; i >= 0; i--) {\n const name = currentAttrs[i].name\n if (addAttrs.indexOf(name) === -1 && name !== \"class\")\n removeAttrs.push(name)\n }\n\n addAttrs.forEach(attr => {\n if (attr === \"text\") {\n el.text(attrs[attr])\n } else {\n el.attr(attr, attrs[attr])\n }\n })\n\n removeAttrs.forEach(attr => el.attr(attr, null))\n }\n })\n }\n\n //TODO: how to extend this to a drawOnCanvas mode?\n\n getNoteBBox() {\n return bboxWithoutHandles(this.note, \".annotation-note-content text\")\n }\n getNoteBBoxOffset() {\n const bbox = bboxWithoutHandles(this.note, \".annotation-note-content\")\n const transform = this.noteContent.attr(\"transform\").split(/\\(|\\,|\\)/g)\n bbox.offsetCornerX = parseFloat(transform[1]) + this.annotation.dx\n bbox.offsetCornerY = parseFloat(transform[2]) + this.annotation.dy\n bbox.offsetX = this.annotation.dx\n bbox.offsetY = this.annotation.dy\n return bbox\n }\n\n drawSubject(context = {}) {\n const subjectData = this.annotation.subject\n const type = context.type\n const subjectParams = { type: this, subjectData }\n\n let subject = {}\n if (type === \"circle\") subject = subjectCircle(subjectParams)\n else if (type === \"rect\") subject = subjectRect(subjectParams)\n else if (type === \"threshold\") subject = subjectThreshold(subjectParams)\n else if (type === \"badge\")\n subject = subjectBadge(subjectParams, this.annotation)\n\n let { components = [], handles = [] } = subject\n components.forEach(c => {\n if (c && c.attrs && !c.attrs.stroke) {\n c.attrs.stroke = this.annotation.color\n }\n })\n\n if (this.editMode) {\n handles = handles.concat(\n this.mapHandles([{ drag: this.dragSubject.bind(this) }])\n )\n components.push({ type: \"handle\", handles })\n }\n\n return components\n }\n\n drawConnector(context = {}) {\n const connectorData = this.annotation.connector\n const type = connectorData.type || context.type\n const connectorParams = { type: this, connectorData }\n connectorParams.subjectType =\n this.typeSettings &&\n this.typeSettings.subject &&\n this.typeSettings.subject.type\n\n let connector = {}\n if (type === \"curve\") connector = connectorCurve(connectorParams)\n else if (type === \"elbow\") connector = connectorElbow(connectorParams)\n else connector = connectorLine(connectorParams)\n let { components = [], handles = [] } = connector\n const line = components[0]\n //TODO: genericize this into fill t/f stroke t/f\n if (line) {\n line.attrs.stroke = this.annotation.color\n line.attrs.fill = \"none\"\n }\n const endType = connectorData.end || context.end\n let end = {}\n if (endType === \"arrow\") {\n let s = line.data[1]\n const e = line.data[0]\n const distance = Math.sqrt(\n Math.pow(s[0] - e[0], 2) + Math.pow(s[1] - e[1], 2)\n )\n if (distance < 5 && line.data[2]) {\n s = line.data[2]\n }\n end = connectorArrow({\n annotation: this.annotation,\n start: s,\n end: e,\n scale: connectorData.endScale\n })\n } else if (endType === \"dot\") {\n end = connectorDot({ line, scale: connectorData.endScale })\n }\n\n if (end.components) {\n end.components.forEach(c => {\n c.attrs.fill = this.annotation.color\n c.attrs.stroke = this.annotation.color\n })\n components = components.concat(end.components)\n }\n\n if (this.editMode) {\n if (handles.length !== 0) components.push({ type: \"handle\", handles })\n }\n return components\n }\n\n drawNote(context = {}) {\n const noteData = this.annotation.note\n const align = noteData.align || context.align || \"dynamic\"\n const noteParams = {\n bbox: context.bbox,\n align,\n offset: this.annotation.offset\n }\n const lineType = noteData.lineType || context.lineType\n let note = {}\n if (lineType === \"vertical\") note = noteVertical(noteParams)\n else if (lineType === \"horizontal\") note = noteHorizontal(noteParams)\n\n let { components = [], handles = [] } = note\n components.forEach(c => {\n c.attrs.stroke = this.annotation.color\n })\n\n if (this.editMode) {\n handles = this.mapHandles([\n { x: 0, y: 0, drag: this.dragNote.bind(this) }\n ])\n components.push({ type: \"handle\", handles })\n\n const dragging = this.dragNote.bind(this),\n start = this.dragstarted.bind(this),\n end = this.dragended.bind(this)\n this.note.call(\n drag()\n .container(select(\"g.annotations\").node())\n .on(\"start\", d => start(d))\n .on(\"drag\", d => dragging(d))\n .on(\"end\", d => end(d))\n )\n } else {\n this.note.on(\"mousedown.drag\", null)\n }\n return components\n }\n\n drawNoteContent(context) {\n const noteData = this.annotation.note\n const padding =\n noteData.padding !== undefined ? noteData.padding : this.notePadding\n let orientation = noteData.orientation || context.orientation || \"topBottom\"\n const lineType = noteData.lineType || context.lineType\n const align = noteData.align || context.align || \"dynamic\"\n\n if (lineType === \"vertical\") orientation = \"leftRight\"\n else if (lineType === \"horizontal\") orientation = \"topBottom\"\n\n const noteParams = {\n padding,\n bbox: context.bbox,\n offset: this.annotation.offset,\n orientation,\n align\n }\n const { x, y } = noteAlignment(noteParams)\n this.offsetCornerX = x + this.annotation.dx\n this.offsetCornerY = y + this.annotation.dy\n this.note && this.noteContent.attr(\"transform\", `translate(${x}, ${y})`)\n\n return []\n }\n\n drawOnScreen(component, drawFunction) {\n return this.drawOnSVG(component, drawFunction)\n }\n\n redrawSubject() {\n this.subject && this.drawOnScreen(this.subject, this.drawSubject())\n }\n\n redrawConnector() {\n this.connector && this.drawOnScreen(this.connector, this.drawConnector())\n }\n\n redrawNote(bbox = this.getNoteBBox()) {\n this.noteContent &&\n this.drawOnScreen(this.noteContent, this.drawNoteContent({ bbox }))\n this.note && this.drawOnScreen(this.note, this.drawNote({ bbox }))\n }\n\n setPosition() {\n const position = this.annotation.position\n this.a.attr(\"transform\", `translate(${position.x}, ${position.y})`)\n }\n\n setOffset() {\n if (this.note) {\n const offset = this.annotation.offset\n this.note.attr(\"transform\", `translate(${offset.x}, ${offset.y})`)\n }\n }\n\n setPositionWithAccessors(accessors) {\n if (accessors && this.annotation.data) {\n this.mapX(accessors)\n this.mapY(accessors)\n }\n this.setPosition()\n }\n\n setClassName() {\n this.a.attr(\n \"class\",\n `annotation ${this.className && this.className()} ${\n this.editMode ? \"editable\" : \"\"\n } ${this.annotation.className || \"\"}`\n )\n }\n\n draw() {\n this.setClassName()\n this.setPosition()\n this.setOffset()\n this.redrawSubject()\n this.redrawConnector()\n this.redrawNote()\n }\n\n dragstarted() {\n event.sourceEvent.stopPropagation()\n this.dispatcher &&\n this.dispatcher.call(\"dragstart\", this.a, this.annotation)\n this.a.classed(\"dragging\", true)\n this.a.selectAll(\"circle.handle\").style(\"pointer-events\", \"none\")\n }\n dragended() {\n this.dispatcher && this.dispatcher.call(\"dragend\", this.a, this.annotation)\n this.a.classed(\"dragging\", false)\n this.a.selectAll(\"circle.handle\").style(\"pointer-events\", \"all\")\n }\n\n dragSubject() {\n const position = this.annotation.position\n position.x += event.dx\n position.y += event.dy\n this.annotation.position = position\n }\n\n dragNote() {\n const offset = this.annotation.offset\n offset.x += event.dx\n offset.y += event.dy\n this.annotation.offset = offset\n }\n\n mapHandles(handles) {\n return handles.map(h => ({\n ...h,\n start: this.dragstarted.bind(this),\n end: this.dragended.bind(this)\n }))\n }\n}\n\nexport const customType = (initialType, typeSettings, init) => {\n return class customType extends initialType {\n constructor(settings) {\n super(settings)\n this.typeSettings = typeSettings\n\n if (typeSettings.disable) {\n typeSettings.disable.forEach(d => {\n this[d] = undefined\n if (d === \"note\") {\n this.noteContent = undefined\n }\n })\n }\n }\n\n static init(annotation, accessors) {\n super.init(annotation, accessors)\n if (init) {\n annotation = init(annotation, accessors)\n }\n return annotation\n }\n\n className() {\n return `${typeSettings.className ||\n super.className && super.className() ||\n \"\"}`\n }\n\n drawSubject(context) {\n this.typeSettings.subject = Object.assign(\n {},\n typeSettings.subject,\n this.typeSettings.subject\n )\n return super.drawSubject({ ...context, ...this.typeSettings.subject })\n }\n\n drawConnector(context) {\n this.typeSettings.connector = Object.assign(\n {},\n typeSettings.connector,\n this.typeSettings.connector\n )\n return super.drawConnector({\n ...context,\n ...typeSettings.connector,\n ...this.typeSettings.connector\n })\n }\n\n drawNote(context) {\n this.typeSettings.note = Object.assign(\n {},\n typeSettings.note,\n this.typeSettings.note\n )\n return super.drawNote({\n ...context,\n ...typeSettings.note,\n ...this.typeSettings.note\n })\n }\n\n drawNoteContent(context) {\n return super.drawNoteContent({\n ...context,\n ...typeSettings.note,\n ...this.typeSettings.note\n })\n }\n }\n}\n\nexport class d3NoteText extends Type {\n constructor(params) {\n super(params)\n this.textWrap = params.textWrap || 120\n this.drawText()\n }\n\n updateTextWrap(textWrap) {\n this.textWrap = textWrap\n this.drawText()\n }\n\n //TODO: add update text functionality\n\n drawText() {\n if (this.note) {\n newWithClass(this.note, [this.annotation], \"g\", \"annotation-note-content\")\n\n const noteContent = this.note.select(\"g.annotation-note-content\")\n newWithClass(noteContent, [this.annotation], \"rect\", \"annotation-note-bg\")\n newWithClass(\n noteContent,\n [this.annotation],\n \"text\",\n \"annotation-note-label\"\n )\n newWithClass(\n noteContent,\n [this.annotation],\n \"text\",\n \"annotation-note-title\"\n )\n\n let titleBBox = { height: 0 }\n const label = this.a.select(\"text.annotation-note-label\")\n const wrapLength =\n this.annotation.note && this.annotation.note.wrap ||\n this.typeSettings &&\n this.typeSettings.note &&\n this.typeSettings.note.wrap ||\n this.textWrap\n\n const wrapSplitter =\n this.annotation.note && this.annotation.note.wrapSplitter ||\n this.typeSettings &&\n this.typeSettings.note &&\n this.typeSettings.note.wrapSplitter\n\n if (this.annotation.note.title) {\n const title = this.a.select(\"text.annotation-note-title\")\n title.text(this.annotation.note.title)\n title.attr(\"fill\", this.annotation.color)\n title.attr(\"font-weight\", \"bold\")\n title.call(wrap, wrapLength, wrapSplitter)\n titleBBox = title.node().getBBox()\n }\n\n label.text(this.annotation.note.label).attr(\"dx\", \"0\")\n label.call(wrap, wrapLength, wrapSplitter)\n\n label.attr(\"y\", titleBBox.height * 1.1 || 0)\n label.attr(\"fill\", this.annotation.color)\n\n const bbox = this.getNoteBBox()\n\n this.a\n .select(\"rect.annotation-note-bg\")\n .attr(\"width\", bbox.width)\n .attr(\"height\", bbox.height)\n .attr(\"x\", bbox.x)\n .attr(\"fill\", \"white\")\n .attr(\"fill-opacity\", 0)\n }\n }\n}\n\nexport const d3Label = customType(d3NoteText, {\n className: \"label\",\n note: { align: \"middle\" }\n})\n\nexport const d3Callout = customType(d3NoteText, {\n className: \"callout\",\n note: { lineType: \"horizontal\" }\n})\n\nexport const d3CalloutElbow = customType(d3Callout, {\n className: \"callout elbow\",\n connector: { type: \"elbow\" }\n})\n\nexport const d3CalloutCurve = customType(d3Callout, {\n className: \"callout curve\",\n connector: { type: \"curve\" }\n})\n\nexport const d3Badge = customType(Type, {\n className: \"badge\",\n subject: { type: \"badge\" },\n disable: [\"connector\", \"note\"]\n})\n\nexport const d3CalloutCircle = customType(d3CalloutElbow, {\n className: \"callout circle\",\n subject: { type: \"circle\" }\n})\n\nexport const d3CalloutRect = customType(d3CalloutElbow, {\n className: \"callout rect\",\n subject: { type: \"rect\" }\n})\n\nclass ThresholdMap extends d3Callout {\n mapY(accessors) {\n super.mapY(accessors)\n const a = this.annotation\n if ((a.subject.x1 || a.subject.x2) && a.data && accessors.y) {\n a.y = accessors.y(a.data)\n }\n if ((a.subject.x1 || a.subject.x2) && !a.x) {\n a.x = a.subject.x1 || a.subject.x2\n }\n }\n\n mapX(accessors) {\n super.mapX(accessors)\n const a = this.annotation\n if ((a.subject.y1 || a.subject.y2) && a.data && accessors.x) {\n a.x = accessors.x(a.data)\n }\n if ((a.subject.y1 || a.subject.y2) && !a.y) {\n a.y = a.subject.y1 || a.subject.y2\n }\n }\n}\n\nexport const d3XYThreshold = customType(ThresholdMap, {\n className: \"callout xythreshold\",\n subject: { type: \"threshold\" }\n})\n\nexport const newWithClass = (a, d, type, className, classID) => {\n const group = a.selectAll(`${type}.${classID || className}`).data(d)\n group\n .enter()\n .append(type)\n .merge(group)\n .attr(\"class\", className)\n\n group.exit().remove()\n return a\n}\n\nconst addHandlers = (dispatcher, annotation, { component, name }) => {\n if (component) {\n component\n .on(\"mouseover.annotations\", () => {\n dispatcher.call(`${name}over`, component, annotation)\n })\n .on(\"mouseout.annotations\", () =>\n dispatcher.call(`${name}out`, component, annotation)\n )\n .on(\"click.annotations\", () =>\n dispatcher.call(`${name}click`, component, annotation)\n )\n }\n}\n\n//Text wrapping code adapted from Mike Bostock\nconst wrap = (text, width, wrapSplitter, lineHeight = 1.2) => {\n text.each(function() {\n const text = select(this),\n words = text\n .text()\n .split(wrapSplitter || /[ \\t\\r\\n]+/)\n .reverse()\n .filter(w => w !== \"\")\n let word,\n line = [],\n tspan = text\n .text(null)\n .append(\"tspan\")\n .attr(\"x\", 0)\n .attr(\"dy\", 0.8 + \"em\")\n\n while (word = words.pop()) {\n line.push(word)\n tspan.text(line.join(\" \"))\n if (tspan.node().getComputedTextLength() > width && line.length > 1) {\n line.pop()\n tspan.text(line.join(\" \"))\n line = [word]\n tspan = text\n .append(\"tspan\")\n .attr(\"x\", 0)\n .attr(\"dy\", lineHeight + \"em\")\n .text(word)\n }\n }\n })\n}\n\nconst bboxWithoutHandles = (selection, selector = \":not(.handle)\") => {\n if (!selection) {\n return { x: 0, y: 0, width: 0, height: 0 }\n }\n\n return selection\n .selectAll(selector)\n .nodes()\n .reduce(\n (p, c) => {\n const bbox = c.getBBox()\n p.x = Math.min(p.x, bbox.x)\n p.y = Math.min(p.y, bbox.y)\n p.width = Math.max(p.width, bbox.width)\n\n const yOffset = c && c.attributes && c.attributes.y\n p.height = Math.max(\n p.height,\n (yOffset && parseFloat(yOffset.value) || 0) + bbox.height\n )\n return p\n },\n { x: 0, y: 0, width: 0, height: 0 }\n )\n}\n\nexport default {\n Type,\n d3Label,\n d3Callout,\n d3CalloutElbow,\n d3CalloutCurve,\n d3CalloutCircle,\n d3CalloutRect,\n d3XYThreshold,\n d3Badge,\n customType\n}\n","import Annotation from \"./Annotation\"\nimport AnnotationCollection from \"./AnnotationCollection\"\nimport { newWithClass, d3Callout } from \"./Types-d3\"\nimport { select } from \"d3-selection\"\nimport { dispatch } from \"d3-dispatch\"\n\nexport default function annotation() {\n let annotations = [],\n collection,\n context, //TODO: add canvas functionality\n disable = [],\n accessors = {},\n accessorsInverse = {},\n editMode = false,\n ids,\n type = d3Callout,\n textWrap,\n notePadding,\n annotationDispatcher = dispatch(\n \"subjectover\",\n \"subjectout\",\n \"subjectclick\",\n \"connectorover\",\n \"connectorout\",\n \"connectorclick\",\n \"noteover\",\n \"noteout\",\n \"noteclick\",\n \"dragend\",\n \"dragstart\"\n ),\n sel\n\n const annotation = function(selection) {\n sel = selection\n //TODO: check to see if this is still needed\n if (!editMode) {\n selection.selectAll(\"circle.handle\").remove()\n }\n\n const translatedAnnotations = annotations.map(a => {\n if (!a.type) {\n a.type = type\n }\n if (!a.disable) {\n a.disable = disable\n }\n return new Annotation(a)\n })\n\n collection =\n collection ||\n new AnnotationCollection({\n annotations: translatedAnnotations,\n accessors,\n accessorsInverse,\n ids\n })\n\n const annotationG = selection.selectAll(\"g\").data([collection])\n annotationG.enter().append(\"g\").attr(\"class\", `annotations`)\n\n const group = selection.select(\"g.annotations\")\n newWithClass(group, collection.annotations, \"g\", \"annotation\")\n\n const annotation = group.selectAll(\"g.annotation\")\n\n annotation.each(function(d) {\n const a = select(this)\n\n a.attr(\"class\", \"annotation\")\n\n newWithClass(a, [d], \"g\", \"annotation-connector\")\n newWithClass(a, [d], \"g\", \"annotation-subject\")\n newWithClass(a, [d], \"g\", \"annotation-note\")\n newWithClass(\n a.select(\"g.annotation-note\"),\n [d],\n \"g\",\n \"annotation-note-content\"\n )\n d.type =\n d.type.toString() === \"[object Object]\"\n ? d.type\n : new d.type({\n a,\n annotation: d,\n textWrap,\n notePadding,\n editMode,\n dispatcher: annotationDispatcher,\n accessors\n })\n d.type.draw()\n d.type.drawText && d.type.drawText()\n })\n }\n\n annotation.json = function() {\n /* eslint-disable no-console */\n console.log(\n \"Annotations JSON was copied to your clipboard. Please note the annotation type is not JSON compatible. It appears in the objects array in the console, but not in the copied JSON.\",\n collection.json\n )\n /* eslint-enable no-console */\n window.copy(\n JSON.stringify(\n collection.json.map(a => {\n delete a.type\n return a\n })\n )\n )\n return annotation\n }\n\n annotation.update = function() {\n if (annotations && collection) {\n annotations = collection.annotations.map(a => {\n a.type.draw()\n return a\n })\n }\n return annotation\n }\n\n annotation.updateText = function() {\n if (collection) {\n collection.updateText(textWrap)\n annotations = collection.annotations\n }\n return annotation\n }\n\n annotation.updatedAccessors = function() {\n collection.setPositionWithAccessors()\n annotations = collection.annotations\n return annotation\n }\n\n annotation.disable = function(_) {\n if (!arguments.length) return disable\n disable = _\n if (collection) {\n collection.updateDisable(disable)\n annotations = collection.annotations\n }\n return annotation\n }\n\n annotation.textWrap = function(_) {\n if (!arguments.length) return textWrap\n textWrap = _\n if (collection) {\n collection.updateTextWrap(textWrap)\n annotations = collection.annotations\n }\n return annotation\n }\n\n annotation.notePadding = function(_) {\n if (!arguments.length) return notePadding\n notePadding = _\n if (collection) {\n collection.updateNotePadding(notePadding)\n annotations = collection.annotations\n }\n return annotation\n }\n //todo think of how to handle when undefined is sent\n annotation.type = function(_, settings) {\n if (!arguments.length) return type\n type = _\n if (collection) {\n collection.annotations.map(a => {\n a.type.note &&\n a.type.note.selectAll(\"*:not(.annotation-note-content)\").remove()\n a.type.noteContent && a.type.noteContent.selectAll(\"*\").remove()\n a.type.subject && a.type.subject.selectAll(\"*\").remove()\n a.type.connector && a.type.connector.selectAll(\"*\").remove()\n a.type.typeSettings = {}\n a.type = type\n\n a.subject = settings && settings.subject || a.subject\n a.connector = settings && settings.connector || a.connector\n a.note = settings && settings.note || a.note\n })\n\n annotations = collection.annotations\n }\n return annotation\n }\n\n annotation.annotations = function(_) {\n if (!arguments.length)\n return collection && collection.annotations || annotations\n annotations = _\n\n if (collection && collection.annotations) {\n const rerun = annotations.some(\n d => !d.type || d.type.toString() !== \"[object Object]\"\n )\n\n if (rerun) {\n collection = null\n annotation(sel)\n } else {\n collection.annotations = annotations\n }\n }\n return annotation\n }\n\n annotation.context = function(_) {\n if (!arguments.length) return context\n context = _\n return annotation\n }\n\n annotation.accessors = function(_) {\n if (!arguments.length) return accessors\n accessors = _\n return annotation\n }\n\n annotation.accessorsInverse = function(_) {\n if (!arguments.length) return accessorsInverse\n accessorsInverse = _\n return annotation\n }\n\n annotation.ids = function(_) {\n if (!arguments.length) return ids\n ids = _\n return annotation\n }\n\n annotation.editMode = function(_) {\n if (!arguments.length) return editMode\n editMode = _\n\n if (sel) {\n sel.selectAll(\"g.annotation\").classed(\"editable\", editMode)\n }\n\n if (collection) {\n collection.editMode(editMode)\n annotations = collection.annotations\n }\n return annotation\n }\n\n annotation.collection = function(_) {\n if (!arguments.length) return collection\n collection = _\n return annotation\n }\n\n annotation.on = function() {\n const value = annotationDispatcher.on.apply(annotationDispatcher, arguments)\n return value === annotationDispatcher ? annotation : value\n }\n\n return annotation\n}\n","import annotation from './src/Adapter-d3'\nimport { Type, d3Label, d3Callout, d3CalloutCurve, d3CalloutElbow, d3CalloutCircle, \n d3CalloutRect, d3XYThreshold, d3Badge, customType } from './src/Types-d3'\n\nexport {\n annotation,\n Type as annotationTypeBase ,\n d3Label as annotationLabel ,\n d3Callout as annotationCallout ,\n d3CalloutCurve as annotationCalloutCurve ,\n d3CalloutElbow as annotationCalloutElbow ,\n d3CalloutCircle as annotationCalloutCircle ,\n d3CalloutRect as annotationCalloutRect ,\n d3XYThreshold as annotationXYThreshold ,\n d3Badge as annotationBadge ,\n customType as annotationCustomType \n}\n\nexport default {\n annotation,\n annotationTypeBase : Type,\n annotationLabel : d3Label,\n annotationCallout : d3Callout,\n annotationCalloutCurve : d3CalloutCurve,\n annotationCalloutElbow : d3CalloutElbow,\n annotationCalloutCircle : d3CalloutCircle,\n annotationCalloutRect : d3CalloutRect,\n annotationXYThreshold : d3XYThreshold,\n annotationBadge : d3Badge,\n annotationCustomType : customType\n}"],"names":["Annotation","x","y","nx","ny","dy","dx","color","data","type","subject","connector","note","disable","id","className","_dx","undefined","_dy","_x","_y","_color","_className","setPosition","selectAll","nodes","length","redrawSubject","setOffset","redrawConnector","redrawNote","setClassName","updatePosition","updateOffset","json","Object","keys","AnnotationCollection","annotations","accessors","accessorsInverse","newSettings","forEach","d","setPositionWithAccessors","editMode","a","updateEditMode","remove","textWrap","updateTextWrap","drawText","notePadding","map","k","getNoteBBoxOffset","positionX","positionY","pointHandle","cx","cy","move","circleHandles","r1","r2","padding","h","Math","sqrt","addHandles","group","handles","r","enter","append","attr","call","drag","container","select","node","on","start","end","exit","leftRightDynamic","align","topBottomDynamic","orientationTopBottom","orientationLeftRight","bbox","width","height","orientation","offset","indexOf","lineBuilder","curve","curveLinear","canvasContext","classID","lineGen","line","builder","context","pathMethods","attrs","arcBuilder","arcShape","arc","innerRadius","outerRadius","radius","startAngle","endAngle","PI","components","lineSetup","subjectType","annotation","position","x1","x2","y1","y2","subjectData","angle","asin","radiusPadding","abs","cos","sin","connectorData","diffY","diffX","xe","ye","opposite","acos","points","createPoints","curveCatmullRom","cHandles","c","i","index","updatePoint","event","mapHandles","bind","anchors","diff","p","push","scale","size","angleOffset","atan","dot","transform","updateRadius","rect","updateWidth","updateHeight","rHandles","typeSettings","notCornerOffset","placement","circlebg","fill","circle","pointer","notCornerPointerXY","v","sign","dragBadge","bHandles","text","Type","dispatcher","noteContent","handler","addHandlers","component","name","offsetCornerX","offsetCornerY","init","mapX","mapY","builders","Array","isArray","filter","b","el","addAttrs","removeAttrs","currentAttrs","attributes","bboxWithoutHandles","split","parseFloat","offsetX","offsetY","subjectParams","subjectCircle","subjectRect","subjectThreshold","subjectBadge","stroke","concat","dragSubject","connectorParams","connectorCurve","connectorElbow","connectorLine","endType","s","e","distance","pow","connectorArrow","endScale","connectorDot","noteData","noteParams","lineType","noteVertical","noteHorizontal","dragNote","dragging","dragstarted","dragended","noteAlignment","drawFunction","drawOnSVG","drawOnScreen","drawSubject","drawConnector","getNoteBBox","drawNoteContent","drawNote","sourceEvent","stopPropagation","classed","style","customType","initialType","settings","babelHelpers.get","babelHelpers.extends","d3NoteText","params","titleBBox","label","wrapLength","wrap","wrapSplitter","title","getBBox","d3Label","d3Callout","d3CalloutElbow","d3CalloutCurve","d3Badge","d3CalloutCircle","d3CalloutRect","ThresholdMap","d3XYThreshold","newWithClass","merge","lineHeight","each","words","reverse","w","word","tspan","pop","join","getComputedTextLength","selection","selector","reduce","min","max","yOffset","value","collection","ids","annotationDispatcher","dispatch","sel","translatedAnnotations","annotationG","toString","draw","log","copy","JSON","stringify","update","updateText","updatedAccessors","_","arguments","updateDisable","updateNotePadding","rerun","some","apply"],"mappings":"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"}