@pie-lib/graphing-solution-set 3.2.0-next.0 → 3.2.0-next.2

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.
Files changed (74) hide show
  1. package/lib/__tests__/bg.test.js +282 -0
  2. package/lib/__tests__/coordinates-label.test.js +276 -0
  3. package/lib/__tests__/graph-with-controls.test.js +256 -0
  4. package/lib/__tests__/graph.test.js +113 -0
  5. package/lib/__tests__/grid-setup.test.js +729 -0
  6. package/lib/__tests__/grid.test.js +29 -0
  7. package/lib/__tests__/labels.test.js +45 -0
  8. package/lib/__tests__/mark-label.test.js +133 -0
  9. package/lib/__tests__/toggle-bar.test.js +146 -0
  10. package/lib/__tests__/tool-menu.test.js +540 -0
  11. package/lib/__tests__/undo-redo.test.js +31 -0
  12. package/lib/__tests__/use-debounce.test.js +24 -0
  13. package/lib/__tests__/utils.js +70 -0
  14. package/lib/__tests__/utils.test.js +123 -0
  15. package/lib/axis/__tests__/arrow.test.js +60 -0
  16. package/lib/axis/__tests__/axes.test.js +160 -0
  17. package/lib/axis/arrow.js +1 -1
  18. package/lib/axis/axes.js +1 -1
  19. package/lib/axis/index.js +1 -1
  20. package/lib/bg.js +1 -1
  21. package/lib/container/__tests__/actions.test.js +108 -0
  22. package/lib/container/__tests__/index.test.js +346 -0
  23. package/lib/container/__tests__/marks.test.js +259 -0
  24. package/lib/container/__tests__/middleware.test.js +244 -0
  25. package/lib/container/__tests__/reducer.test.js +450 -0
  26. package/lib/container/actions.js +1 -1
  27. package/lib/container/index.js +1 -1
  28. package/lib/container/marks.js +1 -1
  29. package/lib/container/middleware.js +1 -1
  30. package/lib/container/reducer.js +1 -1
  31. package/lib/coordinates-label.js +1 -1
  32. package/lib/graph-with-controls.js +1 -1
  33. package/lib/graph.js +1 -1
  34. package/lib/grid-setup.js +1 -1
  35. package/lib/grid.js +1 -1
  36. package/lib/index.js +1 -1
  37. package/lib/labels.js +1 -1
  38. package/lib/mark-label.js +1 -1
  39. package/lib/toggle-bar.js +1 -1
  40. package/lib/tool-menu.js +1 -1
  41. package/lib/tools/index.js +1 -1
  42. package/lib/tools/line/__tests__/component.test.js +45 -0
  43. package/lib/tools/line/component.js +1 -1
  44. package/lib/tools/line/index.js +1 -1
  45. package/lib/tools/polygon/__tests__/component.test.js +501 -0
  46. package/lib/tools/polygon/__tests__/index.test.js +92 -0
  47. package/lib/tools/polygon/__tests__/line.test.js +30 -0
  48. package/lib/tools/polygon/__tests__/polygon.test.js +61 -0
  49. package/lib/tools/polygon/component.js +1 -1
  50. package/lib/tools/polygon/index.js +1 -1
  51. package/lib/tools/polygon/line.js +1 -1
  52. package/lib/tools/polygon/polygon.js +1 -1
  53. package/lib/tools/shared/__tests__/arrow-head.test.js +45 -0
  54. package/lib/tools/shared/arrow-head.js +1 -1
  55. package/lib/tools/shared/line/__tests__/index.test.js +725 -0
  56. package/lib/tools/shared/line/__tests__/line-path.test.js +64 -0
  57. package/lib/tools/shared/line/__tests__/with-root-edge.test.js +618 -0
  58. package/lib/tools/shared/line/index.js +1 -1
  59. package/lib/tools/shared/line/line-path.js +1 -1
  60. package/lib/tools/shared/line/with-root-edge.js +1 -1
  61. package/lib/tools/shared/point/__tests__/arrow-point.test.js +127 -0
  62. package/lib/tools/shared/point/__tests__/arrow.test.js +619 -0
  63. package/lib/tools/shared/point/__tests__/base-point.test.js +122 -0
  64. package/lib/tools/shared/point/arrow-point.js +1 -1
  65. package/lib/tools/shared/point/arrow.js +1 -1
  66. package/lib/tools/shared/point/base-point.js +1 -1
  67. package/lib/tools/shared/point/index.js +1 -1
  68. package/lib/tools/shared/styles.js +1 -1
  69. package/lib/tools/shared/types.js +1 -1
  70. package/lib/undo-redo.js +1 -1
  71. package/lib/use-debounce.js +1 -1
  72. package/lib/utils.js +1 -1
  73. package/package.json +10 -13
  74. package/LICENSE.md +0 -5
package/lib/axis/axes.js CHANGED
@@ -322,4 +322,4 @@ var Axes = exports["default"] = /*#__PURE__*/function (_React$Component3) {
322
322
  graphProps: _plot.types.GraphPropsType.isRequired
323
323
  }));
324
324
  (0, _defineProperty2["default"])(Axes, "defaultProps", AxisDefaultProps);
325
- //# sourceMappingURL=axes.js.map
325
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9heGlzIiwiX3Bsb3QiLCJfcHJvcFR5cGVzIiwiX2Fycm93IiwiX3N0eWxlcyIsIl91dGlscyIsIl9yZW5kZXJVaSIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJjYWxsIiwiQXhpc1Byb3BUeXBlcyIsImV4cG9ydHMiLCJpbmNsdWRlQXJyb3dzIiwiUHJvcFR5cGVzIiwib2JqZWN0IiwiZ3JhcGhQcm9wcyIsIkF4aXNEZWZhdWx0UHJvcHMiLCJsZWZ0IiwicmlnaHQiLCJ1cCIsImRvd24iLCJTdHlsZWRBeGVzR3JvdXAiLCJzdHlsZWQiLCJzdHJva2UiLCJzdHJva2VXaWR0aCIsImZpbGwiLCJjb2xvciIsImRlZmF1bHRzIiwiQkxBQ0siLCJMYWJlbENvbnRhaW5lciIsIl9yZWYiLCJ0aGVtZSIsImZvbnRTaXplIiwidHlwb2dyYXBoeSIsIkF4aXNMYWJlbEhvbGRlciIsIl9yZWYyIiwicGFkZGluZyIsIm1hcmdpbiIsInRleHRBbGlnbiIsIlN0eWxlZEFycm93IiwiQXJyb3ciLCJ0aWNrTGFiZWxTdHlsZXMiLCJmb250RmFtaWx5IiwiY3Vyc29yIiwic2hhcmVkVmFsdWVzIiwiZmlyc3ROZWdhdGl2ZVgiLCJmaXJzdE5lZ2F0aXZlWSIsImRpc3RhbmNlRnJvbU9yaWdpblRvRmlyc3ROZWdhdGl2ZVgiLCJkaXN0YW5jZUZyb21PcmlnaW5Ub0ZpcnN0TmVnYXRpdmVZIiwiZGVsdGFBbGxvd2FuY2UiLCJkeSIsInJlc3VsdCIsImZpcnN0TmVnYXRpdmVWYWx1ZSIsImludGVydmFsIiwiZmluZCIsImVsZW1lbnQiLCJSYXdYQXhpcyIsIl9SZWFjdCRDb21wb25lbnQiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJ2YWx1ZSIsInJlbmRlciIsIl90aGlzJHByb3BzIiwicHJvcHMiLCJjb2x1bW5UaWNrc1ZhbHVlcyIsInNraXBWYWx1ZXMiLCJfcmVmMyIsInNjYWxlIiwiZG9tYWluIiwic2l6ZSIsInJhbmdlIiwibGFiZWxQcm9wcyIsImxhYmVsIiwieSIsInRleHRBbmNob3IiLCJkeCIsIm5lY2Vzc2FyeVJvd3MiLCJjb3VudFdvcmRzIiwiYXhpc0xhYmVsIiwibG9uZ2VzdFdvcmQiLCJmaW5kTG9uZ2VzdFdvcmQiLCJuZWNlc3NhcnlXaWR0aCIsImFtb3VudFRvSW5jcmVhc2VXaWR0aCIsImNyZWF0ZUVsZW1lbnQiLCJBeGlzIiwieCIsInRvcCIsInJhbmdlUGFkZGluZyIsInRpY2tGb3JtYXQiLCJ0aWNrTGFiZWxQcm9wcyIsInRpY2tWYWx1ZXMiLCJoaWRlWmVybyIsImxhYmVsU3RlcCIsIm1pbiIsImRpcmVjdGlvbiIsIm1heCIsIndpZHRoIiwiaGVpZ2h0IiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJfX2h0bWwiLCJSZWFjdCIsIkNvbXBvbmVudCIsInR5cGVzIiwiR3JhcGhQcm9wc1R5cGUiLCJpc1JlcXVpcmVkIiwiWEF4aXMiLCJSYXdZQXhpcyIsIl9SZWFjdCRDb21wb25lbnQyIiwiX3RoaXMkcHJvcHMyIiwicm93VGlja1ZhbHVlcyIsIl9yZWY0IiwiY3VzdG9tVGlja0Zvcm1hdCIsImluZGV4T2YiLCJvcmllbnRhdGlvbiIsInRpY2tMZW5ndGgiLCJkaWdpdHMiLCJ0b0xvY2FsZVN0cmluZyIsInJlcGxhY2UiLCJ0aWNrVGV4dEFuY2hvciIsIlJlYWRhYmxlIiwiWUF4aXMiLCJBeGVzIiwiX1JlYWN0JENvbXBvbmVudDMiLCJfdGhpcyIsIl9sZW4iLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY29uY2F0IiwiX3JlZjUiLCJ0aWNrcyIsImdldFRpY2tWYWx1ZXMiLCJzdGVwIiwibmVnYXRpdmUiLCJNYXRoIiwiYWJzIiwiX3JlZjYiLCJfcmVmNyIsIl90aGlzJHhWYWx1ZXMiLCJ4VmFsdWVzIiwiX3RoaXMkeVZhbHVlcyIsInlWYWx1ZXMiLCJfZXh0ZW5kczIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYXhpcy9heGVzLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQXhpcyB9IGZyb20gJ0B2aXN4L2F4aXMnO1xuaW1wb3J0IHsgdHlwZXMgfSBmcm9tICdAcGllLWxpYi9wbG90JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgQXJyb3cgZnJvbSAnLi9hcnJvdyc7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tICdAbXVpL21hdGVyaWFsL3N0eWxlcyc7XG5pbXBvcnQgeyBhbW91bnRUb0luY3JlYXNlV2lkdGgsIGNvdW50V29yZHMsIGZpbmRMb25nZXN0V29yZCwgZ2V0VGlja1ZhbHVlcyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGNvbG9yLCBSZWFkYWJsZSB9IGZyb20gJ0BwaWUtbGliL3JlbmRlci11aSc7XG5cbmV4cG9ydCBjb25zdCBBeGlzUHJvcFR5cGVzID0ge1xuICBpbmNsdWRlQXJyb3dzOiBQcm9wVHlwZXMub2JqZWN0LFxuICBncmFwaFByb3BzOiBQcm9wVHlwZXMub2JqZWN0LFxufTtcblxuY29uc3QgQXhpc0RlZmF1bHRQcm9wcyA9IHtcbiAgaW5jbHVkZUFycm93czoge1xuICAgIGxlZnQ6IHRydWUsXG4gICAgcmlnaHQ6IHRydWUsXG4gICAgdXA6IHRydWUsXG4gICAgZG93bjogdHJ1ZSxcbiAgfSxcbn07XG5cbmNvbnN0IFN0eWxlZEF4ZXNHcm91cCA9IHN0eWxlZCgnZycpKCgpID0+ICh7XG4gICcmIC52aXN4LWF4aXMtbGluZSc6IHtcbiAgICBzdHJva2U6ICcjOGE5MmMwJyxcbiAgICBzdHJva2VXaWR0aDogNCxcbiAgfSxcbiAgJyYgLnZpc3gtYXhpcy10aWNrJzoge1xuICAgIGZpbGw6IGNvbG9yLmRlZmF1bHRzLkJMQUNLLFxuICAgICcmID4gbGluZSc6IHtcbiAgICAgIHN0cm9rZTogJyM4YTkyYzAnLFxuICAgIH0sXG4gIH0sXG59KSk7XG5cbmNvbnN0IExhYmVsQ29udGFpbmVyID0gc3R5bGVkKCdkaXYnKSgoeyB0aGVtZSB9KSA9PiAoe1xuICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5mb250U2l6ZSxcbn0pKTtcblxuY29uc3QgQXhpc0xhYmVsSG9sZGVyID0gc3R5bGVkKCdkaXYnKSgoeyB0aGVtZSB9KSA9PiAoe1xuICBwYWRkaW5nOiAwLFxuICBtYXJnaW46IDAsXG4gIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICcqID4gKic6IHtcbiAgICBtYXJnaW46IDAsXG4gICAgcGFkZGluZzogMCxcbiAgfSxcbiAgZm9udFNpemU6IHRoZW1lLnR5cG9ncmFwaHkuZm9udFNpemUsXG59KSk7XG5cbmNvbnN0IFN0eWxlZEFycm93ID0gc3R5bGVkKEFycm93KSh7XG4gIGZpbGw6ICcjOGE5MmMwJyxcbn0pO1xuXG5jb25zdCB0aWNrTGFiZWxTdHlsZXMgPSB7XG4gIGZvbnRGYW1pbHk6ICdSb2JvdG8nLFxuICBmb250U2l6ZTogJzE0cHgnLFxuICBjdXJzb3I6ICdpbmhlcml0Jyxcbn07XG5cbmV4cG9ydCBjb25zdCBzaGFyZWRWYWx1ZXMgPSAoXG4gIGZpcnN0TmVnYXRpdmVYLFxuICBmaXJzdE5lZ2F0aXZlWSxcbiAgZGlzdGFuY2VGcm9tT3JpZ2luVG9GaXJzdE5lZ2F0aXZlWCxcbiAgZGlzdGFuY2VGcm9tT3JpZ2luVG9GaXJzdE5lZ2F0aXZlWSxcbiAgZGVsdGFBbGxvd2FuY2UsXG4gIGR5LFxuKSA9PiB7XG4gIGxldCByZXN1bHQgPSBbXTtcblxuICBpZiAoXG4gICAgZmlyc3ROZWdhdGl2ZVggPT09IGZpcnN0TmVnYXRpdmVZICYmXG4gICAgZGlzdGFuY2VGcm9tT3JpZ2luVG9GaXJzdE5lZ2F0aXZlWCAtIGRlbHRhQWxsb3dhbmNlIDwgZGlzdGFuY2VGcm9tT3JpZ2luVG9GaXJzdE5lZ2F0aXZlWSAmJlxuICAgIGRpc3RhbmNlRnJvbU9yaWdpblRvRmlyc3ROZWdhdGl2ZVkgPCBkaXN0YW5jZUZyb21PcmlnaW5Ub0ZpcnN0TmVnYXRpdmVYICsgZGVsdGFBbGxvd2FuY2UgJiZcbiAgICBkaXN0YW5jZUZyb21PcmlnaW5Ub0ZpcnN0TmVnYXRpdmVYIC0gZGVsdGFBbGxvd2FuY2UgPCBkeSAmJlxuICAgIGR5IDwgZGlzdGFuY2VGcm9tT3JpZ2luVG9GaXJzdE5lZ2F0aXZlWCArIGRlbHRhQWxsb3dhbmNlXG4gICkge1xuICAgIHJlc3VsdC5wdXNoKGZpcnN0TmVnYXRpdmVYKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgZmlyc3ROZWdhdGl2ZVZhbHVlID0gKGludGVydmFsKSA9PiAoaW50ZXJ2YWwgfHwgW10pLmZpbmQoKGVsZW1lbnQpID0+IGVsZW1lbnQgPCAwKTtcblxuZXhwb3J0IGNsYXNzIFJhd1hBeGlzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAuLi5BeGlzUHJvcFR5cGVzLFxuICAgIGdyYXBoUHJvcHM6IHR5cGVzLkdyYXBoUHJvcHNUeXBlLmlzUmVxdWlyZWQsXG4gIH07XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSBBeGlzRGVmYXVsdFByb3BzO1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGluY2x1ZGVBcnJvd3MsIGdyYXBoUHJvcHMsIGNvbHVtblRpY2tzVmFsdWVzLCBza2lwVmFsdWVzLCBkaXN0YW5jZUZyb21PcmlnaW5Ub0ZpcnN0TmVnYXRpdmVZLCBkeSB9ID1cbiAgICAgIHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyBzY2FsZSwgZG9tYWluLCBzaXplLCByYW5nZSB9ID0gZ3JhcGhQcm9wcyB8fCB7fTtcblxuICAgIGNvbnN0IGxhYmVsUHJvcHMgPSAobGFiZWwpID0+IHtcbiAgICAgIGNvbnN0IHkgPSBza2lwVmFsdWVzICYmIHNraXBWYWx1ZXNbMF0gPT09IGxhYmVsID8gZGlzdGFuY2VGcm9tT3JpZ2luVG9GaXJzdE5lZ2F0aXZlWSArIDQgOiBkeTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4udGlja0xhYmVsU3R5bGVzLFxuICAgICAgICB0ZXh0QW5jaG9yOiAnbWlkZGxlJyxcbiAgICAgICAgeTogeSxcbiAgICAgICAgZHg6IGxhYmVsID09PSAwID8gLTEwIDogMCxcbiAgICAgICAgZHk6IGxhYmVsID09PSAwID8gLTcgOiAwLFxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgbmVjZXNzYXJ5Um93cyA9IGNvdW50V29yZHMoZG9tYWluLmF4aXNMYWJlbCk7XG4gICAgY29uc3QgbG9uZ2VzdFdvcmQgPSBmaW5kTG9uZ2VzdFdvcmQoZG9tYWluLmF4aXNMYWJlbCk7XG4gICAgY29uc3QgbmVjZXNzYXJ5V2lkdGggPSBhbW91bnRUb0luY3JlYXNlV2lkdGgobG9uZ2VzdFdvcmQpICsgMjtcblxuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkQXhlc0dyb3VwPlxuICAgICAgICA8QXhpc1xuICAgICAgICAgIHNjYWxlPXtzY2FsZS54fVxuICAgICAgICAgIHRvcD17c2NhbGUueSgwKX1cbiAgICAgICAgICBsZWZ0PXswfVxuICAgICAgICAgIGxhYmVsPXtkb21haW4ubGFiZWx9XG4gICAgICAgICAgcmFuZ2VQYWRkaW5nPXs4fVxuICAgICAgICAgIHRpY2tGb3JtYXQ9eyh2YWx1ZSkgPT4gdmFsdWV9XG4gICAgICAgICAgdGlja0xhYmVsUHJvcHM9e2xhYmVsUHJvcHN9XG4gICAgICAgICAgdGlja1ZhbHVlcz17Y29sdW1uVGlja3NWYWx1ZXN9XG4gICAgICAgICAgaGlkZVplcm89eyEoZG9tYWluLmxhYmVsU3RlcCB8fCByYW5nZS5sYWJlbFN0ZXApICYmIGRvbWFpbi5taW4gPD0gMH1cbiAgICAgICAgLz5cbiAgICAgICAge2luY2x1ZGVBcnJvd3MgJiYgaW5jbHVkZUFycm93cy5sZWZ0ICYmIDxTdHlsZWRBcnJvdyBkaXJlY3Rpb249XCJsZWZ0XCIgeD17ZG9tYWluLm1pbn0geT17MH0gc2NhbGU9e3NjYWxlfSAvPn1cbiAgICAgICAge2luY2x1ZGVBcnJvd3MgJiYgaW5jbHVkZUFycm93cy5yaWdodCAmJiA8U3R5bGVkQXJyb3cgZGlyZWN0aW9uPVwicmlnaHRcIiB4PXtkb21haW4ubWF4fSB5PXswfSBzY2FsZT17c2NhbGV9IC8+fVxuICAgICAgICB7ZG9tYWluLmF4aXNMYWJlbCAmJiAoXG4gICAgICAgICAgPGZvcmVpZ25PYmplY3QgeD17c2l6ZS53aWR0aCArIDE3fSB5PXtzY2FsZS55KDApIC0gOX0gd2lkdGg9e25lY2Vzc2FyeVdpZHRofSBoZWlnaHQ9ezIwICogbmVjZXNzYXJ5Um93c30+XG4gICAgICAgICAgICA8TGFiZWxDb250YWluZXIgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3sgX19odG1sOiBkb21haW4uYXhpc0xhYmVsIH19IC8+XG4gICAgICAgICAgPC9mb3JlaWduT2JqZWN0PlxuICAgICAgICApfVxuICAgICAgPC9TdHlsZWRBeGVzR3JvdXA+XG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBYQXhpcyA9IFJhd1hBeGlzO1xuXG5leHBvcnQgY2xhc3MgUmF3WUF4aXMgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIC4uLkF4aXNQcm9wVHlwZXMsXG4gICAgZ3JhcGhQcm9wczogdHlwZXMuR3JhcGhQcm9wc1R5cGUuaXNSZXF1aXJlZCxcbiAgfTtcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IEF4aXNEZWZhdWx0UHJvcHM7XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgaW5jbHVkZUFycm93cywgZ3JhcGhQcm9wcywgc2tpcFZhbHVlcywgcm93VGlja1ZhbHVlcyB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7IHNjYWxlLCByYW5nZSwgc2l6ZSB9ID0gZ3JhcGhQcm9wcyB8fCB7fTtcblxuICAgIGNvbnN0IG5lY2Vzc2FyeVdpZHRoID0gcmFuZ2UuYXhpc0xhYmVsID8gYW1vdW50VG9JbmNyZWFzZVdpZHRoKHJhbmdlLmF4aXNMYWJlbC5sZW5ndGgpIDogMDtcblxuICAgIGNvbnN0IGN1c3RvbVRpY2tGb3JtYXQgPSAodmFsdWUpID0+IChza2lwVmFsdWVzICYmIHNraXBWYWx1ZXMuaW5kZXhPZih2YWx1ZSkgPj0gMCA/ICcnIDogdmFsdWUpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRBeGVzR3JvdXA+XG4gICAgICAgIDxBeGlzXG4gICAgICAgICAgb3JpZW50YXRpb249eydsZWZ0J31cbiAgICAgICAgICBzY2FsZT17c2NhbGUueX1cbiAgICAgICAgICB0b3A9ezB9XG4gICAgICAgICAgaGVpZ2h0PXtzaXplLmhlaWdodH1cbiAgICAgICAgICBsZWZ0PXtzY2FsZS54KDApfVxuICAgICAgICAgIGxhYmVsPXtyYW5nZS5sYWJlbH1cbiAgICAgICAgICBsYWJlbFByb3BzPXt7ICdkYXRhLXBpZS1yZWFkYWJsZSc6IGZhbHNlIH19XG4gICAgICAgICAgcmFuZ2VQYWRkaW5nPXs4fVxuICAgICAgICAgIHRpY2tMZW5ndGg9ezEwfVxuICAgICAgICAgIHRpY2tGb3JtYXQ9e2N1c3RvbVRpY2tGb3JtYXR9XG4gICAgICAgICAgdGlja0xhYmVsUHJvcHM9eyh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgbGV0IGRpZ2l0cyA9IHZhbHVlLnRvTG9jYWxlU3RyaW5nKCkucmVwbGFjZSgvWy4tXS9nLCAnJykubGVuZ3RoIHx8IDE7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLnRpY2tMYWJlbFN0eWxlcyxcbiAgICAgICAgICAgICAgZHk6IDQsXG4gICAgICAgICAgICAgIGR4OiAtMTAgLSBkaWdpdHMgKiA5LFxuICAgICAgICAgICAgICAnZGF0YS1waWUtcmVhZGFibGUnOiBmYWxzZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfX1cbiAgICAgICAgICBoaWRlWmVybz17dHJ1ZX1cbiAgICAgICAgICB0aWNrVGV4dEFuY2hvcj17J2JvdHRvbSd9XG4gICAgICAgICAgdGlja1ZhbHVlcz17cm93VGlja1ZhbHVlc31cbiAgICAgICAgLz5cbiAgICAgICAge2luY2x1ZGVBcnJvd3MgJiYgaW5jbHVkZUFycm93cy5kb3duICYmIDxTdHlsZWRBcnJvdyBkaXJlY3Rpb249XCJkb3duXCIgeD17MH0geT17cmFuZ2UubWlufSBzY2FsZT17c2NhbGV9IC8+fVxuICAgICAgICB7aW5jbHVkZUFycm93cyAmJiBpbmNsdWRlQXJyb3dzLnVwICYmIDxTdHlsZWRBcnJvdyBkaXJlY3Rpb249XCJ1cFwiIHg9ezB9IHk9e3JhbmdlLm1heH0gc2NhbGU9e3NjYWxlfSAvPn1cbiAgICAgICAge3JhbmdlLmF4aXNMYWJlbCAmJiAoXG4gICAgICAgICAgPGZvcmVpZ25PYmplY3QgeD17c2NhbGUueCgwKSAtIG5lY2Vzc2FyeVdpZHRoIC8gMn0geT17LTMzfSB3aWR0aD17bmVjZXNzYXJ5V2lkdGh9IGhlaWdodD1cIjIwXCI+XG4gICAgICAgICAgICA8UmVhZGFibGUgZmFsc2U+XG4gICAgICAgICAgICAgIDxBeGlzTGFiZWxIb2xkZXIgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3sgX19odG1sOiByYW5nZS5heGlzTGFiZWwgfX0gLz5cbiAgICAgICAgICAgIDwvUmVhZGFibGU+XG4gICAgICAgICAgPC9mb3JlaWduT2JqZWN0PlxuICAgICAgICApfVxuICAgICAgPC9TdHlsZWRBeGVzR3JvdXA+XG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBZQXhpcyA9IFJhd1lBeGlzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBeGVzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAuLi5BeGlzUHJvcFR5cGVzLFxuICAgIGdyYXBoUHJvcHM6IHR5cGVzLkdyYXBoUHJvcHNUeXBlLmlzUmVxdWlyZWQsXG4gIH07XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSBBeGlzRGVmYXVsdFByb3BzO1xuXG4gIHhWYWx1ZXMgPSAoKSA9PiB7XG4gICAgY29uc3QgeyBncmFwaFByb3BzIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHsgc2NhbGUsIGRvbWFpbiB9ID0gZ3JhcGhQcm9wcyB8fCB7fTtcblxuICAgIGlmICghZG9tYWluIHx8ICFzY2FsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRpY2tzID0gZ2V0VGlja1ZhbHVlcyh7IC4uLmRvbWFpbiwgc3RlcDogZG9tYWluLmxhYmVsU3RlcCB9KTtcbiAgICBjb25zdCBuZWdhdGl2ZSA9IGZpcnN0TmVnYXRpdmVWYWx1ZSh0aWNrcyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29sdW1uVGlja3NWYWx1ZXM6IHRpY2tzLFxuICAgICAgZmlyc3ROZWdhdGl2ZVg6IG5lZ2F0aXZlLFxuICAgICAgZGlzdGFuY2VGcm9tT3JpZ2luVG9GaXJzdE5lZ2F0aXZlWDogTWF0aC5hYnMoc2NhbGUueSgwKSAtIHNjYWxlLnkobmVnYXRpdmUpKSxcbiAgICB9O1xuICB9O1xuXG4gIHlWYWx1ZXMgPSAoKSA9PiB7XG4gICAgY29uc3QgeyBncmFwaFByb3BzIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHsgc2NhbGUsIHJhbmdlIH0gPSBncmFwaFByb3BzIHx8IHt9O1xuXG4gICAgaWYgKCFyYW5nZSB8fCAhc2NhbGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0aWNrcyA9IGdldFRpY2tWYWx1ZXMoeyAuLi5yYW5nZSwgc3RlcDogcmFuZ2UubGFiZWxTdGVwIH0pO1xuICAgIGNvbnN0IG5lZ2F0aXZlID0gZmlyc3ROZWdhdGl2ZVZhbHVlKHRpY2tzKTtcblxuICAgIHJldHVybiB7XG4gICAgICByb3dUaWNrVmFsdWVzOiB0aWNrcyxcbiAgICAgIGZpcnN0TmVnYXRpdmVZOiBuZWdhdGl2ZSxcbiAgICAgIGRpc3RhbmNlRnJvbU9yaWdpblRvRmlyc3ROZWdhdGl2ZVk6IE1hdGguYWJzKHNjYWxlLngoMCkgLSBzY2FsZS54KG5lZ2F0aXZlKSksXG4gICAgfTtcbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBncmFwaFByb3BzIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHsgZG9tYWluLCByYW5nZSB9ID0gZ3JhcGhQcm9wcyB8fCB7fTtcbiAgICBjb25zdCB7IGNvbHVtblRpY2tzVmFsdWVzLCBmaXJzdE5lZ2F0aXZlWCwgZGlzdGFuY2VGcm9tT3JpZ2luVG9GaXJzdE5lZ2F0aXZlWCB9ID0gdGhpcy54VmFsdWVzKCk7XG4gICAgY29uc3QgeyByb3dUaWNrVmFsdWVzLCBmaXJzdE5lZ2F0aXZlWSwgZGlzdGFuY2VGcm9tT3JpZ2luVG9GaXJzdE5lZ2F0aXZlWSB9ID0gdGhpcy55VmFsdWVzKCk7XG4gICAgY29uc3QgZGVsdGFBbGxvd2FuY2UgPSA2O1xuICAgIGNvbnN0IGR5ID0gMjU7XG5cbiAgICBjb25zdCBza2lwVmFsdWVzID0gc2hhcmVkVmFsdWVzKFxuICAgICAgZmlyc3ROZWdhdGl2ZVgsXG4gICAgICBmaXJzdE5lZ2F0aXZlWSxcbiAgICAgIGRpc3RhbmNlRnJvbU9yaWdpblRvRmlyc3ROZWdhdGl2ZVgsXG4gICAgICBkaXN0YW5jZUZyb21PcmlnaW5Ub0ZpcnN0TmVnYXRpdmVZLFxuICAgICAgZGVsdGFBbGxvd2FuY2UsXG4gICAgICBkeSxcbiAgICApO1xuXG4gICAgLy8gZWFjaCBheGlzIGhhcyB0byBiZSBkaXNwbGF5ZWQgb25seSBpZiB0aGUgZG9tYWluICYgcmFuZ2UgaW5jbHVkZSBpdFxuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkQXhlc0dyb3VwPlxuICAgICAgICB7cmFuZ2UubWluIDw9IDAgPyAoXG4gICAgICAgICAgPFhBeGlzXG4gICAgICAgICAgICB7Li4udGhpcy5wcm9wc31cbiAgICAgICAgICAgIHNraXBWYWx1ZXM9e3NraXBWYWx1ZXN9XG4gICAgICAgICAgICBjb2x1bW5UaWNrc1ZhbHVlcz17Y29sdW1uVGlja3NWYWx1ZXN9XG4gICAgICAgICAgICBkaXN0YW5jZUZyb21PcmlnaW5Ub0ZpcnN0TmVnYXRpdmVZPXtkaXN0YW5jZUZyb21PcmlnaW5Ub0ZpcnN0TmVnYXRpdmVZfVxuICAgICAgICAgICAgZHk9e2R5fVxuICAgICAgICAgIC8+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICB7ZG9tYWluLm1pbiA8PSAwID8gKFxuICAgICAgICAgIDxZQXhpc1xuICAgICAgICAgICAgey4uLnRoaXMucHJvcHN9XG4gICAgICAgICAgICBza2lwVmFsdWVzPXtza2lwVmFsdWVzfVxuICAgICAgICAgICAgcm93VGlja1ZhbHVlcz17cm93VGlja1ZhbHVlc31cbiAgICAgICAgICAgIGRpc3RhbmNlRnJvbU9yaWdpblRvRmlyc3ROZWdhdGl2ZVg9e2Rpc3RhbmNlRnJvbU9yaWdpblRvRmlyc3ROZWdhdGl2ZVh9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICA8L1N0eWxlZEF4ZXNHcm91cD5cbiAgICApO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsS0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsVUFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFB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
package/lib/axis/index.js CHANGED
@@ -18,4 +18,4 @@ Object.defineProperty(exports, "AxisPropTypes", {
18
18
  });
19
19
  var _axes = _interopRequireWildcard(require("./axes"));
20
20
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
21
- //# sourceMappingURL=index.js.map
21
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXhlcyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F4aXMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEF4ZXMsIHsgQXhpc1Byb3BUeXBlcyB9IGZyb20gJy4vYXhlcyc7XG5cbmV4cG9ydCB7IEF4ZXMsIEF4aXNQcm9wVHlwZXMgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQTZDLFNBQUFELHdCQUFBRSxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBSix1QkFBQSxZQUFBQSx3QkFBQUUsQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFBTSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLG1CQUFBVCxDQUFBLGlCQUFBQSxDQUFBLGdCQUFBVSxPQUFBLENBQUFWLENBQUEsMEJBQUFBLENBQUEsU0FBQVEsQ0FBQSxNQUFBRixDQUFBLEdBQUFMLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLFFBQUFHLENBQUEsQ0FBQUssR0FBQSxDQUFBWCxDQUFBLFVBQUFNLENBQUEsQ0FBQU0sR0FBQSxDQUFBWixDQUFBLEdBQUFNLENBQUEsQ0FBQU8sR0FBQSxDQUFBYixDQUFBLEVBQUFRLENBQUEsY0FBQU0sRUFBQSxJQUFBZCxDQUFBLGdCQUFBYyxFQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBaEIsQ0FBQSxFQUFBYyxFQUFBLE9BQUFQLENBQUEsSUFBQUQsQ0FBQSxHQUFBVyxNQUFBLENBQUFDLGNBQUEsS0FBQUQsTUFBQSxDQUFBRSx3QkFBQSxDQUFBbkIsQ0FBQSxFQUFBYyxFQUFBLE9BQUFQLENBQUEsQ0FBQUssR0FBQSxJQUFBTCxDQUFBLENBQUFNLEdBQUEsSUFBQVAsQ0FBQSxDQUFBRSxDQUFBLEVBQUFNLEVBQUEsRUFBQVAsQ0FBQSxJQUFBQyxDQUFBLENBQUFNLEVBQUEsSUFBQWQsQ0FBQSxDQUFBYyxFQUFBLFdBQUFOLENBQUEsS0FBQVIsQ0FBQSxFQUFBQyxDQUFBIiwiaWdub3JlTGlzdCI6W119
package/lib/bg.js CHANGED
@@ -111,4 +111,4 @@ var Bg = exports["default"] = /*#__PURE__*/function (_React$Component) {
111
111
  graphProps: _plot.types.GraphPropsType.isRequired
112
112
  });
113
113
  (0, _defineProperty2["default"])(Bg, "defaultProps", {});
114
- //# sourceMappingURL=bg.js.map
114
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wcm9wVHlwZXMiLCJfZDNTZWxlY3Rpb24iLCJfcGxvdCIsIl91dGlscyIsIl9jYWxsU3VwZXIiLCJ0IiwibyIsImUiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsImFwcGx5IiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJjYWxsIiwiQmciLCJleHBvcnRzIiwiX1JlYWN0JENvbXBvbmVudCIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY29uY2F0IiwiX2RlZmluZVByb3BlcnR5MiIsImdyYXBoUHJvcHMiLCJwcm9wcyIsInRoaW5uZXJTaGFwZXNOZWVkZWQiLCJyZWN0IiwiZXZlbnQiLCJfdGhpcyRwcm9wcyIsIm9uQ2xpY2siLCJzY2FsZSIsInBhZGRpbmciLCJnZXRSZWN0UGFkZGluZyIsImNvb3JkcyIsInBvaW50ZXIiLCJub2RlIiwieCIsImludmVydCIsInkiLCJyb3dUaWNrcyIsImdldFRpY2tWYWx1ZXMiLCJyYW5nZSIsImNvbHVtblRpY2tzIiwiZG9tYWluIiwiY2xvc2VzdCIsInRpY2tzIiwidmFsdWUiLCJyZWR1Y2UiLCJwcmV2IiwiY3VyciIsImN1cnJlbnREaXN0YW5jZSIsIk1hdGgiLCJhYnMiLCJwcmV2aW91c0Rpc3RhbmNlIiwic25hcHBlZCIsImluZGV4T2YiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsImNvbXBvbmVudERpZE1vdW50IiwiX3RoaXMyIiwic2VsZWN0Iiwib24iLCJvblJlY3RDbGljayIsInNob3VsZENvbXBvbmVudFVwZGF0ZSIsIm5leHRQcm9wcyIsInV0aWxzIiwiaXNEb21haW5SYW5nZUVxdWFsIiwid2lkdGgiLCJoZWlnaHQiLCJyZW5kZXIiLCJfdGhpczMiLCJfdGhpcyRwcm9wczIiLCJjcmVhdGVFbGVtZW50IiwicmVmIiwidHJhbnNmb3JtIiwiZmlsbCIsImZpbGxPcGFjaXR5IiwiUmVhY3QiLCJDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJudW1iZXIiLCJpc1JlcXVpcmVkIiwiZnVuYyIsInR5cGVzIiwiR3JhcGhQcm9wc1R5cGUiXSwic291cmNlcyI6WyIuLi9zcmMvYmcuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgcG9pbnRlciwgc2VsZWN0IH0gZnJvbSAnZDMtc2VsZWN0aW9uJztcbmltcG9ydCB7IHR5cGVzLCB1dGlscyB9IGZyb20gJ0BwaWUtbGliL3Bsb3QnO1xuaW1wb3J0IHsgZ2V0VGlja1ZhbHVlcywgdGhpbm5lclNoYXBlc05lZWRlZCB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCZyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgd2lkdGg6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgICBoZWlnaHQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIGdyYXBoUHJvcHM6IHR5cGVzLkdyYXBoUHJvcHNUeXBlLmlzUmVxdWlyZWQsXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHt9O1xuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIGNvbnN0IHJlY3QgPSBzZWxlY3QodGhpcy5yZWN0KTtcblxuICAgIHJlY3Qub24oJ2NsaWNrJywgKGV2ZW50KSA9PiB0aGlzLm9uUmVjdENsaWNrKHJlY3QsIGV2ZW50KSk7XG4gIH1cblxuICBzaG91bGRDb21wb25lbnRVcGRhdGUobmV4dFByb3BzKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICF1dGlscy5pc0RvbWFpblJhbmdlRXF1YWwodGhpcy5wcm9wcy5ncmFwaFByb3BzLCBuZXh0UHJvcHMuZ3JhcGhQcm9wcykgfHxcbiAgICAgIHRoaXMucHJvcHMud2lkdGggIT09IG5leHRQcm9wcy53aWR0aCB8fFxuICAgICAgdGhpcy5wcm9wcy5oZWlnaHQgIT09IG5leHRQcm9wcy5oZWlnaHRcbiAgICApO1xuICB9XG5cbiAgZ2V0UmVjdFBhZGRpbmcgPSAoKSA9PiB7XG4gICAgY29uc3QgeyBncmFwaFByb3BzIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgcmV0dXJuIHRoaW5uZXJTaGFwZXNOZWVkZWQoZ3JhcGhQcm9wcykgPyA2IDogMTA7XG4gIH07XG5cbiAgLyoqXG4gICAqIE5vdGU6IHdlIHVzZSBkMyBjbGljayArIHBvaW50ZXIgdG8gZ2l2ZSB1cyBkb21haW4gdmFsdWVzIGRpcmVjdGx5LlxuICAgKiBTYXZlcyB1cyBoYXZpbmcgdG8gY2FsY3VsYXRlIHRoZW0gb3Vyc2VsdmVzIGZyb20gYSBNb3VzZUV2ZW50LlxuICAgKi9cbiAgb25SZWN0Q2xpY2sgPSAocmVjdCwgZXZlbnQpID0+IHtcbiAgICBjb25zdCB7IG9uQ2xpY2ssIGdyYXBoUHJvcHMgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyBzY2FsZSB9ID0gZ3JhcGhQcm9wcztcblxuICAgIGNvbnN0IHBhZGRpbmcgPSB0aGlzLmdldFJlY3RQYWRkaW5nKCk7XG4gICAgY29uc3QgY29vcmRzID0gcG9pbnRlcihldmVudCwgcmVjdC5ub2RlKCkpO1xuXG4gICAgLy8gZGVjcmVhc2UgdGhlIHBhZGRpbmcgZnJvbSBjb29yZGluYXRlcyB0byBpbmRpY2F0ZSB0aGUgY29ycmVjdCBwb2ludCBjbGlja2VkXG4gICAgY29uc3QgeCA9IHNjYWxlLnguaW52ZXJ0KGNvb3Jkc1swXSAtIHBhZGRpbmcpO1xuICAgIGNvbnN0IHkgPSBzY2FsZS55LmludmVydChjb29yZHNbMV0gLSBwYWRkaW5nKTtcblxuICAgIGNvbnN0IHJvd1RpY2tzID0gZ2V0VGlja1ZhbHVlcyhncmFwaFByb3BzLnJhbmdlKTtcbiAgICBjb25zdCBjb2x1bW5UaWNrcyA9IGdldFRpY2tWYWx1ZXMoZ3JhcGhQcm9wcy5kb21haW4pO1xuXG4gICAgY29uc3QgY2xvc2VzdCA9ICh0aWNrcywgdmFsdWUpID0+IHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHRpY2tzLmxlbmd0aCAmJlxuICAgICAgICB0aWNrcy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50RGlzdGFuY2UgPSBNYXRoLmFicyhjdXJyIC0gdmFsdWUpO1xuICAgICAgICAgIGNvbnN0IHByZXZpb3VzRGlzdGFuY2UgPSBNYXRoLmFicyhwcmV2IC0gdmFsdWUpO1xuXG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnREaXN0YW5jZSA8PSBwcmV2aW91c0Rpc3RhbmNlID8gY3VyciA6IHByZXY7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH07XG5cbiAgICBsZXQgc25hcHBlZCA9IHt9O1xuXG4gICAgaWYgKGNvbHVtblRpY2tzLmluZGV4T2YoeCkgPj0gMCAmJiByb3dUaWNrcy5pbmRleE9mKHkpID49IDApIHtcbiAgICAgIHNuYXBwZWQueCA9IHg7XG4gICAgICBzbmFwcGVkLnkgPSB5O1xuICAgIH0gZWxzZSB7XG4gICAgICBzbmFwcGVkLnggPSBjbG9zZXN0KGNvbHVtblRpY2tzLCB4KTtcbiAgICAgIHNuYXBwZWQueSA9IGNsb3Nlc3Qocm93VGlja3MsIHkpO1xuICAgIH1cblxuICAgIG9uQ2xpY2soc25hcHBlZCk7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBwYWRkaW5nID0gdGhpcy5nZXRSZWN0UGFkZGluZygpO1xuXG4gICAgLy8gZXhwYW5kIHRoZSBzaXplIG9mIGNsaWNrYWJsZSBhcmVhIHNvIGEgc21hbGwgYXJlYSBvdXRzaWRlIHRoZSBlZGdlcyBvZiB0aGUgZ3JpZCBsaW5lcyB0byBiZSBjbGlja2FibGVcbiAgICByZXR1cm4gKFxuICAgICAgPHJlY3RcbiAgICAgICAgcmVmPXsocmVjdCkgPT4gKHRoaXMucmVjdCA9IHJlY3QpfVxuICAgICAgICB0cmFuc2Zvcm09e2B0cmFuc2xhdGUoLSR7cGFkZGluZ30sIC0ke3BhZGRpbmd9KWB9XG4gICAgICAgIGZpbGw9XCJyZWRcIlxuICAgICAgICBmaWxsT3BhY2l0eT1cIjAuMFwiXG4gICAgICAgIHdpZHRoPXt3aWR0aCArIHBhZGRpbmcgKiAyfVxuICAgICAgICBoZWlnaHQ9e2hlaWdodCArIHBhZGRpbmcgKiAyfVxuICAgICAgLz5cbiAgICApO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxZQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxLQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxNQUFBLEdBQUFKLE9BQUE7QUFBNkQsU0FBQUssV0FBQUMsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsV0FBQUQsQ0FBQSxPQUFBRSxnQkFBQSxhQUFBRixDQUFBLE9BQUFHLDJCQUFBLGFBQUFKLENBQUEsRUFBQUsseUJBQUEsS0FBQUMsT0FBQSxDQUFBQyxTQUFBLENBQUFOLENBQUEsRUFBQUMsQ0FBQSxZQUFBQyxnQkFBQSxhQUFBSCxDQUFBLEVBQUFRLFdBQUEsSUFBQVAsQ0FBQSxDQUFBUSxLQUFBLENBQUFULENBQUEsRUFBQUUsQ0FBQTtBQUFBLFNBQUFHLDBCQUFBLGNBQUFMLENBQUEsSUFBQVUsT0FBQSxDQUFBQyxTQUFBLENBQUFDLE9BQUEsQ0FBQUMsSUFBQSxDQUFBUCxPQUFBLENBQUFDLFNB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
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
5
+ var _actions = require("../actions");
6
+ describe('container actions', function () {
7
+ describe('addMark', function () {
8
+ it('creates ADD_MARK action', function () {
9
+ var action = (0, _actions.addMark)();
10
+ expect(action).toEqual({
11
+ type: 'ADD_MARK'
12
+ });
13
+ });
14
+ it('creates action without parameters', function () {
15
+ var action = (0, _actions.addMark)();
16
+ expect(action.type).toBe('ADD_MARK');
17
+ expect(Object.keys(action)).toEqual(['type']);
18
+ });
19
+ });
20
+ describe('changeMarks', function () {
21
+ it('creates CHANGE_MARKS action with marks', function () {
22
+ var marks = [{
23
+ id: 1,
24
+ type: 'point'
25
+ }];
26
+ var action = (0, _actions.changeMarks)(marks);
27
+ expect(action).toEqual({
28
+ type: 'CHANGE_MARKS',
29
+ marks: marks
30
+ });
31
+ });
32
+ it('creates action with empty marks array', function () {
33
+ var marks = [];
34
+ var action = (0, _actions.changeMarks)(marks);
35
+ expect(action).toEqual({
36
+ type: 'CHANGE_MARKS',
37
+ marks: []
38
+ });
39
+ });
40
+ it('creates action with multiple marks', function () {
41
+ var marks = [{
42
+ id: 1,
43
+ type: 'point',
44
+ x: 1,
45
+ y: 2
46
+ }, {
47
+ id: 2,
48
+ type: 'line',
49
+ from: {
50
+ x: 0,
51
+ y: 0
52
+ },
53
+ to: {
54
+ x: 5,
55
+ y: 5
56
+ }
57
+ }];
58
+ var action = (0, _actions.changeMarks)(marks);
59
+ expect(action.marks).toEqual(marks);
60
+ expect(action.marks.length).toBe(2);
61
+ });
62
+ it('creates action with null marks', function () {
63
+ var marks = null;
64
+ var action = (0, _actions.changeMarks)(marks);
65
+ expect(action).toEqual({
66
+ type: 'CHANGE_MARKS',
67
+ marks: null
68
+ });
69
+ });
70
+ it('creates action with undefined marks', function () {
71
+ var marks = undefined;
72
+ var action = (0, _actions.changeMarks)(marks);
73
+ expect(action).toEqual({
74
+ type: 'CHANGE_MARKS',
75
+ marks: undefined
76
+ });
77
+ });
78
+ it('preserves mark properties', function () {
79
+ var marks = [{
80
+ id: 1,
81
+ type: 'point',
82
+ x: 10,
83
+ y: 20,
84
+ label: 'A',
85
+ correctness: {
86
+ value: 'correct'
87
+ }
88
+ }];
89
+ var action = (0, _actions.changeMarks)(marks);
90
+ expect(action.marks[0]).toEqual(marks[0]);
91
+ expect(action.marks[0].correctness).toBeDefined();
92
+ });
93
+ });
94
+ describe('action types', function () {
95
+ it('has consistent action type strings', function () {
96
+ var addMarkAction = (0, _actions.addMark)();
97
+ var changeMarksAction = (0, _actions.changeMarks)([]);
98
+ expect((0, _typeof2["default"])(addMarkAction.type)).toBe('string');
99
+ expect((0, _typeof2["default"])(changeMarksAction.type)).toBe('string');
100
+ });
101
+ it('has unique action types', function () {
102
+ var addMarkAction = (0, _actions.addMark)();
103
+ var changeMarksAction = (0, _actions.changeMarks)([]);
104
+ expect(addMarkAction.type).not.toBe(changeMarksAction.type);
105
+ });
106
+ });
107
+ });
108
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYWN0aW9ucyIsInJlcXVpcmUiLCJkZXNjcmliZSIsIml0IiwiYWN0aW9uIiwiYWRkTWFyayIsImV4cGVjdCIsInRvRXF1YWwiLCJ0eXBlIiwidG9CZSIsIk9iamVjdCIsImtleXMiLCJtYXJrcyIsImlkIiwiY2hhbmdlTWFya3MiLCJ4IiwieSIsImZyb20iLCJ0byIsImxlbmd0aCIsInVuZGVmaW5lZCIsImxhYmVsIiwiY29ycmVjdG5lc3MiLCJ2YWx1ZSIsInRvQmVEZWZpbmVkIiwiYWRkTWFya0FjdGlvbiIsImNoYW5nZU1hcmtzQWN0aW9uIiwiX3R5cGVvZjIiLCJub3QiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udGFpbmVyL19fdGVzdHNfXy9hY3Rpb25zLnRlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWRkTWFyaywgY2hhbmdlTWFya3MgfSBmcm9tICcuLi9hY3Rpb25zJztcblxuZGVzY3JpYmUoJ2NvbnRhaW5lciBhY3Rpb25zJywgKCkgPT4ge1xuICBkZXNjcmliZSgnYWRkTWFyaycsICgpID0+IHtcbiAgICBpdCgnY3JlYXRlcyBBRERfTUFSSyBhY3Rpb24nLCAoKSA9PiB7XG4gICAgICBjb25zdCBhY3Rpb24gPSBhZGRNYXJrKCk7XG4gICAgICBleHBlY3QoYWN0aW9uKS50b0VxdWFsKHtcbiAgICAgICAgdHlwZTogJ0FERF9NQVJLJyxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2NyZWF0ZXMgYWN0aW9uIHdpdGhvdXQgcGFyYW1ldGVycycsICgpID0+IHtcbiAgICAgIGNvbnN0IGFjdGlvbiA9IGFkZE1hcmsoKTtcbiAgICAgIGV4cGVjdChhY3Rpb24udHlwZSkudG9CZSgnQUREX01BUksnKTtcbiAgICAgIGV4cGVjdChPYmplY3Qua2V5cyhhY3Rpb24pKS50b0VxdWFsKFsndHlwZSddKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2NoYW5nZU1hcmtzJywgKCkgPT4ge1xuICAgIGl0KCdjcmVhdGVzIENIQU5HRV9NQVJLUyBhY3Rpb24gd2l0aCBtYXJrcycsICgpID0+IHtcbiAgICAgIGNvbnN0IG1hcmtzID0gW3sgaWQ6IDEsIHR5cGU6ICdwb2ludCcgfV07XG4gICAgICBjb25zdCBhY3Rpb24gPSBjaGFuZ2VNYXJrcyhtYXJrcyk7XG5cbiAgICAgIGV4cGVjdChhY3Rpb24pLnRvRXF1YWwoe1xuICAgICAgICB0eXBlOiAnQ0hBTkdFX01BUktTJyxcbiAgICAgICAgbWFya3MsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdjcmVhdGVzIGFjdGlvbiB3aXRoIGVtcHR5IG1hcmtzIGFycmF5JywgKCkgPT4ge1xuICAgICAgY29uc3QgbWFya3MgPSBbXTtcbiAgICAgIGNvbnN0IGFjdGlvbiA9IGNoYW5nZU1hcmtzKG1hcmtzKTtcblxuICAgICAgZXhwZWN0KGFjdGlvbikudG9FcXVhbCh7XG4gICAgICAgIHR5cGU6ICdDSEFOR0VfTUFSS1MnLFxuICAgICAgICBtYXJrczogW10sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdjcmVhdGVzIGFjdGlvbiB3aXRoIG11bHRpcGxlIG1hcmtzJywgKCkgPT4ge1xuICAgICAgY29uc3QgbWFya3MgPSBbXG4gICAgICAgIHsgaWQ6IDEsIHR5cGU6ICdwb2ludCcsIHg6IDEsIHk6IDIgfSxcbiAgICAgICAgeyBpZDogMiwgdHlwZTogJ2xpbmUnLCBmcm9tOiB7IHg6IDAsIHk6IDAgfSwgdG86IHsgeDogNSwgeTogNSB9IH0sXG4gICAgICBdO1xuICAgICAgY29uc3QgYWN0aW9uID0gY2hhbmdlTWFya3MobWFya3MpO1xuXG4gICAgICBleHBlY3QoYWN0aW9uLm1hcmtzKS50b0VxdWFsKG1hcmtzKTtcbiAgICAgIGV4cGVjdChhY3Rpb24ubWFya3MubGVuZ3RoKS50b0JlKDIpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2NyZWF0ZXMgYWN0aW9uIHdpdGggbnVsbCBtYXJrcycsICgpID0+IHtcbiAgICAgIGNvbnN0IG1hcmtzID0gbnVsbDtcbiAgICAgIGNvbnN0IGFjdGlvbiA9IGNoYW5nZU1hcmtzKG1hcmtzKTtcblxuICAgICAgZXhwZWN0KGFjdGlvbikudG9FcXVhbCh7XG4gICAgICAgIHR5cGU6ICdDSEFOR0VfTUFSS1MnLFxuICAgICAgICBtYXJrczogbnVsbCxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2NyZWF0ZXMgYWN0aW9uIHdpdGggdW5kZWZpbmVkIG1hcmtzJywgKCkgPT4ge1xuICAgICAgY29uc3QgbWFya3MgPSB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBhY3Rpb24gPSBjaGFuZ2VNYXJrcyhtYXJrcyk7XG5cbiAgICAgIGV4cGVjdChhY3Rpb24pLnRvRXF1YWwoe1xuICAgICAgICB0eXBlOiAnQ0hBTkdFX01BUktTJyxcbiAgICAgICAgbWFya3M6IHVuZGVmaW5lZCxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3ByZXNlcnZlcyBtYXJrIHByb3BlcnRpZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtYXJrcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAxLFxuICAgICAgICAgIHR5cGU6ICdwb2ludCcsXG4gICAgICAgICAgeDogMTAsXG4gICAgICAgICAgeTogMjAsXG4gICAgICAgICAgbGFiZWw6ICdBJyxcbiAgICAgICAgICBjb3JyZWN0bmVzczogeyB2YWx1ZTogJ2NvcnJlY3QnIH0sXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgICAgY29uc3QgYWN0aW9uID0gY2hhbmdlTWFya3MobWFya3MpO1xuXG4gICAgICBleHBlY3QoYWN0aW9uLm1hcmtzWzBdKS50b0VxdWFsKG1hcmtzWzBdKTtcbiAgICAgIGV4cGVjdChhY3Rpb24ubWFya3NbMF0uY29ycmVjdG5lc3MpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdhY3Rpb24gdHlwZXMnLCAoKSA9PiB7XG4gICAgaXQoJ2hhcyBjb25zaXN0ZW50IGFjdGlvbiB0eXBlIHN0cmluZ3MnLCAoKSA9PiB7XG4gICAgICBjb25zdCBhZGRNYXJrQWN0aW9uID0gYWRkTWFyaygpO1xuICAgICAgY29uc3QgY2hhbmdlTWFya3NBY3Rpb24gPSBjaGFuZ2VNYXJrcyhbXSk7XG5cbiAgICAgIGV4cGVjdCh0eXBlb2YgYWRkTWFya0FjdGlvbi50eXBlKS50b0JlKCdzdHJpbmcnKTtcbiAgICAgIGV4cGVjdCh0eXBlb2YgY2hhbmdlTWFya3NBY3Rpb24udHlwZSkudG9CZSgnc3RyaW5nJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFzIHVuaXF1ZSBhY3Rpb24gdHlwZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBhZGRNYXJrQWN0aW9uID0gYWRkTWFyaygpO1xuICAgICAgY29uc3QgY2hhbmdlTWFya3NBY3Rpb24gPSBjaGFuZ2VNYXJrcyhbXSk7XG5cbiAgICAgIGV4cGVjdChhZGRNYXJrQWN0aW9uLnR5cGUpLm5vdC50b0JlKGNoYW5nZU1hcmtzQWN0aW9uLnR5cGUpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBRUFDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxZQUFNO0VBQ2xDQSxRQUFRLENBQUMsU0FBUyxFQUFFLFlBQU07SUFDeEJDLEVBQUUsQ0FBQyx5QkFBeUIsRUFBRSxZQUFNO01BQ2xDLElBQU1DLE1BQU0sR0FBRyxJQUFBQyxnQkFBTyxFQUFDLENBQUM7TUFDeEJDLE1BQU0sQ0FBQ0YsTUFBTSxDQUFDLENBQUNHLE9BQU8sQ0FBQztRQUNyQkMsSUFBSSxFQUFFO01BQ1IsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUZMLEVBQUUsQ0FBQyxtQ0FBbUMsRUFBRSxZQUFNO01BQzVDLElBQU1DLE1BQU0sR0FBRyxJQUFBQyxnQkFBTyxFQUFDLENBQUM7TUFDeEJDLE1BQU0sQ0FBQ0YsTUFBTSxDQUFDSSxJQUFJLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLFVBQVUsQ0FBQztNQUNwQ0gsTUFBTSxDQUFDSSxNQUFN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
@@ -0,0 +1,346 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
6
+ var _react = _interopRequireDefault(require("react"));
7
+ var _testUtils = require("@pie-lib/test-utils");
8
+ var _index = _interopRequireWildcard(require("../index"));
9
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
10
+ jest.mock('../../graph-with-controls', function () {
11
+ return function GraphWithControls(_ref) {
12
+ var marks = _ref.marks,
13
+ onChangeMarks = _ref.onChangeMarks,
14
+ onUndo = _ref.onUndo,
15
+ onRedo = _ref.onRedo,
16
+ onReset = _ref.onReset,
17
+ disabled = _ref.disabled;
18
+ return /*#__PURE__*/_react["default"].createElement("div", {
19
+ "data-testid": "graph-with-controls"
20
+ }, /*#__PURE__*/_react["default"].createElement("div", {
21
+ "data-testid": "marks-count"
22
+ }, (marks === null || marks === void 0 ? void 0 : marks.length) || 0), disabled && /*#__PURE__*/_react["default"].createElement("div", {
23
+ "data-testid": "disabled-indicator"
24
+ }, "Disabled"), /*#__PURE__*/_react["default"].createElement("button", {
25
+ "data-testid": "change-marks",
26
+ onClick: function onClick() {
27
+ return onChangeMarks && onChangeMarks([{
28
+ id: 1
29
+ }]);
30
+ }
31
+ }, "Change"), /*#__PURE__*/_react["default"].createElement("button", {
32
+ "data-testid": "undo",
33
+ onClick: onUndo
34
+ }, "Undo"), /*#__PURE__*/_react["default"].createElement("button", {
35
+ "data-testid": "redo",
36
+ onClick: onRedo
37
+ }, "Redo"), /*#__PURE__*/_react["default"].createElement("button", {
38
+ "data-testid": "reset",
39
+ onClick: onReset
40
+ }, "Reset"));
41
+ };
42
+ });
43
+ jest.mock('@pie-lib/drag', function () {
44
+ return {
45
+ DragProvider: function DragProvider(_ref2) {
46
+ var children = _ref2.children;
47
+ return /*#__PURE__*/_react["default"].createElement("div", {
48
+ "data-testid": "drag-provider"
49
+ }, children);
50
+ }
51
+ };
52
+ });
53
+ describe('Container Root Component', function () {
54
+ var defaultProps = {
55
+ marks: [],
56
+ onChangeMarks: jest.fn()
57
+ };
58
+ var renderComponent = function renderComponent() {
59
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
60
+ return (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_index["default"], (0, _extends2["default"])({}, defaultProps, props)));
61
+ };
62
+ describe('rendering', function () {
63
+ it('renders without crashing', function () {
64
+ var _renderComponent = renderComponent(),
65
+ container = _renderComponent.container;
66
+ expect(container).toBeInTheDocument();
67
+ });
68
+ it('renders GraphWithControls', function () {
69
+ var _renderComponent2 = renderComponent(),
70
+ getByTestId = _renderComponent2.getByTestId;
71
+ expect(getByTestId('graph-with-controls')).toBeInTheDocument();
72
+ });
73
+ it('renders with Provider when no correctness set', function () {
74
+ var _renderComponent3 = renderComponent({
75
+ marks: [{
76
+ id: 1,
77
+ type: 'point'
78
+ }]
79
+ }),
80
+ container = _renderComponent3.container;
81
+ expect(container.querySelector('[data-testid="graph-with-controls"]')).toBeInTheDocument();
82
+ });
83
+ it('renders directly when correctness is set', function () {
84
+ var marks = [{
85
+ id: 1,
86
+ type: 'point',
87
+ correctness: {
88
+ value: 'correct'
89
+ }
90
+ }];
91
+ var _renderComponent4 = renderComponent({
92
+ marks: marks
93
+ }),
94
+ getByTestId = _renderComponent4.getByTestId;
95
+ expect(getByTestId('graph-with-controls')).toBeInTheDocument();
96
+ expect(getByTestId('disabled-indicator')).toBeInTheDocument();
97
+ });
98
+ it('passes marks to GraphWithControls', function () {
99
+ var marks = [{
100
+ id: 1
101
+ }, {
102
+ id: 2
103
+ }];
104
+ var _renderComponent5 = renderComponent({
105
+ marks: marks
106
+ }),
107
+ getByTestId = _renderComponent5.getByTestId;
108
+ expect(getByTestId('marks-count')).toHaveTextContent('2');
109
+ });
110
+ });
111
+ describe('componentDidUpdate', function () {
112
+ it('updates store when marks prop changes', function () {
113
+ var onChangeMarks = jest.fn();
114
+ var _render = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_index["default"], {
115
+ marks: [],
116
+ onChangeMarks: onChangeMarks
117
+ })),
118
+ rerender = _render.rerender;
119
+ var newMarks = [{
120
+ id: 1,
121
+ type: 'point'
122
+ }];
123
+ rerender(/*#__PURE__*/_react["default"].createElement(_index["default"], {
124
+ marks: newMarks,
125
+ onChangeMarks: onChangeMarks
126
+ }));
127
+ expect(onChangeMarks).not.toHaveBeenCalled();
128
+ });
129
+ it('does not update when marks are equal', function () {
130
+ var marks = [{
131
+ id: 1,
132
+ type: 'point'
133
+ }];
134
+ var onChangeMarks = jest.fn();
135
+ var _render2 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_index["default"], {
136
+ marks: marks,
137
+ onChangeMarks: onChangeMarks
138
+ })),
139
+ rerender = _render2.rerender;
140
+ onChangeMarks.mockClear();
141
+ rerender(/*#__PURE__*/_react["default"].createElement(_index["default"], {
142
+ marks: marks,
143
+ onChangeMarks: onChangeMarks
144
+ }));
145
+ expect(onChangeMarks).not.toHaveBeenCalled();
146
+ });
147
+ it('handles marks changing from empty to non-empty', function () {
148
+ var onChangeMarks = jest.fn();
149
+ var _render3 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_index["default"], {
150
+ marks: [],
151
+ onChangeMarks: onChangeMarks
152
+ })),
153
+ rerender = _render3.rerender;
154
+ var newMarks = [{
155
+ id: 1
156
+ }];
157
+ expect(function () {
158
+ rerender(/*#__PURE__*/_react["default"].createElement(_index["default"], {
159
+ marks: newMarks,
160
+ onChangeMarks: onChangeMarks
161
+ }));
162
+ }).not.toThrow();
163
+ });
164
+ it('handles marks changing from non-empty to empty', function () {
165
+ var onChangeMarks = jest.fn();
166
+ var _render4 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_index["default"], {
167
+ marks: [{
168
+ id: 1
169
+ }],
170
+ onChangeMarks: onChangeMarks
171
+ })),
172
+ rerender = _render4.rerender;
173
+ expect(function () {
174
+ rerender(/*#__PURE__*/_react["default"].createElement(_index["default"], {
175
+ marks: [],
176
+ onChangeMarks: onChangeMarks
177
+ }));
178
+ }).not.toThrow();
179
+ });
180
+ });
181
+ describe('correctness handling', function () {
182
+ it('disables when any mark has correctness', function () {
183
+ var marks = [{
184
+ id: 1,
185
+ type: 'point'
186
+ }, {
187
+ id: 2,
188
+ type: 'point',
189
+ correctness: {
190
+ value: 'correct'
191
+ }
192
+ }];
193
+ var _renderComponent6 = renderComponent({
194
+ marks: marks
195
+ }),
196
+ getByTestId = _renderComponent6.getByTestId;
197
+ expect(getByTestId('disabled-indicator')).toBeInTheDocument();
198
+ });
199
+ it('renders without Provider when correctness is set', function () {
200
+ var marks = [{
201
+ id: 1,
202
+ correctness: {
203
+ value: 'correct'
204
+ }
205
+ }];
206
+ var _renderComponent7 = renderComponent({
207
+ marks: marks
208
+ }),
209
+ container = _renderComponent7.container;
210
+ expect(container.querySelector('[data-testid="graph-with-controls"]')).toBeInTheDocument();
211
+ });
212
+ it('does not disable when no correctness is set', function () {
213
+ var marks = [{
214
+ id: 1,
215
+ type: 'point'
216
+ }, {
217
+ id: 2,
218
+ type: 'line'
219
+ }];
220
+ var _renderComponent8 = renderComponent({
221
+ marks: marks
222
+ }),
223
+ queryByTestId = _renderComponent8.queryByTestId;
224
+ expect(queryByTestId('disabled-indicator')).not.toBeInTheDocument();
225
+ });
226
+ it('handles correctness with different values', function () {
227
+ var marks = [{
228
+ id: 1,
229
+ correctness: {
230
+ value: 'incorrect'
231
+ }
232
+ }];
233
+ var _renderComponent9 = renderComponent({
234
+ marks: marks
235
+ }),
236
+ getByTestId = _renderComponent9.getByTestId;
237
+ expect(getByTestId('disabled-indicator')).toBeInTheDocument();
238
+ });
239
+ it('handles empty correctness object', function () {
240
+ var marks = [{
241
+ id: 1,
242
+ correctness: {}
243
+ }];
244
+ var _renderComponent0 = renderComponent({
245
+ marks: marks
246
+ }),
247
+ getByTestId = _renderComponent0.getByTestId;
248
+ expect(getByTestId('disabled-indicator')).toBeInTheDocument();
249
+ });
250
+ });
251
+ describe('props forwarding', function () {
252
+ it('forwards additional props to GraphWithControls', function () {
253
+ var _renderComponent1 = renderComponent({
254
+ className: 'custom-class',
255
+ size: {
256
+ width: 500,
257
+ height: 500
258
+ }
259
+ }),
260
+ container = _renderComponent1.container;
261
+ expect(container.querySelector('[data-testid="graph-with-controls"]')).toBeInTheDocument();
262
+ });
263
+ it('does not forward onChangeMarks and marks to GraphWithControls', function () {
264
+ var _renderComponent10 = renderComponent({
265
+ marks: [{
266
+ id: 1
267
+ }],
268
+ onChangeMarks: jest.fn(),
269
+ otherProp: 'test'
270
+ }),
271
+ getByTestId = _renderComponent10.getByTestId;
272
+ expect(getByTestId('graph-with-controls')).toBeInTheDocument();
273
+ });
274
+ });
275
+ describe('edge cases', function () {
276
+ it('handles empty marks array', function () {
277
+ var _renderComponent11 = renderComponent({
278
+ marks: []
279
+ }),
280
+ container = _renderComponent11.container;
281
+ expect(container).toBeInTheDocument();
282
+ });
283
+ it('handles marks with complex structure', function () {
284
+ var marks = [{
285
+ id: 1,
286
+ type: 'line',
287
+ from: {
288
+ x: 0,
289
+ y: 0
290
+ },
291
+ to: {
292
+ x: 10,
293
+ y: 10
294
+ },
295
+ label: 'Line A',
296
+ correctness: {
297
+ value: 'correct',
298
+ label: 'Correct!'
299
+ }
300
+ }];
301
+ var _renderComponent12 = renderComponent({
302
+ marks: marks
303
+ }),
304
+ getByTestId = _renderComponent12.getByTestId;
305
+ expect(getByTestId('graph-with-controls')).toBeInTheDocument();
306
+ });
307
+ it('handles switching between correctness states', function () {
308
+ var _render5 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_index["default"], {
309
+ marks: [{
310
+ id: 1
311
+ }],
312
+ onChangeMarks: jest.fn()
313
+ })),
314
+ rerender = _render5.rerender;
315
+ rerender(/*#__PURE__*/_react["default"].createElement(_index["default"], {
316
+ marks: [{
317
+ id: 1,
318
+ correctness: {
319
+ value: 'correct'
320
+ }
321
+ }],
322
+ onChangeMarks: jest.fn()
323
+ }));
324
+ rerender(/*#__PURE__*/_react["default"].createElement(_index["default"], {
325
+ marks: [{
326
+ id: 1
327
+ }],
328
+ onChangeMarks: jest.fn()
329
+ }));
330
+ expect(document.querySelector('[data-testid="graph-with-controls"]')).toBeInTheDocument();
331
+ });
332
+ });
333
+ });
334
+ describe('GraphContainer (connected component)', function () {
335
+ it('is a connected component', function () {
336
+ expect(_index.GraphContainer).toBeDefined();
337
+ expect(_index.GraphContainer.displayName).toContain('Connect');
338
+ });
339
+ it('maps state to props', function () {
340
+ expect(_index.GraphContainer).toBeDefined();
341
+ });
342
+ it('maps dispatch to props', function () {
343
+ expect(_index.GraphContainer).toBeDefined();
344
+ });
345
+ });
346
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl90ZXN0VXRpbHMiLCJfaW5kZXgiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiamVzdCIsIm1vY2siLCJHcmFwaFdpdGhDb250cm9scyIsIl9yZWYiLCJtYXJrcyIsIm9uQ2hhbmdlTWFya3MiLCJvblVuZG8iLCJvblJlZG8iLCJvblJlc2V0IiwiZGlzYWJsZWQiLCJjcmVhdGVFbGVtZW50IiwibGVuZ3RoIiwib25DbGljayIsImlkIiwiRHJhZ1Byb3ZpZGVyIiwiX3JlZjIiLCJjaGlsZHJlbiIsImRlc2NyaWJlIiwiZGVmYXVsdFByb3BzIiwiZm4iLCJyZW5kZXJDb21wb25lbnQiLCJwcm9wcyIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsInJlbmRlciIsIl9leHRlbmRzMiIsIml0IiwiX3JlbmRlckNvbXBvbmVudCIsImNvbnRhaW5lciIsImV4cGVjdCIsInRvQmVJblRoZURvY3VtZW50IiwiX3JlbmRlckNvbXBvbmVudDIiLCJnZXRCeVRlc3RJZCIsIl9yZW5kZXJDb21wb25lbnQzIiwidHlwZSIsInF1ZXJ5U2VsZWN0b3IiLCJjb3JyZWN0bmVzcyIsInZhbHVlIiwiX3JlbmRlckNvbXBvbmVudDQiLCJfcmVuZGVyQ29tcG9uZW50NSIsInRvSGF2ZVRleHRDb250ZW50IiwiX3JlbmRlciIsInJlcmVuZGVyIiwibmV3TWFya3MiLCJub3QiLCJ0b0hhdmVCZWVuQ2FsbGVkIiwiX3JlbmRlcjIiLCJtb2NrQ2xlYXIiLCJfcmVuZGVyMyIsInRvVGhyb3ciLCJfcmVuZGVyNCIsIl9yZW5kZXJDb21wb25lbnQ2IiwiX3JlbmRlckNvbXBvbmVudDciLCJfcmVuZGVyQ29tcG9uZW50OCIsInF1ZXJ5QnlUZXN0SWQiLCJfcmVuZGVyQ29tcG9uZW50OSIsIl9yZW5kZXJDb21wb25lbnQwIiwiX3JlbmRlckNvbXBvbmVudDEiLCJjbGFzc05hbWUiLCJzaXplIiwid2lkdGgiLCJoZWlnaHQiLCJfcmVuZGVyQ29tcG9uZW50MTAiLCJvdGhlclByb3AiLCJfcmVuZGVyQ29tcG9uZW50MTEiLCJmcm9tIiwieCIsInkiLCJ0byIsImxhYmVsIiwiX3JlbmRlckNvbXBvbmVudDEyIiwiX3JlbmRlcjUiLCJkb2N1bWVudCIsIkdyYXBoQ29udGFpbmVyIiwidG9CZURlZmluZWQiLCJkaXNwbGF5TmFtZSIsInRvQ29udGFpbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250YWluZXIvX190ZXN0c19fL2luZGV4LnRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyByZW5kZXIgfSBmcm9tICdAcGllLWxpYi90ZXN0LXV0aWxzJztcbmltcG9ydCBSb290LCB7IEdyYXBoQ29udGFpbmVyIH0gZnJvbSAnLi4vaW5kZXgnO1xuXG5qZXN0Lm1vY2soJy4uLy4uL2dyYXBoLXdpdGgtY29udHJvbHMnLCAoKSA9PiB7XG4gIHJldHVybiBmdW5jdGlvbiBHcmFwaFdpdGhDb250cm9scyh7IG1hcmtzLCBvbkNoYW5nZU1hcmtzLCBvblVuZG8sIG9uUmVkbywgb25SZXNldCwgZGlzYWJsZWQgfSkge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGRhdGEtdGVzdGlkPVwiZ3JhcGgtd2l0aC1jb250cm9sc1wiPlxuICAgICAgICA8ZGl2IGRhdGEtdGVzdGlkPVwibWFya3MtY291bnRcIj57bWFya3M/Lmxlbmd0aCB8fCAwfTwvZGl2PlxuICAgICAgICB7ZGlzYWJsZWQgJiYgPGRpdiBkYXRhLXRlc3RpZD1cImRpc2FibGVkLWluZGljYXRvclwiPkRpc2FibGVkPC9kaXY+fVxuICAgICAgICA8YnV0dG9uIGRhdGEtdGVzdGlkPVwiY2hhbmdlLW1hcmtzXCIgb25DbGljaz17KCkgPT4gb25DaGFuZ2VNYXJrcyAmJiBvbkNoYW5nZU1hcmtzKFt7IGlkOiAxIH1dKX0+XG4gICAgICAgICAgQ2hhbmdlXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGRhdGEtdGVzdGlkPVwidW5kb1wiIG9uQ2xpY2s9e29uVW5kb30+XG4gICAgICAgICAgVW5kb1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBkYXRhLXRlc3RpZD1cInJlZG9cIiBvbkNsaWNrPXtvblJlZG99PlxuICAgICAgICAgIFJlZG9cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gZGF0YS10ZXN0aWQ9XCJyZXNldFwiIG9uQ2xpY2s9e29uUmVzZXR9PlxuICAgICAgICAgIFJlc2V0XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfTtcbn0pO1xuXG5qZXN0Lm1vY2soJ0BwaWUtbGliL2RyYWcnLCAoKSA9PiAoe1xuICBEcmFnUHJvdmlkZXI6ICh7IGNoaWxkcmVuIH0pID0+IDxkaXYgZGF0YS10ZXN0aWQ9XCJkcmFnLXByb3ZpZGVyXCI+e2NoaWxkcmVufTwvZGl2Pixcbn0pKTtcblxuZGVzY3JpYmUoJ0NvbnRhaW5lciBSb290IENvbXBvbmVudCcsICgpID0+IHtcbiAgY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICAgIG1hcmtzOiBbXSxcbiAgICBvbkNoYW5nZU1hcmtzOiBqZXN0LmZuKCksXG4gIH07XG5cbiAgY29uc3QgcmVuZGVyQ29tcG9uZW50ID0gKHByb3BzID0ge30pID0+IHtcbiAgICByZXR1cm4gcmVuZGVyKDxSb290IHsuLi5kZWZhdWx0UHJvcHN9IHsuLi5wcm9wc30gLz4pO1xuICB9O1xuXG4gIGRlc2NyaWJlKCdyZW5kZXJpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMgd2l0aG91dCBjcmFzaGluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJDb21wb25lbnQoKTtcbiAgICAgIGV4cGVjdChjb250YWluZXIpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyBHcmFwaFdpdGhDb250cm9scycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgZ2V0QnlUZXN0SWQgfSA9IHJlbmRlckNvbXBvbmVudCgpO1xuICAgICAgZXhwZWN0KGdldEJ5VGVzdElkKCdncmFwaC13aXRoLWNvbnRyb2xzJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIFByb3ZpZGVyIHdoZW4gbm8gY29ycmVjdG5lc3Mgc2V0JywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckNvbXBvbmVudCh7IG1hcmtzOiBbeyBpZDogMSwgdHlwZTogJ3BvaW50JyB9XSB9KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIucXVlcnlTZWxlY3RvcignW2RhdGEtdGVzdGlkPVwiZ3JhcGgtd2l0aC1jb250cm9sc1wiXScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgZGlyZWN0bHkgd2hlbiBjb3JyZWN0bmVzcyBpcyBzZXQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtYXJrcyA9IFt7IGlkOiAxLCB0eXBlOiAncG9pbnQnLCBjb3JyZWN0bmVzczogeyB2YWx1ZTogJ2NvcnJlY3QnIH0gfV07XG4gICAgICBjb25zdCB7IGdldEJ5VGVzdElkIH0gPSByZW5kZXJDb21wb25lbnQoeyBtYXJrcyB9KTtcblxuICAgICAgZXhwZWN0KGdldEJ5VGVzdElkKCdncmFwaC13aXRoLWNvbnRyb2xzJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3QoZ2V0QnlUZXN0SWQoJ2Rpc2FibGVkLWluZGljYXRvcicpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Bhc3NlcyBtYXJrcyB0byBHcmFwaFdpdGhDb250cm9scycsICgpID0+IHtcbiAgICAgIGNvbnN0IG1hcmtzID0gW3sgaWQ6IDEgfSwgeyBpZDogMiB9XTtcbiAgICAgIGNvbnN0IHsgZ2V0QnlUZXN0SWQgfSA9IHJlbmRlckNvbXBvbmVudCh7IG1hcmtzIH0pO1xuICAgICAgZXhwZWN0KGdldEJ5VGVzdElkKCdtYXJrcy1jb3VudCcpKS50b0hhdmVUZXh0Q29udGVudCgnMicpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnY29tcG9uZW50RGlkVXBkYXRlJywgKCkgPT4ge1xuICAgIGl0KCd1cGRhdGVzIHN0b3JlIHdoZW4gbWFya3MgcHJvcCBjaGFuZ2VzJywgKCkgPT4ge1xuICAgICAgY29uc3Qgb25DaGFuZ2VNYXJrcyA9IGplc3QuZm4oKTtcbiAgICAgIGNvbnN0IHsgcmVyZW5kZXIgfSA9IHJlbmRlcig8Um9vdCBtYXJrcz17W119IG9uQ2hhbmdlTWFya3M9e29uQ2hhbmdlTWFya3N9IC8+KTtcblxuICAgICAgY29uc3QgbmV3TWFya3MgPSBbeyBpZDogMSwgdHlwZTogJ3BvaW50JyB9XTtcbiAgICAgIHJlcmVuZGVyKDxSb290IG1hcmtzPXtuZXdNYXJrc30gb25DaGFuZ2VNYXJrcz17b25DaGFuZ2VNYXJrc30gLz4pO1xuXG4gICAgICBleHBlY3Qob25DaGFuZ2VNYXJrcykubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCB1cGRhdGUgd2hlbiBtYXJrcyBhcmUgZXF1YWwnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtYXJrcyA9IFt7IGlkOiAxLCB0eXBlOiAncG9pbnQnIH1dO1xuICAgICAgY29uc3Qgb25DaGFuZ2VNYXJrcyA9IGplc3QuZm4oKTtcbiAgICAgIGNvbnN0IHsgcmVyZW5kZXIgfSA9IHJlbmRlcig8Um9vdCBtYXJrcz17bWFya3N9IG9uQ2hhbmdlTWFya3M9e29uQ2hhbmdlTWFya3N9IC8+KTtcblxuICAgICAgb25DaGFuZ2VNYXJrcy5tb2NrQ2xlYXIoKTtcblxuICAgICAgcmVyZW5kZXIoPFJvb3QgbWFya3M9e21hcmtzfSBvbkNoYW5nZU1hcmtzPXtvbkNoYW5nZU1hcmtzfSAvPik7XG5cbiAgICAgIGV4cGVjdChvbkNoYW5nZU1hcmtzKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhbmRsZXMgbWFya3MgY2hhbmdpbmcgZnJvbSBlbXB0eSB0byBub24tZW1wdHknLCAoKSA9PiB7XG4gICAgICBjb25zdCBvbkNoYW5nZU1hcmtzID0gamVzdC5mbigpO1xuICAgICAgY29uc3QgeyByZXJlbmRlciB9ID0gcmVuZGVyKDxSb290IG1hcmtzPXtbXX0gb25DaGFuZ2VNYXJrcz17b25DaGFuZ2VNYXJrc30gLz4pO1xuXG4gICAgICBjb25zdCBuZXdNYXJrcyA9IFt7IGlkOiAxIH1dO1xuXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICByZXJlbmRlcig8Um9vdCBtYXJrcz17bmV3TWFya3N9IG9uQ2hhbmdlTWFya3M9e29uQ2hhbmdlTWFya3N9IC8+KTtcbiAgICAgIH0pLm5vdC50b1Rocm93KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFuZGxlcyBtYXJrcyBjaGFuZ2luZyBmcm9tIG5vbi1lbXB0eSB0byBlbXB0eScsICgpID0+IHtcbiAgICAgIGNvbnN0IG9uQ2hhbmdlTWFya3MgPSBqZXN0LmZuKCk7XG4gICAgICBjb25zdCB7IHJlcmVuZGVyIH0gPSByZW5kZXIoPFJvb3QgbWFya3M9e1t7IGlkOiAxIH1dfSBvbkNoYW5nZU1hcmtzPXtvbkNoYW5nZU1hcmtzfSAvPik7XG5cbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIHJlcmVuZGVyKDxSb290IG1hcmtzPXtbXX0gb25DaGFuZ2VNYXJrcz17b25DaGFuZ2VNYXJrc30gLz4pO1xuICAgICAgfSkubm90LnRvVGhyb3coKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2NvcnJlY3RuZXNzIGhhbmRsaW5nJywgKCkgPT4ge1xuICAgIGl0KCdkaXNhYmxlcyB3aGVuIGFueSBtYXJrIGhhcyBjb3JyZWN0bmVzcycsICgpID0+IHtcbiAgICAgIGNvbnN0IG1hcmtzID0gW1xuICAgICAgICB7IGlkOiAxLCB0eXBlOiAncG9pbnQnIH0sXG4gICAgICAgIHsgaWQ6IDIsIHR5cGU6ICdwb2ludCcsIGNvcnJlY3RuZXNzOiB7IHZhbHVlOiAnY29ycmVjdCcgfSB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IHsgZ2V0QnlUZXN0SWQgfSA9IHJlbmRlckNvbXBvbmVudCh7IG1hcmtzIH0pO1xuXG4gICAgICBleHBlY3QoZ2V0QnlUZXN0SWQoJ2Rpc2FibGVkLWluZGljYXRvcicpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgd2l0aG91dCBQcm92aWRlciB3aGVuIGNvcnJlY3RuZXNzIGlzIHNldCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG1hcmtzID0gW3sgaWQ6IDEsIGNvcnJlY3RuZXNzOiB7IHZhbHVlOiAnY29ycmVjdCcgfSB9XTtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJDb21wb25lbnQoeyBtYXJrcyB9KTtcblxuICAgICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdbZGF0YS10ZXN0aWQ9XCJncmFwaC13aXRoLWNvbnRyb2xzXCJdJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgZGlzYWJsZSB3aGVuIG5vIGNvcnJlY3RuZXNzIGlzIHNldCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG1hcmtzID0gW1xuICAgICAgICB7IGlkOiAxLCB0eXBlOiAncG9pbnQnIH0sXG4gICAgICAgIHsgaWQ6IDIsIHR5cGU6ICdsaW5lJyB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IHsgcXVlcnlCeVRlc3RJZCB9ID0gcmVuZGVyQ29tcG9uZW50KHsgbWFya3MgfSk7XG5cbiAgICAgIGV4cGVjdChxdWVyeUJ5VGVzdElkKCdkaXNhYmxlZC1pbmRpY2F0b3InKSkubm90LnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFuZGxlcyBjb3JyZWN0bmVzcyB3aXRoIGRpZmZlcmVudCB2YWx1ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtYXJrcyA9IFt7IGlkOiAxLCBjb3JyZWN0bmVzczogeyB2YWx1ZTogJ2luY29ycmVjdCcgfSB9XTtcbiAgICAgIGNvbnN0IHsgZ2V0QnlUZXN0SWQgfSA9IHJlbmRlckNvbXBvbmVudCh7IG1hcmtzIH0pO1xuXG4gICAgICBleHBlY3QoZ2V0QnlUZXN0SWQoJ2Rpc2FibGVkLWluZGljYXRvcicpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhbmRsZXMgZW1wdHkgY29ycmVjdG5lc3Mgb2JqZWN0JywgKCkgPT4ge1xuICAgICAgY29uc3QgbWFya3MgPSBbeyBpZDogMSwgY29ycmVjdG5lc3M6IHt9IH1dO1xuICAgICAgY29uc3QgeyBnZXRCeVRlc3RJZCB9ID0gcmVuZGVyQ29tcG9uZW50KHsgbWFya3MgfSk7XG5cbiAgICAgIGV4cGVjdChnZXRCeVRlc3RJZCgnZGlzYWJsZWQtaW5kaWNhdG9yJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdwcm9wcyBmb3J3YXJkaW5nJywgKCkgPT4ge1xuICAgIGl0KCdmb3J3YXJkcyBhZGRpdGlvbmFsIHByb3BzIHRvIEdyYXBoV2l0aENvbnRyb2xzJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckNvbXBvbmVudCh7XG4gICAgICAgIGNsYXNzTmFtZTogJ2N1c3RvbS1jbGFzcycsXG4gICAgICAgIHNpemU6IHsgd2lkdGg6IDUwMCwgaGVpZ2h0OiA1MDAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXRlc3RpZD1cImdyYXBoLXdpdGgtY29udHJvbHNcIl0nKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCBmb3J3YXJkIG9uQ2hhbmdlTWFya3MgYW5kIG1hcmtzIHRvIEdyYXBoV2l0aENvbnRyb2xzJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBnZXRCeVRlc3RJZCB9ID0gcmVuZGVyQ29tcG9uZW50KHtcbiAgICAgICAgbWFya3M6IFt7IGlkOiAxIH1dLFxuICAgICAgICBvbkNoYW5nZU1hcmtzOiBqZXN0LmZuKCksXG4gICAgICAgIG90aGVyUHJvcDogJ3Rlc3QnLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChnZXRCeVRlc3RJZCgnZ3JhcGgtd2l0aC1jb250cm9scycpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZWRnZSBjYXNlcycsICgpID0+IHtcbiAgICBpdCgnaGFuZGxlcyBlbXB0eSBtYXJrcyBhcnJheScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJDb21wb25lbnQoeyBtYXJrczogW10gfSk7XG4gICAgICBleHBlY3QoY29udGFpbmVyKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhbmRsZXMgbWFya3Mgd2l0aCBjb21wbGV4IHN0cnVjdHVyZScsICgpID0+IHtcbiAgICAgIGNvbnN0IG1hcmtzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IDEsXG4gICAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICAgIGZyb206IHsgeDogMCwgeTogMCB9LFxuICAgICAgICAgIHRvOiB7IHg6IDEwLCB5OiAxMCB9LFxuICAgICAgICAgIGxhYmVsOiAnTGluZSBBJyxcbiAgICAgICAgICBjb3JyZWN0bmVzczogeyB2YWx1ZTogJ2NvcnJlY3QnLCBsYWJlbDogJ0NvcnJlY3QhJyB9LFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IHsgZ2V0QnlUZXN0SWQgfSA9IHJlbmRlckNvbXBvbmVudCh7IG1hcmtzIH0pO1xuICAgICAgZXhwZWN0KGdldEJ5VGVzdElkKCdncmFwaC13aXRoLWNvbnRyb2xzJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFuZGxlcyBzd2l0Y2hpbmcgYmV0d2VlbiBjb3JyZWN0bmVzcyBzdGF0ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IHJlcmVuZGVyIH0gPSByZW5kZXIoPFJvb3QgbWFya3M9e1t7IGlkOiAxIH1dfSBvbkNoYW5nZU1hcmtzPXtqZXN0LmZuKCl9IC8+KTtcblxuICAgICAgcmVyZW5kZXIoPFJvb3QgbWFya3M9e1t7IGlkOiAxLCBjb3JyZWN0bmVzczogeyB2YWx1ZTogJ2NvcnJlY3QnIH0gfV19IG9uQ2hhbmdlTWFya3M9e2plc3QuZm4oKX0gLz4pO1xuXG4gICAgICByZXJlbmRlcig8Um9vdCBtYXJrcz17W3sgaWQ6IDEgfV19IG9uQ2hhbmdlTWFya3M9e2plc3QuZm4oKX0gLz4pO1xuXG4gICAgICBleHBlY3QoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtdGVzdGlkPVwiZ3JhcGgtd2l0aC1jb250cm9sc1wiXScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnR3JhcGhDb250YWluZXIgKGNvbm5lY3RlZCBjb21wb25lbnQpJywgKCkgPT4ge1xuICBpdCgnaXMgYSBjb25uZWN0ZWQgY29tcG9uZW50JywgKCkgPT4ge1xuICAgIGV4cGVjdChHcmFwaENvbnRhaW5lcikudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QoR3JhcGhDb250YWluZXIuZGlzcGxheU5hbWUpLnRvQ29udGFpbignQ29ubmVjdCcpO1xuICB9KTtcblxuICBpdCgnbWFwcyBzdGF0ZSB0byBwcm9wcycsICgpID0+IHtcbiAgICBleHBlY3QoR3JhcGhDb250YWluZXIpLnRvQmVEZWZpbmVkKCk7XG4gIH0pO1xuXG4gIGl0KCdtYXBzIGRpc3BhdGNoIHRvIHByb3BzJywgKCkgPT4ge1xuICAgIGV4cGVjdChHcmFwaENvbnRhaW5lcikudG9CZURlZmluZWQoKTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxNQUFBLEdBQUFDLHVCQUFBLENBQUFILE9BQUE7QUFBZ0QsU0FBQUcsd0JBQUFDLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFILHVCQUFBLFlBQUFBLHdCQUFBQyxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsbUJBQUFULENBQUEsaUJBQUFBLENBQUEsZ0JBQUFVLE9BQUEsQ0FBQVYsQ0FBQSwwQkFBQUEsQ0FBQSxTQUFBUSxDQUFBLE1BQUFGLENBQUEsR0FBQUwsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsUUFBQUcsQ0FBQSxDQUFBSyxHQUFBLENBQUFYLENBQUEsVUFBQU0sQ0FBQSxDQUFBTSxHQUFBLENBQUFaLENBQUEsR0FBQU0sQ0FBQSxDQUFBTyxHQUFBLENBQUFiLENBQUEsRUFBQVEsQ0FBQSxjQUFBTSxFQUFBLElBQUFkLENBQUEsZ0JBQUFjLEVBQUEsT0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFoQixDQUFBLEVBQUFjLEVBQUEsT0FBQVAsQ0FBQSxJQUFBRCxDQUFBLEdBQUFXLE1BQUEsQ0FBQUMsY0FBQSxLQUFBRCxNQUFBLENBQUFFLHdCQUFBLENBQUFuQixDQUFBLEVBQUFjLEVBQUEsT0FBQVAsQ0FBQSxDQUFB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