@dshtrading/client-ui-knowledge 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","names":["namespaces","namespace","selector","Selection","selectorAll","Selection","find","matcher","Selection","Selection","sparse","constant","Selection","Selection","sparse","Selection","Selection","attrRemove","attrRemoveNS","attrConstant","attrConstantNS","attrFunction","attrFunctionNS","namespace","styleRemove","styleConstant","styleFunction","defaultView","textConstant","textFunction","creator","creator","selector","remove","parseTypenames","defaultView","root","Selection","selection_select","selection_selectAll","selection_selectChild","selection_selectChildren","selection_filter","selection_data","selection_enter","selection_exit","selection_join","selection_merge","selection_order","selection_sort","selection_call","selection_nodes","selection_node","selection_size","selection_empty","selection_each","selection_attr","selection_style","selection_property","selection_classed","selection_text","selection_html","selection_raise","selection_lower","selection_append","selection_insert","selection_remove","selection_clone","selection_datum","selection_on","selection_dispatch","selection_iterator","Selection","root","sourceEvent","get","set","nopropagation","select","noevent","defaultFilter","defaultTouchable","pointer","constant","define","constant","rgb","colorRgb","basis","basisClosed","number","identity","identity","decompose","number","now","timeout","interpolateNumber","interpolateRgb","interpolateString","namespace","interpolateTransform","interpolate","namespace","matcher","selector","selectorAll","style","interpolateTransform","interpolate","transition_select","transition_selectAll","transition_filter","transition_merge","transition_selection","transition_transition","transition_on","transition_attr","transition_attrTween","transition_style","transition_styleTween","transition_text","transition_textTween","transition_remove","transition_tween","transition_delay","transition_duration","transition_ease","transition_easeVarying","transition_end","easeCubicInOut","now","selection_interrupt","selection_transition","interpolateZoom","select","pointer","constant","max","min","Symbol","nativeObjectToString","symToStringTag","Symbol","Symbol","now","FUNC_ERROR_TEXT","now","removeAll","add","_arrayLikeToArray","_arrayWithHoles","_classCallCheck","_createClass","_iterableToArrayLimit","_nonIterableRest","_slicedToArray","_unsupportedIterableToArray","index","index","_typeof","_arrayLikeToArray","_arrayWithoutHoles","_toPropertyKey","_iterableToArray","_nonIterableSpread","_toConsumableArray","_unsupportedIterableToArray","_toPrimitive","tinyColor","t","c","a","y","m","x","z","_arrayLikeToArray","_arrayWithHoles","_defineProperty","_toPropertyKey","_iterableToArrayLimit","_nonIterableRest","ownKeys","_objectSpread2","_slicedToArray","_unsupportedIterableToArray","_toPrimitive","_typeof","cloneElement","isValidElement","styleInject","index","Kapsule","select","pointer","add","addAll","Half","removeAll","Half","Half","defaultX","defaultX","leaf_copy","treeProto","tree_add","tree_addAll","tree_cover","tree_data","tree_extent","tree_find","tree_remove","tree_removeAll","tree_root","tree_size","tree_visit","tree_visitAfter","tree_x","add","addAll","Quad","removeAll","Quad","Quad","defaultX","defaultY","defaultX","defaultY","leaf_copy","treeProto","tree_add","tree_addAll","tree_cover","tree_data","tree_extent","tree_find","tree_remove","tree_removeAll","tree_root","tree_size","tree_visit","tree_visitAfter","tree_x","tree_y","Octant","Octant","Octant","tree_add","tree_addAll","tree_cover","tree_data","tree_extent","tree_find","tree_findAllWithinRadius","tree_remove","tree_removeAll","tree_root","tree_size","tree_visit","tree_visitAfter","tree_x","tree_y","tree_z","index","constant","jiggle","lcg","constant","jiggle","constant","pi","sqrt","abs","cos","sin","acos","_arrayLikeToArray","_arrayWithHoles","_arrayWithoutHoles","_iterableToArray","_iterableToArrayLimit","_nonIterableRest","_nonIterableSpread","_slicedToArray","_unsupportedIterableToArray","_toConsumableArray","_toPrimitive","_toPropertyKey","colors","scaleOrdinal","schemePaired","accessorFn","Kapsule","indexBy","forceSimulation","forceLink","forceManyBody","forceCenter","forceRadial","zoomTransform","min","max","zoom","ColorTracker","drag","select","Tooltip","forwardRef","useRef","ForceGraph","useState","useRef","useMemo","useCallback","css"],"sources":["../../knowledge/lib/graph.js","../src/client/shell-faces.ts","../src/client/icons.tsx","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/namespaces.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/namespace.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/creator.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selector.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/select.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/array.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selectorAll.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/selectAll.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/matcher.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/selectChild.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/selectChildren.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/filter.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/sparse.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/enter.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/constant.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/data.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/exit.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/join.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/merge.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/order.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/sort.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/call.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/nodes.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/node.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/size.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/empty.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/each.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/attr.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/window.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/style.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/property.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/classed.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/text.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/html.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/raise.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/lower.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/append.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/insert.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/remove.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/clone.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/datum.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/on.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/dispatch.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/iterator.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/index.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/select.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/sourceEvent.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/pointer.js","../../../node_modules/.pnpm/d3-dispatch@3.0.1/node_modules/d3-dispatch/src/dispatch.js","../../../node_modules/.pnpm/d3-drag@3.0.0/node_modules/d3-drag/src/noevent.js","../../../node_modules/.pnpm/d3-drag@3.0.0/node_modules/d3-drag/src/nodrag.js","../../../node_modules/.pnpm/d3-drag@3.0.0/node_modules/d3-drag/src/constant.js","../../../node_modules/.pnpm/d3-drag@3.0.0/node_modules/d3-drag/src/event.js","../../../node_modules/.pnpm/d3-drag@3.0.0/node_modules/d3-drag/src/drag.js","../../../node_modules/.pnpm/d3-color@3.1.0/node_modules/d3-color/src/define.js","../../../node_modules/.pnpm/d3-color@3.1.0/node_modules/d3-color/src/color.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/basis.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/basisClosed.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/constant.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/color.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/rgb.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/number.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/string.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/decompose.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/parse.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/index.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/zoom.js","../../../node_modules/.pnpm/d3-timer@3.0.1/node_modules/d3-timer/src/timer.js","../../../node_modules/.pnpm/d3-timer@3.0.1/node_modules/d3-timer/src/timeout.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/schedule.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/interrupt.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/selection/interrupt.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/tween.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/interpolate.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/attr.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/attrTween.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/delay.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/duration.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/ease.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/easeVarying.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/filter.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/merge.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/on.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/remove.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/select.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/selectAll.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/selection.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/style.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/styleTween.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/text.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/textTween.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/transition.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/end.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/index.js","../../../node_modules/.pnpm/d3-ease@3.0.1/node_modules/d3-ease/src/cubic.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/selection/transition.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/selection/index.js","../../../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/constant.js","../../../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/event.js","../../../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/transform.js","../../../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/noevent.js","../../../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/zoom.js","../../../node_modules/.pnpm/internmap@2.0.3/node_modules/internmap/src/index.js","../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/max.js","../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/min.js","../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/sum.js","../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_freeGlobal.js","../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_root.js","../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Symbol.js","../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getRawTag.js","../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_objectToString.js","../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseGetTag.js","../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isObjectLike.js","../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isSymbol.js","../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_trimmedEndIndex.js","../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseTrim.js","../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isObject.js","../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/toNumber.js","../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/now.js","../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/debounce.js","../../../node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/throttle.js","../../../node_modules/.pnpm/@tweenjs+tween.js@25.0.0/node_modules/@tweenjs/tween.js/dist/tween.esm.js","../../../node_modules/.pnpm/kapsule@1.16.3/node_modules/kapsule/dist/kapsule.mjs","../../../node_modules/.pnpm/accessor-fn@1.5.3/node_modules/accessor-fn/dist/accessor-fn.mjs","../../../node_modules/.pnpm/tinycolor2@1.6.0/node_modules/tinycolor2/esm/tinycolor.js","../../../node_modules/.pnpm/canvas-color-tracker@1.3.2/node_modules/canvas-color-tracker/dist/canvas-color-tracker.mjs","../../../node_modules/.pnpm/preact@10.29.8/node_modules/preact/dist/preact.module.js","../../../node_modules/.pnpm/float-tooltip@1.7.5/node_modules/float-tooltip/dist/float-tooltip.mjs","../../../node_modules/.pnpm/d3-force-3d@3.0.6/node_modules/d3-force-3d/src/center.js","../../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/add.js","../../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/cover.js","../../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/data.js","../../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/extent.js","../../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/half.js","../../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/find.js","../../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/remove.js","../../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/root.js","../../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/size.js","../../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/visit.js","../../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/visitAfter.js","../../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/x.js","../../../node_modules/.pnpm/d3-binarytree@1.0.2/node_modules/d3-binarytree/src/binarytree.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/add.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/cover.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/data.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/extent.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/quad.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/find.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/remove.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/root.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/size.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/visit.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/visitAfter.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/x.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/y.js","../../../node_modules/.pnpm/d3-quadtree@3.0.1/node_modules/d3-quadtree/src/quadtree.js","../../../node_modules/.pnpm/d3-octree@1.1.0/node_modules/d3-octree/src/add.js","../../../node_modules/.pnpm/d3-octree@1.1.0/node_modules/d3-octree/src/cover.js","../../../node_modules/.pnpm/d3-octree@1.1.0/node_modules/d3-octree/src/data.js","../../../node_modules/.pnpm/d3-octree@1.1.0/node_modules/d3-octree/src/extent.js","../../../node_modules/.pnpm/d3-octree@1.1.0/node_modules/d3-octree/src/octant.js","../../../node_modules/.pnpm/d3-octree@1.1.0/node_modules/d3-octree/src/find.js","../../../node_modules/.pnpm/d3-octree@1.1.0/node_modules/d3-octree/src/findAll.js","../../../node_modules/.pnpm/d3-octree@1.1.0/node_modules/d3-octree/src/remove.js","../../../node_modules/.pnpm/d3-octree@1.1.0/node_modules/d3-octree/src/root.js","../../../node_modules/.pnpm/d3-octree@1.1.0/node_modules/d3-octree/src/size.js","../../../node_modules/.pnpm/d3-octree@1.1.0/node_modules/d3-octree/src/visit.js","../../../node_modules/.pnpm/d3-octree@1.1.0/node_modules/d3-octree/src/visitAfter.js","../../../node_modules/.pnpm/d3-octree@1.1.0/node_modules/d3-octree/src/x.js","../../../node_modules/.pnpm/d3-octree@1.1.0/node_modules/d3-octree/src/y.js","../../../node_modules/.pnpm/d3-octree@1.1.0/node_modules/d3-octree/src/z.js","../../../node_modules/.pnpm/d3-octree@1.1.0/node_modules/d3-octree/src/octree.js","../../../node_modules/.pnpm/d3-force-3d@3.0.6/node_modules/d3-force-3d/src/constant.js","../../../node_modules/.pnpm/d3-force-3d@3.0.6/node_modules/d3-force-3d/src/jiggle.js","../../../node_modules/.pnpm/d3-force-3d@3.0.6/node_modules/d3-force-3d/src/link.js","../../../node_modules/.pnpm/d3-force-3d@3.0.6/node_modules/d3-force-3d/src/lcg.js","../../../node_modules/.pnpm/d3-force-3d@3.0.6/node_modules/d3-force-3d/src/simulation.js","../../../node_modules/.pnpm/d3-force-3d@3.0.6/node_modules/d3-force-3d/src/manyBody.js","../../../node_modules/.pnpm/d3-force-3d@3.0.6/node_modules/d3-force-3d/src/radial.js","../../../node_modules/.pnpm/bezier-js@6.1.4/node_modules/bezier-js/src/utils.js","../../../node_modules/.pnpm/bezier-js@6.1.4/node_modules/bezier-js/src/poly-bezier.js","../../../node_modules/.pnpm/bezier-js@6.1.4/node_modules/bezier-js/src/bezier.js","../../../node_modules/.pnpm/index-array-by@1.4.2/node_modules/index-array-by/dist/index-array-by.mjs","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/init.js","../../../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/ordinal.js","../../../node_modules/.pnpm/d3-scale-chromatic@3.1.0/node_modules/d3-scale-chromatic/src/colors.js","../../../node_modules/.pnpm/d3-scale-chromatic@3.1.0/node_modules/d3-scale-chromatic/src/categorical/Paired.js","../../../node_modules/.pnpm/force-graph@1.51.4/node_modules/force-graph/dist/force-graph.mjs","../src/client/KnowledgeGraph.tsx","../src/client/KnowledgeView.tsx","../src/client/locales.ts","../src/client/index.ts"],"sourcesContent":["//#region src/graph.ts\nfunction buildGraph(cards, options = {}) {\n\tconst { coTag = true, coAuthor = true, tagHubs = false } = options;\n\tif (!cards || cards.length === 0) return {\n\t\tnodes: [],\n\t\tlinks: []\n\t};\n\tconst cardMap = /* @__PURE__ */ new Map();\n\tfor (const c of cards) cardMap.set(c.id, c);\n\tconst linkMap = /* @__PURE__ */ new Map();\n\tfunction makeLinkKey(id1, id2, kind) {\n\t\tconst [a, b] = id1 < id2 ? [id1, id2] : [id2, id1];\n\t\treturn `${kind}:${a}:${b}`;\n\t}\n\tif (tagHubs) {\n\t\tfor (const card of cards) {\n\t\t\tif (card.related && Array.isArray(card.related)) {\n\t\t\t\tfor (const targetId of card.related) if (cardMap.has(targetId) && targetId !== card.id) {\n\t\t\t\t\tconst key = makeLinkKey(card.id, targetId, \"related\");\n\t\t\t\t\tif (!linkMap.has(key)) {\n\t\t\t\t\t\tconst [source, target] = card.id < targetId ? [card.id, targetId] : [targetId, card.id];\n\t\t\t\t\t\tlinkMap.set(key, {\n\t\t\t\t\t\t\tsource,\n\t\t\t\t\t\t\ttarget,\n\t\t\t\t\t\t\tkind: \"related\",\n\t\t\t\t\t\t\tweight: 2\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst seen = /* @__PURE__ */ new Set();\n\t\t\tfor (const tag of card.tags) {\n\t\t\t\tconst name = (tag ?? \"\").trim();\n\t\t\t\tif (!name || seen.has(name)) continue;\n\t\t\t\tseen.add(name);\n\t\t\t\tconst hubId = \"tag:\" + name;\n\t\t\t\tlinkMap.set(makeLinkKey(card.id, hubId, \"tag-hub\"), {\n\t\t\t\t\tsource: card.id,\n\t\t\t\t\ttarget: hubId,\n\t\t\t\t\tkind: \"tag-hub\",\n\t\t\t\t\tweight: 1\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tconst hubLinks = Array.from(linkMap.values());\n\t\tconst degreeMap = /* @__PURE__ */ new Map();\n\t\tfor (const c of cards) degreeMap.set(c.id, 0);\n\t\tfor (const l of hubLinks) {\n\t\t\tdegreeMap.set(l.source, (degreeMap.get(l.source) ?? 0) + 1);\n\t\t\tdegreeMap.set(l.target, (degreeMap.get(l.target) ?? 0) + 1);\n\t\t}\n\t\tconst cardNodes = cards.map((card) => ({\n\t\t\tid: card.id,\n\t\t\tlabel: card.title,\n\t\t\tcluster: card.tags[0] ?? \"未分类\",\n\t\t\tcredibility: card.credibility,\n\t\t\tdegree: degreeMap.get(card.id) ?? 0,\n\t\t\ttype: \"card\",\n\t\t\traw: card\n\t\t}));\n\t\tconst hubNodes = [...degreeMap.keys()].filter((id) => id.startsWith(\"tag:\")).map((id) => ({\n\t\t\tid,\n\t\t\tlabel: id.slice(4),\n\t\t\tcluster: id.slice(4),\n\t\t\tcredibility: \"medium\",\n\t\t\tdegree: degreeMap.get(id) ?? 0,\n\t\t\ttype: \"tag\"\n\t\t}));\n\t\treturn {\n\t\t\tnodes: [...cardNodes, ...hubNodes],\n\t\t\tlinks: hubLinks\n\t\t};\n\t}\n\tfor (const card of cards) if (card.related && Array.isArray(card.related)) {\n\t\tfor (const targetId of card.related) if (cardMap.has(targetId) && targetId !== card.id) {\n\t\t\tconst key = makeLinkKey(card.id, targetId, \"related\");\n\t\t\tif (!linkMap.has(key)) {\n\t\t\t\tconst [source, target] = card.id < targetId ? [card.id, targetId] : [targetId, card.id];\n\t\t\t\tlinkMap.set(key, {\n\t\t\t\t\tsource,\n\t\t\t\t\ttarget,\n\t\t\t\t\tkind: \"related\",\n\t\t\t\t\tweight: 2\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\tif (coTag) for (let i = 0; i < cards.length; i++) {\n\t\tconst cardA = cards[i];\n\t\tconst tagsA = new Set(cardA.tags);\n\t\tfor (let j = i + 1; j < cards.length; j++) {\n\t\t\tconst cardB = cards[j];\n\t\t\tlet sharedTagCount = 0;\n\t\t\tfor (const t of cardB.tags) if (tagsA.has(t)) sharedTagCount++;\n\t\t\tif (sharedTagCount > 0) {\n\t\t\t\tconst key = makeLinkKey(cardA.id, cardB.id, \"co-tag\");\n\t\t\t\tconst [source, target] = cardA.id < cardB.id ? [cardA.id, cardB.id] : [cardB.id, cardA.id];\n\t\t\t\tlinkMap.set(key, {\n\t\t\t\t\tsource,\n\t\t\t\t\ttarget,\n\t\t\t\t\tkind: \"co-tag\",\n\t\t\t\t\tweight: sharedTagCount\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\tif (coAuthor) for (let i = 0; i < cards.length; i++) {\n\t\tconst cardA = cards[i];\n\t\tconst authorA = cardA.source.author.trim();\n\t\tif (!authorA || authorA === \"manual\" || authorA === \"手工\") continue;\n\t\tfor (let j = i + 1; j < cards.length; j++) {\n\t\t\tconst cardB = cards[j];\n\t\t\tif (authorA === cardB.source.author.trim()) {\n\t\t\t\tconst key = makeLinkKey(cardA.id, cardB.id, \"co-author\");\n\t\t\t\tconst [source, target] = cardA.id < cardB.id ? [cardA.id, cardB.id] : [cardB.id, cardA.id];\n\t\t\t\tlinkMap.set(key, {\n\t\t\t\t\tsource,\n\t\t\t\t\ttarget,\n\t\t\t\t\tkind: \"co-author\",\n\t\t\t\t\tweight: 1\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\tconst links = Array.from(linkMap.values());\n\tconst degreeMap = /* @__PURE__ */ new Map();\n\tfor (const c of cards) degreeMap.set(c.id, 0);\n\tfor (const l of links) {\n\t\tdegreeMap.set(l.source, (degreeMap.get(l.source) ?? 0) + 1);\n\t\tdegreeMap.set(l.target, (degreeMap.get(l.target) ?? 0) + 1);\n\t}\n\treturn {\n\t\tnodes: cards.map((card) => ({\n\t\t\tid: card.id,\n\t\t\tlabel: card.title,\n\t\t\tcluster: card.tags[0] ?? \"未分类\",\n\t\t\tcredibility: card.credibility,\n\t\t\tdegree: degreeMap.get(card.id) ?? 0,\n\t\t\traw: card\n\t\t})),\n\t\tlinks\n\t};\n}\n//#endregion\nexport { buildGraph };\n","/**\n * Shell 面(最小结构镜像):client-ui-knowledge 不 import\n * client-ui-trading 的内部模块(插件间协作一律走 cordis 服务 inject)。\n * readJson/writeJson 是 localStorage 纯工具(shell 同款实现,~20 行),\n * 镜像成本低于为此在服务面开洞。\n */\n\n/** localStorage read that survives unavailable storage (privacy mode) and corrupt JSON. */\nexport function readJson<T>(key: string, fallback: T): T {\n try {\n const raw = localStorage.getItem(key)\n if (raw === null) return fallback\n return JSON.parse(raw) as T\n } catch {\n return fallback\n }\n}\n\n/** localStorage write that survives unavailable storage. */\nexport function writeJson(key: string, value: unknown): void {\n try {\n localStorage.setItem(key, JSON.stringify(value))\n } catch {\n /* storage unavailable — session-only degradation */\n }\n}","/**\n * 视图包内联矢量图标(shell icons.tsx 同款 outline 风格;只带本视图用到的)。\n */\nimport type { ReactElement } from 'react'\n\n/** 放大镜搜索图标。 */\nexport function IconSearch({ size = 14 }: { size?: number }): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width={size} height={size} aria-hidden=\"true\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"6.5\" cy=\"6.5\" r=\"4.5\" />\n <path d=\"M10 10l3.5 3.5\" />\n </svg>\n )\n}\n\n/** 知识图谱网络图标。 */\nexport function IconKnowledge({ size = 16 }: { size?: number }): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width={size} height={size} aria-hidden=\"true\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"4\" cy=\"5\" r=\"2\" />\n <circle cx=\"12\" cy=\"5\" r=\"2\" />\n <circle cx=\"8\" cy=\"12\" r=\"2\" />\n <path d=\"M5.5 6l4.5 4.5M10.5 6l-4.5 4.5M6 5h4\" />\n </svg>\n )\n}","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default x => () => x;\n","export default function DragEvent(type, {\n sourceEvent,\n subject,\n target,\n identifier,\n active,\n x, y, dx, dy,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n subject: {value: subject, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n identifier: {value: identifier, enumerable: true, configurable: true},\n active: {value: active, enumerable: true, configurable: true},\n x: {value: x, enumerable: true, configurable: true},\n y: {value: y, enumerable: true, configurable: true},\n dx: {value: dx, enumerable: true, configurable: true},\n dy: {value: dy, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {select, pointer} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nonpassive, nonpassivecapture, nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(event, d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved, nonpassive)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned(event, d) {\n if (touchending || !filter.call(this, event, d)) return;\n var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n if (!gesture) return;\n select(event.view)\n .on(\"mousemove.drag\", mousemoved, nonpassivecapture)\n .on(\"mouseup.drag\", mouseupped, nonpassivecapture);\n nodrag(event.view);\n nopropagation(event);\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\", event);\n }\n\n function mousemoved(event) {\n noevent(event);\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\", event);\n }\n\n function mouseupped(event) {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent(event);\n gestures.mouse(\"end\", event);\n }\n\n function touchstarted(event, d) {\n if (!filter.call(this, event, d)) return;\n var touches = event.changedTouches,\n c = container.call(this, event, d),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n nopropagation(event);\n gesture(\"start\", event, touches[i]);\n }\n }\n }\n\n function touchmoved(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent(event);\n gesture(\"drag\", event, touches[i]);\n }\n }\n }\n\n function touchended(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation(event);\n gesture(\"end\", event, touches[i]);\n }\n }\n }\n\n function beforestart(that, container, event, d, identifier, touch) {\n var dispatch = listeners.copy(),\n p = pointer(touch || event, container), dx, dy,\n s;\n\n if ((s = subject.call(that, new DragEvent(\"beforestart\", {\n sourceEvent: event,\n target: drag,\n identifier,\n active,\n x: p[0],\n y: p[1],\n dx: 0,\n dy: 0,\n dispatch\n }), d)) == null) return;\n\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n\n return function gesture(type, event, touch) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[identifier] = gesture, n = active++; break;\n case \"end\": delete gestures[identifier], --active; // falls through\n case \"drag\": p = pointer(touch || event, container), n = active; break;\n }\n dispatch.call(\n type,\n that,\n new DragEvent(type, {\n sourceEvent: event,\n subject: s,\n target: drag,\n identifier,\n active: n,\n x: p[0] + dx,\n y: p[1] + dy,\n dx: p[0] - p0[0],\n dy: p[1] - p0[1],\n dispatch\n }),\n d\n );\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","export default x => () => x;\n","export default function ZoomEvent(type, {\n sourceEvent,\n target,\n transform,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n transform: {value: transform, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled, {passive: false})\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .event(event)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p, event) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function(selection, k, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function(selection, x, y, event) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function(selection, x, y, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function(event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = pointer(event);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var currentTarget = event.currentTarget,\n g = gesture(this, args, true).event(event),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = pointer(event, currentTarget),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved(event) {\n noevent(event);\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event)\n .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n noevent(event);\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n else select(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started, i, t, p;\n\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","export default function sum(values, valueof) {\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n sum += value;\n }\n }\n }\n return sum;\n}\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nexport default debounce;\n","import debounce from './debounce.js';\nimport isObject from './isObject.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nexport default throttle;\n","/**\n * The Ease class provides a collection of easing functions for use with tween.js.\n */\nvar Easing = Object.freeze({\n Linear: Object.freeze({\n None: function (amount) {\n return amount;\n },\n In: function (amount) {\n return amount;\n },\n Out: function (amount) {\n return amount;\n },\n InOut: function (amount) {\n return amount;\n },\n }),\n Quadratic: Object.freeze({\n In: function (amount) {\n return amount * amount;\n },\n Out: function (amount) {\n return amount * (2 - amount);\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return 0.5 * amount * amount;\n }\n return -0.5 * (--amount * (amount - 2) - 1);\n },\n }),\n Cubic: Object.freeze({\n In: function (amount) {\n return amount * amount * amount;\n },\n Out: function (amount) {\n return --amount * amount * amount + 1;\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return 0.5 * amount * amount * amount;\n }\n return 0.5 * ((amount -= 2) * amount * amount + 2);\n },\n }),\n Quartic: Object.freeze({\n In: function (amount) {\n return amount * amount * amount * amount;\n },\n Out: function (amount) {\n return 1 - --amount * amount * amount * amount;\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return 0.5 * amount * amount * amount * amount;\n }\n return -0.5 * ((amount -= 2) * amount * amount * amount - 2);\n },\n }),\n Quintic: Object.freeze({\n In: function (amount) {\n return amount * amount * amount * amount * amount;\n },\n Out: function (amount) {\n return --amount * amount * amount * amount * amount + 1;\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return 0.5 * amount * amount * amount * amount * amount;\n }\n return 0.5 * ((amount -= 2) * amount * amount * amount * amount + 2);\n },\n }),\n Sinusoidal: Object.freeze({\n In: function (amount) {\n return 1 - Math.sin(((1.0 - amount) * Math.PI) / 2);\n },\n Out: function (amount) {\n return Math.sin((amount * Math.PI) / 2);\n },\n InOut: function (amount) {\n return 0.5 * (1 - Math.sin(Math.PI * (0.5 - amount)));\n },\n }),\n Exponential: Object.freeze({\n In: function (amount) {\n return amount === 0 ? 0 : Math.pow(1024, amount - 1);\n },\n Out: function (amount) {\n return amount === 1 ? 1 : 1 - Math.pow(2, -10 * amount);\n },\n InOut: function (amount) {\n if (amount === 0) {\n return 0;\n }\n if (amount === 1) {\n return 1;\n }\n if ((amount *= 2) < 1) {\n return 0.5 * Math.pow(1024, amount - 1);\n }\n return 0.5 * (-Math.pow(2, -10 * (amount - 1)) + 2);\n },\n }),\n Circular: Object.freeze({\n In: function (amount) {\n return 1 - Math.sqrt(1 - amount * amount);\n },\n Out: function (amount) {\n return Math.sqrt(1 - --amount * amount);\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return -0.5 * (Math.sqrt(1 - amount * amount) - 1);\n }\n return 0.5 * (Math.sqrt(1 - (amount -= 2) * amount) + 1);\n },\n }),\n Elastic: Object.freeze({\n In: function (amount) {\n if (amount === 0) {\n return 0;\n }\n if (amount === 1) {\n return 1;\n }\n return -Math.pow(2, 10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI);\n },\n Out: function (amount) {\n if (amount === 0) {\n return 0;\n }\n if (amount === 1) {\n return 1;\n }\n return Math.pow(2, -10 * amount) * Math.sin((amount - 0.1) * 5 * Math.PI) + 1;\n },\n InOut: function (amount) {\n if (amount === 0) {\n return 0;\n }\n if (amount === 1) {\n return 1;\n }\n amount *= 2;\n if (amount < 1) {\n return -0.5 * Math.pow(2, 10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI);\n }\n return 0.5 * Math.pow(2, -10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI) + 1;\n },\n }),\n Back: Object.freeze({\n In: function (amount) {\n var s = 1.70158;\n return amount === 1 ? 1 : amount * amount * ((s + 1) * amount - s);\n },\n Out: function (amount) {\n var s = 1.70158;\n return amount === 0 ? 0 : --amount * amount * ((s + 1) * amount + s) + 1;\n },\n InOut: function (amount) {\n var s = 1.70158 * 1.525;\n if ((amount *= 2) < 1) {\n return 0.5 * (amount * amount * ((s + 1) * amount - s));\n }\n return 0.5 * ((amount -= 2) * amount * ((s + 1) * amount + s) + 2);\n },\n }),\n Bounce: Object.freeze({\n In: function (amount) {\n return 1 - Easing.Bounce.Out(1 - amount);\n },\n Out: function (amount) {\n if (amount < 1 / 2.75) {\n return 7.5625 * amount * amount;\n }\n else if (amount < 2 / 2.75) {\n return 7.5625 * (amount -= 1.5 / 2.75) * amount + 0.75;\n }\n else if (amount < 2.5 / 2.75) {\n return 7.5625 * (amount -= 2.25 / 2.75) * amount + 0.9375;\n }\n else {\n return 7.5625 * (amount -= 2.625 / 2.75) * amount + 0.984375;\n }\n },\n InOut: function (amount) {\n if (amount < 0.5) {\n return Easing.Bounce.In(amount * 2) * 0.5;\n }\n return Easing.Bounce.Out(amount * 2 - 1) * 0.5 + 0.5;\n },\n }),\n generatePow: function (power) {\n if (power === void 0) { power = 4; }\n power = power < Number.EPSILON ? Number.EPSILON : power;\n power = power > 10000 ? 10000 : power;\n return {\n In: function (amount) {\n return Math.pow(amount, power);\n },\n Out: function (amount) {\n return 1 - Math.pow((1 - amount), power);\n },\n InOut: function (amount) {\n if (amount < 0.5) {\n return Math.pow((amount * 2), power) / 2;\n }\n return (1 - Math.pow((2 - amount * 2), power)) / 2 + 0.5;\n },\n };\n },\n});\n\nvar now = function () { return performance.now(); };\n\n/**\n * Controlling groups of tweens\n *\n * Using the TWEEN singleton to manage your tweens can cause issues in large apps with many components.\n * In these cases, you may want to create your own smaller groups of tween\n */\nvar Group = /** @class */ (function () {\n function Group() {\n var tweens = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n tweens[_i] = arguments[_i];\n }\n this._tweens = {};\n this._tweensAddedDuringUpdate = {};\n this.add.apply(this, tweens);\n }\n Group.prototype.getAll = function () {\n var _this = this;\n return Object.keys(this._tweens).map(function (tweenId) { return _this._tweens[tweenId]; });\n };\n Group.prototype.removeAll = function () {\n this._tweens = {};\n };\n Group.prototype.add = function () {\n var _a;\n var tweens = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n tweens[_i] = arguments[_i];\n }\n for (var _b = 0, tweens_1 = tweens; _b < tweens_1.length; _b++) {\n var tween = tweens_1[_b];\n // Remove from any other group first, a tween can only be in one group at a time.\n // @ts-expect-error library internal access\n (_a = tween._group) === null || _a === void 0 ? void 0 : _a.remove(tween);\n // @ts-expect-error library internal access\n tween._group = this;\n this._tweens[tween.getId()] = tween;\n this._tweensAddedDuringUpdate[tween.getId()] = tween;\n }\n };\n Group.prototype.remove = function () {\n var tweens = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n tweens[_i] = arguments[_i];\n }\n for (var _a = 0, tweens_2 = tweens; _a < tweens_2.length; _a++) {\n var tween = tweens_2[_a];\n // @ts-expect-error library internal access\n tween._group = undefined;\n delete this._tweens[tween.getId()];\n delete this._tweensAddedDuringUpdate[tween.getId()];\n }\n };\n /** Return true if all tweens in the group are not paused or playing. */\n Group.prototype.allStopped = function () {\n return this.getAll().every(function (tween) { return !tween.isPlaying(); });\n };\n Group.prototype.update = function (time, preserve) {\n if (time === void 0) { time = now(); }\n if (preserve === void 0) { preserve = true; }\n var tweenIds = Object.keys(this._tweens);\n if (tweenIds.length === 0)\n return;\n // Tweens are updated in \"batches\". If you add a new tween during an\n // update, then the new tween will be updated in the next batch.\n // If you remove a tween during an update, it may or may not be updated.\n // However, if the removed tween was added during the current batch,\n // then it will not be updated.\n while (tweenIds.length > 0) {\n this._tweensAddedDuringUpdate = {};\n for (var i = 0; i < tweenIds.length; i++) {\n var tween = this._tweens[tweenIds[i]];\n var autoStart = !preserve;\n if (tween && tween.update(time, autoStart) === false && !preserve)\n this.remove(tween);\n }\n tweenIds = Object.keys(this._tweensAddedDuringUpdate);\n }\n };\n return Group;\n}());\n\n/**\n *\n */\nvar Interpolation = {\n Linear: function (v, k) {\n var m = v.length - 1;\n var f = m * k;\n var i = Math.floor(f);\n var fn = Interpolation.Utils.Linear;\n if (k < 0) {\n return fn(v[0], v[1], f);\n }\n if (k > 1) {\n return fn(v[m], v[m - 1], m - f);\n }\n return fn(v[i], v[i + 1 > m ? m : i + 1], f - i);\n },\n Bezier: function (v, k) {\n var b = 0;\n var n = v.length - 1;\n var pw = Math.pow;\n var bn = Interpolation.Utils.Bernstein;\n for (var i = 0; i <= n; i++) {\n b += pw(1 - k, n - i) * pw(k, i) * v[i] * bn(n, i);\n }\n return b;\n },\n CatmullRom: function (v, k) {\n var m = v.length - 1;\n var f = m * k;\n var i = Math.floor(f);\n var fn = Interpolation.Utils.CatmullRom;\n if (v[0] === v[m]) {\n if (k < 0) {\n i = Math.floor((f = m * (1 + k)));\n }\n return fn(v[(i - 1 + m) % m], v[i], v[(i + 1) % m], v[(i + 2) % m], f - i);\n }\n else {\n if (k < 0) {\n return v[0] - (fn(v[0], v[0], v[1], v[1], -f) - v[0]);\n }\n if (k > 1) {\n return v[m] - (fn(v[m], v[m], v[m - 1], v[m - 1], f - m) - v[m]);\n }\n return fn(v[i ? i - 1 : 0], v[i], v[m < i + 1 ? m : i + 1], v[m < i + 2 ? m : i + 2], f - i);\n }\n },\n Utils: {\n Linear: function (p0, p1, t) {\n return (p1 - p0) * t + p0;\n },\n Bernstein: function (n, i) {\n var fc = Interpolation.Utils.Factorial;\n return fc(n) / fc(i) / fc(n - i);\n },\n Factorial: (function () {\n var a = [1];\n return function (n) {\n var s = 1;\n if (a[n]) {\n return a[n];\n }\n for (var i = n; i > 1; i--) {\n s *= i;\n }\n a[n] = s;\n return s;\n };\n })(),\n CatmullRom: function (p0, p1, p2, p3, t) {\n var v0 = (p2 - p0) * 0.5;\n var v1 = (p3 - p1) * 0.5;\n var t2 = t * t;\n var t3 = t * t2;\n return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;\n },\n },\n};\n\n/**\n * Utils\n */\nvar Sequence = /** @class */ (function () {\n function Sequence() {\n }\n Sequence.nextId = function () {\n return Sequence._nextId++;\n };\n Sequence._nextId = 0;\n return Sequence;\n}());\n\nvar mainGroup = new Group();\n\n/**\n * Tween.js - Licensed under the MIT license\n * https://github.com/tweenjs/tween.js\n * ----------------------------------------------\n *\n * See https://github.com/tweenjs/tween.js/graphs/contributors for the full list of contributors.\n * Thank you all, you're awesome!\n */\nvar Tween = /** @class */ (function () {\n function Tween(object, group) {\n this._isPaused = false;\n this._pauseStart = 0;\n this._valuesStart = {};\n this._valuesEnd = {};\n this._valuesStartRepeat = {};\n this._duration = 1000;\n this._isDynamic = false;\n this._initialRepeat = 0;\n this._repeat = 0;\n this._yoyo = false;\n this._isPlaying = false;\n this._reversed = false;\n this._delayTime = 0;\n this._startTime = 0;\n this._easingFunction = Easing.Linear.None;\n this._interpolationFunction = Interpolation.Linear;\n // eslint-disable-next-line\n this._chainedTweens = [];\n this._onStartCallbackFired = false;\n this._onEveryStartCallbackFired = false;\n this._id = Sequence.nextId();\n this._isChainStopped = false;\n this._propertiesAreSetUp = false;\n this._goToEnd = false;\n this._object = object;\n if (typeof group === 'object') {\n this._group = group;\n group.add(this);\n }\n // Use \"true\" to restore old behavior (will be removed in future release).\n else if (group === true) {\n this._group = mainGroup;\n mainGroup.add(this);\n }\n }\n Tween.prototype.getId = function () {\n return this._id;\n };\n Tween.prototype.isPlaying = function () {\n return this._isPlaying;\n };\n Tween.prototype.isPaused = function () {\n return this._isPaused;\n };\n Tween.prototype.getDuration = function () {\n return this._duration;\n };\n Tween.prototype.to = function (target, duration) {\n if (duration === void 0) { duration = 1000; }\n if (this._isPlaying)\n throw new Error('Can not call Tween.to() while Tween is already started or paused. Stop the Tween first.');\n this._valuesEnd = target;\n this._propertiesAreSetUp = false;\n this._duration = duration < 0 ? 0 : duration;\n return this;\n };\n Tween.prototype.duration = function (duration) {\n if (duration === void 0) { duration = 1000; }\n this._duration = duration < 0 ? 0 : duration;\n return this;\n };\n Tween.prototype.dynamic = function (dynamic) {\n if (dynamic === void 0) { dynamic = false; }\n this._isDynamic = dynamic;\n return this;\n };\n Tween.prototype.start = function (time, overrideStartingValues) {\n if (time === void 0) { time = now(); }\n if (overrideStartingValues === void 0) { overrideStartingValues = false; }\n if (this._isPlaying) {\n return this;\n }\n this._repeat = this._initialRepeat;\n if (this._reversed) {\n // If we were reversed (f.e. using the yoyo feature) then we need to\n // flip the tween direction back to forward.\n this._reversed = false;\n for (var property in this._valuesStartRepeat) {\n this._swapEndStartRepeatValues(property);\n this._valuesStart[property] = this._valuesStartRepeat[property];\n }\n }\n this._isPlaying = true;\n this._isPaused = false;\n this._onStartCallbackFired = false;\n this._onEveryStartCallbackFired = false;\n this._isChainStopped = false;\n this._startTime = time;\n this._startTime += this._delayTime;\n if (!this._propertiesAreSetUp || overrideStartingValues) {\n this._propertiesAreSetUp = true;\n // If dynamic is not enabled, clone the end values instead of using the passed-in end values.\n if (!this._isDynamic) {\n var tmp = {};\n for (var prop in this._valuesEnd)\n tmp[prop] = this._valuesEnd[prop];\n this._valuesEnd = tmp;\n }\n this._setupProperties(this._object, this._valuesStart, this._valuesEnd, this._valuesStartRepeat, overrideStartingValues);\n }\n return this;\n };\n Tween.prototype.startFromCurrentValues = function (time) {\n return this.start(time, true);\n };\n Tween.prototype._setupProperties = function (_object, _valuesStart, _valuesEnd, _valuesStartRepeat, overrideStartingValues) {\n for (var property in _valuesEnd) {\n var startValue = _object[property];\n var startValueIsArray = Array.isArray(startValue);\n var propType = startValueIsArray ? 'array' : typeof startValue;\n var isInterpolationList = !startValueIsArray && Array.isArray(_valuesEnd[property]);\n // If `to()` specifies a property that doesn't exist in the source object,\n // we should not set that property in the object\n if (propType === 'undefined' || propType === 'function') {\n continue;\n }\n // Check if an Array was provided as property value\n if (isInterpolationList) {\n var endValues = _valuesEnd[property];\n if (endValues.length === 0) {\n continue;\n }\n // Handle an array of relative values.\n // Creates a local copy of the Array with the start value at the front\n var temp = [startValue];\n for (var i = 0, l = endValues.length; i < l; i += 1) {\n var value = this._handleRelativeValue(startValue, endValues[i]);\n if (isNaN(value)) {\n isInterpolationList = false;\n console.warn('Found invalid interpolation list. Skipping.');\n break;\n }\n temp.push(value);\n }\n if (isInterpolationList) {\n // if (_valuesStart[property] === undefined) { // handle end values only the first time. NOT NEEDED? setupProperties is now guarded by _propertiesAreSetUp.\n _valuesEnd[property] = temp;\n // }\n }\n }\n // handle the deepness of the values\n if ((propType === 'object' || startValueIsArray) && startValue && !isInterpolationList) {\n _valuesStart[property] = startValueIsArray ? [] : {};\n var nestedObject = startValue;\n for (var prop in nestedObject) {\n _valuesStart[property][prop] = nestedObject[prop];\n }\n // TODO? repeat nested values? And yoyo? And array values?\n _valuesStartRepeat[property] = startValueIsArray ? [] : {};\n var endValues = _valuesEnd[property];\n // If dynamic is not enabled, clone the end values instead of using the passed-in end values.\n if (!this._isDynamic) {\n var tmp = {};\n for (var prop in endValues)\n tmp[prop] = endValues[prop];\n _valuesEnd[property] = endValues = tmp;\n }\n this._setupProperties(nestedObject, _valuesStart[property], endValues, _valuesStartRepeat[property], overrideStartingValues);\n }\n else {\n // Save the starting value, but only once unless override is requested.\n if (typeof _valuesStart[property] === 'undefined' || overrideStartingValues) {\n _valuesStart[property] = startValue;\n }\n if (!startValueIsArray) {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n _valuesStart[property] *= 1.0; // Ensures we're using numbers, not strings\n }\n if (isInterpolationList) {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n _valuesStartRepeat[property] = _valuesEnd[property].slice().reverse();\n }\n else {\n _valuesStartRepeat[property] = _valuesStart[property] || 0;\n }\n }\n }\n };\n Tween.prototype.stop = function () {\n if (!this._isChainStopped) {\n this._isChainStopped = true;\n this.stopChainedTweens();\n }\n if (!this._isPlaying) {\n return this;\n }\n this._isPlaying = false;\n this._isPaused = false;\n if (this._onStopCallback) {\n this._onStopCallback(this._object);\n }\n return this;\n };\n Tween.prototype.end = function () {\n this._goToEnd = true;\n this.update(this._startTime + this._duration);\n return this;\n };\n Tween.prototype.pause = function (time) {\n if (time === void 0) { time = now(); }\n if (this._isPaused || !this._isPlaying) {\n return this;\n }\n this._isPaused = true;\n this._pauseStart = time;\n return this;\n };\n Tween.prototype.resume = function (time) {\n if (time === void 0) { time = now(); }\n if (!this._isPaused || !this._isPlaying) {\n return this;\n }\n this._isPaused = false;\n this._startTime += time - this._pauseStart;\n this._pauseStart = 0;\n return this;\n };\n Tween.prototype.stopChainedTweens = function () {\n for (var i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) {\n this._chainedTweens[i].stop();\n }\n return this;\n };\n Tween.prototype.group = function (group) {\n if (!group) {\n console.warn('tween.group() without args has been removed, use group.add(tween) instead.');\n return this;\n }\n group.add(this);\n return this;\n };\n /**\n * Removes the tween from whichever group it is in.\n */\n Tween.prototype.remove = function () {\n var _a;\n (_a = this._group) === null || _a === void 0 ? void 0 : _a.remove(this);\n return this;\n };\n Tween.prototype.delay = function (amount) {\n if (amount === void 0) { amount = 0; }\n this._delayTime = amount;\n return this;\n };\n Tween.prototype.repeat = function (times) {\n if (times === void 0) { times = 0; }\n this._initialRepeat = times;\n this._repeat = times;\n return this;\n };\n Tween.prototype.repeatDelay = function (amount) {\n this._repeatDelayTime = amount;\n return this;\n };\n Tween.prototype.yoyo = function (yoyo) {\n if (yoyo === void 0) { yoyo = false; }\n this._yoyo = yoyo;\n return this;\n };\n Tween.prototype.easing = function (easingFunction) {\n if (easingFunction === void 0) { easingFunction = Easing.Linear.None; }\n this._easingFunction = easingFunction;\n return this;\n };\n Tween.prototype.interpolation = function (interpolationFunction) {\n if (interpolationFunction === void 0) { interpolationFunction = Interpolation.Linear; }\n this._interpolationFunction = interpolationFunction;\n return this;\n };\n // eslint-disable-next-line\n Tween.prototype.chain = function () {\n var tweens = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n tweens[_i] = arguments[_i];\n }\n this._chainedTweens = tweens;\n return this;\n };\n Tween.prototype.onStart = function (callback) {\n this._onStartCallback = callback;\n return this;\n };\n Tween.prototype.onEveryStart = function (callback) {\n this._onEveryStartCallback = callback;\n return this;\n };\n Tween.prototype.onUpdate = function (callback) {\n this._onUpdateCallback = callback;\n return this;\n };\n Tween.prototype.onRepeat = function (callback) {\n this._onRepeatCallback = callback;\n return this;\n };\n Tween.prototype.onComplete = function (callback) {\n this._onCompleteCallback = callback;\n return this;\n };\n Tween.prototype.onStop = function (callback) {\n this._onStopCallback = callback;\n return this;\n };\n /**\n * @returns true if the tween is still playing after the update, false\n * otherwise (calling update on a paused tween still returns true because\n * it is still playing, just paused).\n *\n * @param autoStart - When true, calling update will implicitly call start()\n * as well. Note, if you stop() or end() the tween, but are still calling\n * update(), it will start again!\n */\n Tween.prototype.update = function (time, autoStart) {\n var _this = this;\n var _a;\n if (time === void 0) { time = now(); }\n if (autoStart === void 0) { autoStart = Tween.autoStartOnUpdate; }\n if (this._isPaused)\n return true;\n var property;\n if (!this._goToEnd && !this._isPlaying) {\n if (autoStart)\n this.start(time, true);\n else\n return false;\n }\n this._goToEnd = false;\n if (time < this._startTime) {\n return true;\n }\n if (this._onStartCallbackFired === false) {\n if (this._onStartCallback) {\n this._onStartCallback(this._object);\n }\n this._onStartCallbackFired = true;\n }\n if (this._onEveryStartCallbackFired === false) {\n if (this._onEveryStartCallback) {\n this._onEveryStartCallback(this._object);\n }\n this._onEveryStartCallbackFired = true;\n }\n var elapsedTime = time - this._startTime;\n var durationAndDelay = this._duration + ((_a = this._repeatDelayTime) !== null && _a !== void 0 ? _a : this._delayTime);\n var totalTime = this._duration + this._repeat * durationAndDelay;\n var calculateElapsedPortion = function () {\n if (_this._duration === 0)\n return 1;\n if (elapsedTime > totalTime) {\n return 1;\n }\n var timesRepeated = Math.trunc(elapsedTime / durationAndDelay);\n var timeIntoCurrentRepeat = elapsedTime - timesRepeated * durationAndDelay;\n // TODO use %?\n // const timeIntoCurrentRepeat = elapsedTime % durationAndDelay\n var portion = Math.min(timeIntoCurrentRepeat / _this._duration, 1);\n if (portion === 0 && elapsedTime === _this._duration) {\n return 1;\n }\n return portion;\n };\n var elapsed = calculateElapsedPortion();\n var value = this._easingFunction(elapsed);\n // properties transformations\n this._updateProperties(this._object, this._valuesStart, this._valuesEnd, value);\n if (this._onUpdateCallback) {\n this._onUpdateCallback(this._object, elapsed);\n }\n if (this._duration === 0 || elapsedTime >= this._duration) {\n if (this._repeat > 0) {\n var completeCount = Math.min(Math.trunc((elapsedTime - this._duration) / durationAndDelay) + 1, this._repeat);\n if (isFinite(this._repeat)) {\n this._repeat -= completeCount;\n }\n // Reassign starting values, restart by making startTime = now\n for (property in this._valuesStartRepeat) {\n if (!this._yoyo && typeof this._valuesEnd[property] === 'string') {\n this._valuesStartRepeat[property] =\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n this._valuesStartRepeat[property] + parseFloat(this._valuesEnd[property]);\n }\n if (this._yoyo) {\n this._swapEndStartRepeatValues(property);\n }\n this._valuesStart[property] = this._valuesStartRepeat[property];\n }\n if (this._yoyo) {\n this._reversed = !this._reversed;\n }\n this._startTime += durationAndDelay * completeCount;\n if (this._onRepeatCallback) {\n this._onRepeatCallback(this._object);\n }\n this._onEveryStartCallbackFired = false;\n return true;\n }\n else {\n if (this._onCompleteCallback) {\n this._onCompleteCallback(this._object);\n }\n for (var i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) {\n // Make the chained tweens start exactly at the time they should,\n // even if the `update()` method was called way past the duration of the tween\n this._chainedTweens[i].start(this._startTime + this._duration, false);\n }\n this._isPlaying = false;\n return false;\n }\n }\n return true;\n };\n Tween.prototype._updateProperties = function (_object, _valuesStart, _valuesEnd, value) {\n for (var property in _valuesEnd) {\n // Don't update properties that do not exist in the source object\n if (_valuesStart[property] === undefined) {\n continue;\n }\n var start = _valuesStart[property] || 0;\n var end = _valuesEnd[property];\n var startIsArray = Array.isArray(_object[property]);\n var endIsArray = Array.isArray(end);\n var isInterpolationList = !startIsArray && endIsArray;\n if (isInterpolationList) {\n _object[property] = this._interpolationFunction(end, value);\n }\n else if (typeof end === 'object' && end) {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n this._updateProperties(_object[property], start, end, value);\n }\n else {\n // Parses relative end values with start as base (e.g.: +10, -3)\n end = this._handleRelativeValue(start, end);\n // Protect against non numeric properties.\n if (typeof end === 'number') {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n _object[property] = start + (end - start) * value;\n }\n }\n }\n };\n Tween.prototype._handleRelativeValue = function (start, end) {\n if (typeof end !== 'string') {\n return end;\n }\n if (end.charAt(0) === '+' || end.charAt(0) === '-') {\n return start + parseFloat(end);\n }\n return parseFloat(end);\n };\n Tween.prototype._swapEndStartRepeatValues = function (property) {\n var tmp = this._valuesStartRepeat[property];\n var endValue = this._valuesEnd[property];\n if (typeof endValue === 'string') {\n this._valuesStartRepeat[property] = this._valuesStartRepeat[property] + parseFloat(endValue);\n }\n else {\n this._valuesStartRepeat[property] = this._valuesEnd[property];\n }\n this._valuesEnd[property] = tmp;\n };\n Tween.autoStartOnUpdate = false;\n return Tween;\n}());\n\nvar VERSION = '25.0.0';\n\n/**\n * Tween.js - Licensed under the MIT license\n * https://github.com/tweenjs/tween.js\n * ----------------------------------------------\n *\n * See https://github.com/tweenjs/tween.js/graphs/contributors for the full list of contributors.\n * Thank you all, you're awesome!\n */\nvar nextId = Sequence.nextId;\n/**\n * Controlling groups of tweens\n *\n * Using the TWEEN singleton to manage your tweens can cause issues in large apps with many components.\n * In these cases, you may want to create your own smaller groups of tweens.\n */\nvar TWEEN = mainGroup;\n// This is the best way to export things in a way that's compatible with both ES\n// Modules and CommonJS, without build hacks, and so as not to break the\n// existing API.\n// https://github.com/rollup/rollup/issues/1961#issuecomment-423037881\n/**\n * @deprecated The global TWEEN Group will be removed in a following major\n * release. To migrate, create a `new Group()` instead of using `TWEEN` as a\n * group.\n *\n * Old code:\n *\n * ```js\n * import * as TWEEN from '@tweenjs/tween.js'\n *\n * //...\n *\n * const tween = new TWEEN.Tween(obj)\n * const tween2 = new TWEEN.Tween(obj2)\n *\n * //...\n *\n * requestAnimationFrame(function loop(time) {\n * TWEEN.update(time)\n * requestAnimationFrame(loop)\n * })\n * ```\n *\n * New code:\n *\n * ```js\n * import {Tween, Group} from '@tweenjs/tween.js'\n *\n * //...\n *\n * const tween = new Tween(obj)\n * const tween2 = new TWEEN.Tween(obj2)\n *\n * //...\n *\n * const group = new Group()\n * group.add(tween)\n * group.add(tween2)\n *\n * //...\n *\n * requestAnimationFrame(function loop(time) {\n * group.update(time)\n * requestAnimationFrame(loop)\n * })\n * ```\n */\nvar getAll = TWEEN.getAll.bind(TWEEN);\n/**\n * @deprecated The global TWEEN Group will be removed in a following major\n * release. To migrate, create a `new Group()` instead of using `TWEEN` as a\n * group.\n *\n * Old code:\n *\n * ```js\n * import * as TWEEN from '@tweenjs/tween.js'\n *\n * //...\n *\n * const tween = new TWEEN.Tween(obj)\n * const tween2 = new TWEEN.Tween(obj2)\n *\n * //...\n *\n * requestAnimationFrame(function loop(time) {\n * TWEEN.update(time)\n * requestAnimationFrame(loop)\n * })\n * ```\n *\n * New code:\n *\n * ```js\n * import {Tween, Group} from '@tweenjs/tween.js'\n *\n * //...\n *\n * const tween = new Tween(obj)\n * const tween2 = new TWEEN.Tween(obj2)\n *\n * //...\n *\n * const group = new Group()\n * group.add(tween)\n * group.add(tween2)\n *\n * //...\n *\n * requestAnimationFrame(function loop(time) {\n * group.update(time)\n * requestAnimationFrame(loop)\n * })\n * ```\n */\nvar removeAll = TWEEN.removeAll.bind(TWEEN);\n/**\n * @deprecated The global TWEEN Group will be removed in a following major\n * release. To migrate, create a `new Group()` instead of using `TWEEN` as a\n * group.\n *\n * Old code:\n *\n * ```js\n * import * as TWEEN from '@tweenjs/tween.js'\n *\n * //...\n *\n * const tween = new TWEEN.Tween(obj)\n * const tween2 = new TWEEN.Tween(obj2)\n *\n * //...\n *\n * requestAnimationFrame(function loop(time) {\n * TWEEN.update(time)\n * requestAnimationFrame(loop)\n * })\n * ```\n *\n * New code:\n *\n * ```js\n * import {Tween, Group} from '@tweenjs/tween.js'\n *\n * //...\n *\n * const tween = new Tween(obj)\n * const tween2 = new TWEEN.Tween(obj2)\n *\n * //...\n *\n * const group = new Group()\n * group.add(tween)\n * group.add(tween2)\n *\n * //...\n *\n * requestAnimationFrame(function loop(time) {\n * group.update(time)\n * requestAnimationFrame(loop)\n * })\n * ```\n */\nvar add = TWEEN.add.bind(TWEEN);\n/**\n * @deprecated The global TWEEN Group will be removed in a following major\n * release. To migrate, create a `new Group()` instead of using `TWEEN` as a\n * group.\n *\n * Old code:\n *\n * ```js\n * import * as TWEEN from '@tweenjs/tween.js'\n *\n * //...\n *\n * const tween = new TWEEN.Tween(obj)\n * const tween2 = new TWEEN.Tween(obj2)\n *\n * //...\n *\n * requestAnimationFrame(function loop(time) {\n * TWEEN.update(time)\n * requestAnimationFrame(loop)\n * })\n * ```\n *\n * New code:\n *\n * ```js\n * import {Tween, Group} from '@tweenjs/tween.js'\n *\n * //...\n *\n * const tween = new Tween(obj)\n * const tween2 = new TWEEN.Tween(obj2)\n *\n * //...\n *\n * const group = new Group()\n * group.add(tween)\n * group.add(tween2)\n *\n * //...\n *\n * requestAnimationFrame(function loop(time) {\n * group.update(time)\n * requestAnimationFrame(loop)\n * })\n * ```\n */\nvar remove = TWEEN.remove.bind(TWEEN);\n/**\n * @deprecated The global TWEEN Group will be removed in a following major\n * release. To migrate, create a `new Group()` instead of using `TWEEN` as a\n * group.\n *\n * Old code:\n *\n * ```js\n * import * as TWEEN from '@tweenjs/tween.js'\n *\n * //...\n *\n * const tween = new TWEEN.Tween(obj)\n * const tween2 = new TWEEN.Tween(obj2)\n *\n * //...\n *\n * requestAnimationFrame(function loop(time) {\n * TWEEN.update(time)\n * requestAnimationFrame(loop)\n * })\n * ```\n *\n * New code:\n *\n * ```js\n * import {Tween, Group} from '@tweenjs/tween.js'\n *\n * //...\n *\n * const tween = new Tween(obj)\n * const tween2 = new TWEEN.Tween(obj2)\n *\n * //...\n *\n * const group = new Group()\n * group.add(tween)\n * group.add(tween2)\n *\n * //...\n *\n * requestAnimationFrame(function loop(time) {\n * group.update(time)\n * requestAnimationFrame(loop)\n * })\n * ```\n */\nvar update = TWEEN.update.bind(TWEEN);\nvar exports = {\n Easing: Easing,\n Group: Group,\n Interpolation: Interpolation,\n now: now,\n Sequence: Sequence,\n nextId: nextId,\n Tween: Tween,\n VERSION: VERSION,\n /**\n * @deprecated The global TWEEN Group will be removed in a following major\n * release. To migrate, create a `new Group()` instead of using `TWEEN` as a\n * group.\n *\n * Old code:\n *\n * ```js\n * import * as TWEEN from '@tweenjs/tween.js'\n *\n * //...\n *\n * const tween = new TWEEN.Tween(obj)\n * const tween2 = new TWEEN.Tween(obj2)\n *\n * //...\n *\n * requestAnimationFrame(function loop(time) {\n * TWEEN.update(time)\n * requestAnimationFrame(loop)\n * })\n * ```\n *\n * New code:\n *\n * ```js\n * import {Tween, Group} from '@tweenjs/tween.js'\n *\n * //...\n *\n * const tween = new Tween(obj)\n * const tween2 = new TWEEN.Tween(obj2)\n *\n * //...\n *\n * const group = new Group()\n * group.add(tween)\n * group.add(tween2)\n *\n * //...\n *\n * requestAnimationFrame(function loop(time) {\n * group.update(time)\n * requestAnimationFrame(loop)\n * })\n * ```\n */\n getAll: getAll,\n /**\n * @deprecated The global TWEEN Group will be removed in a following major\n * release. To migrate, create a `new Group()` instead of using `TWEEN` as a\n * group.\n *\n * Old code:\n *\n * ```js\n * import * as TWEEN from '@tweenjs/tween.js'\n *\n * //...\n *\n * const tween = new TWEEN.Tween(obj)\n * const tween2 = new TWEEN.Tween(obj2)\n *\n * //...\n *\n * requestAnimationFrame(function loop(time) {\n * TWEEN.update(time)\n * requestAnimationFrame(loop)\n * })\n * ```\n *\n * New code:\n *\n * ```js\n * import {Tween, Group} from '@tweenjs/tween.js'\n *\n * //...\n *\n * const tween = new Tween(obj)\n * const tween2 = new TWEEN.Tween(obj2)\n *\n * //...\n *\n * const group = new Group()\n * group.add(tween)\n * group.add(tween2)\n *\n * //...\n *\n * requestAnimationFrame(function loop(time) {\n * group.update(time)\n * requestAnimationFrame(loop)\n * })\n * ```\n */\n removeAll: removeAll,\n /**\n * @deprecated The global TWEEN Group will be removed in a following major\n * release. To migrate, create a `new Group()` instead of using `TWEEN` as a\n * group.\n *\n * Old code:\n *\n * ```js\n * import * as TWEEN from '@tweenjs/tween.js'\n *\n * //...\n *\n * const tween = new TWEEN.Tween(obj)\n * const tween2 = new TWEEN.Tween(obj2)\n *\n * //...\n *\n * requestAnimationFrame(function loop(time) {\n * TWEEN.update(time)\n * requestAnimationFrame(loop)\n * })\n * ```\n *\n * New code:\n *\n * ```js\n * import {Tween, Group} from '@tweenjs/tween.js'\n *\n * //...\n *\n * const tween = new Tween(obj)\n * const tween2 = new TWEEN.Tween(obj2)\n *\n * //...\n *\n * const group = new Group()\n * group.add(tween)\n * group.add(tween2)\n *\n * //...\n *\n * requestAnimationFrame(function loop(time) {\n * group.update(time)\n * requestAnimationFrame(loop)\n * })\n * ```\n */\n add: add,\n /**\n * @deprecated The global TWEEN Group will be removed in a following major\n * release. To migrate, create a `new Group()` instead of using `TWEEN` as a\n * group.\n *\n * Old code:\n *\n * ```js\n * import * as TWEEN from '@tweenjs/tween.js'\n *\n * //...\n *\n * const tween = new TWEEN.Tween(obj)\n * const tween2 = new TWEEN.Tween(obj2)\n *\n * //...\n *\n * requestAnimationFrame(function loop(time) {\n * TWEEN.update(time)\n * requestAnimationFrame(loop)\n * })\n * ```\n *\n * New code:\n *\n * ```js\n * import {Tween, Group} from '@tweenjs/tween.js'\n *\n * //...\n *\n * const tween = new Tween(obj)\n * const tween2 = new TWEEN.Tween(obj2)\n *\n * //...\n *\n * const group = new Group()\n * group.add(tween)\n * group.add(tween2)\n *\n * //...\n *\n * requestAnimationFrame(function loop(time) {\n * group.update(time)\n * requestAnimationFrame(loop)\n * })\n * ```\n */\n remove: remove,\n /**\n * @deprecated The global TWEEN Group will be removed in a following major\n * release. To migrate, create a `new Group()` instead of using `TWEEN` as a\n * group.\n *\n * Old code:\n *\n * ```js\n * import * as TWEEN from '@tweenjs/tween.js'\n *\n * //...\n *\n * const tween = new TWEEN.Tween(obj)\n * const tween2 = new TWEEN.Tween(obj2)\n *\n * //...\n *\n * requestAnimationFrame(function loop(time) {\n * TWEEN.update(time)\n * requestAnimationFrame(loop)\n * })\n * ```\n *\n * New code:\n *\n * ```js\n * import {Tween, Group} from '@tweenjs/tween.js'\n *\n * //...\n *\n * const tween = new Tween(obj)\n * const tween2 = new TWEEN.Tween(obj2)\n *\n * //...\n *\n * const group = new Group()\n * group.add(tween)\n * group.add(tween2)\n *\n * //...\n *\n * requestAnimationFrame(function loop(time) {\n * group.update(time)\n * requestAnimationFrame(loop)\n * })\n * ```\n */\n update: update,\n};\n\nexport { Easing, Group, Interpolation, Sequence, Tween, VERSION, add, exports as default, getAll, nextId, now, remove, removeAll, update };\n","import debounce from 'lodash-es/debounce.js';\n\nfunction _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nfunction _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nfunction _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction _createClass(e, r, t) {\n return Object.defineProperty(e, \"prototype\", {\n writable: false\n }), e;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = true,\n o = false;\n try {\n if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = true, n = r;\n } finally {\n try {\n if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _slicedToArray(r, e) {\n return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();\n}\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n }\n}\n\nvar Prop = /*#__PURE__*/_createClass(function Prop(name, _ref) {\n var _ref$default = _ref[\"default\"],\n defaultVal = _ref$default === void 0 ? null : _ref$default,\n _ref$triggerUpdate = _ref.triggerUpdate,\n triggerUpdate = _ref$triggerUpdate === void 0 ? true : _ref$triggerUpdate,\n _ref$onChange = _ref.onChange,\n onChange = _ref$onChange === void 0 ? function (newVal, state) {} : _ref$onChange;\n _classCallCheck(this, Prop);\n this.name = name;\n this.defaultVal = defaultVal;\n this.triggerUpdate = triggerUpdate;\n this.onChange = onChange;\n});\nfunction index (_ref2) {\n var _ref2$stateInit = _ref2.stateInit,\n stateInit = _ref2$stateInit === void 0 ? function () {\n return {};\n } : _ref2$stateInit,\n _ref2$props = _ref2.props,\n rawProps = _ref2$props === void 0 ? {} : _ref2$props,\n _ref2$methods = _ref2.methods,\n methods = _ref2$methods === void 0 ? {} : _ref2$methods,\n _ref2$aliases = _ref2.aliases,\n aliases = _ref2$aliases === void 0 ? {} : _ref2$aliases,\n _ref2$init = _ref2.init,\n initFn = _ref2$init === void 0 ? function () {} : _ref2$init,\n _ref2$update = _ref2.update,\n updateFn = _ref2$update === void 0 ? function () {} : _ref2$update;\n // Parse props into Prop instances\n var props = Object.keys(rawProps).map(function (propName) {\n return new Prop(propName, rawProps[propName]);\n });\n return function KapsuleComp() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var classMode = !!(this instanceof KapsuleComp ? this.constructor : void 0);\n var nodeElement = classMode ? args.shift() : undefined;\n var _args$ = args[0],\n options = _args$ === void 0 ? {} : _args$;\n\n // Holds component state\n var state = Object.assign({}, stateInit instanceof Function ? stateInit(options) : stateInit,\n // Support plain objects for backwards compatibility\n {\n initialised: false\n });\n\n // keeps track of which props triggered an update\n var changedProps = {};\n\n // Component constructor\n function comp(nodeElement) {\n initStatic(nodeElement, options);\n digest();\n return comp;\n }\n var initStatic = function initStatic(nodeElement, options) {\n initFn.call(comp, nodeElement, state, options);\n state.initialised = true;\n };\n var digest = debounce(function () {\n if (!state.initialised) {\n return;\n }\n updateFn.call(comp, state, changedProps);\n changedProps = {};\n }, 1);\n\n // Getter/setter methods\n props.forEach(function (prop) {\n comp[prop.name] = getSetProp(prop);\n function getSetProp(_ref3) {\n var prop = _ref3.name,\n _ref3$triggerUpdate = _ref3.triggerUpdate,\n redigest = _ref3$triggerUpdate === void 0 ? false : _ref3$triggerUpdate,\n _ref3$onChange = _ref3.onChange,\n onChange = _ref3$onChange === void 0 ? function (newVal, state) {} : _ref3$onChange,\n _ref3$defaultVal = _ref3.defaultVal,\n defaultVal = _ref3$defaultVal === void 0 ? null : _ref3$defaultVal;\n return function (_) {\n var curVal = state[prop];\n if (!arguments.length) {\n return curVal;\n } // Getter mode\n\n var val = _ === undefined ? defaultVal : _; // pick default if value passed is undefined\n state[prop] = val;\n onChange.call(comp, val, state, curVal);\n\n // track changed props\n !changedProps.hasOwnProperty(prop) && (changedProps[prop] = curVal);\n if (redigest) {\n digest();\n }\n return comp;\n };\n }\n });\n\n // Other methods\n Object.keys(methods).forEach(function (methodName) {\n comp[methodName] = function () {\n var _methods$methodName;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return (_methods$methodName = methods[methodName]).call.apply(_methods$methodName, [comp, state].concat(args));\n };\n });\n\n // Link aliases\n Object.entries(aliases).forEach(function (_ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n alias = _ref5[0],\n target = _ref5[1];\n return comp[alias] = comp[target];\n });\n\n // Reset all component props to their default value\n comp.resetProps = function () {\n props.forEach(function (prop) {\n comp[prop.name](prop.defaultVal);\n });\n return comp;\n };\n\n //\n\n comp.resetProps(); // Apply all prop defaults\n state._rerender = digest; // Expose digest method\n\n classMode && nodeElement && comp(nodeElement);\n return comp;\n };\n}\n\nexport { index as default };\n","var index = (function (p) {\n return typeof p === 'function' ? p // fn\n : typeof p === 'string' ? function (obj) {\n return obj[p];\n } // property name\n : function (obj) {\n return p;\n };\n}); // constant\n\nexport { index as default };\n","// This file is autogenerated. It's used to publish ESM to npm.\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\nvar trimLeft = /^\\s+/;\nvar trimRight = /\\s+$/;\nfunction tinycolor(color, opts) {\n color = color ? color : \"\";\n opts = opts || {};\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n var rgb = inputToRGB(color);\n this._originalInput = color, this._r = rgb.r, this._g = rgb.g, this._b = rgb.b, this._a = rgb.a, this._roundA = Math.round(100 * this._a) / 100, this._format = opts.format || rgb.format;\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) this._r = Math.round(this._r);\n if (this._g < 1) this._g = Math.round(this._g);\n if (this._b < 1) this._b = Math.round(this._b);\n this._ok = rgb.ok;\n}\ntinycolor.prototype = {\n isDark: function isDark() {\n return this.getBrightness() < 128;\n },\n isLight: function isLight() {\n return !this.isDark();\n },\n isValid: function isValid() {\n return this._ok;\n },\n getOriginalInput: function getOriginalInput() {\n return this._originalInput;\n },\n getFormat: function getFormat() {\n return this._format;\n },\n getAlpha: function getAlpha() {\n return this._a;\n },\n getBrightness: function getBrightness() {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function getLuminance() {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r / 255;\n GsRGB = rgb.g / 255;\n BsRGB = rgb.b / 255;\n if (RsRGB <= 0.03928) R = RsRGB / 12.92;else R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n if (GsRGB <= 0.03928) G = GsRGB / 12.92;else G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n if (BsRGB <= 0.03928) B = BsRGB / 12.92;else B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n },\n setAlpha: function setAlpha(value) {\n this._a = boundAlpha(value);\n this._roundA = Math.round(100 * this._a) / 100;\n return this;\n },\n toHsv: function toHsv() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return {\n h: hsv.h * 360,\n s: hsv.s,\n v: hsv.v,\n a: this._a\n };\n },\n toHsvString: function toHsvString() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = Math.round(hsv.h * 360),\n s = Math.round(hsv.s * 100),\n v = Math.round(hsv.v * 100);\n return this._a == 1 ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + this._roundA + \")\";\n },\n toHsl: function toHsl() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return {\n h: hsl.h * 360,\n s: hsl.s,\n l: hsl.l,\n a: this._a\n };\n },\n toHslString: function toHslString() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = Math.round(hsl.h * 360),\n s = Math.round(hsl.s * 100),\n l = Math.round(hsl.l * 100);\n return this._a == 1 ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + this._roundA + \")\";\n },\n toHex: function toHex(allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function toHexString(allow3Char) {\n return \"#\" + this.toHex(allow3Char);\n },\n toHex8: function toHex8(allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function toHex8String(allow4Char) {\n return \"#\" + this.toHex8(allow4Char);\n },\n toRgb: function toRgb() {\n return {\n r: Math.round(this._r),\n g: Math.round(this._g),\n b: Math.round(this._b),\n a: this._a\n };\n },\n toRgbString: function toRgbString() {\n return this._a == 1 ? \"rgb(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \")\" : \"rgba(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \", \" + this._roundA + \")\";\n },\n toPercentageRgb: function toPercentageRgb() {\n return {\n r: Math.round(bound01(this._r, 255) * 100) + \"%\",\n g: Math.round(bound01(this._g, 255) * 100) + \"%\",\n b: Math.round(bound01(this._b, 255) * 100) + \"%\",\n a: this._a\n };\n },\n toPercentageRgbString: function toPercentageRgbString() {\n return this._a == 1 ? \"rgb(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%)\" : \"rgba(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n },\n toName: function toName() {\n if (this._a === 0) {\n return \"transparent\";\n }\n if (this._a < 1) {\n return false;\n }\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function toFilter(secondColor) {\n var hex8String = \"#\" + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = \"#\" + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n return \"progid:DXImageTransform.Microsoft.gradient(\" + gradientType + \"startColorstr=\" + hex8String + \",endColorstr=\" + secondHex8String + \")\";\n },\n toString: function toString(format) {\n var formatSet = !!format;\n format = format || this._format;\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n return formattedString || this.toHexString();\n },\n clone: function clone() {\n return tinycolor(this.toString());\n },\n _applyModification: function _applyModification(fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function lighten() {\n return this._applyModification(_lighten, arguments);\n },\n brighten: function brighten() {\n return this._applyModification(_brighten, arguments);\n },\n darken: function darken() {\n return this._applyModification(_darken, arguments);\n },\n desaturate: function desaturate() {\n return this._applyModification(_desaturate, arguments);\n },\n saturate: function saturate() {\n return this._applyModification(_saturate, arguments);\n },\n greyscale: function greyscale() {\n return this._applyModification(_greyscale, arguments);\n },\n spin: function spin() {\n return this._applyModification(_spin, arguments);\n },\n _applyCombination: function _applyCombination(fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function analogous() {\n return this._applyCombination(_analogous, arguments);\n },\n complement: function complement() {\n return this._applyCombination(_complement, arguments);\n },\n monochromatic: function monochromatic() {\n return this._applyCombination(_monochromatic, arguments);\n },\n splitcomplement: function splitcomplement() {\n return this._applyCombination(_splitcomplement, arguments);\n },\n // Disabled until https://github.com/bgrins/TinyColor/issues/254\n // polyad: function (number) {\n // return this._applyCombination(polyad, [number]);\n // },\n triad: function triad() {\n return this._applyCombination(polyad, [3]);\n },\n tetrad: function tetrad() {\n return this._applyCombination(polyad, [4]);\n }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function (color, opts) {\n if (_typeof(color) == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n } else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n// \"red\"\n// \"#f00\" or \"f00\"\n// \"#ff0000\" or \"ff0000\"\n// \"#ff000000\" or \"ff000000\"\n// \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n// \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n// \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n// \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n// \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n// \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n// \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n var rgb = {\n r: 0,\n g: 0,\n b: 0\n };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n if (_typeof(color) == \"object\") {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n a = boundAlpha(a);\n return {\n ok: ok,\n format: color.format || format,\n r: Math.min(255, Math.max(rgb.r, 0)),\n g: Math.min(255, Math.max(rgb.g, 0)),\n b: Math.min(255, Math.max(rgb.b, 0)),\n a: a\n };\n}\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// <http://www.w3.org/TR/css3-color/>\n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n l = (max + min) / 2;\n if (max == min) {\n h = s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n l: l\n };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n var r, g, b;\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n v = max;\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n if (max == min) {\n h = 0; // achromatic\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n v: v\n };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16)), pad2(convertDecimalToHex(a))];\n\n // Return a 4 character hex if possible\n if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n var hex = [pad2(convertDecimalToHex(a)), pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) return false;\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\ntinycolor.random = function () {\n return tinycolor.fromRatio({\n r: Math.random(),\n g: Math.random(),\n b: Math.random()\n });\n};\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\n\nfunction _desaturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\nfunction _saturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\nfunction _greyscale(color) {\n return tinycolor(color).desaturate(100);\n}\nfunction _lighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\nfunction _brighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var rgb = tinycolor(color).toRgb();\n rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n return tinycolor(rgb);\n}\nfunction _darken(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction _spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\n\nfunction _complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n}\nfunction polyad(color, number) {\n if (isNaN(number) || number <= 0) {\n throw new Error(\"Argument to polyad must be a positive number\");\n }\n var hsl = tinycolor(color).toHsl();\n var result = [tinycolor(color)];\n var step = 360 / number;\n for (var i = 1; i < number; i++) {\n result.push(tinycolor({\n h: (hsl.h + i * step) % 360,\n s: hsl.s,\n l: hsl.l\n }));\n }\n return result;\n}\nfunction _splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [tinycolor(color), tinycolor({\n h: (h + 72) % 360,\n s: hsl.s,\n l: hsl.l\n }), tinycolor({\n h: (h + 216) % 360,\n s: hsl.s,\n l: hsl.l\n })];\n}\nfunction _analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results;) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n}\nfunction _monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h,\n s = hsv.s,\n v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n while (results--) {\n ret.push(tinycolor({\n h: h,\n s: s,\n v: v\n }));\n v = (v + modification) % 1;\n }\n return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function (color1, color2, amount) {\n amount = amount === 0 ? 0 : amount || 50;\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n var p = amount / 100;\n var rgba = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b,\n a: (rgb2.a - rgb1.a) * p + rgb1.a\n };\n return tinycolor(rgba);\n};\n\n// Readability Functions\n// ---------------------\n// <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)\n\n// `contrast`\n// Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)\ntinycolor.readability = function (color1, color2) {\n var c1 = tinycolor(color1);\n var c2 = tinycolor(color2);\n return (Math.max(c1.getLuminance(), c2.getLuminance()) + 0.05) / (Math.min(c1.getLuminance(), c2.getLuminance()) + 0.05);\n};\n\n// `isReadable`\n// Ensure that foreground and background color combinations meet WCAG2 guidelines.\n// The third argument is an optional Object.\n// the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';\n// the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.\n// If the entire object is absent, isReadable defaults to {level:\"AA\",size:\"small\"}.\n\n// *Example*\n// tinycolor.isReadable(\"#000\", \"#111\") => false\n// tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function (color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n out = false;\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function (baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors;\n level = args.level;\n size = args.size;\n for (var i = 0; i < colorList.length; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n if (tinycolor.isReadable(baseColor, bestColor, {\n level: level,\n size: size\n }) || !includeFallbackColors) {\n return bestColor;\n } else {\n args.includeFallbackColors = false;\n return tinycolor.mostReadable(baseColor, [\"#fff\", \"#000\"], args);\n }\n};\n\n// Big List of Colors\n// ------------------\n// <https://www.w3.org/TR/css-color-4/#named-colors>\nvar names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n var flipped = {};\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n a = parseFloat(a);\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n if (isOnePointZero(n)) n = \"100%\";\n var processPercent = isPercentage(n);\n n = Math.min(max, Math.max(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return n % max / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n return Math.min(1, Math.max(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\nfunction isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf(\".\") != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n return typeof n === \"string\" && n.indexOf(\"%\") != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n return c.length == 1 ? \"0\" + c : \"\" + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n if (n <= 1) {\n n = n * 100 + \"%\";\n }\n return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n}\nvar matchers = function () {\n // <http://www.w3.org/TR/css3-values/#integers>\n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // <http://www.w3.org/TR/css3-values/#number-value>\n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n}();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing. Take in a number of formats, and output an object\n// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n color = color.replace(trimLeft, \"\").replace(trimRight, \"\").toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n } else if (color == \"transparent\") {\n return {\n r: 0,\n g: 0,\n b: 0,\n a: 0,\n format: \"name\"\n };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if (match = matchers.rgb.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3]\n };\n }\n if (match = matchers.rgba.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsl.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3]\n };\n }\n if (match = matchers.hsla.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsv.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3]\n };\n }\n if (match = matchers.hsva.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hex8.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex6.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if (match = matchers.hex4.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n a: convertHexToDecimal(match[4] + \"\" + match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex3.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n return false;\n}\nfunction validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || {\n level: \"AA\",\n size: \"small\"\n };\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return {\n level: level,\n size: size\n };\n}\n\nexport { tinycolor as default };\n","import tinyColor from 'tinycolor2';\n\nfunction _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return _arrayLikeToArray(r);\n}\nfunction _assertClassBrand(e, t, n) {\n if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n;\n throw new TypeError(\"Private element is not present on this object\");\n}\nfunction _checkPrivateRedeclaration(e, t) {\n if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n}\nfunction _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction _classPrivateFieldGet2(s, a) {\n return s.get(_assertClassBrand(s, a));\n}\nfunction _classPrivateFieldInitSpec(e, t, a) {\n _checkPrivateRedeclaration(e, t), t.set(e, a);\n}\nfunction _classPrivateFieldSet2(s, a, r) {\n return s.set(_assertClassBrand(s, a), r), r;\n}\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || false, o.configurable = true, \"value\" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), Object.defineProperty(e, \"prototype\", {\n writable: false\n }), e;\n}\nfunction _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _toConsumableArray(r) {\n return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r);\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (String )(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n }\n}\n\nvar ENTROPY = 123; // Raise numbers to prevent collisions in lower indexes\n\nvar int2HexColor = function int2HexColor(num) {\n return \"#\".concat(Math.min(num, Math.pow(2, 24)).toString(16).padStart(6, '0'));\n};\nvar rgb2Int = function rgb2Int(r, g, b) {\n return (r << 16) + (g << 8) + b;\n};\nvar colorStr2Int = function colorStr2Int(str) {\n var _tinyColor$toRgb = tinyColor(str).toRgb(),\n r = _tinyColor$toRgb.r,\n g = _tinyColor$toRgb.g,\n b = _tinyColor$toRgb.b;\n return rgb2Int(r, g, b);\n};\nvar checksum = function checksum(n, csBits) {\n return n * ENTROPY % Math.pow(2, csBits);\n};\nvar _registry = /*#__PURE__*/new WeakMap();\nvar _csBits = /*#__PURE__*/new WeakMap();\nvar _default = /*#__PURE__*/function () {\n function _default() {\n var csBits = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 6;\n _classCallCheck(this, _default);\n // Internal state\n _classPrivateFieldInitSpec(this, _registry, void 0);\n // indexed objects for rgb lookup;\n _classPrivateFieldInitSpec(this, _csBits, void 0);\n _classPrivateFieldSet2(_csBits, this, csBits);\n this.reset();\n }\n return _createClass(_default, [{\n key: \"reset\",\n value: function reset() {\n _classPrivateFieldSet2(_registry, this, ['__reserved for background__']);\n }\n }, {\n key: \"register\",\n value: function register(obj) {\n if (_classPrivateFieldGet2(_registry, this).length >= Math.pow(2, 24 - _classPrivateFieldGet2(_csBits, this))) {\n // color has 24 bits (-checksum)\n return null; // Registry is full\n }\n var idx = _classPrivateFieldGet2(_registry, this).length;\n var cs = checksum(idx, _classPrivateFieldGet2(_csBits, this));\n var color = int2HexColor(idx + (cs << 24 - _classPrivateFieldGet2(_csBits, this)));\n _classPrivateFieldGet2(_registry, this).push(obj);\n return color;\n }\n }, {\n key: \"lookup\",\n value: function lookup(color) {\n if (!color) return null; // invalid color\n\n var n = typeof color === 'string' ? colorStr2Int(color) : rgb2Int.apply(void 0, _toConsumableArray(color));\n if (!n) return null; // 0 index is reserved for background\n\n var idx = n & Math.pow(2, 24 - _classPrivateFieldGet2(_csBits, this)) - 1; // registry index\n var cs = n >> 24 - _classPrivateFieldGet2(_csBits, this) & Math.pow(2, _classPrivateFieldGet2(_csBits, this)) - 1; // extract bits reserved for checksum\n\n if (checksum(idx, _classPrivateFieldGet2(_csBits, this)) !== cs || idx >= _classPrivateFieldGet2(_registry, this).length) return null; // failed checksum or registry out of bounds\n\n return _classPrivateFieldGet2(_registry, this)[idx];\n } // How many bits to reserve for checksum. Will eat away into the usable size of the registry.\n }]);\n}();\n\nexport { _default as default };\n","var n,l,u,t,i,r,o,e,f,c,a,s,h,p,v,y,d={},w=[],_=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,g=Array.isArray;function m(n,l){for(var u in l)n[u]=l[u];return n}function b(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function k(l,u,t){var i,r,o,e={};for(o in u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:e[o]=u[o];if(arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(o in l.defaultProps)void 0===e[o]&&(e[o]=l.defaultProps[o]);return x(l,e,i,r,null)}function x(n,t,i,r,o){var e={type:n,props:t,key:i,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==o?++u:o,__i:-1,__u:0};return null==o&&null!=l.vnode&&l.vnode(e),e}function M(){return{current:null}}function S(n){return n.children}function C(n,l){this.props=n,this.context=l}function $(n,l){if(null==l)return n.__?$(n.__,n.__i+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?$(n):null}function I(n){if(n.__P&&n.__d){var u=n.__v,t=u.__e,i=[],r=[],o=m({},u);o.__v=u.__v+1,l.vnode&&l.vnode(o),q(n.__P,o,u,n.__n,n.__P.namespaceURI,32&u.__u?[t]:null,i,null==t?$(u):t,!!(32&u.__u),r),o.__v=u.__v,o.__.__k[o.__i]=o,D(i,o,r),u.__e=u.__=null,o.__e!=t&&P(o)}}function P(n){if(null!=(n=n.__)&&null!=n.__c)return n.__e=n.__c.base=null,n.__k.some(function(l){if(null!=l&&null!=l.__e)return n.__e=n.__c.base=l.__e}),P(n)}function A(n){(!n.__d&&(n.__d=!0)&&i.push(n)&&!H.__r++||r!=l.debounceRendering)&&((r=l.debounceRendering)||o)(H)}function H(){try{for(var n,l=1;i.length;)i.length>l&&i.sort(e),n=i.shift(),l=i.length,I(n)}finally{i.length=H.__r=0}}function L(n,l,u,t,i,r,o,e,f,c,a){var s,h,p,v,y,_,g=t&&t.__k||w,m=l.length;for(f=T(u,l,g,f,m),s=0;s<m;s++)null!=(p=u.__k[s])&&(h=-1!=p.__i&&g[p.__i]||d,p.__i=s,_=q(n,p,h,i,r,o,e,f,c,a),v=p.__e,p.ref&&h.ref!=p.ref&&(h.ref&&J(h.ref,null,p),a.push(p.ref,p.__c||v,p)),null==y&&null!=v&&(y=v),4&p.__u?(f=j(p,f,n),h.__e&&(h.__e=null)):\"function\"==typeof p.type&&void 0!==_?f=_:v&&(f=v.nextSibling),p.__u&=-7);return u.__e=y,f}function T(n,l,u,t,i){var r,o,e,f,c,a=u.length,s=a,h=0;for(n.__k=new Array(i),r=0;r<i;r++)null!=(o=l[r])&&\"boolean\"!=typeof o&&\"function\"!=typeof o?(\"string\"==typeof o||\"number\"==typeof o||\"bigint\"==typeof o||o.constructor==String?o=n.__k[r]=x(null,o,null,null,null):g(o)?o=n.__k[r]=x(S,{children:o},null,null,null):void 0===o.constructor&&o.__b>0?o=n.__k[r]=x(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):n.__k[r]=o,f=r+h,o.__=n,o.__b=n.__b+1,e=null,-1!=(c=o.__i=O(o,u,f,s))&&(s--,(e=u[c])&&(e.__u|=2)),null==e||null==e.__v?(-1==c&&(i>a?h--:i<a&&h++),\"function\"!=typeof o.type&&(o.__u|=4)):c!=f&&(c==f-1?h--:c==f+1?h++:(c>f?h--:h++,o.__u|=4))):n.__k[r]=null;if(s)for(r=0;r<a;r++)null!=(e=u[r])&&0==(2&e.__u)&&(e.__e==t&&(t=$(e)),K(e,e));return t}function j(n,l,u){var t,i;if(\"function\"==typeof n.type){for(t=n.__k,i=0;t&&i<t.length;i++)t[i]&&(t[i].__=n,l=j(t[i],l,u));return l}n.__e!=l&&(l&&n.type&&!l.parentNode&&(l=$(n)),l=u.insertBefore(n.__e,l||null));do{l=l&&l.nextSibling}while(null!=l&&8==l.nodeType);return l}function F(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(g(n)?n.some(function(n){F(n,l)}):l.push(n)),l}function O(n,l,u,t){var i,r,o,e=n.key,f=n.type,c=l[u],a=null!=c&&0==(2&c.__u);if(null===c&&null==e||a&&e==c.key&&f==c.type)return u;if(t>(a?1:0))for(i=u-1,r=u+1;i>=0||r<l.length;)if(null!=(c=l[o=i>=0?i--:r++])&&0==(2&c.__u)&&e==c.key&&f==c.type)return o;return-1}function z(n,l,u){\"-\"==l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||_.test(l)?u:u+\"px\"}function N(n,l,u,t,i){var r,o;n:if(\"style\"==l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof t&&(n.style.cssText=t=\"\"),t)for(l in t)u&&l in u||z(n.style,l,\"\");if(u)for(l in u)t&&u[l]==t[l]||z(n.style,l,u[l])}else if(\"o\"==l[0]&&\"n\"==l[1])r=l!=(l=l.replace(s,\"$1\")),o=l.toLowerCase(),l=o in n||\"onFocusOut\"==l||\"onFocusIn\"==l?o.slice(2):l.slice(2),n.l||(n.l={}),n.l[l+r]=u,u?t?u[a]=t[a]:(u[a]=h,n.addEventListener(l,r?v:p,r)):n.removeEventListener(l,r?v:p,r);else{if(\"http://www.w3.org/2000/svg\"==i)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!=l&&\"height\"!=l&&\"href\"!=l&&\"list\"!=l&&\"form\"!=l&&\"tabIndex\"!=l&&\"download\"!=l&&\"rowSpan\"!=l&&\"colSpan\"!=l&&\"role\"!=l&&\"popover\"!=l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!=l[4]?n.removeAttribute(l):n.setAttribute(l,\"popover\"==l&&1==u?\"\":u))}}function V(n){return function(u){if(this.l){var t=this.l[u.type+n];if(null==u[c])u[c]=h++;else if(u[c]<t[a])return;return t(l.event?l.event(u):u)}}}function q(n,u,t,i,r,o,e,f,c,a){var s,h,p,v,y,d,_,k,x,M,I,P,A,H,T,j,F=u.type;if(void 0!==u.constructor)return null;128&t.__u&&(c=!!(32&t.__u),o=[f=u.__e=t.__e]),(s=l.__b)&&s(u);n:if(\"function\"==typeof F){h=e.length;try{if(x=u.props,M=F.prototype&&F.prototype.render,I=(s=F.contextType)&&i[s.__c],P=s?I?I.props.value:s.__:i,t.__c?k=(p=u.__c=t.__c).__=p.__E:(M?u.__c=p=new F(x,P):(u.__c=p=new C(x,P),p.constructor=F,p.render=Q),I&&I.sub(p),p.state||(p.state={}),p.__n=i,v=p.__d=!0,p.__h=[],p._sb=[]),M&&null==p.__s&&(p.__s=p.state),M&&null!=F.getDerivedStateFromProps&&(p.__s==p.state&&(p.__s=m({},p.__s)),m(p.__s,F.getDerivedStateFromProps(x,p.__s))),y=p.props,d=p.state,p.__v=u,v)M&&null==F.getDerivedStateFromProps&&null!=p.componentWillMount&&p.componentWillMount(),M&&null!=p.componentDidMount&&p.__h.push(p.componentDidMount);else{if(M&&null==F.getDerivedStateFromProps&&x!==y&&null!=p.componentWillReceiveProps&&p.componentWillReceiveProps(x,P),u.__v==t.__v||!p.__e&&null!=p.shouldComponentUpdate&&!1===p.shouldComponentUpdate(x,p.__s,P)){u.__v!=t.__v&&(p.props=x,p.state=p.__s,p.__d=!1),u.__e=t.__e,u.__k=t.__k,u.__k.some(function(n){n&&(n.__=u)}),w.push.apply(p.__h,p._sb),p._sb=[],p.__h.length&&e.push(p),f=$(t);break n}null!=p.componentWillUpdate&&p.componentWillUpdate(x,p.__s,P),M&&null!=p.componentDidUpdate&&p.__h.push(function(){p.componentDidUpdate(y,d,_)})}if(p.context=P,p.props=x,p.__P=n,p.__e=!1,A=l.__r,H=0,M)p.state=p.__s,p.__d=!1,A&&A(u),s=p.render(p.props,p.state,p.context),w.push.apply(p.__h,p._sb),p._sb=[];else do{p.__d=!1,A&&A(u),s=p.render(p.props,p.state,p.context),p.state=p.__s}while(p.__d&&++H<25);p.state=p.__s,null!=p.getChildContext&&(i=m(m({},i),p.getChildContext())),M&&!v&&null!=p.getSnapshotBeforeUpdate&&(_=p.getSnapshotBeforeUpdate(y,d)),T=null!=s&&s.type===S&&null==s.key?E(s.props.children):s,f=L(n,g(T)?T:[T],u,t,i,r,o,e,f,c,a),p.base=u.__e,u.__u&=-161,p.__h.length&&e.push(p),k&&(p.__E=p.__=null)}catch(n){if(e.length=h,u.__v=null,c||null!=o){if(n.then){for(u.__u|=c?160:128;f&&8==f.nodeType&&f.nextSibling;)f=f.nextSibling;null!=o&&(o[o.indexOf(f)]=null),u.__e=f}else if(null!=o)for(j=o.length;j--;)b(o[j])}else u.__e=t.__e;null==u.__k&&(u.__k=t.__k||[]),n.then||B(u),l.__e(n,u,t)}}else null==o&&u.__v==t.__v?(u.__k=t.__k,u.__e=t.__e):f=u.__e=G(t.__e,u,t,i,r,o,e,c,a);return(s=l.diffed)&&s(u),128&u.__u?void 0:f}function B(n){n&&(n.__c&&(n.__c.__e=!0),n.__k&&n.__k.some(B))}function D(n,u,t){for(var i=0;i<t.length;i++)J(t[i],t[++i],t[++i]);l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function E(n){return\"object\"!=typeof n||null==n||n.__b>0?n:g(n)?n.map(E):void 0!==n.constructor?null:m({},n)}function G(u,t,i,r,o,e,f,c,a){var s,h,p,v,y,w,_,m=i.props||d,k=t.props,x=t.type;if(\"svg\"==x?o=\"http://www.w3.org/2000/svg\":\"math\"==x?o=\"http://www.w3.org/1998/Math/MathML\":o||(o=\"http://www.w3.org/1999/xhtml\"),null!=e)for(s=0;s<e.length;s++)if((y=e[s])&&\"setAttribute\"in y==!!x&&(x?y.localName==x:3==y.nodeType)){u=y,e[s]=null;break}if(null==u){if(null==x)return document.createTextNode(k);u=document.createElementNS(o,x,k.is&&k),c&&(l.__m&&l.__m(t,e),c=!1),e=null}if(null==x)m===k||c&&u.data==k||(u.data=k);else{if(e=\"textarea\"==x&&null!=k.defaultValue?null:e&&n.call(u.childNodes),!c&&null!=e)for(m={},s=0;s<u.attributes.length;s++)m[(y=u.attributes[s]).name]=y.value;for(s in m)y=m[s],\"dangerouslySetInnerHTML\"==s?p=y:\"children\"==s||s in k||\"value\"==s&&\"defaultValue\"in k||\"checked\"==s&&\"defaultChecked\"in k||N(u,s,null,y,o);for(s in k)y=k[s],\"children\"==s?v=y:\"dangerouslySetInnerHTML\"==s?h=y:\"value\"==s?w=y:\"checked\"==s?_=y:c&&\"function\"!=typeof y||m[s]===y||N(u,s,y,m[s],o);if(h)c||p&&(h.__html==p.__html||h.__html==u.innerHTML)||(u.innerHTML=h.__html),t.__k=[];else if(p&&(u.innerHTML=\"\"),L(\"template\"==t.type?u.content:u,g(v)?v:[v],t,i,r,\"foreignObject\"==x?\"http://www.w3.org/1999/xhtml\":o,e,f,e?e[0]:i.__k&&$(i,0),c,a),null!=e)for(s=e.length;s--;)b(e[s]);c&&\"textarea\"!=x||(s=\"value\",\"progress\"==x&&null==w?u.removeAttribute(\"value\"):null!=w&&(w!==u[s]||\"progress\"==x&&!w||\"option\"==x&&w!=m[s])&&N(u,s,w,m[s],o),s=\"checked\",null!=_&&_!=u[s]&&N(u,s,_,m[s],o))}return u}function J(n,u,t){try{if(\"function\"==typeof n){var i=\"function\"==typeof n.__u;i&&n.__u(),i&&null==u||(n.__u=n(u))}else n.current=u}catch(n){l.__e(n,t)}}function K(n,u,t){var i,r;if(l.unmount&&l.unmount(n),(i=n.ref)&&(i.current&&i.current!=n.__e||J(i,null,u)),null!=(i=n.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(n){l.__e(n,u)}i.base=i.__P=i.__n=null}if(i=n.__k)for(r=0;r<i.length;r++)i[r]&&K(i[r],u,t||\"function\"!=typeof n.type);t||b(n.__e),n.__c=n.__=n.__e=void 0}function Q(n,l,u){return this.constructor(n,u)}function R(u,t,i){var r,o,e,f;t==document&&(t=document.documentElement),l.__&&l.__(u,t),o=(r=\"function\"==typeof i)?null:i&&i.__k||t.__k,e=[],f=[],q(t,u=(!r&&i||t).__k=k(S,null,[u]),o||d,d,t.namespaceURI,!r&&i?[i]:o?null:t.firstChild?n.call(t.childNodes):null,e,!r&&i?i:o?o.__e:t.firstChild,r,f),D(e,u,f),u.props.children=null}function U(n,l){R(n,l,U)}function W(l,u,t){var i,r,o,e,f=m({},l.props);for(o in l.type&&l.type.defaultProps&&(e=l.type.defaultProps),u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:f[o]=void 0===u[o]&&null!=e?e[o]:u[o];return arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),x(l.type,f,i||l.key,r||l.ref,null)}function X(n){function l(n){var u,t;return this.getChildContext||(u=new Set,(t={})[l.__c]=this,this.getChildContext=function(){return t},this.componentWillUnmount=function(){u=null},this.shouldComponentUpdate=function(n){this.props.value!=n.value&&u.forEach(function(n){n.__e=!0,A(n)})},this.sub=function(n){u.add(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u&&u.delete(n),l&&l.call(n)}}),n.children}return l.__c=\"__cC\"+y++,l.__=n,l.Provider=l.__l=(l.Consumer=function(n,l){return n.children(l)}).contextType=l,l}n=w.slice,l={__e:function(n,l,u,t){for(var i,r,o;l=l.__;)if((i=l.__c)&&!i.__)try{if((r=i.constructor)&&null!=r.getDerivedStateFromError&&(i.setState(r.getDerivedStateFromError(n)),o=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),o=i.__d),o)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&void 0===n.constructor},C.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!=this.state?this.__s:this.__s=m({},this.state),\"function\"==typeof n&&(n=n(m({},u),this.props)),n&&m(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),A(this))},C.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),A(this))},C.prototype.render=S,i=[],o=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,e=function(n,l){return n.__v.__b-l.__v.__b},H.__r=0,f=Math.random().toString(8),c=\"__d\"+f,a=\"__a\"+f,s=/(PointerCapture)$|Capture$/i,h=0,p=V(!1),v=V(!0),y=0;export{C as Component,S as Fragment,W as cloneElement,X as createContext,k as createElement,M as createRef,k as h,U as hydrate,t as isValidElement,l as options,R as render,F as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","import { select, pointer } from 'd3-selection';\nimport Kapsule from 'kapsule';\nimport { isValidElement, cloneElement, render as render$1 } from 'preact';\n\nfunction _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nfunction _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nfunction _defineProperty(e, r, t) {\n return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: true,\n configurable: true,\n writable: true\n }) : e[r] = t, e;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = true,\n o = false;\n try {\n if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = true, n = r;\n } finally {\n try {\n if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), true).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _slicedToArray(r, e) {\n return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r);\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n }\n}\n\nvar _reactElement2VNode = function reactElement2VNode(el) {\n // Among other things, react VNodes (and all its children) need to have constructor: undefined attributes in order to be recognised, cloneElement (applied recursively) does the necessary conversion\n if (!(_typeof(el) === 'object')) return el;\n var res = cloneElement(el);\n if (res.props) {\n var _res$props;\n res.props = _objectSpread2({}, res.props);\n if (res !== null && res !== void 0 && (_res$props = res.props) !== null && _res$props !== void 0 && _res$props.children) {\n res.props.children = Array.isArray(res.props.children) ? res.props.children.map(_reactElement2VNode) : _reactElement2VNode(res.props.children);\n }\n }\n return res;\n};\nvar isReactRenderable = function isReactRenderable(o) {\n return isValidElement(cloneElement(o));\n};\nvar render = function render(jsx, domEl) {\n delete domEl.__k; // Wipe traces of previous preact renders\n render$1(_reactElement2VNode(jsx), domEl);\n};\n\nfunction styleInject(css, ref) {\n if (ref === void 0) ref = {};\n var insertAt = ref.insertAt;\n if (typeof document === 'undefined') {\n return;\n }\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css_248z = \".float-tooltip-kap {\\n position: absolute;\\n width: max-content; /* prevent shrinking near right edge */\\n max-width: max(50%, 150px);\\n padding: 3px 5px;\\n border-radius: 3px;\\n font: 12px sans-serif;\\n color: #eee;\\n background: rgba(0,0,0,0.6);\\n pointer-events: none;\\n}\\n\";\nstyleInject(css_248z);\n\nvar index = Kapsule({\n props: {\n content: {\n \"default\": false\n },\n offsetX: {\n triggerUpdate: false\n },\n // null or number\n offsetY: {\n triggerUpdate: false\n } // null or number\n },\n init: function init(domNode, state) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref$style = _ref.style,\n style = _ref$style === void 0 ? {} : _ref$style;\n var isD3Selection = !!domNode && _typeof(domNode) === 'object' && !!domNode.node && typeof domNode.node === 'function';\n var el = select(isD3Selection ? domNode.node() : domNode);\n\n // make sure container is positioned, to provide anchor for tooltip\n el.style('position') === 'static' && el.style('position', 'relative');\n state.tooltipEl = el.append('div').attr('class', 'float-tooltip-kap');\n Object.entries(style).forEach(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n k = _ref3[0],\n v = _ref3[1];\n return state.tooltipEl.style(k, v);\n });\n state.tooltipEl // start off-screen\n .style('left', '-10000px').style('display', 'none');\n var evSuffix = \"tooltip-\".concat(Math.round(Math.random() * 1e12));\n state.mouseInside = false;\n el.on(\"mousemove.\".concat(evSuffix), function (ev) {\n state.mouseInside = true;\n var mousePos = pointer(ev);\n var domNode = el.node();\n var canvasWidth = domNode.offsetWidth;\n var canvasHeight = domNode.offsetHeight;\n var translate = [state.offsetX === null || state.offsetX === undefined\n // auto: adjust horizontal position to not exceed canvas boundaries\n ? \"-\".concat(mousePos[0] / canvasWidth * 100, \"%\") : typeof state.offsetX === 'number' ? \"calc(-50% + \".concat(state.offsetX, \"px)\") : state.offsetX, state.offsetY === null || state.offsetY === undefined\n // auto: flip to above if near bottom\n ? canvasHeight > 130 && canvasHeight - mousePos[1] < 100 ? 'calc(-100% - 6px)' : '21px' : typeof state.offsetY === 'number' ? state.offsetY < 0 ? \"calc(-100% - \".concat(Math.abs(state.offsetY), \"px)\") : \"\".concat(state.offsetY, \"px\") : state.offsetY];\n state.tooltipEl.style('left', mousePos[0] + 'px').style('top', mousePos[1] + 'px').style('transform', \"translate(\".concat(translate.join(','), \")\"));\n state.content && state.tooltipEl.style('display', 'inline');\n });\n el.on(\"mouseover.\".concat(evSuffix), function () {\n state.mouseInside = true;\n state.content && state.tooltipEl.style('display', 'inline');\n });\n el.on(\"mouseout.\".concat(evSuffix), function () {\n state.mouseInside = false;\n state.tooltipEl.style('display', 'none');\n });\n },\n update: function update(state) {\n state.tooltipEl.style('display', !!state.content && state.mouseInside ? 'inline' : 'none');\n if (!state.content) {\n state.tooltipEl.text('');\n } else if (state.content instanceof HTMLElement) {\n state.tooltipEl.text(''); // empty it\n state.tooltipEl.append(function () {\n return state.content;\n });\n } else if (typeof state.content === 'string') {\n state.tooltipEl.html(state.content);\n } else if (isReactRenderable(state.content)) {\n state.tooltipEl.text(''); // empty it\n render(state.content, state.tooltipEl.node());\n } else {\n state.tooltipEl.style('display', 'none');\n console.warn('Tooltip content is invalid, skipping.', state.content, state.content.toString());\n }\n }\n});\n\nexport { index as default };\n","export default function(x, y, z) {\n var nodes, strength = 1;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n if (z == null) z = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0,\n sz = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x || 0, sy += node.y || 0, sz += node.z || 0;\n }\n\n for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, sz = (sz / n - z) * strength, i = 0; i < n; ++i) {\n node = nodes[i];\n if (sx) { node.x -= sx }\n if (sy) { node.y -= sy; }\n if (sz) { node.z -= sz; }\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n force.z = function(_) {\n return arguments.length ? (z = +_, force) : z;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n return force;\n}\n","export default function(d) {\n const x = +this._x.call(null, d);\n return add(this.cover(x), x, d);\n}\n\nfunction add(tree, x, d) {\n if (isNaN(x)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n x1 = tree._x1,\n xm,\n xp,\n right,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (parent = node, !(node = node[i = +right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n if (x === xp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(2) : tree._root = new Array(2);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n } while ((i = +right) === (j = +(xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n if (!Array.isArray(data)) data = Array.from(data);\n const n = data.length;\n const xz = new Float64Array(n);\n let x0 = Infinity,\n x1 = -Infinity;\n\n // Compute the points and their extent.\n for (let i = 0, x; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, data[i]))) continue;\n xz[i] = x;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0).cover(x1);\n\n // Add the new points.\n for (let i = 0; i < n; ++i) {\n add(this, xz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x) {\n if (isNaN(x = +x)) return this; // ignore invalid points\n\n var x0 = this._x0,\n x1 = this._x1;\n\n // If the binarytree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing half boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1) {\n i = +(x < x0);\n parent = new Array(2), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z; break;\n case 1: x0 = x1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._x1 = x1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0]).cover(+_[1][0])\n : isNaN(this._x0) ? undefined : [[this._x0], [this._x1]];\n}\n","export default function(node, x0, x1) {\n this.node = node;\n this.x0 = x0;\n this.x1 = x1;\n}\n","import Half from \"./half.js\";\n\nexport default function(x, radius) {\n var data,\n x0 = this._x0,\n x1,\n x2,\n x3 = this._x1,\n halves = [],\n node = this._root,\n q,\n i;\n\n if (node) halves.push(new Half(node, x0, x3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius;\n x3 = x + radius;\n }\n\n while (q = halves.pop()) {\n\n // Stop searching if this half can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (x2 = q.x1) < x0) continue;\n\n // Bisect the current half.\n if (node.length) {\n var xm = (x1 + x2) / 2;\n\n halves.push(\n new Half(node[1], xm, x2),\n new Half(node[0], x1, xm)\n );\n\n // Visit the closest half first.\n if (i = +(x >= xm)) {\n q = halves[halves.length - 1];\n halves[halves.length - 1] = halves[halves.length - 1 - i];\n halves[halves.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var d = Math.abs(x - +this._x.call(null, node.data));\n if (d < radius) {\n radius = d;\n x0 = x - d;\n x3 = x + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n x1 = this._x1,\n x,\n xm,\n right,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (!(parent = node, node = node[i = +right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 1]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1])\n && node === (parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Half from \"./half.js\";\n\nexport default function(callback) {\n var halves = [], q, node = this._root, child, x0, x1;\n if (node) halves.push(new Half(node, this._x0, this._x1));\n while (q = halves.pop()) {\n if (!callback(node = q.node, x0 = q.x0, x1 = q.x1) && node.length) {\n var xm = (x0 + x1) / 2;\n if (child = node[1]) halves.push(new Half(child, xm, x1));\n if (child = node[0]) halves.push(new Half(child, x0, xm));\n }\n }\n return this;\n}\n","import Half from \"./half.js\";\n\nexport default function(callback) {\n var halves = [], next = [], q;\n if (this._root) halves.push(new Half(this._root, this._x0, this._x1));\n while (q = halves.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, x1 = q.x1, xm = (x0 + x1) / 2;\n if (child = node[0]) halves.push(new Half(child, x0, xm));\n if (child = node[1]) halves.push(new Half(child, xm, x1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.x1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\n\nexport default function binarytree(nodes, x) {\n var tree = new Binarytree(x == null ? defaultX : x, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Binarytree(x, x0, x1) {\n this._x = x;\n this._x0 = x0;\n this._x1 = x1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = binarytree.prototype = Binarytree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Binarytree(this._x, this._x0, this._x1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(2)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 2; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(2)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;","export default function(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d),\n z = +this._z.call(null, d);\n return add(this.cover(x, y, z), x, y, z, d);\n}\n\nfunction add(tree, x, y, z, d) {\n if (isNaN(x) || isNaN(y) || isNaN(z)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n z0 = tree._z0,\n x1 = tree._x1,\n y1 = tree._y1,\n z1 = tree._z1,\n xm,\n ym,\n zm,\n xp,\n yp,\n zp,\n right,\n bottom,\n deep,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (deep = z >= (zm = (z0 + z1) / 2)) z0 = zm; else z1 = zm;\n if (parent = node, !(node = node[i = deep << 2 | bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n zp = +tree._z.call(null, node.data);\n if (x === xp && y === yp && z === zp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(8) : tree._root = new Array(8);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (deep = z >= (zm = (z0 + z1) / 2)) z0 = zm; else z1 = zm;\n } while ((i = deep << 2 | bottom << 1 | right) === (j = (zp >= zm) << 2 | (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n if (!Array.isArray(data)) data = Array.from(data);\n const n = data.length;\n const xz = new Float64Array(n);\n const yz = new Float64Array(n);\n const zz = new Float64Array(n);\n let x0 = Infinity,\n y0 = Infinity,\n z0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity,\n z1 = -Infinity;\n\n // Compute the points and their extent.\n for (let i = 0, d, x, y, z; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d)) || isNaN(z = +this._z.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n zz[i] = z;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n if (z < z0) z0 = z;\n if (z > z1) z1 = z;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1 || z0 > z1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0, z0).cover(x1, y1, z1);\n\n // Add the new points.\n for (let i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], zz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y, z) {\n if (isNaN(x = +x) || isNaN(y = +y) || isNaN(z = +z)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n z0 = this._z0,\n x1 = this._x1,\n y1 = this._y1,\n z1 = this._z1;\n\n // If the octree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing octant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n z1 = (z0 = Math.floor(z)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var t = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1 || z0 > z || z >= z1) {\n i = (z < z0) << 2 | (y < y0) << 1 | (x < x0);\n parent = new Array(8), parent[i] = node, node = parent, t *= 2;\n switch (i) {\n case 0: x1 = x0 + t, y1 = y0 + t, z1 = z0 + t; break;\n case 1: x0 = x1 - t, y1 = y0 + t, z1 = z0 + t; break;\n case 2: x1 = x0 + t, y0 = y1 - t, z1 = z0 + t; break;\n case 3: x0 = x1 - t, y0 = y1 - t, z1 = z0 + t; break;\n case 4: x1 = x0 + t, y1 = y0 + t, z0 = z1 - t; break;\n case 5: x0 = x1 - t, y1 = y0 + t, z0 = z1 - t; break;\n case 6: x1 = x0 + t, y0 = y1 - t, z0 = z1 - t; break;\n case 7: x0 = x1 - t, y0 = y1 - t, z0 = z1 - t; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._z0 = z0;\n this._x1 = x1;\n this._y1 = y1;\n this._z1 = z1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1], +_[0][2]).cover(+_[1][0], +_[1][1], +_[1][2])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0, this._z0], [this._x1, this._y1, this._z1]];\n}\n","export default function(node, x0, y0, z0, x1, y1, z1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.z0 = z0;\n this.x1 = x1;\n this.y1 = y1;\n this.z1 = z1;\n}\n","import Octant from \"./octant.js\";\n\nexport default function(x, y, z, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n z0 = this._z0,\n x1,\n y1,\n z1,\n x2,\n y2,\n z2,\n x3 = this._x1,\n y3 = this._y1,\n z3 = this._z1,\n octs = [],\n node = this._root,\n q,\n i;\n\n if (node) octs.push(new Octant(node, x0, y0, z0, x3, y3, z3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius, z0 = z - radius;\n x3 = x + radius, y3 = y + radius, z3 = z + radius;\n radius *= radius;\n }\n\n while (q = octs.pop()) {\n\n // Stop searching if this octant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (z1 = q.z0) > z3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0\n || (z2 = q.z1) < z0) continue;\n\n // Bisect the current octant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2,\n zm = (z1 + z2) / 2;\n\n octs.push(\n new Octant(node[7], xm, ym, zm, x2, y2, z2),\n new Octant(node[6], x1, ym, zm, xm, y2, z2),\n new Octant(node[5], xm, y1, zm, x2, ym, z2),\n new Octant(node[4], x1, y1, zm, xm, ym, z2),\n new Octant(node[3], xm, ym, z1, x2, y2, zm),\n new Octant(node[2], x1, ym, z1, xm, y2, zm),\n new Octant(node[1], xm, y1, z1, x2, ym, zm),\n new Octant(node[0], x1, y1, z1, xm, ym, zm)\n );\n\n // Visit the closest octant first.\n if (i = (z >= zm) << 2 | (y >= ym) << 1 | (x >= xm)) {\n q = octs[octs.length - 1];\n octs[octs.length - 1] = octs[octs.length - 1 - i];\n octs[octs.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n dz = z - +this._z.call(null, node.data),\n d2 = dx * dx + dy * dy + dz * dz;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d, z0 = z - d;\n x3 = x + d, y3 = y + d, z3 = z + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","const distance = (x1, y1, z1, x2, y2, z2) => Math.sqrt((x1-x2)**2 + (y1-y2)**2 + (z1-z2)**2);\n\nexport function findAllWithinRadius(x, y, z, radius) {\n const result = [];\n\n const xMin = x - radius;\n const yMin = y - radius;\n const zMin = z - radius;\n const xMax = x + radius;\n const yMax = y + radius;\n const zMax = z + radius;\n\n this.visit((node, x1, y1, z1, x2, y2, z2) => {\n if (!node.length) {\n do {\n const d = node.data;\n if (distance(x, y, z, this._x(d), this._y(d), this._z(d)) <= radius) {\n result.push(d);\n }\n } while (node = node.next);\n }\n return x1 > xMax || y1 > yMax || z1 > zMax || x2 < xMin || y2 < yMin || z2 < zMin;\n });\n\n return result;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d)) || isNaN(z = +this._z.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n z0 = this._z0,\n x1 = this._x1,\n y1 = this._y1,\n z1 = this._z1,\n x,\n y,\n z,\n xm,\n ym,\n zm,\n right,\n bottom,\n deep,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (deep = z >= (zm = (z0 + z1) / 2)) z0 = zm; else z1 = zm;\n if (!(parent = node, node = node[i = deep << 2 | bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 7] || parent[(i + 2) & 7] || parent[(i + 3) & 7] || parent[(i + 4) & 7] || parent[(i + 5) & 7] || parent[(i + 6) & 7] || parent[(i + 7) & 7]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3] || parent[4] || parent[5] || parent[6] || parent[7])\n && node === (parent[7] || parent[6] || parent[5] || parent[4] || parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Octant from \"./octant.js\";\n\nexport default function(callback) {\n var octs = [], q, node = this._root, child, x0, y0, z0, x1, y1, z1;\n if (node) octs.push(new Octant(node, this._x0, this._y0, this._z0, this._x1, this._y1, this._z1));\n while (q = octs.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, z0 = q.z0, x1 = q.x1, y1 = q.y1, z1 = q.z1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2, zm = (z0 + z1) / 2;\n if (child = node[7]) octs.push(new Octant(child, xm, ym, zm, x1, y1, z1));\n if (child = node[6]) octs.push(new Octant(child, x0, ym, zm, xm, y1, z1));\n if (child = node[5]) octs.push(new Octant(child, xm, y0, zm, x1, ym, z1));\n if (child = node[4]) octs.push(new Octant(child, x0, y0, zm, xm, ym, z1));\n if (child = node[3]) octs.push(new Octant(child, xm, ym, z0, x1, y1, zm));\n if (child = node[2]) octs.push(new Octant(child, x0, ym, z0, xm, y1, zm));\n if (child = node[1]) octs.push(new Octant(child, xm, y0, z0, x1, ym, zm));\n if (child = node[0]) octs.push(new Octant(child, x0, y0, z0, xm, ym, zm));\n }\n }\n return this;\n}\n","import Octant from \"./octant.js\";\n\nexport default function(callback) {\n var octs = [], next = [], q;\n if (this._root) octs.push(new Octant(this._root, this._x0, this._y0, this._z0, this._x1, this._y1, this._z1));\n while (q = octs.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, z0 = q.z0, x1 = q.x1, y1 = q.y1, z1 = q.z1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2, zm = (z0 + z1) / 2;\n if (child = node[0]) octs.push(new Octant(child, x0, y0, z0, xm, ym, zm));\n if (child = node[1]) octs.push(new Octant(child, xm, y0, z0, x1, ym, zm));\n if (child = node[2]) octs.push(new Octant(child, x0, ym, z0, xm, y1, zm));\n if (child = node[3]) octs.push(new Octant(child, xm, ym, z0, x1, y1, zm));\n if (child = node[4]) octs.push(new Octant(child, x0, y0, zm, xm, ym, z1));\n if (child = node[5]) octs.push(new Octant(child, xm, y0, zm, x1, ym, z1));\n if (child = node[6]) octs.push(new Octant(child, x0, ym, zm, xm, y1, z1));\n if (child = node[7]) octs.push(new Octant(child, xm, ym, zm, x1, y1, z1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.z0, q.x1, q.y1, q.z1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","export function defaultZ(d) {\n return d[2];\n}\n\nexport default function(_) {\n return arguments.length ? (this._z = _, this) : this._z;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport { findAllWithinRadius as tree_findAllWithinRadius } from \"./findAll.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\nimport tree_z, {defaultZ} from \"./z.js\";\n\nexport default function octree(nodes, x, y, z) {\n var tree = new Octree(x == null ? defaultX : x, y == null ? defaultY : y, z == null ? defaultZ : z, NaN, NaN, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Octree(x, y, z, x0, y0, z0, x1, y1, z1) {\n this._x = x;\n this._y = y;\n this._z = z;\n this._x0 = x0;\n this._y0 = y0;\n this._z0 = z0;\n this._x1 = x1;\n this._y1 = y1;\n this._z1 = z1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = octree.prototype = Octree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Octree(this._x, this._y, this._z, this._x0, this._y0, this._z0, this._x1, this._y1, this._z1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(8)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 8; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(8)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.findAllWithinRadius = tree_findAllWithinRadius;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\ntreeProto.z = tree_z;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(random) {\n return (random() - 0.5) * 1e-6;\n}\n","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n nDim,\n count,\n bias,\n random,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x = 0, y = 0, z = 0, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle(random);\n if (nDim > 1) { y = target.y + target.vy - source.y - source.vy || jiggle(random); }\n if (nDim > 2) { z = target.z + target.vz - source.z - source.vz || jiggle(random); }\n l = Math.sqrt(x * x + y * y + z * z);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l, z *= l;\n\n target.vx -= x * (b = bias[i]);\n if (nDim > 1) { target.vy -= y * b; }\n if (nDim > 2) { target.vz -= z * b; }\n\n source.vx += x * (b = 1 - b);\n if (nDim > 1) { source.vy += y * b; }\n if (nDim > 2) { source.vz += z * b; }\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_nodes, ...args) {\n nodes = _nodes;\n random = args.find(arg => typeof arg === 'function') || Math.random;\n nDim = args.find(arg => [1, 2, 3].includes(arg)) || 2;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\n\nvar MAX_DIMENSIONS = 3;\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nexport function z(d) {\n return d.z;\n}\n\nvar initialRadius = 10,\n initialAngleRoll = Math.PI * (3 - Math.sqrt(5)), // Golden ratio angle\n initialAngleYaw = Math.PI * 20 / (9 + Math.sqrt(221)); // Markov irrational number\n\nexport default function(nodes, numDimensions) {\n numDimensions = numDimensions || 2;\n\n var nDim = Math.min(MAX_DIMENSIONS, Math.max(1, Math.round(numDimensions))),\n simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\"),\n random = lcg();\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.forEach(function (force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (nDim > 1) {\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n if (nDim > 2) {\n if (node.fz == null) node.z += node.vz *= velocityDecay;\n else node.z = node.fz, node.vz = 0;\n }\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (node.fz != null) node.z = node.fz;\n if (isNaN(node.x) || (nDim > 1 && isNaN(node.y)) || (nDim > 2 && isNaN(node.z))) {\n var radius = initialRadius * (nDim > 2 ? Math.cbrt(0.5 + i) : (nDim > 1 ? Math.sqrt(0.5 + i) : i)),\n rollAngle = i * initialAngleRoll,\n yawAngle = i * initialAngleYaw;\n\n if (nDim === 1) {\n node.x = radius;\n } else if (nDim === 2) {\n node.x = radius * Math.cos(rollAngle);\n node.y = radius * Math.sin(rollAngle);\n } else { // 3 dimensions: use spherical distribution along 2 irrational number angles\n node.x = radius * Math.sin(rollAngle) * Math.cos(yawAngle);\n node.y = radius * Math.cos(rollAngle);\n node.z = radius * Math.sin(rollAngle) * Math.sin(yawAngle);\n }\n }\n if (isNaN(node.vx) || (nDim > 1 && isNaN(node.vy)) || (nDim > 2 && isNaN(node.vz))) {\n node.vx = 0;\n if (nDim > 1) { node.vy = 0; }\n if (nDim > 2) { node.vz = 0; }\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes, random, nDim);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n numDimensions: function(_) {\n return arguments.length\n ? (nDim = Math.min(MAX_DIMENSIONS, Math.max(1, Math.round(_))), forces.forEach(initializeForce), simulation)\n : nDim;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n randomSource: function(_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function() {\n var args = Array.prototype.slice.call(arguments);\n var x = args.shift() || 0,\n y = (nDim > 1 ? args.shift() : null) || 0,\n z = (nDim > 2 ? args.shift() : null) || 0,\n radius = args.shift() || Infinity;\n\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n dz,\n d2,\n node,\n closest;\n\n radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - (node.y || 0);\n dz = z - (node.z ||0);\n d2 = dx * dx + dy * dy + dz * dz;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import {binarytree} from \"d3-binarytree\";\nimport {quadtree} from \"d3-quadtree\";\nimport {octree} from \"d3-octree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y, z} from \"./simulation.js\";\n\nexport default function() {\n var nodes,\n nDim,\n node,\n random,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i,\n n = nodes.length,\n tree =\n (nDim === 1 ? binarytree(nodes, x)\n :(nDim === 2 ? quadtree(nodes, x, y)\n :(nDim === 3 ? octree(nodes, x, y, z)\n :null\n ))).visitAfter(accumulate);\n\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(treeNode) {\n var strength = 0, q, c, weight = 0, x, y, z, i;\n var numChildren = treeNode.length;\n\n // For internal nodes, accumulate forces from children.\n if (numChildren) {\n for (x = y = z = i = 0; i < numChildren; ++i) {\n if ((q = treeNode[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * (q.x || 0), y += c * (q.y || 0), z += c * (q.z || 0);\n }\n }\n strength *= Math.sqrt(4 / numChildren); // scale accumulated strength according to number of dimensions\n\n treeNode.x = x / weight;\n if (nDim > 1) { treeNode.y = y / weight; }\n if (nDim > 2) { treeNode.z = z / weight; }\n }\n\n // For leaf nodes, accumulate forces from coincident nodes.\n else {\n q = treeNode;\n q.x = q.data.x;\n if (nDim > 1) { q.y = q.data.y; }\n if (nDim > 2) { q.z = q.data.z; }\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n treeNode.value = strength;\n }\n\n function apply(treeNode, x1, arg1, arg2, arg3) {\n if (!treeNode.value) return true;\n var x2 = [arg1, arg2, arg3][nDim-1];\n\n var x = treeNode.x - node.x,\n y = (nDim > 1 ? treeNode.y - node.y : 0),\n z = (nDim > 2 ? treeNode.z - node.z : 0),\n w = x2 - x1,\n l = x * x + y * y + z * z;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (nDim > 1 && y === 0) y = jiggle(random), l += y * y;\n if (nDim > 2 && z === 0) z = jiggle(random), l += z * z;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * treeNode.value * alpha / l;\n if (nDim > 1) { node.vy += y * treeNode.value * alpha / l; }\n if (nDim > 2) { node.vz += z * treeNode.value * alpha / l; }\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (treeNode.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (treeNode.data !== node || treeNode.next) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (nDim > 1 && y === 0) y = jiggle(random), l += y * y;\n if (nDim > 2 && z === 0) z = jiggle(random), l += z * z;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (treeNode.data !== node) {\n w = strengths[treeNode.data.index] * alpha / l;\n node.vx += x * w;\n if (nDim > 1) { node.vy += y * w; }\n if (nDim > 2) { node.vz += z * w; }\n } while (treeNode = treeNode.next);\n }\n\n force.initialize = function(_nodes, ...args) {\n nodes = _nodes;\n random = args.find(arg => typeof arg === 'function') || Math.random;\n nDim = args.find(arg => [1, 2, 3].includes(arg)) || 2;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(radius, x, y, z) {\n var nodes,\n nDim,\n strength = constant(0.1),\n strengths,\n radiuses;\n\n if (typeof radius !== \"function\") radius = constant(+radius);\n if (x == null) x = 0;\n if (y == null) y = 0;\n if (z == null) z = 0;\n\n function force(alpha) {\n for (var i = 0, n = nodes.length; i < n; ++i) {\n var node = nodes[i],\n dx = node.x - x || 1e-6,\n dy = (node.y || 0) - y || 1e-6,\n dz = (node.z || 0) - z || 1e-6,\n r = Math.sqrt(dx * dx + dy * dy + dz * dz),\n k = (radiuses[i] - r) * strengths[i] * alpha / r;\n node.vx += dx * k;\n if (nDim>1) { node.vy += dy * k; }\n if (nDim>2) { node.vz += dz * k; }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n radiuses = new Array(n);\n for (i = 0; i < n; ++i) {\n radiuses[i] = +radius(nodes[i], i, nodes);\n strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(initNodes, ...args) {\n nodes = initNodes;\n nDim = args.find(arg => [1, 2, 3].includes(arg)) || 2;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n force.z = function(_) {\n return arguments.length ? (z = +_, force) : z;\n };\n\n return force;\n}\n","import { Bezier } from \"./bezier.js\";\n\n// math-inlining.\nconst { abs, cos, sin, acos, atan2, sqrt, pow } = Math;\n\n// cube root function yielding real roots\nfunction crt(v) {\n return v < 0 ? -pow(-v, 1 / 3) : pow(v, 1 / 3);\n}\n\n// trig constants\nconst pi = Math.PI,\n tau = 2 * pi,\n quart = pi / 2,\n // float precision significant decimal\n epsilon = 0.000001,\n // extremas used in bbox calculation and similar algorithms\n nMax = Number.MAX_SAFE_INTEGER || 9007199254740991,\n nMin = Number.MIN_SAFE_INTEGER || -9007199254740991,\n // a zero coordinate, which is surprisingly useful\n ZERO = { x: 0, y: 0, z: 0 };\n\n// Bezier utility functions\nconst utils = {\n // Legendre-Gauss abscissae with n=24 (x_i values, defined at i=n as the roots of the nth order Legendre polynomial Pn(x))\n Tvalues: [\n -0.0640568928626056260850430826247450385909,\n 0.0640568928626056260850430826247450385909,\n -0.1911188674736163091586398207570696318404,\n 0.1911188674736163091586398207570696318404,\n -0.3150426796961633743867932913198102407864,\n 0.3150426796961633743867932913198102407864,\n -0.4337935076260451384870842319133497124524,\n 0.4337935076260451384870842319133497124524,\n -0.5454214713888395356583756172183723700107,\n 0.5454214713888395356583756172183723700107,\n -0.6480936519369755692524957869107476266696,\n 0.6480936519369755692524957869107476266696,\n -0.7401241915785543642438281030999784255232,\n 0.7401241915785543642438281030999784255232,\n -0.8200019859739029219539498726697452080761,\n 0.8200019859739029219539498726697452080761,\n -0.8864155270044010342131543419821967550873,\n 0.8864155270044010342131543419821967550873,\n -0.9382745520027327585236490017087214496548,\n 0.9382745520027327585236490017087214496548,\n -0.9747285559713094981983919930081690617411,\n 0.9747285559713094981983919930081690617411,\n -0.9951872199970213601799974097007368118745,\n 0.9951872199970213601799974097007368118745,\n ],\n\n // Legendre-Gauss weights with n=24 (w_i values, defined by a function linked to in the Bezier primer article)\n Cvalues: [\n 0.1279381953467521569740561652246953718517,\n 0.1279381953467521569740561652246953718517,\n 0.1258374563468282961213753825111836887264,\n 0.1258374563468282961213753825111836887264,\n 0.121670472927803391204463153476262425607,\n 0.121670472927803391204463153476262425607,\n 0.1155056680537256013533444839067835598622,\n 0.1155056680537256013533444839067835598622,\n 0.1074442701159656347825773424466062227946,\n 0.1074442701159656347825773424466062227946,\n 0.0976186521041138882698806644642471544279,\n 0.0976186521041138882698806644642471544279,\n 0.086190161531953275917185202983742667185,\n 0.086190161531953275917185202983742667185,\n 0.0733464814110803057340336152531165181193,\n 0.0733464814110803057340336152531165181193,\n 0.0592985849154367807463677585001085845412,\n 0.0592985849154367807463677585001085845412,\n 0.0442774388174198061686027482113382288593,\n 0.0442774388174198061686027482113382288593,\n 0.0285313886289336631813078159518782864491,\n 0.0285313886289336631813078159518782864491,\n 0.0123412297999871995468056670700372915759,\n 0.0123412297999871995468056670700372915759,\n ],\n\n arcfn: function (t, derivativeFn) {\n const d = derivativeFn(t);\n let l = d.x * d.x + d.y * d.y;\n if (typeof d.z !== \"undefined\") {\n l += d.z * d.z;\n }\n return sqrt(l);\n },\n\n compute: function (t, points, _3d) {\n // shortcuts\n if (t === 0) {\n points[0].t = 0;\n return points[0];\n }\n\n const order = points.length - 1;\n\n if (t === 1) {\n points[order].t = 1;\n return points[order];\n }\n\n const mt = 1 - t;\n let p = points;\n\n // constant?\n if (order === 0) {\n points[0].t = t;\n return points[0];\n }\n\n // linear?\n if (order === 1) {\n const ret = {\n x: mt * p[0].x + t * p[1].x,\n y: mt * p[0].y + t * p[1].y,\n t: t,\n };\n if (_3d) {\n ret.z = mt * p[0].z + t * p[1].z;\n }\n return ret;\n }\n\n // quadratic/cubic curve?\n if (order < 4) {\n let mt2 = mt * mt,\n t2 = t * t,\n a,\n b,\n c,\n d = 0;\n if (order === 2) {\n p = [p[0], p[1], p[2], ZERO];\n a = mt2;\n b = mt * t * 2;\n c = t2;\n } else if (order === 3) {\n a = mt2 * mt;\n b = mt2 * t * 3;\n c = mt * t2 * 3;\n d = t * t2;\n }\n const ret = {\n x: a * p[0].x + b * p[1].x + c * p[2].x + d * p[3].x,\n y: a * p[0].y + b * p[1].y + c * p[2].y + d * p[3].y,\n t: t,\n };\n if (_3d) {\n ret.z = a * p[0].z + b * p[1].z + c * p[2].z + d * p[3].z;\n }\n return ret;\n }\n\n // higher order curves: use de Casteljau's computation\n const dCpts = JSON.parse(JSON.stringify(points));\n while (dCpts.length > 1) {\n for (let i = 0; i < dCpts.length - 1; i++) {\n dCpts[i] = {\n x: dCpts[i].x + (dCpts[i + 1].x - dCpts[i].x) * t,\n y: dCpts[i].y + (dCpts[i + 1].y - dCpts[i].y) * t,\n };\n if (typeof dCpts[i].z !== \"undefined\") {\n dCpts[i].z = dCpts[i].z + (dCpts[i + 1].z - dCpts[i].z) * t;\n }\n }\n dCpts.splice(dCpts.length - 1, 1);\n }\n dCpts[0].t = t;\n return dCpts[0];\n },\n\n computeWithRatios: function (t, points, ratios, _3d) {\n const mt = 1 - t,\n r = ratios,\n p = points;\n\n let f1 = r[0],\n f2 = r[1],\n f3 = r[2],\n f4 = r[3],\n d;\n\n // spec for linear\n f1 *= mt;\n f2 *= t;\n\n if (p.length === 2) {\n d = f1 + f2;\n return {\n x: (f1 * p[0].x + f2 * p[1].x) / d,\n y: (f1 * p[0].y + f2 * p[1].y) / d,\n z: !_3d ? false : (f1 * p[0].z + f2 * p[1].z) / d,\n t: t,\n };\n }\n\n // upgrade to quadratic\n f1 *= mt;\n f2 *= 2 * mt;\n f3 *= t * t;\n\n if (p.length === 3) {\n d = f1 + f2 + f3;\n return {\n x: (f1 * p[0].x + f2 * p[1].x + f3 * p[2].x) / d,\n y: (f1 * p[0].y + f2 * p[1].y + f3 * p[2].y) / d,\n z: !_3d ? false : (f1 * p[0].z + f2 * p[1].z + f3 * p[2].z) / d,\n t: t,\n };\n }\n\n // upgrade to cubic\n f1 *= mt;\n f2 *= 1.5 * mt;\n f3 *= 3 * mt;\n f4 *= t * t * t;\n\n if (p.length === 4) {\n d = f1 + f2 + f3 + f4;\n return {\n x: (f1 * p[0].x + f2 * p[1].x + f3 * p[2].x + f4 * p[3].x) / d,\n y: (f1 * p[0].y + f2 * p[1].y + f3 * p[2].y + f4 * p[3].y) / d,\n z: !_3d\n ? false\n : (f1 * p[0].z + f2 * p[1].z + f3 * p[2].z + f4 * p[3].z) / d,\n t: t,\n };\n }\n },\n\n derive: function (points, _3d) {\n const dpoints = [];\n for (let p = points, d = p.length, c = d - 1; d > 1; d--, c--) {\n const list = [];\n for (let j = 0, dpt; j < c; j++) {\n dpt = {\n x: c * (p[j + 1].x - p[j].x),\n y: c * (p[j + 1].y - p[j].y),\n };\n if (_3d) {\n dpt.z = c * (p[j + 1].z - p[j].z);\n }\n list.push(dpt);\n }\n dpoints.push(list);\n p = list;\n }\n return dpoints;\n },\n\n between: function (v, m, M) {\n return (\n (m <= v && v <= M) ||\n utils.approximately(v, m) ||\n utils.approximately(v, M)\n );\n },\n\n approximately: function (a, b, precision) {\n return abs(a - b) <= (precision || epsilon);\n },\n\n length: function (derivativeFn) {\n const z = 0.5,\n len = utils.Tvalues.length;\n\n let sum = 0;\n\n for (let i = 0, t; i < len; i++) {\n t = z * utils.Tvalues[i] + z;\n sum += utils.Cvalues[i] * utils.arcfn(t, derivativeFn);\n }\n return z * sum;\n },\n\n map: function (v, ds, de, ts, te) {\n const d1 = de - ds,\n d2 = te - ts,\n v2 = v - ds,\n r = v2 / d1;\n return ts + d2 * r;\n },\n\n lerp: function (r, v1, v2) {\n const ret = {\n x: v1.x + r * (v2.x - v1.x),\n y: v1.y + r * (v2.y - v1.y),\n };\n if (v1.z !== undefined && v2.z !== undefined) {\n ret.z = v1.z + r * (v2.z - v1.z);\n }\n return ret;\n },\n\n pointToString: function (p) {\n let s = p.x + \"/\" + p.y;\n if (typeof p.z !== \"undefined\") {\n s += \"/\" + p.z;\n }\n return s;\n },\n\n pointsToString: function (points) {\n return \"[\" + points.map(utils.pointToString).join(\", \") + \"]\";\n },\n\n copy: function (obj) {\n return JSON.parse(JSON.stringify(obj));\n },\n\n angle: function (o, v1, v2) {\n const dx1 = v1.x - o.x,\n dy1 = v1.y - o.y,\n dx2 = v2.x - o.x,\n dy2 = v2.y - o.y,\n cross = dx1 * dy2 - dy1 * dx2,\n dot = dx1 * dx2 + dy1 * dy2;\n return atan2(cross, dot);\n },\n\n // round as string, to avoid rounding errors\n round: function (v, d) {\n const s = \"\" + v;\n const pos = s.indexOf(\".\");\n return parseFloat(s.substring(0, pos + 1 + d));\n },\n\n dist: function (p1, p2) {\n const dx = p1.x - p2.x,\n dy = p1.y - p2.y;\n return sqrt(dx * dx + dy * dy);\n },\n\n closest: function (LUT, point) {\n let mdist = pow(2, 63),\n mpos,\n d;\n LUT.forEach(function (p, idx) {\n d = utils.dist(point, p);\n if (d < mdist) {\n mdist = d;\n mpos = idx;\n }\n });\n return { mdist: mdist, mpos: mpos };\n },\n\n abcratio: function (t, n) {\n // see ratio(t) note on http://pomax.github.io/bezierinfo/#abc\n if (n !== 2 && n !== 3) {\n return false;\n }\n if (typeof t === \"undefined\") {\n t = 0.5;\n } else if (t === 0 || t === 1) {\n return t;\n }\n const bottom = pow(t, n) + pow(1 - t, n),\n top = bottom - 1;\n return abs(top / bottom);\n },\n\n projectionratio: function (t, n) {\n // see u(t) note on http://pomax.github.io/bezierinfo/#abc\n if (n !== 2 && n !== 3) {\n return false;\n }\n if (typeof t === \"undefined\") {\n t = 0.5;\n } else if (t === 0 || t === 1) {\n return t;\n }\n const top = pow(1 - t, n),\n bottom = pow(t, n) + top;\n return top / bottom;\n },\n\n lli8: function (x1, y1, x2, y2, x3, y3, x4, y4) {\n const nx =\n (x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4),\n ny = (x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4),\n d = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n if (d == 0) {\n return false;\n }\n return { x: nx / d, y: ny / d };\n },\n\n lli4: function (p1, p2, p3, p4) {\n const x1 = p1.x,\n y1 = p1.y,\n x2 = p2.x,\n y2 = p2.y,\n x3 = p3.x,\n y3 = p3.y,\n x4 = p4.x,\n y4 = p4.y;\n return utils.lli8(x1, y1, x2, y2, x3, y3, x4, y4);\n },\n\n lli: function (v1, v2) {\n return utils.lli4(v1, v1.c, v2, v2.c);\n },\n\n makeline: function (p1, p2) {\n return new Bezier(\n p1.x,\n p1.y,\n (p1.x + p2.x) / 2,\n (p1.y + p2.y) / 2,\n p2.x,\n p2.y\n );\n },\n\n findbbox: function (sections) {\n let mx = nMax,\n my = nMax,\n MX = nMin,\n MY = nMin;\n sections.forEach(function (s) {\n const bbox = s.bbox();\n if (mx > bbox.x.min) mx = bbox.x.min;\n if (my > bbox.y.min) my = bbox.y.min;\n if (MX < bbox.x.max) MX = bbox.x.max;\n if (MY < bbox.y.max) MY = bbox.y.max;\n });\n return {\n x: { min: mx, mid: (mx + MX) / 2, max: MX, size: MX - mx },\n y: { min: my, mid: (my + MY) / 2, max: MY, size: MY - my },\n };\n },\n\n shapeintersections: function (\n s1,\n bbox1,\n s2,\n bbox2,\n curveIntersectionThreshold\n ) {\n if (!utils.bboxoverlap(bbox1, bbox2)) return [];\n const intersections = [];\n const a1 = [s1.startcap, s1.forward, s1.back, s1.endcap];\n const a2 = [s2.startcap, s2.forward, s2.back, s2.endcap];\n a1.forEach(function (l1) {\n if (l1.virtual) return;\n a2.forEach(function (l2) {\n if (l2.virtual) return;\n const iss = l1.intersects(l2, curveIntersectionThreshold);\n if (iss.length > 0) {\n iss.c1 = l1;\n iss.c2 = l2;\n iss.s1 = s1;\n iss.s2 = s2;\n intersections.push(iss);\n }\n });\n });\n return intersections;\n },\n\n makeshape: function (forward, back, curveIntersectionThreshold) {\n const bpl = back.points.length;\n const fpl = forward.points.length;\n const start = utils.makeline(back.points[bpl - 1], forward.points[0]);\n const end = utils.makeline(forward.points[fpl - 1], back.points[0]);\n const shape = {\n startcap: start,\n forward: forward,\n back: back,\n endcap: end,\n bbox: utils.findbbox([start, forward, back, end]),\n };\n shape.intersections = function (s2) {\n return utils.shapeintersections(\n shape,\n shape.bbox,\n s2,\n s2.bbox,\n curveIntersectionThreshold\n );\n };\n return shape;\n },\n\n getminmax: function (curve, d, list) {\n if (!list) return { min: 0, max: 0 };\n let min = nMax,\n max = nMin,\n t,\n c;\n if (list.indexOf(0) === -1) {\n list = [0].concat(list);\n }\n if (list.indexOf(1) === -1) {\n list.push(1);\n }\n for (let i = 0, len = list.length; i < len; i++) {\n t = list[i];\n c = curve.get(t);\n if (c[d] < min) {\n min = c[d];\n }\n if (c[d] > max) {\n max = c[d];\n }\n }\n return { min: min, mid: (min + max) / 2, max: max, size: max - min };\n },\n\n align: function (points, line) {\n const tx = line.p1.x,\n ty = line.p1.y,\n a = -atan2(line.p2.y - ty, line.p2.x - tx),\n d = function (v) {\n return {\n x: (v.x - tx) * cos(a) - (v.y - ty) * sin(a),\n y: (v.x - tx) * sin(a) + (v.y - ty) * cos(a),\n };\n };\n return points.map(d);\n },\n\n roots: function (points, line) {\n line = line || { p1: { x: 0, y: 0 }, p2: { x: 1, y: 0 } };\n\n const order = points.length - 1;\n const aligned = utils.align(points, line);\n const reduce = function (t) {\n return 0 <= t && t <= 1;\n };\n\n if (order === 2) {\n const a = aligned[0].y,\n b = aligned[1].y,\n c = aligned[2].y,\n d = a - 2 * b + c;\n if (d !== 0) {\n const m1 = -sqrt(b * b - a * c),\n m2 = -a + b,\n v1 = -(m1 + m2) / d,\n v2 = -(-m1 + m2) / d;\n return [v1, v2].filter(reduce);\n } else if (b !== c && d === 0) {\n return [(2 * b - c) / (2 * b - 2 * c)].filter(reduce);\n }\n return [];\n }\n\n // see http://www.trans4mind.com/personal_development/mathematics/polynomials/cubicAlgebra.htm\n const pa = aligned[0].y,\n pb = aligned[1].y,\n pc = aligned[2].y,\n pd = aligned[3].y;\n\n let d = -pa + 3 * pb - 3 * pc + pd,\n a = 3 * pa - 6 * pb + 3 * pc,\n b = -3 * pa + 3 * pb,\n c = pa;\n\n if (utils.approximately(d, 0)) {\n // this is not a cubic curve.\n if (utils.approximately(a, 0)) {\n // in fact, this is not a quadratic curve either.\n if (utils.approximately(b, 0)) {\n // in fact in fact, there are no solutions.\n return [];\n }\n // linear solution:\n return [-c / b].filter(reduce);\n }\n // quadratic solution:\n const q = sqrt(b * b - 4 * a * c),\n a2 = 2 * a;\n return [(q - b) / a2, (-b - q) / a2].filter(reduce);\n }\n\n // at this point, we know we need a cubic solution:\n\n a /= d;\n b /= d;\n c /= d;\n\n const p = (3 * b - a * a) / 3,\n p3 = p / 3,\n q = (2 * a * a * a - 9 * a * b + 27 * c) / 27,\n q2 = q / 2,\n discriminant = q2 * q2 + p3 * p3 * p3;\n\n let u1, v1, x1, x2, x3;\n if (discriminant < 0) {\n const mp3 = -p / 3,\n mp33 = mp3 * mp3 * mp3,\n r = sqrt(mp33),\n t = -q / (2 * r),\n cosphi = t < -1 ? -1 : t > 1 ? 1 : t,\n phi = acos(cosphi),\n crtr = crt(r),\n t1 = 2 * crtr;\n x1 = t1 * cos(phi / 3) - a / 3;\n x2 = t1 * cos((phi + tau) / 3) - a / 3;\n x3 = t1 * cos((phi + 2 * tau) / 3) - a / 3;\n return [x1, x2, x3].filter(reduce);\n } else if (discriminant === 0) {\n u1 = q2 < 0 ? crt(-q2) : -crt(q2);\n x1 = 2 * u1 - a / 3;\n x2 = -u1 - a / 3;\n return [x1, x2].filter(reduce);\n } else {\n const sd = sqrt(discriminant);\n u1 = crt(-q2 + sd);\n v1 = crt(q2 + sd);\n return [u1 - v1 - a / 3].filter(reduce);\n }\n },\n\n droots: function (p) {\n // quadratic roots are easy\n if (p.length === 3) {\n const a = p[0],\n b = p[1],\n c = p[2],\n d = a - 2 * b + c;\n if (d !== 0) {\n const m1 = -sqrt(b * b - a * c),\n m2 = -a + b,\n v1 = -(m1 + m2) / d,\n v2 = -(-m1 + m2) / d;\n return [v1, v2];\n } else if (b !== c && d === 0) {\n return [(2 * b - c) / (2 * (b - c))];\n }\n return [];\n }\n\n // linear roots are even easier\n if (p.length === 2) {\n const a = p[0],\n b = p[1];\n if (a !== b) {\n return [a / (a - b)];\n }\n return [];\n }\n\n return [];\n },\n\n curvature: function (t, d1, d2, _3d, kOnly) {\n let num,\n dnm,\n adk,\n dk,\n k = 0,\n r = 0;\n\n //\n // We're using the following formula for curvature:\n //\n // x'y\" - y'x\"\n // k(t) = ------------------\n // (x'² + y'²)^(3/2)\n //\n // from https://en.wikipedia.org/wiki/Radius_of_curvature#Definition\n //\n // With it corresponding 3D counterpart:\n //\n // sqrt( (y'z\" - y\"z')² + (z'x\" - z\"x')² + (x'y\" - x\"y')²)\n // k(t) = -------------------------------------------------------\n // (x'² + y'² + z'²)^(3/2)\n //\n\n const d = utils.compute(t, d1);\n const dd = utils.compute(t, d2);\n const qdsum = d.x * d.x + d.y * d.y;\n\n if (_3d) {\n num = sqrt(\n pow(d.y * dd.z - dd.y * d.z, 2) +\n pow(d.z * dd.x - dd.z * d.x, 2) +\n pow(d.x * dd.y - dd.x * d.y, 2)\n );\n dnm = pow(qdsum + d.z * d.z, 3 / 2);\n } else {\n num = d.x * dd.y - d.y * dd.x;\n dnm = pow(qdsum, 3 / 2);\n }\n\n if (num === 0 || dnm === 0) {\n return { k: 0, r: 0 };\n }\n\n k = num / dnm;\n r = dnm / num;\n\n // We're also computing the derivative of kappa, because\n // there is value in knowing the rate of change for the\n // curvature along the curve. And we're just going to\n // ballpark it based on an epsilon.\n if (!kOnly) {\n // compute k'(t) based on the interval before, and after it,\n // to at least try to not introduce forward/backward pass bias.\n const pk = utils.curvature(t - 0.001, d1, d2, _3d, true).k;\n const nk = utils.curvature(t + 0.001, d1, d2, _3d, true).k;\n dk = (nk - k + (k - pk)) / 2;\n adk = (abs(nk - k) + abs(k - pk)) / 2;\n }\n\n return { k: k, r: r, dk: dk, adk: adk };\n },\n\n inflections: function (points) {\n if (points.length < 4) return [];\n\n // FIXME: TODO: add in inflection abstraction for quartic+ curves?\n\n const p = utils.align(points, { p1: points[0], p2: points.slice(-1)[0] }),\n a = p[2].x * p[1].y,\n b = p[3].x * p[1].y,\n c = p[1].x * p[2].y,\n d = p[3].x * p[2].y,\n v1 = 18 * (-3 * a + 2 * b + 3 * c - d),\n v2 = 18 * (3 * a - b - 3 * c),\n v3 = 18 * (c - a);\n\n if (utils.approximately(v1, 0)) {\n if (!utils.approximately(v2, 0)) {\n let t = -v3 / v2;\n if (0 <= t && t <= 1) return [t];\n }\n return [];\n }\n\n const d2 = 2 * v1;\n\n if (utils.approximately(d2, 0)) return [];\n\n const trm = v2 * v2 - 4 * v1 * v3;\n\n if (trm < 0) return [];\n\n const sq = Math.sqrt(trm);\n\n return [(sq - v2) / d2, -(v2 + sq) / d2].filter(function (r) {\n return 0 <= r && r <= 1;\n });\n },\n\n bboxoverlap: function (b1, b2) {\n const dims = [\"x\", \"y\"],\n len = dims.length;\n\n for (let i = 0, dim, l, t, d; i < len; i++) {\n dim = dims[i];\n l = b1[dim].mid;\n t = b2[dim].mid;\n d = (b1[dim].size + b2[dim].size) / 2;\n if (abs(l - t) >= d) return false;\n }\n return true;\n },\n\n expandbox: function (bbox, _bbox) {\n if (_bbox.x.min < bbox.x.min) {\n bbox.x.min = _bbox.x.min;\n }\n if (_bbox.y.min < bbox.y.min) {\n bbox.y.min = _bbox.y.min;\n }\n if (_bbox.z && _bbox.z.min < bbox.z.min) {\n bbox.z.min = _bbox.z.min;\n }\n if (_bbox.x.max > bbox.x.max) {\n bbox.x.max = _bbox.x.max;\n }\n if (_bbox.y.max > bbox.y.max) {\n bbox.y.max = _bbox.y.max;\n }\n if (_bbox.z && _bbox.z.max > bbox.z.max) {\n bbox.z.max = _bbox.z.max;\n }\n bbox.x.mid = (bbox.x.min + bbox.x.max) / 2;\n bbox.y.mid = (bbox.y.min + bbox.y.max) / 2;\n if (bbox.z) {\n bbox.z.mid = (bbox.z.min + bbox.z.max) / 2;\n }\n bbox.x.size = bbox.x.max - bbox.x.min;\n bbox.y.size = bbox.y.max - bbox.y.min;\n if (bbox.z) {\n bbox.z.size = bbox.z.max - bbox.z.min;\n }\n },\n\n pairiteration: function (c1, c2, curveIntersectionThreshold) {\n const c1b = c1.bbox(),\n c2b = c2.bbox(),\n r = 100000,\n threshold = curveIntersectionThreshold || 0.5;\n\n if (\n c1b.x.size + c1b.y.size < threshold &&\n c2b.x.size + c2b.y.size < threshold\n ) {\n return [\n (((r * (c1._t1 + c1._t2)) / 2) | 0) / r +\n \"/\" +\n (((r * (c2._t1 + c2._t2)) / 2) | 0) / r,\n ];\n }\n\n let cc1 = c1.split(0.5),\n cc2 = c2.split(0.5),\n pairs = [\n { left: cc1.left, right: cc2.left },\n { left: cc1.left, right: cc2.right },\n { left: cc1.right, right: cc2.right },\n { left: cc1.right, right: cc2.left },\n ];\n\n pairs = pairs.filter(function (pair) {\n return utils.bboxoverlap(pair.left.bbox(), pair.right.bbox());\n });\n\n let results = [];\n\n if (pairs.length === 0) return results;\n\n pairs.forEach(function (pair) {\n results = results.concat(\n utils.pairiteration(pair.left, pair.right, threshold)\n );\n });\n\n results = results.filter(function (v, i) {\n return results.indexOf(v) === i;\n });\n\n return results;\n },\n\n getccenter: function (p1, p2, p3) {\n const dx1 = p2.x - p1.x,\n dy1 = p2.y - p1.y,\n dx2 = p3.x - p2.x,\n dy2 = p3.y - p2.y,\n dx1p = dx1 * cos(quart) - dy1 * sin(quart),\n dy1p = dx1 * sin(quart) + dy1 * cos(quart),\n dx2p = dx2 * cos(quart) - dy2 * sin(quart),\n dy2p = dx2 * sin(quart) + dy2 * cos(quart),\n // chord midpoints\n mx1 = (p1.x + p2.x) / 2,\n my1 = (p1.y + p2.y) / 2,\n mx2 = (p2.x + p3.x) / 2,\n my2 = (p2.y + p3.y) / 2,\n // midpoint offsets\n mx1n = mx1 + dx1p,\n my1n = my1 + dy1p,\n mx2n = mx2 + dx2p,\n my2n = my2 + dy2p,\n // intersection of these lines:\n arc = utils.lli8(mx1, my1, mx1n, my1n, mx2, my2, mx2n, my2n),\n r = utils.dist(arc, p1);\n\n // arc start/end values, over mid point:\n let s = atan2(p1.y - arc.y, p1.x - arc.x),\n m = atan2(p2.y - arc.y, p2.x - arc.x),\n e = atan2(p3.y - arc.y, p3.x - arc.x),\n _;\n\n // determine arc direction (cw/ccw correction)\n if (s < e) {\n // if s<m<e, arc(s, e)\n // if m<s<e, arc(e, s + tau)\n // if s<e<m, arc(e, s + tau)\n if (s > m || m > e) {\n s += tau;\n }\n if (s > e) {\n _ = e;\n e = s;\n s = _;\n }\n } else {\n // if e<m<s, arc(e, s)\n // if m<e<s, arc(s, e + tau)\n // if e<s<m, arc(s, e + tau)\n if (e < m && m < s) {\n _ = e;\n e = s;\n s = _;\n } else {\n e += tau;\n }\n }\n // assign and done.\n arc.s = s;\n arc.e = e;\n arc.r = r;\n return arc;\n },\n\n numberSort: function (a, b) {\n return a - b;\n },\n};\n\nexport { utils };\n","import { utils } from \"./utils.js\";\n\n/**\n * Poly Bezier\n * @param {[type]} curves [description]\n */\nclass PolyBezier {\n constructor(curves) {\n this.curves = [];\n this._3d = false;\n if (!!curves) {\n this.curves = curves;\n this._3d = this.curves[0]._3d;\n }\n }\n\n valueOf() {\n return this.toString();\n }\n\n toString() {\n return (\n \"[\" +\n this.curves\n .map(function (curve) {\n return utils.pointsToString(curve.points);\n })\n .join(\", \") +\n \"]\"\n );\n }\n\n addCurve(curve) {\n this.curves.push(curve);\n this._3d = this._3d || curve._3d;\n }\n\n length() {\n return this.curves\n .map(function (v) {\n return v.length();\n })\n .reduce(function (a, b) {\n return a + b;\n });\n }\n\n curve(idx) {\n return this.curves[idx];\n }\n\n bbox() {\n const c = this.curves;\n var bbox = c[0].bbox();\n for (var i = 1; i < c.length; i++) {\n utils.expandbox(bbox, c[i].bbox());\n }\n return bbox;\n }\n\n offset(d) {\n const offset = [];\n this.curves.forEach(function (v) {\n offset.push(...v.offset(d));\n });\n return new PolyBezier(offset);\n }\n}\n\nexport { PolyBezier };\n","/**\n A javascript Bezier curve library by Pomax.\n\n Based on http://pomax.github.io/bezierinfo\n\n This code is MIT licensed.\n**/\n\nimport { utils } from \"./utils.js\";\nimport { PolyBezier } from \"./poly-bezier.js\";\n\n// math-inlining.\nconst { abs, min, max, cos, sin, acos, sqrt } = Math;\nconst pi = Math.PI;\n// a zero coordinate, which is surprisingly useful\nconst ZERO = { x: 0, y: 0, z: 0 };\n\n/**\n * Bezier curve constructor.\n *\n * ...docs pending...\n */\nclass Bezier {\n constructor(coords) {\n let args =\n coords && coords.forEach ? coords : Array.from(arguments).slice();\n let coordlen = false;\n\n if (typeof args[0] === \"object\") {\n coordlen = args.length;\n const newargs = [];\n args.forEach(function (point) {\n [\"x\", \"y\", \"z\"].forEach(function (d) {\n if (typeof point[d] !== \"undefined\") {\n newargs.push(point[d]);\n }\n });\n });\n args = newargs;\n }\n\n let higher = false;\n const len = args.length;\n\n if (coordlen) {\n if (coordlen > 4) {\n if (arguments.length !== 1) {\n throw new Error(\n \"Only new Bezier(point[]) is accepted for 4th and higher order curves\"\n );\n }\n higher = true;\n }\n } else {\n if (len !== 6 && len !== 8 && len !== 9 && len !== 12) {\n if (arguments.length !== 1) {\n throw new Error(\n \"Only new Bezier(point[]) is accepted for 4th and higher order curves\"\n );\n }\n }\n }\n\n const _3d = (this._3d =\n (!higher && (len === 9 || len === 12)) ||\n (coords && coords[0] && typeof coords[0].z !== \"undefined\"));\n\n const points = (this.points = []);\n for (let idx = 0, step = _3d ? 3 : 2; idx < len; idx += step) {\n var point = {\n x: args[idx],\n y: args[idx + 1],\n };\n if (_3d) {\n point.z = args[idx + 2];\n }\n points.push(point);\n }\n const order = (this.order = points.length - 1);\n\n const dims = (this.dims = [\"x\", \"y\"]);\n if (_3d) dims.push(\"z\");\n this.dimlen = dims.length;\n\n // is this curve, practically speaking, a straight line?\n const aligned = utils.align(points, { p1: points[0], p2: points[order] });\n const baselength = utils.dist(points[0], points[order]);\n this._linear = aligned.reduce((t, p) => t + abs(p.y), 0) < baselength / 50;\n\n this._lut = [];\n this._t1 = 0;\n this._t2 = 1;\n this.update();\n }\n\n static quadraticFromPoints(p1, p2, p3, t) {\n if (typeof t === \"undefined\") {\n t = 0.5;\n }\n // shortcuts, although they're really dumb\n if (t === 0) {\n return new Bezier(p2, p2, p3);\n }\n if (t === 1) {\n return new Bezier(p1, p2, p2);\n }\n // real fitting.\n const abc = Bezier.getABC(2, p1, p2, p3, t);\n return new Bezier(p1, abc.A, p3);\n }\n\n static cubicFromPoints(S, B, E, t, d1) {\n if (typeof t === \"undefined\") {\n t = 0.5;\n }\n const abc = Bezier.getABC(3, S, B, E, t);\n if (typeof d1 === \"undefined\") {\n d1 = utils.dist(B, abc.C);\n }\n const d2 = (d1 * (1 - t)) / t;\n\n const selen = utils.dist(S, E),\n lx = (E.x - S.x) / selen,\n ly = (E.y - S.y) / selen,\n bx1 = d1 * lx,\n by1 = d1 * ly,\n bx2 = d2 * lx,\n by2 = d2 * ly;\n // derivation of new hull coordinates\n const e1 = { x: B.x - bx1, y: B.y - by1 },\n e2 = { x: B.x + bx2, y: B.y + by2 },\n A = abc.A,\n v1 = { x: A.x + (e1.x - A.x) / (1 - t), y: A.y + (e1.y - A.y) / (1 - t) },\n v2 = { x: A.x + (e2.x - A.x) / t, y: A.y + (e2.y - A.y) / t },\n nc1 = { x: S.x + (v1.x - S.x) / t, y: S.y + (v1.y - S.y) / t },\n nc2 = {\n x: E.x + (v2.x - E.x) / (1 - t),\n y: E.y + (v2.y - E.y) / (1 - t),\n };\n // ...done\n return new Bezier(S, nc1, nc2, E);\n }\n\n static getUtils() {\n return utils;\n }\n\n getUtils() {\n return Bezier.getUtils();\n }\n\n static get PolyBezier() {\n return PolyBezier;\n }\n\n valueOf() {\n return this.toString();\n }\n\n toString() {\n return utils.pointsToString(this.points);\n }\n\n toSVG() {\n if (this._3d) return false;\n const p = this.points,\n x = p[0].x,\n y = p[0].y,\n s = [\"M\", x, y, this.order === 2 ? \"Q\" : \"C\"];\n for (let i = 1, last = p.length; i < last; i++) {\n s.push(p[i].x);\n s.push(p[i].y);\n }\n return s.join(\" \");\n }\n\n setRatios(ratios) {\n if (ratios.length !== this.points.length) {\n throw new Error(\"incorrect number of ratio values\");\n }\n this.ratios = ratios;\n this._lut = []; // invalidate any precomputed LUT\n }\n\n verify() {\n const print = this.coordDigest();\n if (print !== this._print) {\n this._print = print;\n this.update();\n }\n }\n\n coordDigest() {\n return this.points\n .map(function (c, pos) {\n return \"\" + pos + c.x + c.y + (c.z ? c.z : 0);\n })\n .join(\"\");\n }\n\n update() {\n // invalidate any precomputed LUT\n this._lut = [];\n this.dpoints = utils.derive(this.points, this._3d);\n this.computedirection();\n }\n\n computedirection() {\n const points = this.points;\n const angle = utils.angle(points[0], points[this.order], points[1]);\n this.clockwise = angle > 0;\n }\n\n length() {\n return utils.length(this.derivative.bind(this));\n }\n\n static getABC(order = 2, S, B, E, t = 0.5) {\n const u = utils.projectionratio(t, order),\n um = 1 - u,\n C = {\n x: u * S.x + um * E.x,\n y: u * S.y + um * E.y,\n },\n s = utils.abcratio(t, order),\n A = {\n x: B.x + (B.x - C.x) / s,\n y: B.y + (B.y - C.y) / s,\n };\n return { A, B, C, S, E };\n }\n\n getABC(t, B) {\n B = B || this.get(t);\n let S = this.points[0];\n let E = this.points[this.order];\n return Bezier.getABC(this.order, S, B, E, t);\n }\n\n getLUT(steps) {\n this.verify();\n steps = steps || 100;\n if (this._lut.length === steps + 1) {\n return this._lut;\n }\n this._lut = [];\n // n steps means n+1 points\n steps++;\n this._lut = [];\n for (let i = 0, p, t; i < steps; i++) {\n t = i / (steps - 1);\n p = this.compute(t);\n p.t = t;\n this._lut.push(p);\n }\n return this._lut;\n }\n\n on(point, error) {\n error = error || 5;\n const lut = this.getLUT(),\n hits = [];\n for (let i = 0, c, t = 0; i < lut.length; i++) {\n c = lut[i];\n if (utils.dist(c, point) < error) {\n hits.push(c);\n t += i / lut.length;\n }\n }\n if (!hits.length) return false;\n return (t /= hits.length);\n }\n\n project(point) {\n // step 1: coarse check\n const LUT = this.getLUT(),\n l = LUT.length - 1,\n closest = utils.closest(LUT, point),\n mpos = closest.mpos,\n t1 = (mpos - 1) / l,\n t2 = (mpos + 1) / l,\n step = 0.1 / l;\n\n // step 2: fine check\n let mdist = closest.mdist,\n t = t1,\n ft = t,\n p;\n mdist += 1;\n for (let d; t < t2 + step; t += step) {\n p = this.compute(t);\n d = utils.dist(point, p);\n if (d < mdist) {\n mdist = d;\n ft = t;\n }\n }\n ft = ft < 0 ? 0 : ft > 1 ? 1 : ft;\n p = this.compute(ft);\n p.t = ft;\n p.d = mdist;\n return p;\n }\n\n get(t) {\n return this.compute(t);\n }\n\n point(idx) {\n return this.points[idx];\n }\n\n compute(t) {\n if (this.ratios) {\n return utils.computeWithRatios(t, this.points, this.ratios, this._3d);\n }\n return utils.compute(t, this.points, this._3d, this.ratios);\n }\n\n raise() {\n const p = this.points,\n np = [p[0]],\n k = p.length;\n for (let i = 1, pi, pim; i < k; i++) {\n pi = p[i];\n pim = p[i - 1];\n np[i] = {\n x: ((k - i) / k) * pi.x + (i / k) * pim.x,\n y: ((k - i) / k) * pi.y + (i / k) * pim.y,\n };\n }\n np[k] = p[k - 1];\n return new Bezier(np);\n }\n\n derivative(t) {\n return utils.compute(t, this.dpoints[0], this._3d);\n }\n\n dderivative(t) {\n return utils.compute(t, this.dpoints[1], this._3d);\n }\n\n align() {\n let p = this.points;\n return new Bezier(utils.align(p, { p1: p[0], p2: p[p.length - 1] }));\n }\n\n curvature(t) {\n return utils.curvature(t, this.dpoints[0], this.dpoints[1], this._3d);\n }\n\n inflections() {\n return utils.inflections(this.points);\n }\n\n normal(t) {\n return this._3d ? this.__normal3(t) : this.__normal2(t);\n }\n\n __normal2(t) {\n const d = this.derivative(t);\n const q = sqrt(d.x * d.x + d.y * d.y);\n return { t, x: -d.y / q, y: d.x / q };\n }\n\n __normal3(t) {\n // see http://stackoverflow.com/questions/25453159\n const r1 = this.derivative(t),\n r2 = this.derivative(t + 0.01),\n q1 = sqrt(r1.x * r1.x + r1.y * r1.y + r1.z * r1.z),\n q2 = sqrt(r2.x * r2.x + r2.y * r2.y + r2.z * r2.z);\n r1.x /= q1;\n r1.y /= q1;\n r1.z /= q1;\n r2.x /= q2;\n r2.y /= q2;\n r2.z /= q2;\n // cross product\n const c = {\n x: r2.y * r1.z - r2.z * r1.y,\n y: r2.z * r1.x - r2.x * r1.z,\n z: r2.x * r1.y - r2.y * r1.x,\n };\n const m = sqrt(c.x * c.x + c.y * c.y + c.z * c.z);\n c.x /= m;\n c.y /= m;\n c.z /= m;\n // rotation matrix\n const R = [\n c.x * c.x,\n c.x * c.y - c.z,\n c.x * c.z + c.y,\n c.x * c.y + c.z,\n c.y * c.y,\n c.y * c.z - c.x,\n c.x * c.z - c.y,\n c.y * c.z + c.x,\n c.z * c.z,\n ];\n // normal vector:\n const n = {\n t,\n x: R[0] * r1.x + R[1] * r1.y + R[2] * r1.z,\n y: R[3] * r1.x + R[4] * r1.y + R[5] * r1.z,\n z: R[6] * r1.x + R[7] * r1.y + R[8] * r1.z,\n };\n return n;\n }\n\n hull(t) {\n let p = this.points,\n _p = [],\n q = [],\n idx = 0;\n q[idx++] = p[0];\n q[idx++] = p[1];\n q[idx++] = p[2];\n if (this.order === 3) {\n q[idx++] = p[3];\n }\n // we lerp between all points at each iteration, until we have 1 point left.\n while (p.length > 1) {\n _p = [];\n for (let i = 0, pt, l = p.length - 1; i < l; i++) {\n pt = utils.lerp(t, p[i], p[i + 1]);\n q[idx++] = pt;\n _p.push(pt);\n }\n p = _p;\n }\n return q;\n }\n\n split(t1, t2) {\n // shortcuts\n if (t1 === 0 && !!t2) {\n return this.split(t2).left;\n }\n if (t2 === 1) {\n return this.split(t1).right;\n }\n\n // no shortcut: use \"de Casteljau\" iteration.\n const q = this.hull(t1);\n const result = {\n left:\n this.order === 2\n ? new Bezier([q[0], q[3], q[5]])\n : new Bezier([q[0], q[4], q[7], q[9]]),\n right:\n this.order === 2\n ? new Bezier([q[5], q[4], q[2]])\n : new Bezier([q[9], q[8], q[6], q[3]]),\n span: q,\n };\n\n // make sure we bind _t1/_t2 information!\n result.left._t1 = utils.map(0, 0, 1, this._t1, this._t2);\n result.left._t2 = utils.map(t1, 0, 1, this._t1, this._t2);\n result.right._t1 = utils.map(t1, 0, 1, this._t1, this._t2);\n result.right._t2 = utils.map(1, 0, 1, this._t1, this._t2);\n\n // if we have no t2, we're done\n if (!t2) {\n return result;\n }\n\n // if we have a t2, split again:\n t2 = utils.map(t2, t1, 1, 0, 1);\n return result.right.split(t2).left;\n }\n\n extrema() {\n const result = {};\n let roots = [];\n\n this.dims.forEach(\n function (dim) {\n let mfn = function (v) {\n return v[dim];\n };\n let p = this.dpoints[0].map(mfn);\n result[dim] = utils.droots(p);\n if (this.order === 3) {\n p = this.dpoints[1].map(mfn);\n result[dim] = result[dim].concat(utils.droots(p));\n }\n result[dim] = result[dim].filter(function (t) {\n return t >= 0 && t <= 1;\n });\n roots = roots.concat(result[dim].sort(utils.numberSort));\n }.bind(this)\n );\n\n result.values = roots.sort(utils.numberSort).filter(function (v, idx) {\n return roots.indexOf(v) === idx;\n });\n\n return result;\n }\n\n bbox() {\n const extrema = this.extrema(),\n result = {};\n this.dims.forEach(\n function (d) {\n result[d] = utils.getminmax(this, d, extrema[d]);\n }.bind(this)\n );\n return result;\n }\n\n overlaps(curve) {\n const lbbox = this.bbox(),\n tbbox = curve.bbox();\n return utils.bboxoverlap(lbbox, tbbox);\n }\n\n offset(t, d) {\n if (typeof d !== \"undefined\") {\n const c = this.get(t),\n n = this.normal(t);\n const ret = {\n c: c,\n n: n,\n x: c.x + n.x * d,\n y: c.y + n.y * d,\n };\n if (this._3d) {\n ret.z = c.z + n.z * d;\n }\n return ret;\n }\n if (this._linear) {\n const nv = this.normal(0),\n coords = this.points.map(function (p) {\n const ret = {\n x: p.x + t * nv.x,\n y: p.y + t * nv.y,\n };\n if (p.z && nv.z) {\n ret.z = p.z + t * nv.z;\n }\n return ret;\n });\n return [new Bezier(coords)];\n }\n return this.reduce().map(function (s) {\n if (s._linear) {\n return s.offset(t)[0];\n }\n return s.scale(t);\n });\n }\n\n simple() {\n if (this.order === 3) {\n const a1 = utils.angle(this.points[0], this.points[3], this.points[1]);\n const a2 = utils.angle(this.points[0], this.points[3], this.points[2]);\n if ((a1 > 0 && a2 < 0) || (a1 < 0 && a2 > 0)) return false;\n }\n const n1 = this.normal(0);\n const n2 = this.normal(1);\n let s = n1.x * n2.x + n1.y * n2.y;\n if (this._3d) {\n s += n1.z * n2.z;\n }\n return abs(acos(s)) < pi / 3;\n }\n\n reduce() {\n // TODO: examine these var types in more detail...\n let i,\n t1 = 0,\n t2 = 0,\n step = 0.01,\n segment,\n pass1 = [],\n pass2 = [];\n // first pass: split on extrema\n let extrema = this.extrema().values;\n if (extrema.indexOf(0) === -1) {\n extrema = [0].concat(extrema);\n }\n if (extrema.indexOf(1) === -1) {\n extrema.push(1);\n }\n\n for (t1 = extrema[0], i = 1; i < extrema.length; i++) {\n t2 = extrema[i];\n segment = this.split(t1, t2);\n segment._t1 = t1;\n segment._t2 = t2;\n pass1.push(segment);\n t1 = t2;\n }\n\n // second pass: further reduce these segments to simple segments\n pass1.forEach(function (p1) {\n t1 = 0;\n t2 = 0;\n while (t2 <= 1) {\n for (t2 = t1 + step; t2 <= 1 + step; t2 += step) {\n segment = p1.split(t1, t2);\n if (!segment.simple()) {\n t2 -= step;\n if (abs(t1 - t2) < step) {\n // we can never form a reduction\n return [];\n }\n segment = p1.split(t1, t2);\n segment._t1 = utils.map(t1, 0, 1, p1._t1, p1._t2);\n segment._t2 = utils.map(t2, 0, 1, p1._t1, p1._t2);\n pass2.push(segment);\n t1 = t2;\n break;\n }\n }\n }\n if (t1 < 1) {\n segment = p1.split(t1, 1);\n segment._t1 = utils.map(t1, 0, 1, p1._t1, p1._t2);\n segment._t2 = p1._t2;\n pass2.push(segment);\n }\n });\n return pass2;\n }\n\n translate(v, d1, d2) {\n d2 = typeof d2 === \"number\" ? d2 : d1;\n\n // TODO: make this take curves with control points outside\n // of the start-end interval into account\n\n const o = this.order;\n let d = this.points.map((_, i) => (1 - i / o) * d1 + (i / o) * d2);\n return new Bezier(\n this.points.map((p, i) => ({\n x: p.x + v.x * d[i],\n y: p.y + v.y * d[i],\n }))\n );\n }\n\n scale(d) {\n const order = this.order;\n let distanceFn = false;\n if (typeof d === \"function\") {\n distanceFn = d;\n }\n if (distanceFn && order === 2) {\n return this.raise().scale(distanceFn);\n }\n\n // TODO: add special handling for non-linear degenerate curves.\n\n const clockwise = this.clockwise;\n const points = this.points;\n\n if (this._linear) {\n return this.translate(\n this.normal(0),\n distanceFn ? distanceFn(0) : d,\n distanceFn ? distanceFn(1) : d\n );\n }\n\n const r1 = distanceFn ? distanceFn(0) : d;\n const r2 = distanceFn ? distanceFn(1) : d;\n const v = [this.offset(0, 10), this.offset(1, 10)];\n const np = [];\n const o = utils.lli4(v[0], v[0].c, v[1], v[1].c);\n\n if (!o) {\n throw new Error(\"cannot scale this curve. Try reducing it first.\");\n }\n\n // move all points by distance 'd' wrt the origin 'o',\n // and move end points by fixed distance along normal.\n [0, 1].forEach(function (t) {\n const p = (np[t * order] = utils.copy(points[t * order]));\n p.x += (t ? r2 : r1) * v[t].n.x;\n p.y += (t ? r2 : r1) * v[t].n.y;\n });\n\n if (!distanceFn) {\n // move control points to lie on the intersection of the offset\n // derivative vector, and the origin-through-control vector\n [0, 1].forEach((t) => {\n if (order === 2 && !!t) return;\n const p = np[t * order];\n const d = this.derivative(t);\n const p2 = { x: p.x + d.x, y: p.y + d.y };\n np[t + 1] = utils.lli4(p, p2, o, points[t + 1]);\n });\n return new Bezier(np);\n }\n\n // move control points by \"however much necessary to\n // ensure the correct tangent to endpoint\".\n [0, 1].forEach(function (t) {\n if (order === 2 && !!t) return;\n var p = points[t + 1];\n var ov = {\n x: p.x - o.x,\n y: p.y - o.y,\n };\n var rc = distanceFn ? distanceFn((t + 1) / order) : d;\n if (distanceFn && !clockwise) rc = -rc;\n var m = sqrt(ov.x * ov.x + ov.y * ov.y);\n ov.x /= m;\n ov.y /= m;\n np[t + 1] = {\n x: p.x + rc * ov.x,\n y: p.y + rc * ov.y,\n };\n });\n return new Bezier(np);\n }\n\n outline(d1, d2, d3, d4) {\n d2 = d2 === undefined ? d1 : d2;\n\n if (this._linear) {\n // TODO: find the actual extrema, because they might\n // be before the start, or past the end.\n\n const n = this.normal(0);\n const start = this.points[0];\n const end = this.points[this.points.length - 1];\n let s, mid, e;\n\n if (d3 === undefined) {\n d3 = d1;\n d4 = d2;\n }\n\n s = { x: start.x + n.x * d1, y: start.y + n.y * d1 };\n e = { x: end.x + n.x * d3, y: end.y + n.y * d3 };\n mid = { x: (s.x + e.x) / 2, y: (s.y + e.y) / 2 };\n const fline = [s, mid, e];\n\n s = { x: start.x - n.x * d2, y: start.y - n.y * d2 };\n e = { x: end.x - n.x * d4, y: end.y - n.y * d4 };\n mid = { x: (s.x + e.x) / 2, y: (s.y + e.y) / 2 };\n const bline = [e, mid, s];\n\n const ls = utils.makeline(bline[2], fline[0]);\n const le = utils.makeline(fline[2], bline[0]);\n const segments = [ls, new Bezier(fline), le, new Bezier(bline)];\n return new PolyBezier(segments);\n }\n\n const reduced = this.reduce(),\n len = reduced.length,\n fcurves = [];\n\n let bcurves = [],\n p,\n alen = 0,\n tlen = this.length();\n\n const graduated = typeof d3 !== \"undefined\" && typeof d4 !== \"undefined\";\n\n function linearDistanceFunction(s, e, tlen, alen, slen) {\n return function (v) {\n const f1 = alen / tlen,\n f2 = (alen + slen) / tlen,\n d = e - s;\n return utils.map(v, 0, 1, s + f1 * d, s + f2 * d);\n };\n }\n\n // form curve oulines\n reduced.forEach(function (segment) {\n const slen = segment.length();\n if (graduated) {\n fcurves.push(\n segment.scale(linearDistanceFunction(d1, d3, tlen, alen, slen))\n );\n bcurves.push(\n segment.scale(linearDistanceFunction(-d2, -d4, tlen, alen, slen))\n );\n } else {\n fcurves.push(segment.scale(d1));\n bcurves.push(segment.scale(-d2));\n }\n alen += slen;\n });\n\n // reverse the \"return\" outline\n bcurves = bcurves\n .map(function (s) {\n p = s.points;\n if (p[3]) {\n s.points = [p[3], p[2], p[1], p[0]];\n } else {\n s.points = [p[2], p[1], p[0]];\n }\n return s;\n })\n .reverse();\n\n // form the endcaps as lines\n const fs = fcurves[0].points[0],\n fe = fcurves[len - 1].points[fcurves[len - 1].points.length - 1],\n bs = bcurves[len - 1].points[bcurves[len - 1].points.length - 1],\n be = bcurves[0].points[0],\n ls = utils.makeline(bs, fs),\n le = utils.makeline(fe, be),\n segments = [ls].concat(fcurves).concat([le]).concat(bcurves);\n\n return new PolyBezier(segments);\n }\n\n outlineshapes(d1, d2, curveIntersectionThreshold) {\n d2 = d2 || d1;\n const outline = this.outline(d1, d2).curves;\n const shapes = [];\n for (let i = 1, len = outline.length; i < len / 2; i++) {\n const shape = utils.makeshape(\n outline[i],\n outline[len - i],\n curveIntersectionThreshold\n );\n shape.startcap.virtual = i > 1;\n shape.endcap.virtual = i < len / 2 - 1;\n shapes.push(shape);\n }\n return shapes;\n }\n\n intersects(curve, curveIntersectionThreshold) {\n if (!curve) return this.selfintersects(curveIntersectionThreshold);\n if (curve.p1 && curve.p2) {\n return this.lineIntersects(curve);\n }\n if (curve instanceof Bezier) {\n curve = curve.reduce();\n }\n return this.curveintersects(\n this.reduce(),\n curve,\n curveIntersectionThreshold\n );\n }\n\n lineIntersects(line) {\n const mx = min(line.p1.x, line.p2.x),\n my = min(line.p1.y, line.p2.y),\n MX = max(line.p1.x, line.p2.x),\n MY = max(line.p1.y, line.p2.y);\n return utils.roots(this.points, line).filter((t) => {\n var p = this.get(t);\n return utils.between(p.x, mx, MX) && utils.between(p.y, my, MY);\n });\n }\n\n selfintersects(curveIntersectionThreshold) {\n // \"simple\" curves cannot intersect with their direct\n // neighbour, so for each segment X we check whether\n // it intersects [0:x-2][x+2:last].\n\n const reduced = this.reduce(),\n len = reduced.length - 2,\n results = [];\n\n for (let i = 0, result, left, right; i < len; i++) {\n left = reduced.slice(i, i + 1);\n right = reduced.slice(i + 2);\n result = this.curveintersects(left, right, curveIntersectionThreshold);\n results.push(...result);\n }\n return results;\n }\n\n curveintersects(c1, c2, curveIntersectionThreshold) {\n const pairs = [];\n // step 1: pair off any overlapping segments\n c1.forEach(function (l) {\n c2.forEach(function (r) {\n if (l.overlaps(r)) {\n pairs.push({ left: l, right: r });\n }\n });\n });\n // step 2: for each pairing, run through the convergence algorithm.\n let intersections = [];\n pairs.forEach(function (pair) {\n const result = utils.pairiteration(\n pair.left,\n pair.right,\n curveIntersectionThreshold\n );\n if (result.length > 0) {\n intersections = intersections.concat(result);\n }\n });\n return intersections;\n }\n\n arcs(errorThreshold) {\n errorThreshold = errorThreshold || 0.5;\n return this._iterate(errorThreshold, []);\n }\n\n _error(pc, np1, s, e) {\n const q = (e - s) / 4,\n c1 = this.get(s + q),\n c2 = this.get(e - q),\n ref = utils.dist(pc, np1),\n d1 = utils.dist(pc, c1),\n d2 = utils.dist(pc, c2);\n return abs(d1 - ref) + abs(d2 - ref);\n }\n\n _iterate(errorThreshold, circles) {\n let t_s = 0,\n t_e = 1,\n safety;\n // we do a binary search to find the \"good `t` closest to no-longer-good\"\n do {\n safety = 0;\n\n // step 1: start with the maximum possible arc\n t_e = 1;\n\n // points:\n let np1 = this.get(t_s),\n np2,\n np3,\n arc,\n prev_arc;\n\n // booleans:\n let curr_good = false,\n prev_good = false,\n done;\n\n // numbers:\n let t_m = t_e,\n prev_e = 1,\n step = 0;\n\n // step 2: find the best possible arc\n do {\n prev_good = curr_good;\n prev_arc = arc;\n t_m = (t_s + t_e) / 2;\n step++;\n\n np2 = this.get(t_m);\n np3 = this.get(t_e);\n\n arc = utils.getccenter(np1, np2, np3);\n\n //also save the t values\n arc.interval = {\n start: t_s,\n end: t_e,\n };\n\n let error = this._error(arc, np1, t_s, t_e);\n curr_good = error <= errorThreshold;\n\n done = prev_good && !curr_good;\n if (!done) prev_e = t_e;\n\n // this arc is fine: we can move 'e' up to see if we can find a wider arc\n if (curr_good) {\n // if e is already at max, then we're done for this arc.\n if (t_e >= 1) {\n // make sure we cap at t=1\n arc.interval.end = prev_e = 1;\n prev_arc = arc;\n // if we capped the arc segment to t=1 we also need to make sure that\n // the arc's end angle is correct with respect to the bezier end point.\n if (t_e > 1) {\n let d = {\n x: arc.x + arc.r * cos(arc.e),\n y: arc.y + arc.r * sin(arc.e),\n };\n arc.e += utils.angle({ x: arc.x, y: arc.y }, d, this.get(1));\n }\n break;\n }\n // if not, move it up by half the iteration distance\n t_e = t_e + (t_e - t_s) / 2;\n } else {\n // this is a bad arc: we need to move 'e' down to find a good arc\n t_e = t_m;\n }\n } while (!done && safety++ < 100);\n\n if (safety >= 100) {\n break;\n }\n\n // console.log(\"L835: [F] arc found\", t_s, prev_e, prev_arc.x, prev_arc.y, prev_arc.s, prev_arc.e);\n\n prev_arc = prev_arc ? prev_arc : arc;\n circles.push(prev_arc);\n t_s = prev_e;\n } while (t_e < 1);\n return circles;\n }\n}\n\nexport { Bezier };\n","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nfunction _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return _arrayLikeToArray(r);\n}\nfunction _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = _objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var s = Object.getOwnPropertySymbols(e);\n for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nfunction _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nfunction _slicedToArray(r, e) {\n return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();\n}\nfunction _toConsumableArray(r) {\n return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r );\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (String )(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n }\n}\n\nvar index = (function () {\n var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var keyAccessors = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var multiItem = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var flattenKeys = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var keys = (keyAccessors instanceof Array ? keyAccessors.length ? keyAccessors : [undefined] : [keyAccessors]).map(function (key) {\n return {\n keyAccessor: key,\n isProp: !(key instanceof Function)\n };\n });\n var indexedResult = list.reduce(function (res, item) {\n var iterObj = res;\n var itemVal = item;\n keys.forEach(function (_ref, idx) {\n var keyAccessor = _ref.keyAccessor,\n isProp = _ref.isProp;\n var key;\n if (isProp) {\n var _itemVal = itemVal,\n propVal = _itemVal[keyAccessor],\n rest = _objectWithoutProperties(_itemVal, [keyAccessor].map(_toPropertyKey));\n key = propVal;\n itemVal = rest;\n } else {\n key = keyAccessor(itemVal, idx);\n }\n if (idx + 1 < keys.length) {\n if (!iterObj.hasOwnProperty(key)) {\n iterObj[key] = {};\n }\n iterObj = iterObj[key];\n } else {\n // Leaf key\n if (multiItem) {\n if (!iterObj.hasOwnProperty(key)) {\n iterObj[key] = [];\n }\n iterObj[key].push(itemVal);\n } else {\n iterObj[key] = itemVal;\n }\n }\n });\n return res;\n }, {});\n if (multiItem instanceof Function) {\n // Reduce leaf multiple values\n (function reduce(node) {\n var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n if (level === keys.length) {\n Object.keys(node).forEach(function (k) {\n return node[k] = multiItem(node[k]);\n });\n } else {\n Object.values(node).forEach(function (child) {\n return reduce(child, level + 1);\n });\n }\n })(indexedResult); // IIFE\n }\n var result = indexedResult;\n if (flattenKeys) {\n // flatten into array\n result = [];\n (function flatten(node) {\n var accKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n if (accKeys.length === keys.length) {\n result.push({\n keys: accKeys,\n vals: node\n });\n } else {\n Object.entries(node).forEach(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n key = _ref3[0],\n val = _ref3[1];\n return flatten(val, [].concat(_toConsumableArray(accKeys), [key]));\n });\n }\n })(indexedResult); //IIFE\n\n if (keyAccessors instanceof Array && keyAccessors.length === 0 && result.length === 1) {\n // clear keys if there's no key accessors (single result)\n result[0].keys = [];\n }\n }\n return result;\n});\n\nexport { index as default };\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import { select } from 'd3-selection';\nimport { zoomTransform, zoom } from 'd3-zoom';\nimport { drag } from 'd3-drag';\nimport { sum, min, max } from 'd3-array';\nimport { throttle } from 'lodash-es';\nimport { Group, Tween, Easing } from '@tweenjs/tween.js';\nimport Kapsule from 'kapsule';\nimport accessorFn from 'accessor-fn';\nimport ColorTracker from 'canvas-color-tracker';\nimport Tooltip from 'float-tooltip';\nimport { forceRadial, forceSimulation, forceLink, forceManyBody, forceCenter } from 'd3-force-3d';\nimport { Bezier } from 'bezier-js';\nimport indexBy from 'index-array-by';\nimport { scaleOrdinal } from 'd3-scale';\nimport { schemePaired } from 'd3-scale-chromatic';\n\nfunction styleInject(css, ref) {\n if (ref === void 0) ref = {};\n var insertAt = ref.insertAt;\n if (typeof document === 'undefined') {\n return;\n }\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css_248z = \".force-graph-container canvas {\\n display: block;\\n user-select: none;\\n outline: none;\\n -webkit-tap-highlight-color: transparent;\\n}\\n\\n.force-graph-container .clickable {\\n cursor: pointer;\\n}\\n\\n.force-graph-container .grabbable {\\n cursor: move;\\n cursor: grab;\\n cursor: -moz-grab;\\n cursor: -webkit-grab;\\n}\\n\\n.force-graph-container .grabbable:active {\\n cursor: grabbing;\\n cursor: -moz-grabbing;\\n cursor: -webkit-grabbing;\\n}\\n\";\nstyleInject(css_248z);\n\nfunction _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nfunction _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return _arrayLikeToArray(r);\n}\nfunction _construct(t, e, r) {\n if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);\n var o = [null];\n o.push.apply(o, e);\n var p = new (t.bind.apply(t, o))();\n return p;\n}\nfunction _defineProperty(e, r, t) {\n return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: true,\n configurable: true,\n writable: true\n }) : e[r] = t, e;\n}\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function () {\n return !!t;\n })();\n}\nfunction _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = true,\n o = false;\n try {\n if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = true, n = r;\n } finally {\n try {\n if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), true).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _slicedToArray(r, e) {\n return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();\n}\nfunction _toConsumableArray(r) {\n return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r);\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n }\n}\n\nvar autoColorScale = scaleOrdinal(schemePaired);\n\n// Autoset attribute colorField by colorByAccessor property\n// If an object has already a color, don't set it\n// Objects can be nodes or links\nfunction autoColorObjects(objects, colorByAccessor, colorField) {\n if (!colorByAccessor || typeof colorField !== 'string') return;\n objects.filter(function (obj) {\n return !obj[colorField];\n }).forEach(function (obj) {\n obj[colorField] = autoColorScale(colorByAccessor(obj));\n });\n}\n\nfunction getDagDepths (_ref, idAccessor) {\n var nodes = _ref.nodes,\n links = _ref.links;\n var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref2$nodeFilter = _ref2.nodeFilter,\n nodeFilter = _ref2$nodeFilter === void 0 ? function () {\n return true;\n } : _ref2$nodeFilter,\n _ref2$onLoopError = _ref2.onLoopError,\n onLoopError = _ref2$onLoopError === void 0 ? function (loopIds) {\n throw \"Invalid DAG structure! Found cycle in node path: \".concat(loopIds.join(' -> '), \".\");\n } : _ref2$onLoopError;\n // linked graph\n var graph = {};\n nodes.forEach(function (node) {\n return graph[idAccessor(node)] = {\n data: node,\n out: [],\n depth: -1,\n skip: !nodeFilter(node)\n };\n });\n links.forEach(function (_ref3) {\n var source = _ref3.source,\n target = _ref3.target;\n var sourceId = getNodeId(source);\n var targetId = getNodeId(target);\n if (!graph.hasOwnProperty(sourceId)) throw \"Missing source node with id: \".concat(sourceId);\n if (!graph.hasOwnProperty(targetId)) throw \"Missing target node with id: \".concat(targetId);\n var sourceNode = graph[sourceId];\n var targetNode = graph[targetId];\n sourceNode.out.push(targetNode);\n function getNodeId(node) {\n return _typeof(node) === 'object' ? idAccessor(node) : node;\n }\n });\n var foundLoops = [];\n traverse(Object.values(graph));\n var nodeDepths = Object.assign.apply(Object, [{}].concat(_toConsumableArray(Object.entries(graph).filter(function (_ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n node = _ref5[1];\n return !node.skip;\n }).map(function (_ref6) {\n var _ref7 = _slicedToArray(_ref6, 2),\n id = _ref7[0],\n node = _ref7[1];\n return _defineProperty({}, id, node.depth);\n }))));\n return nodeDepths;\n function traverse(nodes) {\n var nodeStack = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var currentDepth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var _loop = function _loop() {\n var node = nodes[i];\n if (nodeStack.indexOf(node) !== -1) {\n var loop = [].concat(_toConsumableArray(nodeStack.slice(nodeStack.indexOf(node))), [node]).map(function (d) {\n return idAccessor(d.data);\n });\n if (!foundLoops.some(function (foundLoop) {\n return foundLoop.length === loop.length && foundLoop.every(function (id, idx) {\n return id === loop[idx];\n });\n })) {\n foundLoops.push(loop);\n onLoopError(loop);\n }\n return 1; // continue\n }\n if (currentDepth > node.depth) {\n // Don't unnecessarily revisit chunks of the graph\n node.depth = currentDepth;\n traverse(node.out, [].concat(_toConsumableArray(nodeStack), [node]), currentDepth + (node.skip ? 0 : 1));\n }\n };\n for (var i = 0, l = nodes.length; i < l; i++) {\n if (_loop()) continue;\n }\n }\n}\n\n//\n\nvar DAG_LEVEL_NODE_RATIO = 2;\n\n// whenever styling props are changed that require a canvas redraw\nvar notifyRedraw = function notifyRedraw(_, state) {\n return state.onNeedsRedraw && state.onNeedsRedraw();\n};\nvar updDataPhotons = function updDataPhotons(_, state) {\n if (!state.isShadow) {\n // Add photon particles\n var linkParticlesAccessor = accessorFn(state.linkDirectionalParticles);\n state.graphData.links.forEach(function (link) {\n var numPhotons = Math.round(Math.abs(linkParticlesAccessor(link)));\n if (numPhotons) {\n link.__photons = _toConsumableArray(Array(numPhotons)).map(function () {\n return {};\n });\n } else {\n delete link.__photons;\n }\n });\n }\n};\nvar CanvasForceGraph = Kapsule({\n props: {\n graphData: {\n \"default\": {\n nodes: [],\n links: []\n },\n onChange: function onChange(_, state) {\n state.engineRunning = false; // Pause simulation\n updDataPhotons(_, state);\n }\n },\n dagMode: {\n onChange: function onChange(dagMode, state) {\n // td, bu, lr, rl, radialin, radialout\n !dagMode && (state.graphData.nodes || []).forEach(function (n) {\n return n.fx = n.fy = undefined;\n }); // unfix nodes when disabling dag mode\n }\n },\n dagLevelDistance: {},\n dagNodeFilter: {\n \"default\": function _default(node) {\n return true;\n }\n },\n onDagError: {\n triggerUpdate: false\n },\n nodeRelSize: {\n \"default\": 4,\n triggerUpdate: false,\n onChange: notifyRedraw\n },\n // area per val unit\n nodeId: {\n \"default\": 'id'\n },\n nodeVal: {\n \"default\": 'val',\n triggerUpdate: false,\n onChange: notifyRedraw\n },\n nodeColor: {\n \"default\": 'color',\n triggerUpdate: false,\n onChange: notifyRedraw\n },\n nodeAutoColorBy: {},\n nodeCanvasObject: {\n triggerUpdate: false,\n onChange: notifyRedraw\n },\n nodeCanvasObjectMode: {\n \"default\": function _default() {\n return 'replace';\n },\n triggerUpdate: false,\n onChange: notifyRedraw\n },\n nodeVisibility: {\n \"default\": true,\n triggerUpdate: false,\n onChange: notifyRedraw\n },\n linkSource: {\n \"default\": 'source'\n },\n linkTarget: {\n \"default\": 'target'\n },\n linkVisibility: {\n \"default\": true,\n triggerUpdate: false,\n onChange: notifyRedraw\n },\n linkColor: {\n \"default\": 'color',\n triggerUpdate: false,\n onChange: notifyRedraw\n },\n linkAutoColorBy: {},\n linkLineDash: {\n triggerUpdate: false,\n onChange: notifyRedraw\n },\n linkWidth: {\n \"default\": 1,\n triggerUpdate: false,\n onChange: notifyRedraw\n },\n linkCurvature: {\n \"default\": 0,\n triggerUpdate: false,\n onChange: notifyRedraw\n },\n linkCanvasObject: {\n triggerUpdate: false,\n onChange: notifyRedraw\n },\n linkCanvasObjectMode: {\n \"default\": function _default() {\n return 'replace';\n },\n triggerUpdate: false,\n onChange: notifyRedraw\n },\n linkDirectionalArrowLength: {\n \"default\": 0,\n triggerUpdate: false,\n onChange: notifyRedraw\n },\n linkDirectionalArrowColor: {\n triggerUpdate: false,\n onChange: notifyRedraw\n },\n linkDirectionalArrowRelPos: {\n \"default\": 0.5,\n triggerUpdate: false,\n onChange: notifyRedraw\n },\n // value between 0<>1 indicating the relative pos along the (exposed) line\n linkDirectionalParticles: {\n \"default\": 0,\n triggerUpdate: false,\n onChange: updDataPhotons\n },\n // animate photons travelling in the link direction\n linkDirectionalParticleSpeed: {\n \"default\": 0.01,\n triggerUpdate: false\n },\n // in link length ratio per frame\n linkDirectionalParticleOffset: {\n \"default\": 0,\n triggerUpdate: false\n },\n // starting position offset along the link's length, like a pre-delay. Values between [0, 1]\n linkDirectionalParticleWidth: {\n \"default\": 4,\n triggerUpdate: false\n },\n linkDirectionalParticleColor: {\n triggerUpdate: false\n },\n linkDirectionalParticleCanvasObject: {\n triggerUpdate: false\n },\n globalScale: {\n \"default\": 1,\n triggerUpdate: false\n },\n d3AlphaMin: {\n \"default\": 0,\n triggerUpdate: false\n },\n d3AlphaDecay: {\n \"default\": 0.0228,\n triggerUpdate: false,\n onChange: function onChange(alphaDecay, state) {\n state.forceLayout.alphaDecay(alphaDecay);\n }\n },\n d3AlphaTarget: {\n \"default\": 0,\n triggerUpdate: false,\n onChange: function onChange(alphaTarget, state) {\n state.forceLayout.alphaTarget(alphaTarget);\n }\n },\n d3VelocityDecay: {\n \"default\": 0.4,\n triggerUpdate: false,\n onChange: function onChange(velocityDecay, state) {\n state.forceLayout.velocityDecay(velocityDecay);\n }\n },\n warmupTicks: {\n \"default\": 0,\n triggerUpdate: false\n },\n // how many times to tick the force engine at init before starting to render\n cooldownTicks: {\n \"default\": Infinity,\n triggerUpdate: false\n },\n cooldownTime: {\n \"default\": 15000,\n triggerUpdate: false\n },\n // ms\n onUpdate: {\n \"default\": function _default() {},\n triggerUpdate: false\n },\n onFinishUpdate: {\n \"default\": function _default() {},\n triggerUpdate: false\n },\n onEngineTick: {\n \"default\": function _default() {},\n triggerUpdate: false\n },\n onEngineStop: {\n \"default\": function _default() {},\n triggerUpdate: false\n },\n onNeedsRedraw: {\n triggerUpdate: false\n },\n isShadow: {\n \"default\": false,\n triggerUpdate: false\n }\n },\n methods: {\n // Expose d3 forces for external manipulation\n d3Force: function d3Force(state, forceName, forceFn) {\n if (forceFn === undefined) {\n return state.forceLayout.force(forceName); // Force getter\n }\n state.forceLayout.force(forceName, forceFn); // Force setter\n return this;\n },\n d3ReheatSimulation: function d3ReheatSimulation(state) {\n state.forceLayout.alpha(1);\n this.resetCountdown();\n return this;\n },\n // reset cooldown state\n resetCountdown: function resetCountdown(state) {\n state.cntTicks = 0;\n state.startTickTime = new Date();\n state.engineRunning = true;\n return this;\n },\n isEngineRunning: function isEngineRunning(state) {\n return !!state.engineRunning;\n },\n tickFrame: function tickFrame(state) {\n !state.isShadow && layoutTick();\n paintLinks();\n !state.isShadow && paintArrows();\n !state.isShadow && paintPhotons();\n paintNodes();\n return this;\n\n //\n\n function layoutTick() {\n if (state.engineRunning) {\n if (++state.cntTicks > state.cooldownTicks || new Date() - state.startTickTime > state.cooldownTime || state.d3AlphaMin > 0 && state.forceLayout.alpha() < state.d3AlphaMin) {\n state.engineRunning = false; // Stop ticking graph\n state.onEngineStop();\n } else {\n state.forceLayout.tick(); // Tick it\n state.onEngineTick();\n }\n }\n }\n function paintNodes() {\n var getVisibility = accessorFn(state.nodeVisibility);\n var getVal = accessorFn(state.nodeVal);\n var getColor = accessorFn(state.nodeColor);\n var getNodeCanvasObjectMode = accessorFn(state.nodeCanvasObjectMode);\n var ctx = state.ctx;\n\n // Draw wider nodes by 1px on shadow canvas for more precise hovering (due to boundary anti-aliasing)\n var padAmount = state.isShadow / state.globalScale;\n var visibleNodes = state.graphData.nodes.filter(getVisibility);\n ctx.save();\n visibleNodes.forEach(function (node) {\n var nodeCanvasObjectMode = getNodeCanvasObjectMode(node);\n if (state.nodeCanvasObject && (nodeCanvasObjectMode === 'before' || nodeCanvasObjectMode === 'replace')) {\n // Custom node before/replace paint\n state.nodeCanvasObject(node, ctx, state.globalScale);\n if (nodeCanvasObjectMode === 'replace') {\n ctx.restore();\n return;\n }\n }\n\n // Draw wider nodes by 1px on shadow canvas for more precise hovering (due to boundary anti-aliasing)\n var r = Math.sqrt(Math.max(0, getVal(node) || 1)) * state.nodeRelSize + padAmount;\n ctx.beginPath();\n ctx.arc(node.x, node.y, r, 0, 2 * Math.PI, false);\n ctx.fillStyle = getColor(node) || 'rgba(31, 120, 180, 0.92)';\n ctx.fill();\n if (state.nodeCanvasObject && nodeCanvasObjectMode === 'after') {\n // Custom node after paint\n state.nodeCanvasObject(node, state.ctx, state.globalScale);\n }\n });\n ctx.restore();\n }\n function paintLinks() {\n var getVisibility = accessorFn(state.linkVisibility);\n var getColor = accessorFn(state.linkColor);\n var getWidth = accessorFn(state.linkWidth);\n var getLineDash = accessorFn(state.linkLineDash);\n var getCurvature = accessorFn(state.linkCurvature);\n var getLinkCanvasObjectMode = accessorFn(state.linkCanvasObjectMode);\n var ctx = state.ctx;\n\n // Draw wider lines by 2px on shadow canvas for more precise hovering (due to boundary anti-aliasing)\n var padAmount = state.isShadow * 2;\n var visibleLinks = state.graphData.links.filter(getVisibility);\n visibleLinks.forEach(calcLinkControlPoints); // calculate curvature control points for all visible links\n\n var beforeCustomLinks = [],\n afterCustomLinks = [],\n defaultPaintLinks = visibleLinks;\n if (state.linkCanvasObject) {\n var replaceCustomLinks = [],\n otherCustomLinks = [];\n visibleLinks.forEach(function (d) {\n return ({\n before: beforeCustomLinks,\n after: afterCustomLinks,\n replace: replaceCustomLinks\n }[getLinkCanvasObjectMode(d)] || otherCustomLinks).push(d);\n });\n defaultPaintLinks = [].concat(_toConsumableArray(beforeCustomLinks), afterCustomLinks, otherCustomLinks);\n beforeCustomLinks = beforeCustomLinks.concat(replaceCustomLinks);\n }\n\n // Custom link before paints\n ctx.save();\n beforeCustomLinks.forEach(function (link) {\n return state.linkCanvasObject(link, ctx, state.globalScale);\n });\n ctx.restore();\n\n // Bundle strokes per unique color/width/dash for performance optimization\n var linksPerColor = indexBy(defaultPaintLinks, [getColor, getWidth, getLineDash]);\n ctx.save();\n Object.entries(linksPerColor).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n color = _ref2[0],\n linksPerWidth = _ref2[1];\n var lineColor = !color || color === 'undefined' ? 'rgba(0,0,0,0.15)' : color;\n Object.entries(linksPerWidth).forEach(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n width = _ref4[0],\n linesPerLineDash = _ref4[1];\n var lineWidth = (width || 1) / state.globalScale + padAmount;\n Object.entries(linesPerLineDash).forEach(function (_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2);\n _ref6[0];\n var links = _ref6[1];\n var lineDashSegments = getLineDash(links[0]);\n ctx.beginPath();\n links.forEach(function (link) {\n var start = link.source;\n var end = link.target;\n if (!start || !end || !start.hasOwnProperty('x') || !end.hasOwnProperty('x')) return; // skip invalid link\n\n ctx.moveTo(start.x, start.y);\n var controlPoints = link.__controlPoints;\n if (!controlPoints) {\n // Straight line\n ctx.lineTo(end.x, end.y);\n } else {\n // Use quadratic curves for regular lines and bezier for loops\n ctx[controlPoints.length === 2 ? 'quadraticCurveTo' : 'bezierCurveTo'].apply(ctx, _toConsumableArray(controlPoints).concat([end.x, end.y]));\n }\n });\n ctx.strokeStyle = lineColor;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(lineDashSegments || []);\n ctx.stroke();\n });\n });\n });\n ctx.restore();\n\n // Custom link after paints\n ctx.save();\n afterCustomLinks.forEach(function (link) {\n return state.linkCanvasObject(link, ctx, state.globalScale);\n });\n ctx.restore();\n\n //\n\n function calcLinkControlPoints(link) {\n var curvature = getCurvature(link);\n if (!curvature) {\n // straight line\n link.__controlPoints = null;\n return;\n }\n var start = link.source;\n var end = link.target;\n if (!start || !end || !start.hasOwnProperty('x') || !end.hasOwnProperty('x')) return; // skip invalid link\n\n var l = Math.sqrt(Math.pow(end.x - start.x, 2) + Math.pow(end.y - start.y, 2)); // line length\n\n if (l > 0) {\n var a = Math.atan2(end.y - start.y, end.x - start.x); // line angle\n var d = l * curvature; // control point distance\n\n var cp = {\n // control point\n x: (start.x + end.x) / 2 + d * Math.cos(a - Math.PI / 2),\n y: (start.y + end.y) / 2 + d * Math.sin(a - Math.PI / 2)\n };\n link.__controlPoints = [cp.x, cp.y];\n } else {\n // Same point, draw a loop\n var _d = curvature * 70;\n link.__controlPoints = [end.x, end.y - _d, end.x + _d, end.y];\n }\n }\n }\n function paintArrows() {\n var ARROW_WH_RATIO = 1.6;\n var ARROW_VLEN_RATIO = 0.2;\n var getLength = accessorFn(state.linkDirectionalArrowLength);\n var getRelPos = accessorFn(state.linkDirectionalArrowRelPos);\n var getVisibility = accessorFn(state.linkVisibility);\n var getColor = accessorFn(state.linkDirectionalArrowColor || state.linkColor);\n var getNodeVal = accessorFn(state.nodeVal);\n var ctx = state.ctx;\n ctx.save();\n state.graphData.links.filter(getVisibility).forEach(function (link) {\n var arrowLength = getLength(link);\n if (!arrowLength || arrowLength < 0) return;\n var start = link.source;\n var end = link.target;\n if (!start || !end || !start.hasOwnProperty('x') || !end.hasOwnProperty('x')) return; // skip invalid link\n\n var startR = Math.sqrt(Math.max(0, getNodeVal(start) || 1)) * state.nodeRelSize;\n var endR = Math.sqrt(Math.max(0, getNodeVal(end) || 1)) * state.nodeRelSize;\n var arrowRelPos = Math.min(1, Math.max(0, getRelPos(link)));\n var arrowColor = getColor(link) || 'rgba(0,0,0,0.28)';\n var arrowHalfWidth = arrowLength / ARROW_WH_RATIO / 2;\n\n // Construct bezier for curved lines\n var bzLine = link.__controlPoints && _construct(Bezier, [start.x, start.y].concat(_toConsumableArray(link.__controlPoints), [end.x, end.y]));\n var getCoordsAlongLine = bzLine ? function (t) {\n return bzLine.get(t);\n } // get position along bezier line\n : function (t) {\n return {\n // straight line: interpolate linearly\n x: start.x + (end.x - start.x) * t || 0,\n y: start.y + (end.y - start.y) * t || 0\n };\n };\n var lineLen = bzLine ? bzLine.length() : Math.sqrt(Math.pow(end.x - start.x, 2) + Math.pow(end.y - start.y, 2));\n var posAlongLine = startR + arrowLength + (lineLen - startR - endR - arrowLength) * arrowRelPos;\n var arrowHead = getCoordsAlongLine(posAlongLine / lineLen);\n var arrowTail = getCoordsAlongLine((posAlongLine - arrowLength) / lineLen);\n var arrowTailVertex = getCoordsAlongLine((posAlongLine - arrowLength * (1 - ARROW_VLEN_RATIO)) / lineLen);\n var arrowTailAngle = Math.atan2(arrowHead.y - arrowTail.y, arrowHead.x - arrowTail.x) - Math.PI / 2;\n ctx.beginPath();\n ctx.moveTo(arrowHead.x, arrowHead.y);\n ctx.lineTo(arrowTail.x + arrowHalfWidth * Math.cos(arrowTailAngle), arrowTail.y + arrowHalfWidth * Math.sin(arrowTailAngle));\n ctx.lineTo(arrowTailVertex.x, arrowTailVertex.y);\n ctx.lineTo(arrowTail.x - arrowHalfWidth * Math.cos(arrowTailAngle), arrowTail.y - arrowHalfWidth * Math.sin(arrowTailAngle));\n ctx.fillStyle = arrowColor;\n ctx.fill();\n });\n ctx.restore();\n }\n function paintPhotons() {\n var getNumPhotons = accessorFn(state.linkDirectionalParticles);\n var getSpeed = accessorFn(state.linkDirectionalParticleSpeed);\n var getOffset = accessorFn(state.linkDirectionalParticleOffset);\n var getDiameter = accessorFn(state.linkDirectionalParticleWidth);\n var getVisibility = accessorFn(state.linkVisibility);\n var getColor = accessorFn(state.linkDirectionalParticleColor || state.linkColor);\n var ctx = state.ctx;\n ctx.save();\n state.graphData.links.filter(getVisibility).forEach(function (link) {\n var numCyclePhotons = getNumPhotons(link);\n if (!link.hasOwnProperty('__photons') || !link.__photons.length) return;\n var start = link.source;\n var end = link.target;\n if (!start || !end || !start.hasOwnProperty('x') || !end.hasOwnProperty('x')) return; // skip invalid link\n\n var particleSpeed = getSpeed(link);\n var particleOffset = Math.abs(getOffset(link));\n var photons = link.__photons || [];\n var photonR = Math.max(0, getDiameter(link) / 2) / Math.sqrt(state.globalScale);\n var photonColor = getColor(link) || 'rgba(0,0,0,0.28)';\n ctx.fillStyle = photonColor;\n\n // Construct bezier for curved lines\n var bzLine = link.__controlPoints ? _construct(Bezier, [start.x, start.y].concat(_toConsumableArray(link.__controlPoints), [end.x, end.y])) : null;\n var cyclePhotonIdx = 0;\n var needsCleanup = false; // whether some photons need to be removed from list\n photons.forEach(function (photon) {\n var singleHop = !!photon.__singleHop;\n if (!photon.hasOwnProperty('__progressRatio')) {\n photon.__progressRatio = singleHop ? particleSpeed < 0 ? 1 : 0 : (cyclePhotonIdx + particleOffset) / numCyclePhotons;\n }\n !singleHop && cyclePhotonIdx++; // increase regular photon index\n\n photon.__progressRatio += particleSpeed;\n if (photon.__progressRatio >= 1 || photon.__progressRatio < 0) {\n if (!singleHop) {\n photon.__progressRatio = photon.__progressRatio % 1;\n photon.__progressRatio < 0 && photon.__progressRatio++;\n } else {\n needsCleanup = true;\n return;\n }\n }\n var photonPosRatio = photon.__progressRatio;\n var coords = bzLine ? bzLine.get(photonPosRatio) // get position along bezier line\n : {\n // straight line: interpolate linearly\n x: start.x + (end.x - start.x) * photonPosRatio || 0,\n y: start.y + (end.y - start.y) * photonPosRatio || 0\n };\n if (state.linkDirectionalParticleCanvasObject) {\n state.linkDirectionalParticleCanvasObject(coords.x, coords.y, link, ctx, state.globalScale);\n } else {\n ctx.beginPath();\n ctx.arc(coords.x, coords.y, photonR, 0, 2 * Math.PI, false);\n ctx.fill();\n }\n });\n if (needsCleanup) {\n // remove expired single hop photons\n link.__photons = link.__photons.filter(function (photon) {\n return !photon.__singleHop || photon.__progressRatio <= 1 && photon.__progressRatio >= 0;\n });\n }\n });\n ctx.restore();\n }\n },\n emitParticle: function emitParticle(state, link) {\n if (link) {\n !link.__photons && (link.__photons = []);\n link.__photons.push({\n __singleHop: true\n }); // add a single hop particle\n }\n return this;\n }\n },\n stateInit: function stateInit() {\n return {\n forceLayout: forceSimulation().force('link', forceLink()).force('charge', forceManyBody()).force('center', forceCenter()).force('dagRadial', null).stop(),\n engineRunning: false\n };\n },\n init: function init(canvasCtx, state) {\n // Main canvas object to manipulate\n state.ctx = canvasCtx;\n },\n update: function update(state, changedProps) {\n state.engineRunning = false; // Pause simulation\n state.onUpdate();\n if (state.nodeAutoColorBy !== null) {\n // Auto add color to uncolored nodes\n autoColorObjects(state.graphData.nodes, accessorFn(state.nodeAutoColorBy), state.nodeColor);\n }\n if (state.linkAutoColorBy !== null) {\n // Auto add color to uncolored links\n autoColorObjects(state.graphData.links, accessorFn(state.linkAutoColorBy), state.linkColor);\n }\n\n // parse links\n state.graphData.links.forEach(function (link) {\n link.source = link[state.linkSource];\n link.target = link[state.linkTarget];\n });\n\n // Feed data to force-directed layout\n state.forceLayout.stop().alpha(1) // re-heat the simulation\n .nodes(state.graphData.nodes);\n\n // add links (if link force is still active)\n var linkForce = state.forceLayout.force('link');\n if (linkForce) {\n linkForce.id(function (d) {\n return d[state.nodeId];\n }).links(state.graphData.links);\n }\n\n // setup dag force constraints\n var nodeDepths = state.dagMode && getDagDepths(state.graphData, function (node) {\n return node[state.nodeId];\n }, {\n nodeFilter: state.dagNodeFilter,\n onLoopError: state.onDagError || undefined\n });\n var maxDepth = Math.max.apply(Math, _toConsumableArray(Object.values(nodeDepths || [])));\n var dagLevelDistance = state.dagLevelDistance || state.graphData.nodes.length / (maxDepth || 1) * DAG_LEVEL_NODE_RATIO * (['radialin', 'radialout'].indexOf(state.dagMode) !== -1 ? 0.7 : 1);\n\n // Reset relevant fx/fy when swapping dag modes\n if (['lr', 'rl', 'td', 'bu'].includes(changedProps.dagMode)) {\n var resetProp = ['lr', 'rl'].includes(changedProps.dagMode) ? 'fx' : 'fy';\n state.graphData.nodes.filter(state.dagNodeFilter).forEach(function (node) {\n return delete node[resetProp];\n });\n }\n\n // Fix nodes to x,y for dag mode\n if (['lr', 'rl', 'td', 'bu'].includes(state.dagMode)) {\n var invert = ['rl', 'bu'].includes(state.dagMode);\n var fixFn = function fixFn(node) {\n return (nodeDepths[node[state.nodeId]] - maxDepth / 2) * dagLevelDistance * (invert ? -1 : 1);\n };\n var _resetProp = ['lr', 'rl'].includes(state.dagMode) ? 'fx' : 'fy';\n state.graphData.nodes.filter(state.dagNodeFilter).forEach(function (node) {\n return node[_resetProp] = fixFn(node);\n });\n }\n\n // Use radial force for radial dags\n state.forceLayout.force('dagRadial', ['radialin', 'radialout'].indexOf(state.dagMode) !== -1 ? forceRadial(function (node) {\n var nodeDepth = nodeDepths[node[state.nodeId]] || -1;\n return (state.dagMode === 'radialin' ? maxDepth - nodeDepth : nodeDepth) * dagLevelDistance;\n }).strength(function (node) {\n return state.dagNodeFilter(node) ? 1 : 0;\n }) : null);\n for (var i = 0; i < state.warmupTicks && !(state.d3AlphaMin > 0 && state.forceLayout.alpha() < state.d3AlphaMin); i++) {\n state.forceLayout.tick();\n } // Initial ticks before starting to render\n\n this.resetCountdown();\n state.onFinishUpdate();\n }\n});\n\nfunction linkKapsule (kapsulePropNames, kapsuleType) {\n var propNames = kapsulePropNames instanceof Array ? kapsulePropNames : [kapsulePropNames];\n var dummyK = new kapsuleType(); // To extract defaults\n dummyK._destructor && dummyK._destructor();\n return {\n linkProp: function linkProp(prop) {\n // link property config\n return {\n \"default\": dummyK[prop](),\n onChange: function onChange(v, state) {\n propNames.forEach(function (propName) {\n return state[propName][prop](v);\n });\n },\n triggerUpdate: false\n };\n },\n linkMethod: function linkMethod(method) {\n // link method pass-through\n return function (state) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n var returnVals = [];\n propNames.forEach(function (propName) {\n var kapsuleInstance = state[propName];\n var returnVal = kapsuleInstance[method].apply(kapsuleInstance, args);\n if (returnVal !== kapsuleInstance) {\n returnVals.push(returnVal);\n }\n });\n return returnVals.length ? returnVals[0] : this; // chain based on the parent object, not the inner kapsule\n };\n }\n };\n}\n\nvar HOVER_CANVAS_THROTTLE_DELAY = 800; // ms to throttle shadow canvas updates for perf improvement\nvar ZOOM2NODES_FACTOR = 4;\nvar DRAG_CLICK_TOLERANCE_PX = 5; // How many px can a node be accidentally dragged before disabling the click\n\n// Expose config from forceGraph\nvar bindFG = linkKapsule('forceGraph', CanvasForceGraph);\nvar bindBoth = linkKapsule(['forceGraph', 'shadowGraph'], CanvasForceGraph);\nvar linkedProps = Object.assign.apply(Object, _toConsumableArray(['nodeColor', 'nodeAutoColorBy', 'nodeCanvasObject', 'nodeCanvasObjectMode', 'linkColor', 'linkAutoColorBy', 'linkLineDash', 'linkWidth', 'linkCanvasObject', 'linkCanvasObjectMode', 'linkDirectionalArrowLength', 'linkDirectionalArrowColor', 'linkDirectionalArrowRelPos', 'linkDirectionalParticles', 'linkDirectionalParticleSpeed', 'linkDirectionalParticleOffset', 'linkDirectionalParticleWidth', 'linkDirectionalParticleColor', 'linkDirectionalParticleCanvasObject', 'dagMode', 'dagLevelDistance', 'dagNodeFilter', 'onDagError', 'd3AlphaMin', 'd3AlphaDecay', 'd3VelocityDecay', 'warmupTicks', 'cooldownTicks', 'cooldownTime', 'onEngineTick', 'onEngineStop'].map(function (p) {\n return _defineProperty({}, p, bindFG.linkProp(p));\n})).concat(_toConsumableArray(['nodeRelSize', 'nodeId', 'nodeVal', 'nodeVisibility', 'linkSource', 'linkTarget', 'linkVisibility', 'linkCurvature'].map(function (p) {\n return _defineProperty({}, p, bindBoth.linkProp(p));\n}))));\nvar linkedMethods = Object.assign.apply(Object, _toConsumableArray(['d3Force', 'd3ReheatSimulation', 'emitParticle'].map(function (p) {\n return _defineProperty({}, p, bindFG.linkMethod(p));\n})));\nfunction adjustCanvasSize(state) {\n if (state.canvas) {\n var curWidth = state.canvas.width;\n var curHeight = state.canvas.height;\n if (curWidth === 300 && curHeight === 150) {\n // Default canvas dimensions\n curWidth = curHeight = 0;\n }\n var pxScale = window.devicePixelRatio; // 2 on retina displays\n curWidth /= pxScale;\n curHeight /= pxScale;\n\n // Resize canvases\n [state.canvas, state.shadowCanvas].forEach(function (canvas) {\n // Element size\n canvas.style.width = \"\".concat(state.width, \"px\");\n canvas.style.height = \"\".concat(state.height, \"px\");\n\n // Memory size (scaled to avoid blurriness)\n canvas.width = state.width * pxScale;\n canvas.height = state.height * pxScale;\n\n // Normalize coordinate system to use css pixels (on init only)\n if (!curWidth && !curHeight) {\n canvas.getContext('2d').scale(pxScale, pxScale);\n }\n });\n\n // Relative center panning based on 0,0\n var k = zoomTransform(state.canvas).k;\n state.zoom.translateBy(state.zoom.__baseElem, (state.width - curWidth) / 2 / k, (state.height - curHeight) / 2 / k);\n state.needsRedraw = true;\n }\n}\nfunction resetTransform(ctx) {\n var pxRatio = window.devicePixelRatio;\n ctx.setTransform(pxRatio, 0, 0, pxRatio, 0, 0);\n}\nfunction clearCanvas(ctx, width, height) {\n ctx.save();\n resetTransform(ctx); // reset transform\n ctx.clearRect(0, 0, width, height);\n ctx.restore(); //restore transforms\n}\n\n//\n\nvar forceGraph = Kapsule({\n props: _objectSpread2({\n width: {\n \"default\": window.innerWidth,\n onChange: function onChange(_, state) {\n return adjustCanvasSize(state);\n },\n triggerUpdate: false\n },\n height: {\n \"default\": window.innerHeight,\n onChange: function onChange(_, state) {\n return adjustCanvasSize(state);\n },\n triggerUpdate: false\n },\n graphData: {\n \"default\": {\n nodes: [],\n links: []\n },\n onChange: function onChange(d, state) {\n // Wipe color registry if all objects are new\n [d.nodes, d.links].every(function (arr) {\n return (arr || []).every(function (d) {\n return !d.hasOwnProperty('__indexColor');\n });\n }) && state.colorTracker.reset();\n [{\n type: 'Node',\n objs: d.nodes\n }, {\n type: 'Link',\n objs: d.links\n }].forEach(hexIndex);\n state.forceGraph.graphData(d);\n state.shadowGraph.graphData(d);\n function hexIndex(_ref4) {\n var type = _ref4.type,\n objs = _ref4.objs;\n objs.filter(function (d) {\n if (!d.hasOwnProperty('__indexColor')) return true;\n var cur = state.colorTracker.lookup(d.__indexColor);\n return !cur || !cur.hasOwnProperty('d') || cur.d !== d;\n }).forEach(function (d) {\n // store object lookup color\n d.__indexColor = state.colorTracker.register({\n type: type,\n d: d\n });\n });\n }\n },\n triggerUpdate: false\n },\n backgroundColor: {\n onChange: function onChange(color, state) {\n state.canvas && color && (state.canvas.style.background = color);\n },\n triggerUpdate: false\n },\n nodeLabel: {\n \"default\": 'name',\n triggerUpdate: false\n },\n nodePointerAreaPaint: {\n onChange: function onChange(paintFn, state) {\n state.shadowGraph.nodeCanvasObject(!paintFn ? null : function (node, ctx, globalScale) {\n return paintFn(node, node.__indexColor, ctx, globalScale);\n });\n state.flushShadowCanvas && state.flushShadowCanvas();\n },\n triggerUpdate: false\n },\n linkPointerAreaPaint: {\n onChange: function onChange(paintFn, state) {\n state.shadowGraph.linkCanvasObject(!paintFn ? null : function (link, ctx, globalScale) {\n return paintFn(link, link.__indexColor, ctx, globalScale);\n });\n state.flushShadowCanvas && state.flushShadowCanvas();\n },\n triggerUpdate: false\n },\n linkLabel: {\n \"default\": 'name',\n triggerUpdate: false\n },\n linkHoverPrecision: {\n \"default\": 4,\n triggerUpdate: false\n },\n minZoom: {\n \"default\": 0.01,\n onChange: function onChange(minZoom, state) {\n state.zoom.scaleExtent([minZoom, state.zoom.scaleExtent()[1]]);\n },\n triggerUpdate: false\n },\n maxZoom: {\n \"default\": 1000,\n onChange: function onChange(maxZoom, state) {\n state.zoom.scaleExtent([state.zoom.scaleExtent()[0], maxZoom]);\n },\n triggerUpdate: false\n },\n enableNodeDrag: {\n \"default\": true,\n triggerUpdate: false\n },\n enableZoomInteraction: {\n \"default\": true,\n triggerUpdate: false\n },\n enablePanInteraction: {\n \"default\": true,\n triggerUpdate: false\n },\n enableZoomPanInteraction: {\n \"default\": true,\n triggerUpdate: false\n },\n // to be deprecated\n enablePointerInteraction: {\n \"default\": true,\n onChange: function onChange(_, state) {\n state.hoverObj = null;\n },\n triggerUpdate: false\n },\n autoPauseRedraw: {\n \"default\": true,\n triggerUpdate: false\n },\n onNodeDrag: {\n \"default\": function _default() {},\n triggerUpdate: false\n },\n onNodeDragEnd: {\n \"default\": function _default() {},\n triggerUpdate: false\n },\n onNodeClick: {\n triggerUpdate: false\n },\n onNodeRightClick: {\n triggerUpdate: false\n },\n onNodeHover: {\n triggerUpdate: false\n },\n onLinkClick: {\n triggerUpdate: false\n },\n onLinkRightClick: {\n triggerUpdate: false\n },\n onLinkHover: {\n triggerUpdate: false\n },\n onBackgroundClick: {\n triggerUpdate: false\n },\n onBackgroundRightClick: {\n triggerUpdate: false\n },\n showPointerCursor: {\n \"default\": true,\n triggerUpdate: false\n },\n onZoom: {\n triggerUpdate: false\n },\n onZoomEnd: {\n triggerUpdate: false\n },\n onRenderFramePre: {\n triggerUpdate: false\n },\n onRenderFramePost: {\n triggerUpdate: false\n }\n }, linkedProps),\n aliases: {\n // Prop names supported for backwards compatibility\n stopAnimation: 'pauseAnimation'\n },\n methods: _objectSpread2({\n graph2ScreenCoords: function graph2ScreenCoords(state, x, y) {\n var t = zoomTransform(state.canvas);\n return {\n x: x * t.k + t.x,\n y: y * t.k + t.y\n };\n },\n screen2GraphCoords: function screen2GraphCoords(state, x, y) {\n var t = zoomTransform(state.canvas);\n return {\n x: (x - t.x) / t.k,\n y: (y - t.y) / t.k\n };\n },\n centerAt: function centerAt(state, x, y, transitionDuration) {\n if (!state.canvas) return null; // no canvas yet\n\n // setter\n if (x !== undefined || y !== undefined) {\n var finalPos = Object.assign({}, x !== undefined ? {\n x: x\n } : {}, y !== undefined ? {\n y: y\n } : {});\n if (!transitionDuration) {\n // no animation\n setCenter(finalPos);\n } else {\n state.tweenGroup.add(new Tween(getCenter()).to(finalPos, transitionDuration).easing(Easing.Quadratic.Out).onUpdate(setCenter).onComplete(function () {\n state.tweenGroup.remove(this);\n }).start());\n }\n return this;\n }\n\n // getter\n return getCenter();\n\n //\n\n function getCenter() {\n var t = zoomTransform(state.canvas);\n return {\n x: (state.width / 2 - t.x) / t.k,\n y: (state.height / 2 - t.y) / t.k\n };\n }\n function setCenter(_ref5) {\n var x = _ref5.x,\n y = _ref5.y;\n state.zoom.translateTo(state.zoom.__baseElem, x === undefined ? getCenter().x : x, y === undefined ? getCenter().y : y);\n state.needsRedraw = true;\n }\n },\n zoom: function zoom(state, k, transitionDuration) {\n if (!state.canvas) return null; // no canvas yet\n\n // setter\n if (k !== undefined) {\n if (!transitionDuration) {\n // no animation\n setZoom(k);\n } else {\n state.tweenGroup.add(new Tween({\n k: getZoom()\n }).to({\n k: k\n }, transitionDuration).easing(Easing.Quadratic.Out).onUpdate(function (_ref6) {\n var k = _ref6.k;\n return setZoom(k);\n }).onComplete(function () {\n state.tweenGroup.remove(this);\n }).start());\n }\n return this;\n }\n\n // getter\n return getZoom();\n\n //\n\n function getZoom() {\n return zoomTransform(state.canvas).k;\n }\n function setZoom(k) {\n state.zoom.scaleTo(state.zoom.__baseElem, k);\n state.needsRedraw = true;\n }\n },\n zoomToFit: function zoomToFit(state) {\n var transitionDuration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var padding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;\n for (var _len = arguments.length, bboxArgs = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n bboxArgs[_key - 3] = arguments[_key];\n }\n var bbox = this.getGraphBbox.apply(this, bboxArgs);\n if (bbox) {\n var center = {\n x: (bbox.x[0] + bbox.x[1]) / 2,\n y: (bbox.y[0] + bbox.y[1]) / 2\n };\n var zoomK = Math.max(1e-12, Math.min(1e12, (state.width - padding * 2) / (bbox.x[1] - bbox.x[0]), (state.height - padding * 2) / (bbox.y[1] - bbox.y[0])));\n this.centerAt(center.x, center.y, transitionDuration);\n this.zoom(zoomK, transitionDuration);\n }\n return this;\n },\n getGraphBbox: function getGraphBbox(state) {\n var nodeFilter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {\n return true;\n };\n var getVal = accessorFn(state.nodeVal);\n var getR = function getR(node) {\n return Math.sqrt(Math.max(0, getVal(node) || 1)) * state.nodeRelSize;\n };\n var nodesPos = state.graphData.nodes.filter(nodeFilter).map(function (node) {\n return {\n x: node.x,\n y: node.y,\n r: getR(node)\n };\n });\n return !nodesPos.length ? null : {\n x: [min(nodesPos, function (node) {\n return node.x - node.r;\n }), max(nodesPos, function (node) {\n return node.x + node.r;\n })],\n y: [min(nodesPos, function (node) {\n return node.y - node.r;\n }), max(nodesPos, function (node) {\n return node.y + node.r;\n })]\n };\n },\n pauseAnimation: function pauseAnimation(state) {\n if (state.animationFrameRequestId) {\n cancelAnimationFrame(state.animationFrameRequestId);\n state.animationFrameRequestId = null;\n }\n return this;\n },\n resumeAnimation: function resumeAnimation(state) {\n if (!state.animationFrameRequestId) {\n this._animationCycle();\n }\n return this;\n },\n _destructor: function _destructor() {\n this.pauseAnimation();\n this.graphData({\n nodes: [],\n links: []\n });\n }\n }, linkedMethods),\n stateInit: function stateInit() {\n return {\n lastSetZoom: 1,\n zoom: zoom(),\n forceGraph: new CanvasForceGraph(),\n shadowGraph: new CanvasForceGraph().cooldownTicks(0).nodeColor('__indexColor').linkColor('__indexColor').isShadow(true),\n colorTracker: new ColorTracker(),\n // indexed objects for rgb lookup\n tweenGroup: new Group()\n };\n },\n init: function init(domNode, state) {\n var _this = this;\n // Wipe DOM\n domNode.innerHTML = '';\n\n // Container anchor for canvas and tooltip\n var container = document.createElement('div');\n container.classList.add('force-graph-container');\n container.style.position = 'relative';\n domNode.appendChild(container);\n state.canvas = document.createElement('canvas');\n if (state.backgroundColor) state.canvas.style.background = state.backgroundColor;\n container.appendChild(state.canvas);\n state.shadowCanvas = document.createElement('canvas');\n\n // Show shadow canvas\n //state.shadowCanvas.style.position = 'absolute';\n //state.shadowCanvas.style.top = '0';\n //state.shadowCanvas.style.left = '0';\n //container.appendChild(state.shadowCanvas);\n\n var ctx = state.canvas.getContext('2d');\n var shadowCtx = state.shadowCanvas.getContext('2d', {\n willReadFrequently: true\n });\n var pointerPos = {\n x: -1e12,\n y: -1e12\n };\n var getObjUnderPointer = function getObjUnderPointer() {\n var obj = null;\n var pxScale = window.devicePixelRatio;\n var px = pointerPos.x > 0 && pointerPos.y > 0 ? shadowCtx.getImageData(pointerPos.x * pxScale, pointerPos.y * pxScale, 1, 1) : null;\n // Lookup object per pixel color\n px && (obj = state.colorTracker.lookup(px.data));\n return obj;\n };\n\n // Setup node drag interaction\n select(state.canvas).call(drag().subject(function () {\n if (!state.enableNodeDrag) {\n return null;\n }\n var obj = getObjUnderPointer();\n return obj && obj.type === 'Node' ? obj.d : null; // Only drag nodes\n }).on('start', function (ev) {\n var obj = ev.subject;\n obj.__initialDragPos = {\n x: obj.x,\n y: obj.y,\n fx: obj.fx,\n fy: obj.fy\n };\n\n // keep engine running at low intensity throughout drag\n if (!ev.active) {\n obj.fx = obj.x;\n obj.fy = obj.y; // Fix points\n }\n\n // drag cursor\n state.canvas.classList.add('grabbable');\n }).on('drag', function (ev) {\n var obj = ev.subject;\n var initPos = obj.__initialDragPos;\n var dragPos = ev;\n var k = zoomTransform(state.canvas).k;\n var translate = {\n x: initPos.x + (dragPos.x - initPos.x) / k - obj.x,\n y: initPos.y + (dragPos.y - initPos.y) / k - obj.y\n };\n\n // Move fx/fy (and x/y) of nodes based on the scaled drag distance since the drag start\n ['x', 'y'].forEach(function (c) {\n return obj[\"f\".concat(c)] = obj[c] = initPos[c] + (dragPos[c] - initPos[c]) / k;\n });\n\n // Only engage full drag if distance reaches above threshold\n if (!obj.__dragged && DRAG_CLICK_TOLERANCE_PX >= Math.sqrt(sum(['x', 'y'].map(function (k) {\n return Math.pow(ev[k] - initPos[k], 2);\n })))) return;\n state.forceGraph.d3AlphaTarget(0.3) // keep engine running at low intensity throughout drag\n .resetCountdown(); // prevent freeze while dragging\n\n state.isPointerDragging = true;\n obj.__dragged = true;\n state.onNodeDrag(obj, translate);\n }).on('end', function (ev) {\n var obj = ev.subject;\n var initPos = obj.__initialDragPos;\n var translate = {\n x: obj.x - initPos.x,\n y: obj.y - initPos.y\n };\n if (initPos.fx === undefined) {\n obj.fx = undefined;\n }\n if (initPos.fy === undefined) {\n obj.fy = undefined;\n }\n delete obj.__initialDragPos;\n if (state.forceGraph.d3AlphaTarget()) {\n state.forceGraph.d3AlphaTarget(0) // release engine low intensity\n .resetCountdown(); // let the engine readjust after releasing fixed nodes\n }\n\n // drag cursor\n state.canvas.classList.remove('grabbable');\n state.isPointerDragging = false;\n if (obj.__dragged) {\n delete obj.__dragged;\n state.onNodeDragEnd(obj, translate);\n }\n }));\n\n // Setup zoom / pan interaction\n state.zoom(state.zoom.__baseElem = select(state.canvas)); // Attach controlling elem for easy access\n\n state.zoom.__baseElem.on('dblclick.zoom', null); // Disable double-click to zoom\n\n state.zoom.filter(function (ev) {\n return (\n // disable zoom interaction\n !ev.button && state.enableZoomPanInteraction && (ev.type !== 'wheel' || accessorFn(state.enableZoomInteraction)(ev)) && (ev.type === 'wheel' || accessorFn(state.enablePanInteraction)(ev))\n );\n }).on('zoom', function (ev) {\n var t = ev.transform;\n [ctx, shadowCtx].forEach(function (c) {\n resetTransform(c);\n c.translate(t.x, t.y);\n c.scale(t.k, t.k);\n });\n state.isPointerDragging = true;\n state.onZoom && state.onZoom(_objectSpread2(_objectSpread2({}, t), _this.centerAt())); // report x,y coordinates relative to canvas center\n state.needsRedraw = true;\n }).on('end', function (ev) {\n state.isPointerDragging = false;\n state.onZoomEnd && state.onZoomEnd(_objectSpread2(_objectSpread2({}, ev.transform), _this.centerAt()));\n });\n adjustCanvasSize(state);\n state.forceGraph.onNeedsRedraw(function () {\n return state.needsRedraw = true;\n }).onFinishUpdate(function () {\n // re-zoom, if still in default position (not user modified)\n if (zoomTransform(state.canvas).k === state.lastSetZoom && state.graphData.nodes.length) {\n state.zoom.scaleTo(state.zoom.__baseElem, state.lastSetZoom = ZOOM2NODES_FACTOR / Math.cbrt(state.graphData.nodes.length));\n state.needsRedraw = true;\n }\n });\n\n // Setup tooltip\n state.tooltip = new Tooltip(container);\n\n // Capture pointer coords on move or touchstart\n ['pointermove', 'pointerdown'].forEach(function (evType) {\n return container.addEventListener(evType, function (ev) {\n if (evType === 'pointerdown') {\n state.isPointerPressed = true; // track click state\n state.pointerDownEvent = ev;\n }\n\n // detect pointer drag on canvas pan\n !state.isPointerDragging && ev.type === 'pointermove' && state.onBackgroundClick // only bother detecting drags this way if background clicks are enabled (so they don't trigger accidentally on canvas panning)\n && (ev.pressure > 0 || state.isPointerPressed) // ev.pressure always 0 on Safari, so we use the isPointerPressed tracker\n && (ev.pointerType === 'mouse' || ev.movementX === undefined || [ev.movementX, ev.movementY].some(function (m) {\n return Math.abs(m) > 1;\n })) // relax drag trigger sensitivity on non-mouse (touch/pen) events\n && (state.isPointerDragging = true);\n\n // update the pointer pos\n var offset = getOffset(container);\n pointerPos.x = ev.pageX - offset.left;\n pointerPos.y = ev.pageY - offset.top;\n\n //\n\n function getOffset(el) {\n var rect = el.getBoundingClientRect(),\n scrollLeft = window.pageXOffset || document.documentElement.scrollLeft,\n scrollTop = window.pageYOffset || document.documentElement.scrollTop;\n return {\n top: rect.top + scrollTop,\n left: rect.left + scrollLeft\n };\n }\n }, {\n passive: true\n });\n });\n\n // Handle click/touch events on nodes/links\n container.addEventListener('pointerup', function (ev) {\n if (!state.isPointerPressed) {\n return; // don't trigger click events if pointer is not pressed on the canvas\n }\n state.isPointerPressed = false;\n if (state.isPointerDragging) {\n state.isPointerDragging = false;\n return; // don't trigger click events after pointer drag (pan / node drag functionality)\n }\n var cbEvents = [ev, state.pointerDownEvent];\n requestAnimationFrame(function () {\n // trigger click events asynchronously, to allow hoverObj to be set (on frame)\n if (ev.button === 0) {\n // mouse left-click or touch\n if (state.hoverObj) {\n var fn = state[\"on\".concat(state.hoverObj.type, \"Click\")];\n fn && fn.apply(void 0, [state.hoverObj.d].concat(cbEvents));\n } else {\n state.onBackgroundClick && state.onBackgroundClick.apply(state, cbEvents);\n }\n }\n if (ev.button === 2) {\n // mouse right-click\n if (state.hoverObj) {\n var _fn = state[\"on\".concat(state.hoverObj.type, \"RightClick\")];\n _fn && _fn.apply(void 0, [state.hoverObj.d].concat(cbEvents));\n } else {\n state.onBackgroundRightClick && state.onBackgroundRightClick.apply(state, cbEvents);\n }\n }\n });\n }, {\n passive: true\n });\n container.addEventListener('contextmenu', function (ev) {\n if (!state.onBackgroundRightClick && !state.onNodeRightClick && !state.onLinkRightClick) return true; // default contextmenu behavior\n ev.preventDefault();\n return false;\n });\n state.forceGraph(ctx);\n state.shadowGraph(shadowCtx);\n\n //\n\n var refreshShadowCanvas = throttle(function () {\n // wipe canvas\n clearCanvas(shadowCtx, state.width, state.height);\n\n // Adjust link hover area\n state.shadowGraph.linkWidth(function (l) {\n return accessorFn(state.linkWidth)(l) + state.linkHoverPrecision;\n });\n\n // redraw\n var t = zoomTransform(state.canvas);\n state.shadowGraph.globalScale(t.k).tickFrame();\n }, HOVER_CANVAS_THROTTLE_DELAY);\n state.flushShadowCanvas = refreshShadowCanvas.flush; // hook to immediately invoke shadow canvas paint\n\n // Kick-off renderer\n (this._animationCycle = function animate() {\n // IIFE\n var doRedraw = !state.autoPauseRedraw || !!state.needsRedraw || state.forceGraph.isEngineRunning() || state.graphData.links.some(function (d) {\n return d.__photons && d.__photons.length;\n });\n state.needsRedraw = false;\n if (state.enablePointerInteraction) {\n // Update tooltip and trigger onHover events\n var obj = !state.isPointerDragging ? getObjUnderPointer() : null; // don't hover during drag\n if (obj !== state.hoverObj) {\n var prevObj = state.hoverObj;\n var prevObjType = prevObj ? prevObj.type : null;\n var objType = obj ? obj.type : null;\n if (prevObjType && prevObjType !== objType) {\n // Hover out\n var fn = state[\"on\".concat(prevObjType, \"Hover\")];\n fn && fn(null, prevObj.d);\n }\n if (objType) {\n // Hover in\n var _fn2 = state[\"on\".concat(objType, \"Hover\")];\n _fn2 && _fn2(obj.d, prevObjType === objType ? prevObj.d : null);\n }\n state.tooltip.content(obj ? accessorFn(state[\"\".concat(obj.type.toLowerCase(), \"Label\")])(obj.d) || null : null);\n\n // set pointer if hovered object is clickable\n state.canvas.classList[(obj && state[\"on\".concat(objType, \"Click\")] || !obj && state.onBackgroundClick) && accessorFn(state.showPointerCursor)(obj === null || obj === void 0 ? void 0 : obj.d) ? 'add' : 'remove']('clickable');\n state.hoverObj = obj;\n }\n doRedraw && refreshShadowCanvas();\n }\n if (doRedraw) {\n // Wipe canvas\n clearCanvas(ctx, state.width, state.height);\n\n // Frame cycle\n var globalScale = zoomTransform(state.canvas).k;\n state.onRenderFramePre && state.onRenderFramePre(ctx, globalScale);\n state.forceGraph.globalScale(globalScale).tickFrame();\n state.onRenderFramePost && state.onRenderFramePost(ctx, globalScale);\n }\n state.tweenGroup.update(); // update canvas animation tweens\n\n state.animationFrameRequestId = requestAnimationFrame(animate);\n })();\n },\n update: function updateFn(state) {}\n});\n\nexport { forceGraph as default };\n","/**\n * KnowledgeGraph.tsx — force-graph 原生 Canvas 包装组件(对齐 TvChart.tsx 先例)。\n *\n * 2026-09-01 Obsidian 化改造(参考 Obsidian graph view 体验):\n * 1. 数据层切 tagHubs 模式:卡片节点 + 标签 hub 节点,无全配对边;\n * 2. 力学:高阻尼(velocityDecay 0.45)+ alphaDecay 0.028 快收敛 + 碰撞斥力,\n * 布局收敛后自动 zoomToFit——打开即是稳定可读状态,不抖不飘;\n * 3. 标签策略:卡片标签放大到阈值或 hover 才显示(Obsidian 同款),\n * 标签 hub 常显(#名),避免 215 个标签糊成一片;\n * 4. 节点视觉:卡片=实心圆(主题簇色),hub=空心环(灰蓝),一眼可分。\n *\n * 既有规格:hover 一阶邻域聚焦、click 选中抽屉、focusNode 居中放大。\n */\nimport { useEffect, useImperativeHandle, useRef, forwardRef } from 'react'\nimport ForceGraph, { type ForceGraphInstance } from 'force-graph'\nimport type { KnowledgeCard, KnowledgeGraphData, KnowledgeGraphNode, KnowledgeGraphLink } from '@dshtrading/knowledge'\n\n// 中性柔和主题色板(避免使用涨跌红绿色)\nconst CLUSTER_COLORS = [\n '#3b82f6', '#10b981', '#8b5cf6', '#f59e0b', '#ec4899',\n '#06b6d4', '#6366f1', '#14b8a6', '#f97316', '#64748b',\n]\n\nconst TAG_HUB_COLOR = '#7c8aa0'\n\n/** 无标签卡片的簇哨兵(纯数据分组值,不做 UI 展示——配色哈希与计数用)。 */\nconst UNTAGGED_CLUSTER = 'untagged'\n\nfunction getClusterColor(cluster: string): string {\n let hash = 0\n for (let i = 0; i < cluster.length; i++) {\n hash = (hash << 5) - hash + cluster.charCodeAt(0) * 31 + cluster.charCodeAt(i)\n hash |= 0\n }\n const index = Math.abs(hash) % CLUSTER_COLORS.length\n return CLUSTER_COLORS[index] ?? '#64748b'\n}\n\nexport interface KnowledgeGraphHandle {\n focusNode(nodeId: string): void\n}\n\nexport interface KnowledgeGraphProps {\n data: KnowledgeGraphData\n selectedCardId?: string\n onSelectCard: (card: KnowledgeCard) => void\n /** 点击标签 hub 节点(Obsidian 式:点标签=过滤该标签)。 */\n onTagClick?: (tag: string) => void\n}\n\nexport const KnowledgeGraph = forwardRef<KnowledgeGraphHandle, KnowledgeGraphProps>(function KnowledgeGraph(\n { data, selectedCardId, onSelectCard, onTagClick },\n ref,\n) {\n const containerRef = useRef<HTMLDivElement | null>(null)\n const graphInstanceRef = useRef<ForceGraphInstance | null>(null)\n\n // 回调 ref 化:避免内联函数作为 effect 依赖导致实例每帧重建(见 KnowledgeView 先例)。\n const onSelectCardRef = useRef(onSelectCard)\n onSelectCardRef.current = onSelectCard\n const onTagClickRef = useRef(onTagClick)\n onTagClickRef.current = onTagClick\n const selectedCardIdRef = useRef(selectedCardId)\n selectedCardIdRef.current = selectedCardId\n\n // 当前 hover 与高亮集合\n const hoverNodeRef = useRef<KnowledgeGraphNode | null>(null)\n const highlightNodesRef = useRef<Set<string>>(new Set())\n const highlightLinksRef = useRef<Set<string>>(new Set())\n\n // 暴露外部定位聚焦命令\n useImperativeHandle(ref, () => ({\n focusNode(nodeId: string) {\n if (!graphInstanceRef.current) return\n const graphData = graphInstanceRef.current.graphData()\n const targetNode = graphData.nodes.find((n: any) => n.id === nodeId) as any\n if (targetNode && typeof targetNode.x === 'number' && typeof targetNode.y === 'number') {\n graphInstanceRef.current.centerAt(targetNode.x, targetNode.y, 800)\n graphInstanceRef.current.zoom(2.5, 800)\n }\n },\n }))\n\n useEffect(() => {\n if (!containerRef.current) return\n\n const container = containerRef.current\n const width = container.clientWidth || 600\n const height = container.clientHeight || 400\n\n const isTagHub = (node: any) => node?.type === 'tag'\n\n // 节点半径:卡片按度数自适应;hub 固定小半径(视觉层级低于卡片)\n const nodeRadius = (node: any) => {\n if (isTagHub(node)) return Math.min(9, 3.5 + Math.sqrt(node.degree ?? 0) * 0.8)\n return Math.max(3, Math.min(13, 3 + Math.sqrt(node.degree ?? 0) * 2))\n }\n\n // 初始化 ForceGraph\n const graph = new (ForceGraph as any)(container)\n .width(width)\n .height(height)\n .backgroundColor('transparent')\n .nodeId('id')\n .minZoom(0.15)\n .maxZoom(10)\n // Obsidian 手感:高阻尼 + 快收敛,打开即基本稳定\n .d3VelocityDecay(0.45)\n .d3AlphaDecay(0.028)\n .d3AlphaMin(0.002)\n .nodeVal((node: KnowledgeGraphNode) => nodeRadius(node) ** 2)\n .nodeColor((node: KnowledgeGraphNode) => (isTagHub(node) ? TAG_HUB_COLOR : getClusterColor(node.cluster)))\n .linkColor((link: any) => {\n const sourceId = typeof link.source === 'object' ? link.source.id : link.source\n const targetId = typeof link.target === 'object' ? link.target.id : link.target\n const linkKey = `${sourceId}__${targetId}`\n\n if (highlightNodesRef.current.size > 0) {\n return highlightLinksRef.current.has(linkKey) ? 'rgba(59, 130, 246, 0.75)' : 'rgba(200, 205, 215, 0.06)'\n }\n return link.kind === 'related' ? 'rgba(59, 130, 246, 0.5)' : 'rgba(160, 170, 185, 0.18)'\n })\n .linkWidth((link: any) => {\n const sourceId = typeof link.source === 'object' ? link.source.id : link.source\n const targetId = typeof link.target === 'object' ? link.target.id : link.target\n const linkKey = `${sourceId}__${targetId}`\n\n if (highlightLinksRef.current.has(linkKey)) {\n return link.kind === 'related' ? 3 : 2\n }\n return link.kind === 'related' ? 1.8 : 0.7\n })\n .nodeLabel((node: KnowledgeGraphNode) => {\n if (isTagHub(node)) return '#' + node.label\n const raw = node.raw\n if (!raw) return node.label\n return `\n <div style=\"font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; font-size: 11px; padding: 6px 10px; background: rgba(26, 30, 36, 0.92); color: #ffffff; border-radius: 4px; box-shadow: 0 4px 12px rgba(0,0,0,0.15); max-width: 260px; pointer-events: none;\">\n <div style=\"font-weight: 600; margin-bottom: 4px; color: #60a5fa;\">${node.label}</div>\n <div style=\"color: #cbd5e1; line-height: 1.4; margin-bottom: 4px;\">${raw.summary}</div>\n <div style=\"color: #94a3b8; font-size: 10px;\">${raw.source.author} · ${raw.tags.join(', ')}</div>\n </div>`\n })\n .onNodeHover((node: KnowledgeGraphNode | null) => {\n hoverNodeRef.current = node\n highlightNodesRef.current.clear()\n highlightLinksRef.current.clear()\n\n if (node) {\n highlightNodesRef.current.add(node.id)\n const currentLinks = graph.graphData().links\n for (const l of currentLinks) {\n const sId = typeof l.source === 'object' ? l.source.id : l.source\n const tId = typeof l.target === 'object' ? l.target.id : l.target\n if (sId === node.id || tId === node.id) {\n highlightNodesRef.current.add(sId)\n highlightNodesRef.current.add(tId)\n highlightLinksRef.current.add(`${sId}__${tId}`)\n highlightLinksRef.current.add(`${tId}__${sId}`)\n }\n }\n }\n graph.nodeColor(graph.nodeColor()).linkColor(graph.linkColor())\n })\n .onNodeClick((node: KnowledgeGraphNode) => {\n if (isTagHub(node)) {\n onTagClickRef.current?.(node.label)\n return\n }\n if (node.raw) {\n onSelectCardRef.current(node.raw)\n }\n })\n .nodeCanvasObject((node: any, ctx: CanvasRenderingContext2D, globalScale: number) => {\n const radius = nodeRadius(node)\n const isHovered = hoverNodeRef.current?.id === node.id\n const isSelected = !isTagHub(node) && selectedCardIdRef.current === node.id\n const isHighlighted = highlightNodesRef.current.has(node.id)\n const hasActiveHover = highlightNodesRef.current.size > 0\n const hub = isTagHub(node)\n\n ctx.save()\n\n // 透明度淡化\n if (hasActiveHover && !isHighlighted && !isSelected) {\n ctx.globalAlpha = 0.15\n }\n\n const color = hub ? TAG_HUB_COLOR : getClusterColor(node.cluster ?? UNTAGGED_CLUSTER)\n\n if (hub) {\n // 标签 hub:空心环(与卡片实心圆形成视觉层级)\n ctx.beginPath()\n ctx.arc(node.x, node.y, radius, 0, 2 * Math.PI, false)\n ctx.fillStyle = 'rgba(250, 250, 252, 0.9)'\n ctx.fill()\n ctx.lineWidth = Math.max(1.2, radius / 3)\n ctx.strokeStyle = color\n ctx.stroke()\n } else {\n // hover/选中光晕\n if (isHovered || isSelected) {\n ctx.beginPath()\n ctx.arc(node.x, node.y, radius + 4, 0, 2 * Math.PI, false)\n ctx.fillStyle = isSelected ? 'rgba(59, 130, 246, 0.3)' : 'rgba(59, 130, 246, 0.2)'\n ctx.fill()\n ctx.lineWidth = 1.5\n ctx.strokeStyle = '#3b82f6'\n ctx.stroke()\n }\n\n // 主节点圆\n ctx.beginPath()\n ctx.arc(node.x, node.y, radius, 0, 2 * Math.PI, false)\n ctx.fillStyle = color\n ctx.fill()\n ctx.lineWidth = 1\n ctx.strokeStyle = '#ffffff'\n ctx.stroke()\n }\n\n // 标签策略(Obsidian 式):hub 常显;卡片标签仅放大或 hover/选中时显示\n const showLabel = hub || globalScale > 1.6 || isHovered || isSelected || (isHighlighted && hasActiveHover)\n if (showLabel) {\n const label = hub ? '#' + (node.label || '') : node.label || ''\n const fontSize = hub ? Math.max(10, 12 / globalScale) : Math.max(8, Math.min(13, 11 / globalScale))\n ctx.font = `${hub ? 600 : 400} ${fontSize}px -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif`\n ctx.textAlign = 'center'\n ctx.textBaseline = 'top'\n const ty = hub ? node.y + radius + 2 : node.y + radius + 2\n ctx.lineWidth = 2.5\n ctx.strokeStyle = 'rgba(255, 255, 255, 0.85)'\n ctx.strokeText(label, node.x, ty)\n ctx.fillStyle = hub ? '#475569' : '#1a1e24'\n ctx.fillText(label, node.x, ty)\n }\n\n ctx.restore()\n })\n // 自定义碰撞斥力:force-graph 未内建 collide,用轻量 O(n²) 实现\n // (225 节点 ≈ 2.5 万次比较/tick,可忽略),防止节点重叠成团。\n const collideForce = (alpha: number) => {\n const nodes = graph.graphData().nodes as any[]\n const radii = nodes.map((n) => nodeRadius(n) + 2.5)\n for (let i = 0; i < nodes.length; i++) {\n const a = nodes[i]\n if (typeof a.x !== 'number' || typeof a.y !== 'number') continue\n for (let j = i + 1; j < nodes.length; j++) {\n const b = nodes[j]\n if (typeof b.x !== 'number' || typeof b.y !== 'number') continue\n let dx = a.x - b.x\n let dy = a.y - b.y\n let dist = Math.sqrt(dx * dx + dy * dy) || 0.01\n const minDist = radii[i] + radii[j]\n if (dist < minDist && dist > 0) {\n const push = ((minDist - dist) / dist) * alpha * 0.6\n dx *= push\n dy *= push\n const massA = isTagHub(a) ? 0.6 : 1\n const massB = isTagHub(b) ? 0.6 : 1\n a.x += dx * massA;\n a.y += dy * massA;\n b.x -= dx * massB;\n b.y -= dy * massB;\n }\n }\n }\n }\n collideForce[\"initialize\"] = (ns: any[]) => { void ns }\n graph.d3Force('collide', collideForce)\n\n // 斥力与连线距离按 hub 拓扑调优:hub 间互斥更强,卡-标签连线给足距离,\n // 形成主题簇自然分瓣(Obsidian 观感)。\n const charge = graph.d3Force('charge')\n if (charge) charge.strength(-90).distanceMax(420)\n const linkForce = graph.d3Force('link')\n if (linkForce) {\n linkForce.distance((link: any) => (link.kind === 'related' ? 60 : 78)).strength((link: any) => (link.kind === 'related' ? 0.7 : 0.35))\n }\n\n // 载入数据\n const graphDataFormatted = {\n nodes: data.nodes.map((n) => ({ ...n })),\n links: data.links.map((l) => ({ ...l })),\n }\n graph.graphData(graphDataFormatted)\n\n // 收敛后自动取景:打开即全览(Obsidian 行为)\n let didFit = false\n graph.onEngineStop(() => {\n if (!didFit) {\n didFit = true\n graphInstanceRef.current?.zoomToFit(500, 60)\n }\n })\n\n graphInstanceRef.current = graph\n\n // 自适应 Resize\n const handleResize = () => {\n if (containerRef.current && graphInstanceRef.current) {\n graphInstanceRef.current.width(containerRef.current.clientWidth)\n graphInstanceRef.current.height(containerRef.current.clientHeight)\n }\n }\n\n const resizeObserver = new ResizeObserver(handleResize)\n resizeObserver.observe(container)\n\n return () => {\n resizeObserver.disconnect()\n if (graphInstanceRef.current) {\n graphInstanceRef.current._destructor?.()\n graphInstanceRef.current = null\n }\n }\n }, [data])\n\n return <div ref={containerRef} className=\"dshtrading-knowledge-graph-canvas\" style={{ width: '100%', height: '100%' }} />\n})","/**\n * 知识库主视图组件(对齐 docs/design/knowledge-graph.md §5 & §6 与 Issue #25 规格)。\n *\n * 结构:\n * 1. 顶部工具栏(搜索定位 + 标签/作者/可信度/平台过滤 + 统计徽章)\n * 2. 主画布区(Obsidian 式 force-graph 力导知识图谱网络)\n * 3. 右侧详情抽屉(卡片全文:核心论点 + 事实核查三桶 + 复用经验 + 边界避坑 + 来源链接)\n * 4. 空态引导与状态持久化 (dshtrading.knowledge.view.v1)\n */\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { buildGraph, type KnowledgeCard, type KnowledgeGraphData } from '@dshtrading/knowledge'\nimport { readJson, writeJson } from './shell-faces.ts'\nimport { IconKnowledge, IconSearch } from './icons.tsx'\nimport { KnowledgeGraph, type KnowledgeGraphHandle } from './KnowledgeGraph.tsx'\nimport type { KnowledgeLocaleKey } from './contract.ts'\nimport css from './KnowledgeView.module.css'\n\ninterface KnowledgeViewStored {\n query: string\n selectedTag: string\n selectedAuthor: string\n selectedCredibility: string\n selectedSourceType: string\n}\n\nconst STORE_KEY = 'dshtrading.knowledge.view.v1'\n\nconst DEFAULT_STORED: KnowledgeViewStored = {\n query: '',\n selectedTag: '',\n selectedAuthor: '',\n selectedCredibility: '',\n selectedSourceType: '',\n}\n\nexport interface KnowledgeViewProps {\n t: (key: KnowledgeLocaleKey) => string\n /** 桥面(shell 的 tradingBridge 服务;未注入时保持 loading 空态)。 */\n bridge: {\n fetchKnowledgeCards: () => Promise<KnowledgeCard[]>\n subscribeTradingEvents: (handlers: { knowledge?: () => void }) => () => void\n }\n}\n\nexport function KnowledgeView({ t, bridge }: KnowledgeViewProps) {\n // 1. 过滤器持久化状态\n const [stored] = useState<KnowledgeViewStored>(() => {\n return readJson<KnowledgeViewStored>(STORE_KEY, DEFAULT_STORED)\n })\n\n const [query, setQuery] = useState(stored.query ?? '')\n const [selectedTag, setSelectedTag] = useState(stored.selectedTag ?? '')\n const [selectedAuthor, setSelectedAuthor] = useState(stored.selectedAuthor ?? '')\n const [selectedCredibility, setSelectedCredibility] = useState(stored.selectedCredibility ?? '')\n const [selectedSourceType, setSelectedSourceType] = useState(stored.selectedSourceType ?? '')\n\n // 2. 卡片数据与选中态\n const [cards, setCards] = useState<KnowledgeCard[]>([])\n const [selectedCard, setSelectedCard] = useState<KnowledgeCard | null>(null)\n const [loading, setLoading] = useState(true)\n\n const graphRef = useRef<KnowledgeGraphHandle | null>(null)\n\n // 桥引用稳定化(防御):上游 render 闭包若每次传新 bridge 字面量,以 bridge 为\n // 依赖的 effect 会自激振荡(每帧 loadCards → setState → 重渲染 → 新 bridge…)。\n // 锁定首见引用(首次挂载的桥即用终生;真换桥实例需重挂视图,语义可接受)。\n // 注意不能写「ref.current !== bridge 时同步」——那等于把每次的新引用都放进 deps。\n const bridgeRef = useRef(bridge)\n if (bridgeRef.current === null) bridgeRef.current = bridge\n const stableBridge = bridgeRef.current\n\n // 同步持久化\n useEffect(() => {\n const nextState: KnowledgeViewStored = {\n query,\n selectedTag,\n selectedAuthor,\n selectedCredibility,\n selectedSourceType,\n }\n writeJson(STORE_KEY, nextState)\n }, [query, selectedTag, selectedAuthor, selectedCredibility, selectedSourceType])\n\n // 拉取知识卡片全集(桥来自 shell 的 tradingBridge 服务;未注入时空态)\n const loadCards = async () => {\n try {\n setLoading(true)\n const data = await bridge.fetchKnowledgeCards()\n setCards(data)\n } catch (e) {\n console.warn('[dsh-trading/knowledge-ui] failed to load cards:', e)\n } finally {\n setLoading(false)\n }\n }\n\n useEffect(() => {\n void loadCards()\n }, [stableBridge])\n\n // SSE 失效信号订阅(issue #30 / P1):knowledge_ingest 入库 / 更新后本视图\n // 实时刷新,无需刷新页面;EventSource 不可用时退化为一次性加载(现状)。\n useEffect(() => stableBridge.subscribeTradingEvents({\n knowledge: () => { void loadCards() },\n }), [stableBridge])\n\n // 3. 提取所有可用筛选候选项\n const { allTags, allAuthors } = useMemo(() => {\n const tagsSet = new Set<string>()\n const authorsSet = new Set<string>()\n for (const c of cards) {\n if (c.source.author) authorsSet.add(c.source.author)\n if (Array.isArray(c.tags)) {\n for (const tag of c.tags) tagsSet.add(tag)\n }\n }\n return {\n allTags: Array.from(tagsSet).sort(),\n allAuthors: Array.from(authorsSet).sort(),\n }\n }, [cards])\n\n // 4. 过滤卡片集合\n const filteredCards = useMemo(() => {\n const q = query.trim().toLowerCase()\n return cards.filter((card) => {\n if (selectedTag && !card.tags.includes(selectedTag)) {\n return false\n }\n if (selectedAuthor && card.source.author !== selectedAuthor) {\n return false\n }\n if (selectedCredibility && card.credibility !== selectedCredibility) {\n return false\n }\n if (selectedSourceType && card.source.type !== selectedSourceType) {\n return false\n }\n if (q) {\n const matchTitle = card.title.toLowerCase().includes(q)\n const matchSummary = card.summary.toLowerCase().includes(q)\n const matchClaims = card.coreClaims.some((c) => c.toLowerCase().includes(q))\n const matchTags = card.tags.some((t) => t.toLowerCase().includes(q))\n const matchAuthor = card.source.author.toLowerCase().includes(q)\n if (!matchTitle && !matchSummary && !matchClaims && !matchTags && !matchAuthor) {\n return false\n }\n }\n return true\n })\n }, [cards, query, selectedTag, selectedAuthor, selectedCredibility, selectedSourceType])\n\n // 5. 纯函数构建图结构数据\n const graphData = useMemo<KnowledgeGraphData>(() => {\n // Obsidian 式 hub 拓扑:标签聚合为 hub 节点,消除单作者大库下的 O(n²) 全配对边\n return buildGraph(filteredCards, { tagHubs: true, coTag: false, coAuthor: false })\n }, [filteredCards])\n\n // 重置过滤\n const handleResetFilters = () => {\n setQuery('')\n setSelectedTag('')\n setSelectedAuthor('')\n setSelectedCredibility('')\n setSelectedSourceType('')\n }\n\n const hasActiveFilters = Boolean(\n query || selectedTag || selectedAuthor || selectedCredibility || selectedSourceType,\n )\n\n // 处理关联卡片点击跳转\n const handleJumpToRelated = (relatedId: string) => {\n const target = cards.find((c) => c.id === relatedId)\n if (target) {\n setSelectedCard(target)\n graphRef.current?.focusNode(target.id)\n }\n }\n\n // 图谱节点选中回调(引用稳定:KnowledgeGraph 的初始化 effect 依赖 onSelectCard,\n // 内联箭头函数会导致实例每帧重建、力导模拟反复清零——画布永远空白)。\n const handleSelectCard = useCallback((card: KnowledgeCard) => {\n setSelectedCard(card)\n }, [])\n\n // 点击标签 hub = 切换标签过滤(Obsidian 交互:点标签即聚焦该主题)\n const handleTagClick = useCallback((tag: string) => {\n setSelectedTag((prev) => (prev === tag ? '' : tag))\n }, [])\n\n // 统计主题簇数量('untagged' = 无标签卡片的簇哨兵,与 KnowledgeGraph 同值)\n const clusterCount = useMemo(() => {\n const clusters = new Set<string>()\n for (const c of filteredCards) {\n clusters.add(c.tags[0] ?? 'untagged')\n }\n return clusters.size\n }, [filteredCards])\n\n return (\n <div className={css.root} data-dshtrading-knowledge-view=\"\">\n {/* 1. 顶部搜索与过滤栏 */}\n <div className={css.toolbar}>\n <div className={css.filtersGroup}>\n <div className={css.searchBox}>\n <span className={css.searchIcon}>\n <IconSearch size={13} />\n </span>\n <input\n type=\"text\"\n className={css.searchInput}\n placeholder={t('kv.search.placeholder')}\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n />\n </div>\n\n {/* 标签过滤 */}\n <select\n className={css.filterSelect}\n value={selectedTag}\n onChange={(e) => setSelectedTag(e.target.value)}\n >\n <option value=\"\">{t('kv.filter.allTags')}</option>\n {allTags.map((tag) => (\n <option key={tag} value={tag}>\n {tag}\n </option>\n ))}\n </select>\n\n {/* 作者过滤 */}\n <select\n className={css.filterSelect}\n value={selectedAuthor}\n onChange={(e) => setSelectedAuthor(e.target.value)}\n >\n <option value=\"\">{t('kv.filter.allAuthors')}</option>\n {allAuthors.map((author) => (\n <option key={author} value={author}>\n {author}\n </option>\n ))}\n </select>\n\n {/* 可信度过滤 */}\n <select\n className={css.filterSelect}\n value={selectedCredibility}\n onChange={(e) => setSelectedCredibility(e.target.value)}\n >\n <option value=\"\">{t('kv.filter.allCredibility')}</option>\n <option value=\"high\">{t('kv.credibility.high')}</option>\n <option value=\"medium\">{t('kv.credibility.medium')}</option>\n <option value=\"low\">{t('kv.credibility.low')}</option>\n </select>\n\n {/* 平台过滤 */}\n <select\n className={css.filterSelect}\n value={selectedSourceType}\n onChange={(e) => setSelectedSourceType(e.target.value)}\n >\n <option value=\"\">{t('kv.filter.allSourceTypes')}</option>\n <option value=\"bilibili\">{t('kv.sourceType.bilibili')}</option>\n <option value=\"wechat\">{t('kv.sourceType.wechat')}</option>\n <option value=\"manual\">{t('kv.sourceType.manual')}</option>\n </select>\n\n {hasActiveFilters && (\n <button type=\"button\" className={css.resetBtn} onClick={handleResetFilters}>\n {t('kv.filter.reset')}\n </button>\n )}\n </div>\n\n <div className={css.statsText}>\n {filteredCards.length} {t('kv.stats.cards')} · {clusterCount} {t('kv.stats.clusters')}\n </div>\n </div>\n\n {/* 2. 主画布区 */}\n <div className={css.mainArea}>\n {cards.length === 0 && !loading ? (\n <div className={css.emptyState}>\n <div className={css.emptyIcon}>\n <IconKnowledge size={40} />\n </div>\n <div className={css.emptyHint}>{t('kv.empty.hint')}</div>\n </div>\n ) : filteredCards.length === 0 && !loading ? (\n <div className={css.emptyState}>\n <div className={css.emptyIcon}>\n <IconKnowledge size={32} />\n </div>\n <div className={css.emptyHint}>{t('kv.empty.filtered')}</div>\n <button type=\"button\" className={css.resetBtn} onClick={handleResetFilters}>\n {t('kv.filter.reset')}\n </button>\n </div>\n ) : (\n <div className={css.graphCanvas}>\n <KnowledgeGraph\n ref={graphRef}\n data={graphData}\n selectedCardId={selectedCard?.id}\n onSelectCard={handleSelectCard}\n onTagClick={handleTagClick}\n />\n </div>\n )}\n\n {/* 3. 详情抽屉 (Drawer) */}\n {selectedCard && (\n <div className={css.drawer} role=\"dialog\" aria-modal=\"false\">\n <div className={css.drawerHeader}>\n <div className={css.drawerTitleGroup}>\n <div className={css.drawerTitle}>{selectedCard.title}</div>\n <div className={css.metaRow}>\n <span className={`${css.badge} ${css.badgePlatform}`}>\n {selectedCard.source.type}\n </span>\n <span\n className={`${css.badge} ${\n selectedCard.credibility === 'high'\n ? css.badgeHigh\n : selectedCard.credibility === 'medium'\n ? css.badgeMedium\n : css.badgeLow\n }`}\n >\n {selectedCard.credibility}\n </span>\n <span>{selectedCard.source.author}</span>\n {selectedCard.source.publishedAt && (\n <span>{selectedCard.source.publishedAt}</span>\n )}\n </div>\n </div>\n <button\n type=\"button\"\n className={css.closeBtn}\n onClick={() => setSelectedCard(null)}\n aria-label=\"Close\"\n >\n ✕\n </button>\n </div>\n\n <div className={css.drawerBody}>\n {/* 核心论点 */}\n <div className={css.section}>\n <div className={css.sectionLabel}>{t('kv.drawer.coreClaims')}</div>\n <ul className={css.claimsList}>\n {selectedCard.coreClaims.map((claim, idx) => (\n <li key={idx}>{claim}</li>\n ))}\n </ul>\n </div>\n\n {/* 事实核查三桶 */}\n <div className={css.section}>\n <div className={css.sectionLabel}>{t('kv.drawer.factCheck')}</div>\n\n {selectedCard.factCheck.verified.length > 0 && (\n <div className={`${css.factBucket} ${css.factVerified}`}>\n <div className={css.bucketTitle}>✅ {t('kv.drawer.verified')}</div>\n <ul className={css.bucketList}>\n {selectedCard.factCheck.verified.map((v, i) => (\n <li key={i}>{v}</li>\n ))}\n </ul>\n </div>\n )}\n\n {selectedCard.factCheck.discrepancies.length > 0 && (\n <div className={`${css.factBucket} ${css.factDiscrepancies}`}>\n <div className={css.bucketTitle}>⚠️ {t('kv.drawer.discrepancies')}</div>\n <ul className={css.bucketList}>\n {selectedCard.factCheck.discrepancies.map((d, i) => (\n <li key={i}>{d}</li>\n ))}\n </ul>\n </div>\n )}\n\n {selectedCard.factCheck.unverifiable.length > 0 && (\n <div className={`${css.factBucket} ${css.factUnverifiable}`}>\n <div className={css.bucketTitle}>❓ {t('kv.drawer.unverifiable')}</div>\n <ul className={css.bucketList}>\n {selectedCard.factCheck.unverifiable.map((u, i) => (\n <li key={i}>{u}</li>\n ))}\n </ul>\n </div>\n )}\n </div>\n\n {/* 可复用经验 */}\n {selectedCard.takeaways.length > 0 && (\n <div className={css.section}>\n <div className={css.sectionLabel}>{t('kv.drawer.takeaways')}</div>\n <ul className={css.claimsList}>\n {selectedCard.takeaways.map((item, idx) => (\n <li key={idx}>{item}</li>\n ))}\n </ul>\n </div>\n )}\n\n {/* 适用边界与避坑 */}\n {selectedCard.boundaries.length > 0 && (\n <div className={css.section}>\n <div className={css.sectionLabel}>{t('kv.drawer.boundaries')}</div>\n <ul className={css.claimsList}>\n {selectedCard.boundaries.map((item, idx) => (\n <li key={idx}>{item}</li>\n ))}\n </ul>\n </div>\n )}\n\n {/* 主题标签 */}\n <div className={css.section}>\n <div className={css.sectionLabel}>{t('kv.filter.tag')}</div>\n <div className={css.tagPills}>\n {selectedCard.tags.map((tag) => (\n <span key={tag} className={css.tagPill}>\n #{tag}\n </span>\n ))}\n </div>\n </div>\n\n {/* 关联标的 */}\n {selectedCard.tickers && selectedCard.tickers.length > 0 && (\n <div className={css.section}>\n <div className={css.sectionLabel}>{t('kv.drawer.tickers')}</div>\n <div className={css.tagPills}>\n {selectedCard.tickers.map((sym) => (\n <span key={sym} className={css.tagPill}>\n ${sym}\n </span>\n ))}\n </div>\n </div>\n )}\n\n {/* 显式关联卡片 */}\n {selectedCard.related && selectedCard.related.length > 0 && (\n <div className={css.section}>\n <div className={css.sectionLabel}>{t('kv.drawer.related')}</div>\n {selectedCard.related.map((relId) => {\n const relCard = cards.find((c) => c.id === relId)\n return (\n <div\n key={relId}\n className={css.relatedItem}\n onClick={() => handleJumpToRelated(relId)}\n >\n 🔗 {relCard?.title ?? relId}\n </div>\n )\n })}\n </div>\n )}\n </div>\n\n {/* 底部打开原始链接按钮 */}\n {selectedCard.source.url && (\n <div className={css.drawerFooter}>\n <a\n href={selectedCard.source.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={css.openSourceBtn}\n >\n {t('kv.drawer.openSource')} ↗\n </a>\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n )\n}\n","/**\n * client-ui-knowledge client 词典(纯数据模块:零运行时依赖)。\n *\n * 单一来源:本包 client apply 注册 zh/en(typed register 编译期校验键位);\n * packages/dsh-i18n 语言包构建期 import 本模块注册 zh-CN;scripts/i18n-audit.mjs\n * 静态加载本模块做 zh/en 键对齐与占位符对齐门禁。\n */\nimport type { KnowledgeLocaleKey } from './contract.ts'\n\nexport const zh: Record<KnowledgeLocaleKey, string> = {\n 'kv.search.placeholder': '搜索卡片标题、摘要、标签...',\n 'kv.filter.tag': '主题标签',\n 'kv.filter.allTags': '全部标签',\n 'kv.filter.author': '来源作者',\n 'kv.filter.allAuthors': '全部作者',\n 'kv.filter.credibility': '可信度',\n 'kv.filter.allCredibility': '全部评级',\n 'kv.filter.sourceType': '来源平台',\n 'kv.filter.allSourceTypes': '全部平台',\n 'kv.filter.reset': '重置筛选',\n 'kv.credibility.high': '高可信度 (High)',\n 'kv.credibility.medium': '中可信度 (Medium)',\n 'kv.credibility.low': '低可信度 (Low)',\n 'kv.sourceType.bilibili': 'B站 (Bilibili)',\n 'kv.sourceType.wechat': '微信公众号 (WeChat)',\n 'kv.sourceType.manual': '手工录入 (Manual)',\n 'kv.empty.hint': '知识库暂无内容。把 B 站视频或公众号文章链接发给助手,说「沉淀到知识库」即可入库。',\n 'kv.empty.filtered': '未找到匹配当前筛选条件的知识卡片',\n 'kv.stats.cards': '张卡片',\n 'kv.stats.clusters': '个主题簇',\n 'kv.drawer.title': '知识卡片详情',\n 'kv.drawer.coreClaims': '核心论点',\n 'kv.drawer.factCheck': '事实核查 (三桶分类)',\n 'kv.drawer.verified': '经核实真实 (Verified)',\n 'kv.drawer.discrepancies': '有出入/夸大 (Discrepancies)',\n 'kv.drawer.unverifiable': '无法核实 (Unverifiable)',\n 'kv.drawer.takeaways': '可复用分析经验',\n 'kv.drawer.boundaries': '适用边界与避坑',\n 'kv.drawer.tickers': '关联标的',\n 'kv.drawer.related': '关联卡片',\n 'kv.drawer.openSource': '打开原始链接',\n 'kv.drawer.publishedAt': '发布日期',\n 'kv.drawer.author': '来源作者',\n}\n\nexport const en: Record<KnowledgeLocaleKey, string> = {\n 'kv.search.placeholder': 'Search title, summary, tags...',\n 'kv.filter.tag': 'Topic Tag',\n 'kv.filter.allTags': 'All Tags',\n 'kv.filter.author': 'Author',\n 'kv.filter.allAuthors': 'All Authors',\n 'kv.filter.credibility': 'Credibility',\n 'kv.filter.allCredibility': 'All Credibility',\n 'kv.filter.sourceType': 'Platform',\n 'kv.filter.allSourceTypes': 'All Platforms',\n 'kv.filter.reset': 'Reset',\n 'kv.credibility.high': 'High',\n 'kv.credibility.medium': 'Medium',\n 'kv.credibility.low': 'Low',\n 'kv.sourceType.bilibili': 'Bilibili',\n 'kv.sourceType.wechat': 'WeChat',\n 'kv.sourceType.manual': 'Manual',\n 'kv.empty.hint': 'No knowledge cards yet. Send a Bilibili video or WeChat article link to the assistant and say \"Save to knowledge base\" to ingest.',\n 'kv.empty.filtered': 'No knowledge cards match the current filter criteria',\n 'kv.stats.cards': 'Cards',\n 'kv.stats.clusters': 'Clusters',\n 'kv.drawer.title': 'Knowledge Card Details',\n 'kv.drawer.coreClaims': 'Core Claims',\n 'kv.drawer.factCheck': 'Fact Check (3 Buckets)',\n 'kv.drawer.verified': 'Verified',\n 'kv.drawer.discrepancies': 'Discrepancies',\n 'kv.drawer.unverifiable': 'Unverifiable',\n 'kv.drawer.takeaways': 'Reusable Takeaways',\n 'kv.drawer.boundaries': 'Boundaries & Pitfalls',\n 'kv.drawer.tickers': 'Related Tickers',\n 'kv.drawer.related': 'Related Cards',\n 'kv.drawer.openSource': 'Open Original URL',\n 'kv.drawer.publishedAt': 'Published At',\n 'kv.drawer.author': 'Author',\n}\n","/**\n * client-ui-knowledge, browser half (issue #34 / P5 拆包).\n *\n * 接入面(一切皆插件):ctx.inject(['tradingStageViews']) 把「知识库」视图注册\n * 进中栏注册表;桥与 SSE 经 tradingBridge 服务(shell 提供)inject 进视图 props。\n * shell 未安装时 inject 回调不触发,本插件静默无 UI(可选依赖语义)。\n */\nimport type { Context as ClientContext } from '@deepseek-ai/cordis'\nimport type { ComponentType } from 'react'\nimport { KnowledgeView } from './KnowledgeView.tsx'\nimport './contract.ts'\n\nimport { en, zh } from './locales.ts'\nconst NS = 'dshtrading.knowledge'\n\n/** Required services:slot/locale 官方服务 + 视图注册面 + 桥面(后两者由\n * client-ui-trading client 半 provide;本插件 apply 同步访问 ctx.locale/ctx.slots,\n * 故必须声明;tradingStageViews/tradingBridge 在 apply 内 ctx.inject 异步等待,\n * 不进静态名单——shell 未安装时挂起无害,可选依赖语义)。 */\nexport const inject = ['slots', 'locale']\n\n/** tradingStageViews / tradingBridge 的最小结构面(避免对 shell 包类型依赖)。 */\ninterface StageViewsService {\n register(definition: {\n id: string\n titleKey: string\n order?: number\n render: ComponentType<{ t: (key: string) => string; view: string }>\n }): void\n}\ninterface BridgeService {\n fetchKnowledgeCards(): Promise<Array<Record<string, unknown>>>\n subscribeTradingEvents(handlers: Record<string, () => void>): () => void\n}\n\nexport function apply(ctx: ClientContext): void {\n const t = ctx.locale.bind(NS)\n ctx.effect(() => ctx.locale.register(NS, { zh, en }), 'dsh-trading-knowledge-view: dictionaries')\n\n // 中栏「知识库」tab:视图组件在 render 闭包里捕获 t 与桥。\n // bridge/t 必须 apply 期只建一次(引用稳定):render 闭包里每次新建字面量会让\n // 视图 useEffect([bridge]) 自激振荡——每帧重拉数据 + force-graph 每帧销毁重建,\n // 画布永远画不出来(2026-09-01 实证 fetch 风暴 ~80 req/s)。\n ctx.inject(['tradingStageViews', 'tradingBridge'] as never, (scope) => {\n const faces = scope as unknown as { tradingStageViews: StageViewsService; tradingBridge: BridgeService }\n const bridge = {\n fetchKnowledgeCards: () => faces.tradingBridge.fetchKnowledgeCards() as never,\n subscribeTradingEvents: (handlers) => faces.tradingBridge.subscribeTradingEvents(handlers),\n }\n faces.tradingStageViews.register({\n id: 'knowledge',\n titleKey: 'stage.knowledge',\n order: 20,\n render: (props) => KnowledgeView({\n t: t as unknown as (key: string) => string,\n view: props.view,\n bridge,\n }),\n })\n })\n}\n"],"x_google_ignoreList":[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190],"mappings":"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"}