@dshtrading/client-ui-knowledge 0.6.1 → 0.6.3
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.
- package/lib/client/contract.d.ts +1 -1
- package/lib/client/locales.js +2 -14
- package/lib/client.js +117 -81
- package/lib/client.js.map +1 -1
- package/package.json +4 -5
package/lib/client.js.map
CHANGED
|
@@ -1 +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","_toPropertyKey","_iterableToArrayLimit","_nonIterableRest","_slicedToArray","_unsupportedIterableToArray","_toPrimitive","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","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/authors.js","../../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.5/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/authors.ts\nconst AUTHOR_ALIASES = Object.freeze({\n\t\"鳄鱼派\": \"鳄鱼派(像鳄鱼一样思考)\",\n\t\"鳄鱼派(公众号:像鳄鱼一样思考)\": \"鳄鱼派(像鳄鱼一样思考)\",\n\t\"像鳄鱼一样思考(鳄鱼派)\": \"鳄鱼派(像鳄鱼一样思考)\",\n\t\"zcl × DSH Master(自有分析,非外部素材)\": \"zcl × DSH Master(自有分析)\",\n\t\"zcl × DSH Master(自有框架综合,非外部素材)\": \"zcl × DSH Master(自有分析)\",\n\t\"山基说(素材提炼)/ zcl(分层核查,事实依据 facts/oil.md、facts/fed.md)\": \"山基说\",\n\t\"小鹿投研日记(转播大摩闭门会 9.14,发言人Robin/Steven/钟申/Jenny;Laura股票部分视频截断未录)\": \"小鹿投研日记\",\n\t\"中金点睛(刘刚、杨萱庭)\": \"中金点睛\"\n});\n/** 把作者名归一到规范名;未登记的写法原样返回(仅去除首尾空白)。 */\nfunction canonicalAuthor(author) {\n\tconst trimmed = author.trim();\n\treturn AUTHOR_ALIASES[trimmed] ?? trimmed;\n}\n/**\n* 返回作者已归一的卡片副本;已是规范名时原样返回同一引用。\n* 非破坏性:不修改传入卡片。缺 `source`/`author` 的畸形条目按原样放行——文件读取\n* 层不为历史脏数据抛错,结构校验只在入库(`validateKnowledgeCard`)发生。\n*/\nfunction canonicalizeCardAuthor(card) {\n\tif (!card || typeof card !== \"object\" || !card.source || typeof card.source.author !== \"string\") return card;\n\tconst canonical = canonicalAuthor(card.source.author);\n\tif (canonical === card.source.author) return card;\n\treturn {\n\t\t...card,\n\t\tsource: {\n\t\t\t...card.source,\n\t\t\tauthor: canonical\n\t\t}\n\t};\n}\n//#endregion\nexport { AUTHOR_ALIASES, canonicalAuthor, canonicalizeCardAuthor };\n","//#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/**\n* 只计数的图概要(knowledge_graph 工具专用):与默认模式 buildGraph 的\n* { nodes.length, links.length } 严格同值,但不物化节点/边对象——\n* related 边 O(E) 键去重、co-author 边按作者分组 Σk(k-1)/2(同作者对唯一)、\n* co-tag 边按标签索引逐标签枚举对并全局去重 O(Σ k_t²)。工具只要规模数字时\n* 避免全配对边的对象分配(215 卡 ≈ 2 万+边对象的构建与丢弃)。\n*/\nfunction countGraphSummary(cards) {\n\tif (!cards || cards.length === 0) return {\n\t\tnodeCount: 0,\n\t\tedgeCount: 0\n\t};\n\tconst ids = /* @__PURE__ */ new Set();\n\tfor (const c of cards) ids.add(c.id);\n\tconst related = /* @__PURE__ */ new Set();\n\tfor (const card of cards) {\n\t\tif (!Array.isArray(card.related)) continue;\n\t\tfor (const targetId of card.related) {\n\t\t\tif (!ids.has(targetId) || targetId === card.id) continue;\n\t\t\tconst [a, b] = card.id < targetId ? [card.id, targetId] : [targetId, card.id];\n\t\t\trelated.add(`${a}:${b}`);\n\t\t}\n\t}\n\tconst byTag = /* @__PURE__ */ new Map();\n\tfor (const card of cards) {\n\t\tconst seen = /* @__PURE__ */ new Set();\n\t\tfor (const tag of card.tags) {\n\t\t\tif (seen.has(tag)) continue;\n\t\t\tseen.add(tag);\n\t\t\tconst members = byTag.get(tag);\n\t\t\tif (members === void 0) byTag.set(tag, [card.id]);\n\t\t\telse members.push(card.id);\n\t\t}\n\t}\n\tconst coTag = /* @__PURE__ */ new Set();\n\tfor (const members of byTag.values()) for (let i = 0; i < members.length; i++) for (let j = i + 1; j < members.length; j++) {\n\t\tconst a = members[i];\n\t\tconst b = members[j];\n\t\tcoTag.add(a < b ? `${a}:${b}` : `${b}:${a}`);\n\t}\n\tconst byAuthor = /* @__PURE__ */ new Map();\n\tfor (const card of cards) {\n\t\tconst author = card.source.author.trim();\n\t\tif (!author || author === \"manual\" || author === \"手工\") continue;\n\t\tbyAuthor.set(author, (byAuthor.get(author) ?? 0) + 1);\n\t}\n\tlet coAuthor = 0;\n\tfor (const k of byAuthor.values()) coAuthor += k * (k - 1) / 2;\n\treturn {\n\t\tnodeCount: cards.length,\n\t\tedgeCount: related.size + coTag.size + coAuthor\n\t};\n}\n//#endregion\nexport { buildGraph, countGraphSummary };\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\nconst 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(obj => !obj[colorField]).forEach(obj => {\n obj[colorField] = autoColorScale(colorByAccessor(obj));\n });\n}\n\nfunction getDagDepths ({\n nodes,\n links\n}, idAccessor, {\n nodeFilter = () => true,\n onLoopError = loopIds => {\n throw `Invalid DAG structure! Found cycle in node path: ${loopIds.join(' -> ')}.`;\n }\n} = {}) {\n // linked graph\n const graph = {};\n nodes.forEach(node => graph[idAccessor(node)] = {\n data: node,\n out: [],\n depth: -1,\n skip: !nodeFilter(node)\n });\n links.forEach(({\n source,\n target\n }) => {\n const sourceId = getNodeId(source);\n const targetId = getNodeId(target);\n if (!graph.hasOwnProperty(sourceId)) throw `Missing source node with id: ${sourceId}`;\n if (!graph.hasOwnProperty(targetId)) throw `Missing target node with id: ${targetId}`;\n const sourceNode = graph[sourceId];\n const targetNode = graph[targetId];\n sourceNode.out.push(targetNode);\n function getNodeId(node) {\n return typeof node === 'object' ? idAccessor(node) : node;\n }\n });\n const foundLoops = [];\n traverse(Object.values(graph));\n const nodeDepths = Object.assign({}, ...Object.entries(graph).filter(([, node]) => !node.skip).map(([id, node]) => ({\n [id]: node.depth\n })));\n return nodeDepths;\n function traverse(nodes, nodeStack = [], currentDepth = 0) {\n for (let i = 0, l = nodes.length; i < l; i++) {\n const node = nodes[i];\n if (nodeStack.indexOf(node) !== -1) {\n const loop = [...nodeStack.slice(nodeStack.indexOf(node)), node].map(d => idAccessor(d.data));\n if (!foundLoops.some(foundLoop => foundLoop.length === loop.length && foundLoop.every((id, idx) => id === loop[idx]))) {\n foundLoops.push(loop);\n onLoopError(loop);\n }\n continue;\n }\n if (currentDepth > node.depth) {\n // Don't unnecessarily revisit chunks of the graph\n node.depth = currentDepth;\n traverse(node.out, [...nodeStack, node], currentDepth + (node.skip ? 0 : 1));\n }\n }\n }\n}\n\n//\n\nconst DAG_LEVEL_NODE_RATIO = 2;\n\n// whenever styling props are changed that require a canvas redraw\nconst notifyRedraw = (_, state) => state.onNeedsRedraw && state.onNeedsRedraw();\nconst updDataPhotons = (_, state) => {\n if (!state.isShadow) {\n // Add photon particles\n const linkParticlesAccessor = accessorFn(state.linkDirectionalParticles);\n state.graphData.links.forEach(link => {\n const numPhotons = Math.round(Math.abs(linkParticlesAccessor(link)));\n if (numPhotons) {\n link.__photons = [...Array(numPhotons)].map(() => ({}));\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(_, state) {\n state.engineRunning = false; // Pause simulation\n updDataPhotons(_, state);\n }\n },\n dagMode: {\n onChange(dagMode, state) {\n // td, bu, lr, rl, radialin, radialout\n !dagMode && (state.graphData.nodes || []).forEach(n => n.fx = n.fy = undefined); // unfix nodes when disabling dag mode\n }\n },\n dagLevelDistance: {},\n dagNodeFilter: {\n default: node => true\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: () => 'replace',\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: () => 'replace',\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(alphaDecay, state) {\n state.forceLayout.alphaDecay(alphaDecay);\n }\n },\n d3AlphaTarget: {\n default: 0,\n triggerUpdate: false,\n onChange(alphaTarget, state) {\n state.forceLayout.alphaTarget(alphaTarget);\n }\n },\n d3VelocityDecay: {\n default: 0.4,\n triggerUpdate: false,\n 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: () => {},\n triggerUpdate: false\n },\n onFinishUpdate: {\n default: () => {},\n triggerUpdate: false\n },\n onEngineTick: {\n default: () => {},\n triggerUpdate: false\n },\n onEngineStop: {\n 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 (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 (state) {\n state.forceLayout.alpha(1);\n this.resetCountdown();\n return this;\n },\n // reset cooldown state\n resetCountdown: function (state) {\n state.cntTicks = 0;\n state.startTickTime = new Date();\n state.engineRunning = true;\n return this;\n },\n isEngineRunning: state => !!state.engineRunning,\n tickFrame: function (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 const getVisibility = accessorFn(state.nodeVisibility);\n const getVal = accessorFn(state.nodeVal);\n const getColor = accessorFn(state.nodeColor);\n const getNodeCanvasObjectMode = accessorFn(state.nodeCanvasObjectMode);\n const ctx = state.ctx;\n\n // Draw wider nodes by 1px on shadow canvas for more precise hovering (due to boundary anti-aliasing)\n const padAmount = state.isShadow / state.globalScale;\n const visibleNodes = state.graphData.nodes.filter(getVisibility);\n ctx.save();\n visibleNodes.forEach(node => {\n const 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 const 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 const getVisibility = accessorFn(state.linkVisibility);\n const getColor = accessorFn(state.linkColor);\n const getWidth = accessorFn(state.linkWidth);\n const getLineDash = accessorFn(state.linkLineDash);\n const getCurvature = accessorFn(state.linkCurvature);\n const getLinkCanvasObjectMode = accessorFn(state.linkCanvasObjectMode);\n const ctx = state.ctx;\n\n // Draw wider lines by 2px on shadow canvas for more precise hovering (due to boundary anti-aliasing)\n const padAmount = state.isShadow * 2;\n const visibleLinks = state.graphData.links.filter(getVisibility);\n visibleLinks.forEach(calcLinkControlPoints); // calculate curvature control points for all visible links\n\n let beforeCustomLinks = [],\n afterCustomLinks = [],\n defaultPaintLinks = visibleLinks;\n if (state.linkCanvasObject) {\n const replaceCustomLinks = [],\n otherCustomLinks = [];\n visibleLinks.forEach(d => ({\n before: beforeCustomLinks,\n after: afterCustomLinks,\n replace: replaceCustomLinks\n }[getLinkCanvasObjectMode(d)] || otherCustomLinks).push(d));\n defaultPaintLinks = [...beforeCustomLinks, ...afterCustomLinks, ...otherCustomLinks];\n beforeCustomLinks = beforeCustomLinks.concat(replaceCustomLinks);\n }\n\n // Custom link before paints\n ctx.save();\n beforeCustomLinks.forEach(link => state.linkCanvasObject(link, ctx, state.globalScale));\n ctx.restore();\n\n // Bundle strokes per unique color/width/dash for performance optimization\n const linksPerColor = indexBy(defaultPaintLinks, [getColor, getWidth, getLineDash]);\n ctx.save();\n Object.entries(linksPerColor).forEach(([color, linksPerWidth]) => {\n const lineColor = !color || color === 'undefined' ? 'rgba(0,0,0,0.15)' : color;\n Object.entries(linksPerWidth).forEach(([width, linesPerLineDash]) => {\n const lineWidth = (width || 1) / state.globalScale + padAmount;\n Object.entries(linesPerLineDash).forEach(([dashSegments, links]) => {\n const lineDashSegments = getLineDash(links[0]);\n ctx.beginPath();\n links.forEach(link => {\n const start = link.source;\n const 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 const 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'](...controlPoints, 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(link => state.linkCanvasObject(link, ctx, state.globalScale));\n ctx.restore();\n\n //\n\n function calcLinkControlPoints(link) {\n const curvature = getCurvature(link);\n if (!curvature) {\n // straight line\n link.__controlPoints = null;\n return;\n }\n const start = link.source;\n const end = link.target;\n if (!start || !end || !start.hasOwnProperty('x') || !end.hasOwnProperty('x')) return; // skip invalid link\n\n const 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 const a = Math.atan2(end.y - start.y, end.x - start.x); // line angle\n const d = l * curvature; // control point distance\n\n const 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 const d = curvature * 70;\n link.__controlPoints = [end.x, end.y - d, end.x + d, end.y];\n }\n }\n }\n function paintArrows() {\n const ARROW_WH_RATIO = 1.6;\n const ARROW_VLEN_RATIO = 0.2;\n const getLength = accessorFn(state.linkDirectionalArrowLength);\n const getRelPos = accessorFn(state.linkDirectionalArrowRelPos);\n const getVisibility = accessorFn(state.linkVisibility);\n const getColor = accessorFn(state.linkDirectionalArrowColor || state.linkColor);\n const getNodeVal = accessorFn(state.nodeVal);\n const ctx = state.ctx;\n ctx.save();\n state.graphData.links.filter(getVisibility).forEach(link => {\n const arrowLength = getLength(link);\n if (!arrowLength || arrowLength < 0) return;\n const start = link.source;\n const end = link.target;\n if (!start || !end || !start.hasOwnProperty('x') || !end.hasOwnProperty('x')) return; // skip invalid link\n\n const startR = Math.sqrt(Math.max(0, getNodeVal(start) || 1)) * state.nodeRelSize;\n const endR = Math.sqrt(Math.max(0, getNodeVal(end) || 1)) * state.nodeRelSize;\n const arrowRelPos = Math.min(1, Math.max(0, getRelPos(link)));\n const arrowColor = getColor(link) || 'rgba(0,0,0,0.28)';\n const arrowHalfWidth = arrowLength / ARROW_WH_RATIO / 2;\n\n // Construct bezier for curved lines\n const bzLine = link.__controlPoints && new Bezier(start.x, start.y, ...link.__controlPoints, end.x, end.y);\n const getCoordsAlongLine = bzLine ? t => bzLine.get(t) // get position along bezier line\n : t => ({\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 const lineLen = bzLine ? bzLine.length() : Math.sqrt(Math.pow(end.x - start.x, 2) + Math.pow(end.y - start.y, 2));\n const posAlongLine = startR + arrowLength + (lineLen - startR - endR - arrowLength) * arrowRelPos;\n const arrowHead = getCoordsAlongLine(posAlongLine / lineLen);\n const arrowTail = getCoordsAlongLine((posAlongLine - arrowLength) / lineLen);\n const arrowTailVertex = getCoordsAlongLine((posAlongLine - arrowLength * (1 - ARROW_VLEN_RATIO)) / lineLen);\n const 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 const getNumPhotons = accessorFn(state.linkDirectionalParticles);\n const getSpeed = accessorFn(state.linkDirectionalParticleSpeed);\n const getOffset = accessorFn(state.linkDirectionalParticleOffset);\n const getDiameter = accessorFn(state.linkDirectionalParticleWidth);\n const getVisibility = accessorFn(state.linkVisibility);\n const getColor = accessorFn(state.linkDirectionalParticleColor || state.linkColor);\n const ctx = state.ctx;\n ctx.save();\n state.graphData.links.filter(getVisibility).forEach(link => {\n const numCyclePhotons = getNumPhotons(link);\n if (!link.hasOwnProperty('__photons') || !link.__photons.length) return;\n const start = link.source;\n const end = link.target;\n if (!start || !end || !start.hasOwnProperty('x') || !end.hasOwnProperty('x')) return; // skip invalid link\n\n const particleSpeed = getSpeed(link);\n const particleOffset = Math.abs(getOffset(link));\n const photons = link.__photons || [];\n const photonR = Math.max(0, getDiameter(link) / 2) / Math.sqrt(state.globalScale);\n const photonColor = getColor(link) || 'rgba(0,0,0,0.28)';\n ctx.fillStyle = photonColor;\n\n // Construct bezier for curved lines\n const bzLine = link.__controlPoints ? new Bezier(start.x, start.y, ...link.__controlPoints, end.x, end.y) : null;\n let cyclePhotonIdx = 0;\n let needsCleanup = false; // whether some photons need to be removed from list\n photons.forEach(photon => {\n const 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 const photonPosRatio = photon.__progressRatio;\n const 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(photon => !photon.__singleHop || photon.__progressRatio <= 1 && photon.__progressRatio >= 0);\n }\n });\n ctx.restore();\n }\n },\n emitParticle: function (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: () => ({\n forceLayout: forceSimulation().force('link', forceLink()).force('charge', forceManyBody()).force('center', forceCenter()).force('dagRadial', null).stop(),\n engineRunning: false\n }),\n init(canvasCtx, state) {\n // Main canvas object to manipulate\n state.ctx = canvasCtx;\n },\n 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(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 const linkForce = state.forceLayout.force('link');\n if (linkForce) {\n linkForce.id(d => d[state.nodeId]).links(state.graphData.links);\n }\n\n // setup dag force constraints\n const nodeDepths = state.dagMode && getDagDepths(state.graphData, node => node[state.nodeId], {\n nodeFilter: state.dagNodeFilter,\n onLoopError: state.onDagError || undefined\n });\n const maxDepth = Math.max(...Object.values(nodeDepths || []));\n const 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 const resetProp = ['lr', 'rl'].includes(changedProps.dagMode) ? 'fx' : 'fy';\n state.graphData.nodes.filter(state.dagNodeFilter).forEach(node => delete node[resetProp]);\n }\n\n // Fix nodes to x,y for dag mode\n if (['lr', 'rl', 'td', 'bu'].includes(state.dagMode)) {\n const invert = ['rl', 'bu'].includes(state.dagMode);\n const fixFn = node => (nodeDepths[node[state.nodeId]] - maxDepth / 2) * dagLevelDistance * (invert ? -1 : 1);\n const resetProp = ['lr', 'rl'].includes(state.dagMode) ? 'fx' : 'fy';\n state.graphData.nodes.filter(state.dagNodeFilter).forEach(node => node[resetProp] = fixFn(node));\n }\n\n // Use radial force for radial dags\n state.forceLayout.force('dagRadial', ['radialin', 'radialout'].indexOf(state.dagMode) !== -1 ? forceRadial(node => {\n const nodeDepth = nodeDepths[node[state.nodeId]] || -1;\n return (state.dagMode === 'radialin' ? maxDepth - nodeDepth : nodeDepth) * dagLevelDistance;\n }).strength(node => state.dagNodeFilter(node) ? 1 : 0) : null);\n for (let 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 const propNames = kapsulePropNames instanceof Array ? kapsulePropNames : [kapsulePropNames];\n const dummyK = new kapsuleType(); // To extract defaults\n dummyK._destructor && dummyK._destructor();\n return {\n linkProp: function (prop) {\n // link property config\n return {\n default: dummyK[prop](),\n onChange(v, state) {\n propNames.forEach(propName => state[propName][prop](v));\n },\n triggerUpdate: false\n };\n },\n linkMethod: function (method) {\n // link method pass-through\n return function (state, ...args) {\n const returnVals = [];\n propNames.forEach(propName => {\n const kapsuleInstance = state[propName];\n const returnVal = kapsuleInstance[method](...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\nconst HOVER_CANVAS_THROTTLE_DELAY = 800; // ms to throttle shadow canvas updates for perf improvement\nconst ZOOM2NODES_FACTOR = 4;\nconst DRAG_CLICK_TOLERANCE_PX = 5; // How many px can a node be accidentally dragged before disabling the click\n\n// Expose config from forceGraph\nconst bindFG = linkKapsule('forceGraph', CanvasForceGraph);\nconst bindBoth = linkKapsule(['forceGraph', 'shadowGraph'], CanvasForceGraph);\nconst linkedProps = Object.assign(...['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(p => ({\n [p]: bindFG.linkProp(p)\n})), ...['nodeRelSize', 'nodeId', 'nodeVal', 'nodeVisibility', 'linkSource', 'linkTarget', 'linkVisibility', 'linkCurvature'].map(p => ({\n [p]: bindBoth.linkProp(p)\n})));\nconst linkedMethods = Object.assign(...['d3Force', 'd3ReheatSimulation', 'emitParticle'].map(p => ({\n [p]: bindFG.linkMethod(p)\n})));\nfunction adjustCanvasSize(state) {\n if (state.canvas) {\n let curWidth = state.canvas.width;\n let curHeight = state.canvas.height;\n if (curWidth === 300 && curHeight === 150) {\n // Default canvas dimensions\n curWidth = curHeight = 0;\n }\n const pxScale = window.devicePixelRatio; // 2 on retina displays\n curWidth /= pxScale;\n curHeight /= pxScale;\n\n // Resize canvases\n [state.canvas, state.shadowCanvas].forEach(canvas => {\n // Element size\n canvas.style.width = `${state.width}px`;\n canvas.style.height = `${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 const 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 const 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: {\n width: {\n default: window.innerWidth,\n onChange: (_, state) => adjustCanvasSize(state),\n triggerUpdate: false\n },\n height: {\n default: window.innerHeight,\n onChange: (_, state) => adjustCanvasSize(state),\n triggerUpdate: false\n },\n graphData: {\n default: {\n nodes: [],\n links: []\n },\n onChange: (d, state) => {\n // Wipe color registry if all objects are new\n [d.nodes, d.links].every(arr => (arr || []).every(d => !d.hasOwnProperty('__indexColor'))) && 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({\n type,\n objs\n }) {\n objs.filter(d => {\n if (!d.hasOwnProperty('__indexColor')) return true;\n const cur = state.colorTracker.lookup(d.__indexColor);\n return !cur || !cur.hasOwnProperty('d') || cur.d !== d;\n }).forEach(d => {\n // store object lookup color\n d.__indexColor = state.colorTracker.register({\n type,\n d\n });\n });\n }\n },\n triggerUpdate: false\n },\n backgroundColor: {\n 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(paintFn, state) {\n state.shadowGraph.nodeCanvasObject(!paintFn ? null : (node, ctx, globalScale) => paintFn(node, node.__indexColor, ctx, globalScale));\n state.flushShadowCanvas && state.flushShadowCanvas();\n },\n triggerUpdate: false\n },\n linkPointerAreaPaint: {\n onChange(paintFn, state) {\n state.shadowGraph.linkCanvasObject(!paintFn ? null : (link, ctx, globalScale) => paintFn(link, link.__indexColor, ctx, globalScale));\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(minZoom, state) {\n state.zoom.scaleExtent([minZoom, state.zoom.scaleExtent()[1]]);\n },\n triggerUpdate: false\n },\n maxZoom: {\n default: 1000,\n 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(_, state) {\n state.hoverObj = null;\n },\n triggerUpdate: false\n },\n autoPauseRedraw: {\n default: true,\n triggerUpdate: false\n },\n onNodeDrag: {\n default: () => {},\n triggerUpdate: false\n },\n onNodeDragEnd: {\n 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 },\n aliases: {\n // Prop names supported for backwards compatibility\n stopAnimation: 'pauseAnimation'\n },\n methods: {\n graph2ScreenCoords: function (state, x, y) {\n const 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 (state, x, y) {\n const 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 (state, x, y, transitionDuration) {\n if (!state.canvas) return null; // no canvas yet\n\n // setter\n if (x !== undefined || y !== undefined) {\n const finalPos = Object.assign({}, x !== undefined ? {\n x\n } : {}, y !== undefined ? {\n 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 const 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({\n x,\n y\n }) {\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 (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\n }, transitionDuration).easing(Easing.Quadratic.Out).onUpdate(({\n k\n }) => setZoom(k)).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 (state, transitionDuration = 0, padding = 10, ...bboxArgs) {\n const bbox = this.getGraphBbox(...bboxArgs);\n if (bbox) {\n const center = {\n x: (bbox.x[0] + bbox.x[1]) / 2,\n y: (bbox.y[0] + bbox.y[1]) / 2\n };\n const 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 (state, nodeFilter = () => true) {\n const getVal = accessorFn(state.nodeVal);\n const getR = node => Math.sqrt(Math.max(0, getVal(node) || 1)) * state.nodeRelSize;\n const nodesPos = state.graphData.nodes.filter(nodeFilter).map(node => ({\n x: node.x,\n y: node.y,\n r: getR(node)\n }));\n return !nodesPos.length ? null : {\n x: [min(nodesPos, node => node.x - node.r), max(nodesPos, node => node.x + node.r)],\n y: [min(nodesPos, node => node.y - node.r), max(nodesPos, node => node.y + node.r)]\n };\n },\n pauseAnimation: function (state) {\n if (state.animationFrameRequestId) {\n cancelAnimationFrame(state.animationFrameRequestId);\n state.animationFrameRequestId = null;\n }\n return this;\n },\n resumeAnimation: function (state) {\n if (!state.animationFrameRequestId) {\n this._animationCycle();\n }\n return this;\n },\n _destructor: function () {\n this.pauseAnimation();\n this.graphData({\n nodes: [],\n links: []\n });\n },\n ...linkedMethods\n },\n stateInit: () => ({\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 init: function (domNode, state) {\n // Wipe DOM\n domNode.innerHTML = '';\n\n // Container anchor for canvas and tooltip\n const 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 const ctx = state.canvas.getContext('2d');\n const shadowCtx = state.shadowCanvas.getContext('2d', {\n willReadFrequently: true\n });\n const pointerPos = {\n x: -1e12,\n y: -1e12\n };\n const getObjUnderPointer = () => {\n let obj = null;\n const pxScale = window.devicePixelRatio;\n const 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(() => {\n if (!state.enableNodeDrag) {\n return null;\n }\n const obj = getObjUnderPointer();\n return obj && obj.type === 'Node' ? obj.d : null; // Only drag nodes\n }).on('start', ev => {\n const 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', ev => {\n const obj = ev.subject;\n const initPos = obj.__initialDragPos;\n const dragPos = ev;\n const k = zoomTransform(state.canvas).k;\n const 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(c => obj[`f${c}`] = obj[c] = initPos[c] + (dragPos[c] - initPos[c]) / k);\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(k => (ev[k] - initPos[k]) ** 2)))) 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', ev => {\n const obj = ev.subject;\n const initPos = obj.__initialDragPos;\n const 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(ev =>\n // disable zoom interaction\n !ev.button && state.enableZoomPanInteraction && (ev.type !== 'wheel' || accessorFn(state.enableZoomInteraction)(ev)) && (ev.type === 'wheel' || accessorFn(state.enablePanInteraction)(ev))).on('zoom', ev => {\n const t = ev.transform;\n [ctx, shadowCtx].forEach(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({\n ...t,\n ...this.centerAt()\n }); // report x,y coordinates relative to canvas center\n state.needsRedraw = true;\n }).on('end', ev => {\n state.isPointerDragging = false;\n state.onZoomEnd && state.onZoomEnd({\n ...ev.transform,\n ...this.centerAt()\n });\n });\n adjustCanvasSize(state);\n state.forceGraph.onNeedsRedraw(() => state.needsRedraw = true).onFinishUpdate(() => {\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(evType => container.addEventListener(evType, 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(m => Math.abs(m) > 1)) // relax drag trigger sensitivity on non-mouse (touch/pen) events\n && (state.isPointerDragging = true);\n\n // update the pointer pos\n const 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 const 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 // Handle click/touch events on nodes/links\n container.addEventListener('pointerup', 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 const cbEvents = [ev, state.pointerDownEvent];\n requestAnimationFrame(() => {\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 const fn = state[`on${state.hoverObj.type}Click`];\n fn && fn(state.hoverObj.d, ...cbEvents);\n } else {\n state.onBackgroundClick && state.onBackgroundClick(...cbEvents);\n }\n }\n if (ev.button === 2) {\n // mouse right-click\n if (state.hoverObj) {\n const fn = state[`on${state.hoverObj.type}RightClick`];\n fn && fn(state.hoverObj.d, ...cbEvents);\n } else {\n state.onBackgroundRightClick && state.onBackgroundRightClick(...cbEvents);\n }\n }\n });\n }, {\n passive: true\n });\n container.addEventListener('contextmenu', 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 const refreshShadowCanvas = throttle(() => {\n // wipe canvas\n clearCanvas(shadowCtx, state.width, state.height);\n\n // Adjust link hover area\n state.shadowGraph.linkWidth(l => accessorFn(state.linkWidth)(l) + state.linkHoverPrecision);\n\n // redraw\n const 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 const doRedraw = !state.autoPauseRedraw || !!state.needsRedraw || state.forceGraph.isEngineRunning() || state.graphData.links.some(d => d.__photons && d.__photons.length);\n state.needsRedraw = false;\n if (state.enablePointerInteraction) {\n // Update tooltip and trigger onHover events\n const obj = !state.isPointerDragging ? getObjUnderPointer() : null; // don't hover during drag\n if (obj !== state.hoverObj) {\n const prevObj = state.hoverObj;\n const prevObjType = prevObj ? prevObj.type : null;\n const objType = obj ? obj.type : null;\n if (prevObjType && prevObjType !== objType) {\n // Hover out\n const fn = state[`on${prevObjType}Hover`];\n fn && fn(null, prevObj.d);\n }\n if (objType) {\n // Hover in\n const fn = state[`on${objType}Hover`];\n fn && fn(obj.d, prevObjType === objType ? prevObj.d : null);\n }\n state.tooltip.content(obj ? accessorFn(state[`${obj.type.toLowerCase()}Label`])(obj.d) || null : null);\n\n // set pointer if hovered object is clickable\n state.canvas.classList[(obj && state[`on${objType}Click`] || !obj && state.onBackgroundClick) && accessorFn(state.showPointerCursor)(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 const 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":[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,191],"mappings":"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"}
|
|
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","_toPropertyKey","_iterableToArrayLimit","_nonIterableRest","_slicedToArray","_unsupportedIterableToArray","_toPrimitive","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","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/authors.js","../../knowledge/lib/graph.js","../src/client/shell-faces.ts","../src/client/filter-state.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.5/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/authors.ts\nconst AUTHOR_ALIASES = Object.freeze({\n\t\"鳄鱼派\": \"鳄鱼派(像鳄鱼一样思考)\",\n\t\"鳄鱼派(公众号:像鳄鱼一样思考)\": \"鳄鱼派(像鳄鱼一样思考)\",\n\t\"像鳄鱼一样思考(鳄鱼派)\": \"鳄鱼派(像鳄鱼一样思考)\",\n\t\"zcl × DSH Master(自有分析,非外部素材)\": \"zcl × DSH Master(自有分析)\",\n\t\"zcl × DSH Master(自有框架综合,非外部素材)\": \"zcl × DSH Master(自有分析)\",\n\t\"山基说(素材提炼)/ zcl(分层核查,事实依据 facts/oil.md、facts/fed.md)\": \"山基说\",\n\t\"小鹿投研日记(转播大摩闭门会 9.14,发言人Robin/Steven/钟申/Jenny;Laura股票部分视频截断未录)\": \"小鹿投研日记\",\n\t\"中金点睛(刘刚、杨萱庭)\": \"中金点睛\"\n});\n/** 把作者名归一到规范名;未登记的写法原样返回(仅去除首尾空白)。 */\nfunction canonicalAuthor(author) {\n\tconst trimmed = author.trim();\n\treturn AUTHOR_ALIASES[trimmed] ?? trimmed;\n}\n/**\n* 返回作者已归一的卡片副本;已是规范名时原样返回同一引用。\n* 非破坏性:不修改传入卡片。缺 `source`/`author` 的畸形条目按原样放行——文件读取\n* 层不为历史脏数据抛错,结构校验只在入库(`validateKnowledgeCard`)发生。\n*/\nfunction canonicalizeCardAuthor(card) {\n\tif (!card || typeof card !== \"object\" || !card.source || typeof card.source.author !== \"string\") return card;\n\tconst canonical = canonicalAuthor(card.source.author);\n\tif (canonical === card.source.author) return card;\n\treturn {\n\t\t...card,\n\t\tsource: {\n\t\t\t...card.source,\n\t\t\tauthor: canonical\n\t\t}\n\t};\n}\n//#endregion\nexport { AUTHOR_ALIASES, canonicalAuthor, canonicalizeCardAuthor };\n","//#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/**\n* 只计数的图概要(knowledge_graph 工具专用):与默认模式 buildGraph 的\n* { nodes.length, links.length } 严格同值,但不物化节点/边对象——\n* related 边 O(E) 键去重、co-author 边按作者分组 Σk(k-1)/2(同作者对唯一)、\n* co-tag 边按标签索引逐标签枚举对并全局去重 O(Σ k_t²)。工具只要规模数字时\n* 避免全配对边的对象分配(215 卡 ≈ 2 万+边对象的构建与丢弃)。\n*/\nfunction countGraphSummary(cards) {\n\tif (!cards || cards.length === 0) return {\n\t\tnodeCount: 0,\n\t\tedgeCount: 0\n\t};\n\tconst ids = /* @__PURE__ */ new Set();\n\tfor (const c of cards) ids.add(c.id);\n\tconst related = /* @__PURE__ */ new Set();\n\tfor (const card of cards) {\n\t\tif (!Array.isArray(card.related)) continue;\n\t\tfor (const targetId of card.related) {\n\t\t\tif (!ids.has(targetId) || targetId === card.id) continue;\n\t\t\tconst [a, b] = card.id < targetId ? [card.id, targetId] : [targetId, card.id];\n\t\t\trelated.add(`${a}:${b}`);\n\t\t}\n\t}\n\tconst byTag = /* @__PURE__ */ new Map();\n\tfor (const card of cards) {\n\t\tconst seen = /* @__PURE__ */ new Set();\n\t\tfor (const tag of card.tags) {\n\t\t\tif (seen.has(tag)) continue;\n\t\t\tseen.add(tag);\n\t\t\tconst members = byTag.get(tag);\n\t\t\tif (members === void 0) byTag.set(tag, [card.id]);\n\t\t\telse members.push(card.id);\n\t\t}\n\t}\n\tconst coTag = /* @__PURE__ */ new Set();\n\tfor (const members of byTag.values()) for (let i = 0; i < members.length; i++) for (let j = i + 1; j < members.length; j++) {\n\t\tconst a = members[i];\n\t\tconst b = members[j];\n\t\tcoTag.add(a < b ? `${a}:${b}` : `${b}:${a}`);\n\t}\n\tconst byAuthor = /* @__PURE__ */ new Map();\n\tfor (const card of cards) {\n\t\tconst author = card.source.author.trim();\n\t\tif (!author || author === \"manual\" || author === \"手工\") continue;\n\t\tbyAuthor.set(author, (byAuthor.get(author) ?? 0) + 1);\n\t}\n\tlet coAuthor = 0;\n\tfor (const k of byAuthor.values()) coAuthor += k * (k - 1) / 2;\n\treturn {\n\t\tnodeCount: cards.length,\n\t\tedgeCount: related.size + coTag.size + coAuthor\n\t};\n}\n//#endregion\nexport { buildGraph, countGraphSummary };\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 * 知识库视图筛选态的校验与固定候选词表(纯函数,视图与单测共用)。\n *\n * 背景:标签 / 作者下拉的候选来自**当前卡片集**(见 KnowledgeView 的 allTags /\n * allAuthors)。持久化的筛选值一旦从候选里消失——典型场景是某个作者的卡片被\n * 全部移出知识库——浏览器会把下拉回落显示成「全部」,但过滤条件仍在执行:\n * 视图显示 0 张卡片,筛选器上却看不出任何生效条件(2026-10-11 实证)。\n * 视图在卡片集就绪后用它挑出失效字段并清空,保持 UI 与过滤条件一致。\n */\nimport type { KnowledgeLocaleKey } from './contract.ts'\n\nexport interface KnowledgeViewFilterValues {\n selectedTag: string\n selectedAuthor: string\n selectedCredibility: string\n selectedSourceType: string\n}\n\nexport interface KnowledgeFilterCandidates {\n tags: readonly string[]\n authors: readonly string[]\n}\n\nexport type KnowledgeFilterField = keyof KnowledgeViewFilterValues\n\n/** 可信度下拉的候选(值 + i18n 键,渲染与校验同源)。 */\nexport const CREDIBILITY_OPTIONS: ReadonlyArray<{ value: string; labelKey: KnowledgeLocaleKey }> = [\n { value: 'high', labelKey: 'kv.credibility.high' },\n { value: 'medium', labelKey: 'kv.credibility.medium' },\n { value: 'low', labelKey: 'kv.credibility.low' },\n]\n\n/** 来源平台下拉的候选(值 + i18n 键,渲染与校验同源)。 */\nexport const SOURCE_TYPE_OPTIONS: ReadonlyArray<{ value: string; labelKey: KnowledgeLocaleKey }> = [\n { value: 'bilibili', labelKey: 'kv.sourceType.bilibili' },\n { value: 'wechat', labelKey: 'kv.sourceType.wechat' },\n { value: 'manual', labelKey: 'kv.sourceType.manual' },\n]\n\n/**\n * 挑出候选集里已不存在的筛选字段(保持传入顺序)。\n * 空字符串表示「不过滤」,不是失效值。\n */\nexport function staleFilterFields(\n values: KnowledgeViewFilterValues,\n candidates: KnowledgeFilterCandidates,\n): KnowledgeFilterField[] {\n const stale: KnowledgeFilterField[] = []\n if (values.selectedTag && !candidates.tags.includes(values.selectedTag)) {\n stale.push('selectedTag')\n }\n if (values.selectedAuthor && !candidates.authors.includes(values.selectedAuthor)) {\n stale.push('selectedAuthor')\n }\n const credibility = CREDIBILITY_OPTIONS.map((option) => option.value)\n if (values.selectedCredibility && !credibility.includes(values.selectedCredibility)) {\n stale.push('selectedCredibility')\n }\n const sourceTypes = SOURCE_TYPE_OPTIONS.map((option) => option.value)\n if (values.selectedSourceType && !sourceTypes.includes(values.selectedSourceType)) {\n stale.push('selectedSourceType')\n }\n return stale\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\nconst 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(obj => !obj[colorField]).forEach(obj => {\n obj[colorField] = autoColorScale(colorByAccessor(obj));\n });\n}\n\nfunction getDagDepths ({\n nodes,\n links\n}, idAccessor, {\n nodeFilter = () => true,\n onLoopError = loopIds => {\n throw `Invalid DAG structure! Found cycle in node path: ${loopIds.join(' -> ')}.`;\n }\n} = {}) {\n // linked graph\n const graph = {};\n nodes.forEach(node => graph[idAccessor(node)] = {\n data: node,\n out: [],\n depth: -1,\n skip: !nodeFilter(node)\n });\n links.forEach(({\n source,\n target\n }) => {\n const sourceId = getNodeId(source);\n const targetId = getNodeId(target);\n if (!graph.hasOwnProperty(sourceId)) throw `Missing source node with id: ${sourceId}`;\n if (!graph.hasOwnProperty(targetId)) throw `Missing target node with id: ${targetId}`;\n const sourceNode = graph[sourceId];\n const targetNode = graph[targetId];\n sourceNode.out.push(targetNode);\n function getNodeId(node) {\n return typeof node === 'object' ? idAccessor(node) : node;\n }\n });\n const foundLoops = [];\n traverse(Object.values(graph));\n const nodeDepths = Object.assign({}, ...Object.entries(graph).filter(([, node]) => !node.skip).map(([id, node]) => ({\n [id]: node.depth\n })));\n return nodeDepths;\n function traverse(nodes, nodeStack = [], currentDepth = 0) {\n for (let i = 0, l = nodes.length; i < l; i++) {\n const node = nodes[i];\n if (nodeStack.indexOf(node) !== -1) {\n const loop = [...nodeStack.slice(nodeStack.indexOf(node)), node].map(d => idAccessor(d.data));\n if (!foundLoops.some(foundLoop => foundLoop.length === loop.length && foundLoop.every((id, idx) => id === loop[idx]))) {\n foundLoops.push(loop);\n onLoopError(loop);\n }\n continue;\n }\n if (currentDepth > node.depth) {\n // Don't unnecessarily revisit chunks of the graph\n node.depth = currentDepth;\n traverse(node.out, [...nodeStack, node], currentDepth + (node.skip ? 0 : 1));\n }\n }\n }\n}\n\n//\n\nconst DAG_LEVEL_NODE_RATIO = 2;\n\n// whenever styling props are changed that require a canvas redraw\nconst notifyRedraw = (_, state) => state.onNeedsRedraw && state.onNeedsRedraw();\nconst updDataPhotons = (_, state) => {\n if (!state.isShadow) {\n // Add photon particles\n const linkParticlesAccessor = accessorFn(state.linkDirectionalParticles);\n state.graphData.links.forEach(link => {\n const numPhotons = Math.round(Math.abs(linkParticlesAccessor(link)));\n if (numPhotons) {\n link.__photons = [...Array(numPhotons)].map(() => ({}));\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(_, state) {\n state.engineRunning = false; // Pause simulation\n updDataPhotons(_, state);\n }\n },\n dagMode: {\n onChange(dagMode, state) {\n // td, bu, lr, rl, radialin, radialout\n !dagMode && (state.graphData.nodes || []).forEach(n => n.fx = n.fy = undefined); // unfix nodes when disabling dag mode\n }\n },\n dagLevelDistance: {},\n dagNodeFilter: {\n default: node => true\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: () => 'replace',\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: () => 'replace',\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(alphaDecay, state) {\n state.forceLayout.alphaDecay(alphaDecay);\n }\n },\n d3AlphaTarget: {\n default: 0,\n triggerUpdate: false,\n onChange(alphaTarget, state) {\n state.forceLayout.alphaTarget(alphaTarget);\n }\n },\n d3VelocityDecay: {\n default: 0.4,\n triggerUpdate: false,\n 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: () => {},\n triggerUpdate: false\n },\n onFinishUpdate: {\n default: () => {},\n triggerUpdate: false\n },\n onEngineTick: {\n default: () => {},\n triggerUpdate: false\n },\n onEngineStop: {\n 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 (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 (state) {\n state.forceLayout.alpha(1);\n this.resetCountdown();\n return this;\n },\n // reset cooldown state\n resetCountdown: function (state) {\n state.cntTicks = 0;\n state.startTickTime = new Date();\n state.engineRunning = true;\n return this;\n },\n isEngineRunning: state => !!state.engineRunning,\n tickFrame: function (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 const getVisibility = accessorFn(state.nodeVisibility);\n const getVal = accessorFn(state.nodeVal);\n const getColor = accessorFn(state.nodeColor);\n const getNodeCanvasObjectMode = accessorFn(state.nodeCanvasObjectMode);\n const ctx = state.ctx;\n\n // Draw wider nodes by 1px on shadow canvas for more precise hovering (due to boundary anti-aliasing)\n const padAmount = state.isShadow / state.globalScale;\n const visibleNodes = state.graphData.nodes.filter(getVisibility);\n ctx.save();\n visibleNodes.forEach(node => {\n const 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 const 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 const getVisibility = accessorFn(state.linkVisibility);\n const getColor = accessorFn(state.linkColor);\n const getWidth = accessorFn(state.linkWidth);\n const getLineDash = accessorFn(state.linkLineDash);\n const getCurvature = accessorFn(state.linkCurvature);\n const getLinkCanvasObjectMode = accessorFn(state.linkCanvasObjectMode);\n const ctx = state.ctx;\n\n // Draw wider lines by 2px on shadow canvas for more precise hovering (due to boundary anti-aliasing)\n const padAmount = state.isShadow * 2;\n const visibleLinks = state.graphData.links.filter(getVisibility);\n visibleLinks.forEach(calcLinkControlPoints); // calculate curvature control points for all visible links\n\n let beforeCustomLinks = [],\n afterCustomLinks = [],\n defaultPaintLinks = visibleLinks;\n if (state.linkCanvasObject) {\n const replaceCustomLinks = [],\n otherCustomLinks = [];\n visibleLinks.forEach(d => ({\n before: beforeCustomLinks,\n after: afterCustomLinks,\n replace: replaceCustomLinks\n }[getLinkCanvasObjectMode(d)] || otherCustomLinks).push(d));\n defaultPaintLinks = [...beforeCustomLinks, ...afterCustomLinks, ...otherCustomLinks];\n beforeCustomLinks = beforeCustomLinks.concat(replaceCustomLinks);\n }\n\n // Custom link before paints\n ctx.save();\n beforeCustomLinks.forEach(link => state.linkCanvasObject(link, ctx, state.globalScale));\n ctx.restore();\n\n // Bundle strokes per unique color/width/dash for performance optimization\n const linksPerColor = indexBy(defaultPaintLinks, [getColor, getWidth, getLineDash]);\n ctx.save();\n Object.entries(linksPerColor).forEach(([color, linksPerWidth]) => {\n const lineColor = !color || color === 'undefined' ? 'rgba(0,0,0,0.15)' : color;\n Object.entries(linksPerWidth).forEach(([width, linesPerLineDash]) => {\n const lineWidth = (width || 1) / state.globalScale + padAmount;\n Object.entries(linesPerLineDash).forEach(([dashSegments, links]) => {\n const lineDashSegments = getLineDash(links[0]);\n ctx.beginPath();\n links.forEach(link => {\n const start = link.source;\n const 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 const 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'](...controlPoints, 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(link => state.linkCanvasObject(link, ctx, state.globalScale));\n ctx.restore();\n\n //\n\n function calcLinkControlPoints(link) {\n const curvature = getCurvature(link);\n if (!curvature) {\n // straight line\n link.__controlPoints = null;\n return;\n }\n const start = link.source;\n const end = link.target;\n if (!start || !end || !start.hasOwnProperty('x') || !end.hasOwnProperty('x')) return; // skip invalid link\n\n const 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 const a = Math.atan2(end.y - start.y, end.x - start.x); // line angle\n const d = l * curvature; // control point distance\n\n const 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 const d = curvature * 70;\n link.__controlPoints = [end.x, end.y - d, end.x + d, end.y];\n }\n }\n }\n function paintArrows() {\n const ARROW_WH_RATIO = 1.6;\n const ARROW_VLEN_RATIO = 0.2;\n const getLength = accessorFn(state.linkDirectionalArrowLength);\n const getRelPos = accessorFn(state.linkDirectionalArrowRelPos);\n const getVisibility = accessorFn(state.linkVisibility);\n const getColor = accessorFn(state.linkDirectionalArrowColor || state.linkColor);\n const getNodeVal = accessorFn(state.nodeVal);\n const ctx = state.ctx;\n ctx.save();\n state.graphData.links.filter(getVisibility).forEach(link => {\n const arrowLength = getLength(link);\n if (!arrowLength || arrowLength < 0) return;\n const start = link.source;\n const end = link.target;\n if (!start || !end || !start.hasOwnProperty('x') || !end.hasOwnProperty('x')) return; // skip invalid link\n\n const startR = Math.sqrt(Math.max(0, getNodeVal(start) || 1)) * state.nodeRelSize;\n const endR = Math.sqrt(Math.max(0, getNodeVal(end) || 1)) * state.nodeRelSize;\n const arrowRelPos = Math.min(1, Math.max(0, getRelPos(link)));\n const arrowColor = getColor(link) || 'rgba(0,0,0,0.28)';\n const arrowHalfWidth = arrowLength / ARROW_WH_RATIO / 2;\n\n // Construct bezier for curved lines\n const bzLine = link.__controlPoints && new Bezier(start.x, start.y, ...link.__controlPoints, end.x, end.y);\n const getCoordsAlongLine = bzLine ? t => bzLine.get(t) // get position along bezier line\n : t => ({\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 const lineLen = bzLine ? bzLine.length() : Math.sqrt(Math.pow(end.x - start.x, 2) + Math.pow(end.y - start.y, 2));\n const posAlongLine = startR + arrowLength + (lineLen - startR - endR - arrowLength) * arrowRelPos;\n const arrowHead = getCoordsAlongLine(posAlongLine / lineLen);\n const arrowTail = getCoordsAlongLine((posAlongLine - arrowLength) / lineLen);\n const arrowTailVertex = getCoordsAlongLine((posAlongLine - arrowLength * (1 - ARROW_VLEN_RATIO)) / lineLen);\n const 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 const getNumPhotons = accessorFn(state.linkDirectionalParticles);\n const getSpeed = accessorFn(state.linkDirectionalParticleSpeed);\n const getOffset = accessorFn(state.linkDirectionalParticleOffset);\n const getDiameter = accessorFn(state.linkDirectionalParticleWidth);\n const getVisibility = accessorFn(state.linkVisibility);\n const getColor = accessorFn(state.linkDirectionalParticleColor || state.linkColor);\n const ctx = state.ctx;\n ctx.save();\n state.graphData.links.filter(getVisibility).forEach(link => {\n const numCyclePhotons = getNumPhotons(link);\n if (!link.hasOwnProperty('__photons') || !link.__photons.length) return;\n const start = link.source;\n const end = link.target;\n if (!start || !end || !start.hasOwnProperty('x') || !end.hasOwnProperty('x')) return; // skip invalid link\n\n const particleSpeed = getSpeed(link);\n const particleOffset = Math.abs(getOffset(link));\n const photons = link.__photons || [];\n const photonR = Math.max(0, getDiameter(link) / 2) / Math.sqrt(state.globalScale);\n const photonColor = getColor(link) || 'rgba(0,0,0,0.28)';\n ctx.fillStyle = photonColor;\n\n // Construct bezier for curved lines\n const bzLine = link.__controlPoints ? new Bezier(start.x, start.y, ...link.__controlPoints, end.x, end.y) : null;\n let cyclePhotonIdx = 0;\n let needsCleanup = false; // whether some photons need to be removed from list\n photons.forEach(photon => {\n const 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 const photonPosRatio = photon.__progressRatio;\n const 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(photon => !photon.__singleHop || photon.__progressRatio <= 1 && photon.__progressRatio >= 0);\n }\n });\n ctx.restore();\n }\n },\n emitParticle: function (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: () => ({\n forceLayout: forceSimulation().force('link', forceLink()).force('charge', forceManyBody()).force('center', forceCenter()).force('dagRadial', null).stop(),\n engineRunning: false\n }),\n init(canvasCtx, state) {\n // Main canvas object to manipulate\n state.ctx = canvasCtx;\n },\n 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(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 const linkForce = state.forceLayout.force('link');\n if (linkForce) {\n linkForce.id(d => d[state.nodeId]).links(state.graphData.links);\n }\n\n // setup dag force constraints\n const nodeDepths = state.dagMode && getDagDepths(state.graphData, node => node[state.nodeId], {\n nodeFilter: state.dagNodeFilter,\n onLoopError: state.onDagError || undefined\n });\n const maxDepth = Math.max(...Object.values(nodeDepths || []));\n const 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 const resetProp = ['lr', 'rl'].includes(changedProps.dagMode) ? 'fx' : 'fy';\n state.graphData.nodes.filter(state.dagNodeFilter).forEach(node => delete node[resetProp]);\n }\n\n // Fix nodes to x,y for dag mode\n if (['lr', 'rl', 'td', 'bu'].includes(state.dagMode)) {\n const invert = ['rl', 'bu'].includes(state.dagMode);\n const fixFn = node => (nodeDepths[node[state.nodeId]] - maxDepth / 2) * dagLevelDistance * (invert ? -1 : 1);\n const resetProp = ['lr', 'rl'].includes(state.dagMode) ? 'fx' : 'fy';\n state.graphData.nodes.filter(state.dagNodeFilter).forEach(node => node[resetProp] = fixFn(node));\n }\n\n // Use radial force for radial dags\n state.forceLayout.force('dagRadial', ['radialin', 'radialout'].indexOf(state.dagMode) !== -1 ? forceRadial(node => {\n const nodeDepth = nodeDepths[node[state.nodeId]] || -1;\n return (state.dagMode === 'radialin' ? maxDepth - nodeDepth : nodeDepth) * dagLevelDistance;\n }).strength(node => state.dagNodeFilter(node) ? 1 : 0) : null);\n for (let 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 const propNames = kapsulePropNames instanceof Array ? kapsulePropNames : [kapsulePropNames];\n const dummyK = new kapsuleType(); // To extract defaults\n dummyK._destructor && dummyK._destructor();\n return {\n linkProp: function (prop) {\n // link property config\n return {\n default: dummyK[prop](),\n onChange(v, state) {\n propNames.forEach(propName => state[propName][prop](v));\n },\n triggerUpdate: false\n };\n },\n linkMethod: function (method) {\n // link method pass-through\n return function (state, ...args) {\n const returnVals = [];\n propNames.forEach(propName => {\n const kapsuleInstance = state[propName];\n const returnVal = kapsuleInstance[method](...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\nconst HOVER_CANVAS_THROTTLE_DELAY = 800; // ms to throttle shadow canvas updates for perf improvement\nconst ZOOM2NODES_FACTOR = 4;\nconst DRAG_CLICK_TOLERANCE_PX = 5; // How many px can a node be accidentally dragged before disabling the click\n\n// Expose config from forceGraph\nconst bindFG = linkKapsule('forceGraph', CanvasForceGraph);\nconst bindBoth = linkKapsule(['forceGraph', 'shadowGraph'], CanvasForceGraph);\nconst linkedProps = Object.assign(...['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(p => ({\n [p]: bindFG.linkProp(p)\n})), ...['nodeRelSize', 'nodeId', 'nodeVal', 'nodeVisibility', 'linkSource', 'linkTarget', 'linkVisibility', 'linkCurvature'].map(p => ({\n [p]: bindBoth.linkProp(p)\n})));\nconst linkedMethods = Object.assign(...['d3Force', 'd3ReheatSimulation', 'emitParticle'].map(p => ({\n [p]: bindFG.linkMethod(p)\n})));\nfunction adjustCanvasSize(state) {\n if (state.canvas) {\n let curWidth = state.canvas.width;\n let curHeight = state.canvas.height;\n if (curWidth === 300 && curHeight === 150) {\n // Default canvas dimensions\n curWidth = curHeight = 0;\n }\n const pxScale = window.devicePixelRatio; // 2 on retina displays\n curWidth /= pxScale;\n curHeight /= pxScale;\n\n // Resize canvases\n [state.canvas, state.shadowCanvas].forEach(canvas => {\n // Element size\n canvas.style.width = `${state.width}px`;\n canvas.style.height = `${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 const 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 const 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: {\n width: {\n default: window.innerWidth,\n onChange: (_, state) => adjustCanvasSize(state),\n triggerUpdate: false\n },\n height: {\n default: window.innerHeight,\n onChange: (_, state) => adjustCanvasSize(state),\n triggerUpdate: false\n },\n graphData: {\n default: {\n nodes: [],\n links: []\n },\n onChange: (d, state) => {\n // Wipe color registry if all objects are new\n [d.nodes, d.links].every(arr => (arr || []).every(d => !d.hasOwnProperty('__indexColor'))) && 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({\n type,\n objs\n }) {\n objs.filter(d => {\n if (!d.hasOwnProperty('__indexColor')) return true;\n const cur = state.colorTracker.lookup(d.__indexColor);\n return !cur || !cur.hasOwnProperty('d') || cur.d !== d;\n }).forEach(d => {\n // store object lookup color\n d.__indexColor = state.colorTracker.register({\n type,\n d\n });\n });\n }\n },\n triggerUpdate: false\n },\n backgroundColor: {\n 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(paintFn, state) {\n state.shadowGraph.nodeCanvasObject(!paintFn ? null : (node, ctx, globalScale) => paintFn(node, node.__indexColor, ctx, globalScale));\n state.flushShadowCanvas && state.flushShadowCanvas();\n },\n triggerUpdate: false\n },\n linkPointerAreaPaint: {\n onChange(paintFn, state) {\n state.shadowGraph.linkCanvasObject(!paintFn ? null : (link, ctx, globalScale) => paintFn(link, link.__indexColor, ctx, globalScale));\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(minZoom, state) {\n state.zoom.scaleExtent([minZoom, state.zoom.scaleExtent()[1]]);\n },\n triggerUpdate: false\n },\n maxZoom: {\n default: 1000,\n 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(_, state) {\n state.hoverObj = null;\n },\n triggerUpdate: false\n },\n autoPauseRedraw: {\n default: true,\n triggerUpdate: false\n },\n onNodeDrag: {\n default: () => {},\n triggerUpdate: false\n },\n onNodeDragEnd: {\n 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 },\n aliases: {\n // Prop names supported for backwards compatibility\n stopAnimation: 'pauseAnimation'\n },\n methods: {\n graph2ScreenCoords: function (state, x, y) {\n const 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 (state, x, y) {\n const 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 (state, x, y, transitionDuration) {\n if (!state.canvas) return null; // no canvas yet\n\n // setter\n if (x !== undefined || y !== undefined) {\n const finalPos = Object.assign({}, x !== undefined ? {\n x\n } : {}, y !== undefined ? {\n 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 const 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({\n x,\n y\n }) {\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 (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\n }, transitionDuration).easing(Easing.Quadratic.Out).onUpdate(({\n k\n }) => setZoom(k)).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 (state, transitionDuration = 0, padding = 10, ...bboxArgs) {\n const bbox = this.getGraphBbox(...bboxArgs);\n if (bbox) {\n const center = {\n x: (bbox.x[0] + bbox.x[1]) / 2,\n y: (bbox.y[0] + bbox.y[1]) / 2\n };\n const 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 (state, nodeFilter = () => true) {\n const getVal = accessorFn(state.nodeVal);\n const getR = node => Math.sqrt(Math.max(0, getVal(node) || 1)) * state.nodeRelSize;\n const nodesPos = state.graphData.nodes.filter(nodeFilter).map(node => ({\n x: node.x,\n y: node.y,\n r: getR(node)\n }));\n return !nodesPos.length ? null : {\n x: [min(nodesPos, node => node.x - node.r), max(nodesPos, node => node.x + node.r)],\n y: [min(nodesPos, node => node.y - node.r), max(nodesPos, node => node.y + node.r)]\n };\n },\n pauseAnimation: function (state) {\n if (state.animationFrameRequestId) {\n cancelAnimationFrame(state.animationFrameRequestId);\n state.animationFrameRequestId = null;\n }\n return this;\n },\n resumeAnimation: function (state) {\n if (!state.animationFrameRequestId) {\n this._animationCycle();\n }\n return this;\n },\n _destructor: function () {\n this.pauseAnimation();\n this.graphData({\n nodes: [],\n links: []\n });\n },\n ...linkedMethods\n },\n stateInit: () => ({\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 init: function (domNode, state) {\n // Wipe DOM\n domNode.innerHTML = '';\n\n // Container anchor for canvas and tooltip\n const 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 const ctx = state.canvas.getContext('2d');\n const shadowCtx = state.shadowCanvas.getContext('2d', {\n willReadFrequently: true\n });\n const pointerPos = {\n x: -1e12,\n y: -1e12\n };\n const getObjUnderPointer = () => {\n let obj = null;\n const pxScale = window.devicePixelRatio;\n const 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(() => {\n if (!state.enableNodeDrag) {\n return null;\n }\n const obj = getObjUnderPointer();\n return obj && obj.type === 'Node' ? obj.d : null; // Only drag nodes\n }).on('start', ev => {\n const 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', ev => {\n const obj = ev.subject;\n const initPos = obj.__initialDragPos;\n const dragPos = ev;\n const k = zoomTransform(state.canvas).k;\n const 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(c => obj[`f${c}`] = obj[c] = initPos[c] + (dragPos[c] - initPos[c]) / k);\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(k => (ev[k] - initPos[k]) ** 2)))) 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', ev => {\n const obj = ev.subject;\n const initPos = obj.__initialDragPos;\n const 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(ev =>\n // disable zoom interaction\n !ev.button && state.enableZoomPanInteraction && (ev.type !== 'wheel' || accessorFn(state.enableZoomInteraction)(ev)) && (ev.type === 'wheel' || accessorFn(state.enablePanInteraction)(ev))).on('zoom', ev => {\n const t = ev.transform;\n [ctx, shadowCtx].forEach(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({\n ...t,\n ...this.centerAt()\n }); // report x,y coordinates relative to canvas center\n state.needsRedraw = true;\n }).on('end', ev => {\n state.isPointerDragging = false;\n state.onZoomEnd && state.onZoomEnd({\n ...ev.transform,\n ...this.centerAt()\n });\n });\n adjustCanvasSize(state);\n state.forceGraph.onNeedsRedraw(() => state.needsRedraw = true).onFinishUpdate(() => {\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(evType => container.addEventListener(evType, 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(m => Math.abs(m) > 1)) // relax drag trigger sensitivity on non-mouse (touch/pen) events\n && (state.isPointerDragging = true);\n\n // update the pointer pos\n const 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 const 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 // Handle click/touch events on nodes/links\n container.addEventListener('pointerup', 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 const cbEvents = [ev, state.pointerDownEvent];\n requestAnimationFrame(() => {\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 const fn = state[`on${state.hoverObj.type}Click`];\n fn && fn(state.hoverObj.d, ...cbEvents);\n } else {\n state.onBackgroundClick && state.onBackgroundClick(...cbEvents);\n }\n }\n if (ev.button === 2) {\n // mouse right-click\n if (state.hoverObj) {\n const fn = state[`on${state.hoverObj.type}RightClick`];\n fn && fn(state.hoverObj.d, ...cbEvents);\n } else {\n state.onBackgroundRightClick && state.onBackgroundRightClick(...cbEvents);\n }\n }\n });\n }, {\n passive: true\n });\n container.addEventListener('contextmenu', 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 const refreshShadowCanvas = throttle(() => {\n // wipe canvas\n clearCanvas(shadowCtx, state.width, state.height);\n\n // Adjust link hover area\n state.shadowGraph.linkWidth(l => accessorFn(state.linkWidth)(l) + state.linkHoverPrecision);\n\n // redraw\n const 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 const doRedraw = !state.autoPauseRedraw || !!state.needsRedraw || state.forceGraph.isEngineRunning() || state.graphData.links.some(d => d.__photons && d.__photons.length);\n state.needsRedraw = false;\n if (state.enablePointerInteraction) {\n // Update tooltip and trigger onHover events\n const obj = !state.isPointerDragging ? getObjUnderPointer() : null; // don't hover during drag\n if (obj !== state.hoverObj) {\n const prevObj = state.hoverObj;\n const prevObjType = prevObj ? prevObj.type : null;\n const objType = obj ? obj.type : null;\n if (prevObjType && prevObjType !== objType) {\n // Hover out\n const fn = state[`on${prevObjType}Hover`];\n fn && fn(null, prevObj.d);\n }\n if (objType) {\n // Hover in\n const fn = state[`on${objType}Hover`];\n fn && fn(obj.d, prevObjType === objType ? prevObj.d : null);\n }\n state.tooltip.content(obj ? accessorFn(state[`${obj.type.toLowerCase()}Label`])(obj.d) || null : null);\n\n // set pointer if hovered object is clickable\n state.canvas.classList[(obj && state[`on${objType}Click`] || !obj && state.onBackgroundClick) && accessorFn(state.showPointerCursor)(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 const 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 { CREDIBILITY_OPTIONS, SOURCE_TYPE_OPTIONS, staleFilterFields } from './filter-state.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 // 3b. 失效筛选自愈:持久化的标签 / 作者一旦不在候选集里(例:某作者的卡片被\n // 全部移出知识库),下拉会回落显示「全部」而过滤条件仍在执行,视图显示 0 张\n // 卡片却看不出原因——此处按候选集清空失效值,让 UI 与过滤条件保持一致。\n // 卡片集为空时跳过:无法区分「库为空」与「拉取失败」,此时清空筛选是意外副作用。\n useEffect(() => {\n if (cards.length === 0) {\n return\n }\n const stale = staleFilterFields(\n { selectedTag, selectedAuthor, selectedCredibility, selectedSourceType },\n { tags: allTags, authors: allAuthors },\n )\n for (const field of stale) {\n if (field === 'selectedTag') setSelectedTag('')\n else if (field === 'selectedAuthor') setSelectedAuthor('')\n else if (field === 'selectedCredibility') setSelectedCredibility('')\n else setSelectedSourceType('')\n }\n }, [cards, allTags, allAuthors, selectedTag, selectedAuthor, selectedCredibility, selectedSourceType])\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 {CREDIBILITY_OPTIONS.map((option) => (\n <option key={option.value} value={option.value}>\n {t(option.labelKey)}\n </option>\n ))}\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 {SOURCE_TYPE_OPTIONS.map((option) => (\n <option key={option.value} value={option.value}>\n {t(option.labelKey)}\n </option>\n ))}\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.allAuthors': '全部作者',\n 'kv.filter.allCredibility': '全部评级',\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.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}\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.allAuthors': 'All Authors',\n 'kv.filter.allCredibility': 'All Credibility',\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.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}\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":[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,191,192],"mappings":"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"}
|