@pie-lib/graphing 4.1.0-beta.7 → 4.1.0-beta.8

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 (97) hide show
  1. package/package.json +3 -3
  2. package/lib/__tests__/bg.test.js +0 -282
  3. package/lib/__tests__/bg.test.js.map +0 -1
  4. package/lib/__tests__/coordinates-label.test.js +0 -276
  5. package/lib/__tests__/coordinates-label.test.js.map +0 -1
  6. package/lib/__tests__/graph-with-controls.test.js +0 -275
  7. package/lib/__tests__/graph-with-controls.test.js.map +0 -1
  8. package/lib/__tests__/graph.test.js +0 -927
  9. package/lib/__tests__/graph.test.js.map +0 -1
  10. package/lib/__tests__/grid-setup.test.js +0 -729
  11. package/lib/__tests__/grid-setup.test.js.map +0 -1
  12. package/lib/__tests__/grid.test.js +0 -29
  13. package/lib/__tests__/grid.test.js.map +0 -1
  14. package/lib/__tests__/key-legend.test.js +0 -321
  15. package/lib/__tests__/key-legend.test.js.map +0 -1
  16. package/lib/__tests__/label-svg-icon.test.js +0 -373
  17. package/lib/__tests__/label-svg-icon.test.js.map +0 -1
  18. package/lib/__tests__/labels.test.js +0 -61
  19. package/lib/__tests__/labels.test.js.map +0 -1
  20. package/lib/__tests__/mark-label.test.js +0 -133
  21. package/lib/__tests__/mark-label.test.js.map +0 -1
  22. package/lib/__tests__/toggle-bar.test.js +0 -197
  23. package/lib/__tests__/toggle-bar.test.js.map +0 -1
  24. package/lib/__tests__/tool-menu.test.js +0 -151
  25. package/lib/__tests__/tool-menu.test.js.map +0 -1
  26. package/lib/__tests__/undo-redo.test.js +0 -31
  27. package/lib/__tests__/undo-redo.test.js.map +0 -1
  28. package/lib/__tests__/use-debounce.test.js +0 -24
  29. package/lib/__tests__/use-debounce.test.js.map +0 -1
  30. package/lib/__tests__/utils.js +0 -70
  31. package/lib/__tests__/utils.js.map +0 -1
  32. package/lib/__tests__/utils.test.js +0 -123
  33. package/lib/__tests__/utils.test.js.map +0 -1
  34. package/lib/axis/__tests__/arrow.test.js +0 -60
  35. package/lib/axis/__tests__/arrow.test.js.map +0 -1
  36. package/lib/axis/__tests__/axes.test.js +0 -195
  37. package/lib/axis/__tests__/axes.test.js.map +0 -1
  38. package/lib/container/__tests__/actions.test.js +0 -108
  39. package/lib/container/__tests__/actions.test.js.map +0 -1
  40. package/lib/container/__tests__/index.test.js +0 -503
  41. package/lib/container/__tests__/index.test.js.map +0 -1
  42. package/lib/container/__tests__/marks.test.js +0 -259
  43. package/lib/container/__tests__/marks.test.js.map +0 -1
  44. package/lib/container/__tests__/middleware.test.js +0 -244
  45. package/lib/container/__tests__/middleware.test.js.map +0 -1
  46. package/lib/container/__tests__/reducer.test.js +0 -450
  47. package/lib/container/__tests__/reducer.test.js.map +0 -1
  48. package/lib/tools/absolute/__tests__/component.test.js +0 -65
  49. package/lib/tools/absolute/__tests__/component.test.js.map +0 -1
  50. package/lib/tools/circle/__tests__/bg-circle.test.js +0 -33
  51. package/lib/tools/circle/__tests__/bg-circle.test.js.map +0 -1
  52. package/lib/tools/circle/__tests__/component.test.js +0 -615
  53. package/lib/tools/circle/__tests__/component.test.js.map +0 -1
  54. package/lib/tools/circle/__tests__/index.test.js +0 -576
  55. package/lib/tools/circle/__tests__/index.test.js.map +0 -1
  56. package/lib/tools/exponential/__tests__/component.test.js +0 -64
  57. package/lib/tools/exponential/__tests__/component.test.js.map +0 -1
  58. package/lib/tools/exponential/__tests__/index.test.js +0 -828
  59. package/lib/tools/exponential/__tests__/index.test.js.map +0 -1
  60. package/lib/tools/line/__tests__/component.test.js +0 -45
  61. package/lib/tools/line/__tests__/component.test.js.map +0 -1
  62. package/lib/tools/parabola/__tests__/component.test.js +0 -64
  63. package/lib/tools/parabola/__tests__/component.test.js.map +0 -1
  64. package/lib/tools/parabola/__tests__/index.test.js +0 -564
  65. package/lib/tools/parabola/__tests__/index.test.js.map +0 -1
  66. package/lib/tools/point/__tests__/component.test.js +0 -434
  67. package/lib/tools/point/__tests__/component.test.js.map +0 -1
  68. package/lib/tools/point/__tests__/index.test.js +0 -262
  69. package/lib/tools/point/__tests__/index.test.js.map +0 -1
  70. package/lib/tools/polygon/__tests__/component.test.js +0 -485
  71. package/lib/tools/polygon/__tests__/component.test.js.map +0 -1
  72. package/lib/tools/polygon/__tests__/index.test.js +0 -303
  73. package/lib/tools/polygon/__tests__/index.test.js.map +0 -1
  74. package/lib/tools/polygon/__tests__/line.test.js +0 -50
  75. package/lib/tools/polygon/__tests__/line.test.js.map +0 -1
  76. package/lib/tools/polygon/__tests__/polygon.test.js +0 -85
  77. package/lib/tools/polygon/__tests__/polygon.test.js.map +0 -1
  78. package/lib/tools/ray/__tests__/component.test.js +0 -35
  79. package/lib/tools/ray/__tests__/component.test.js.map +0 -1
  80. package/lib/tools/segment/__tests__/component.test.js +0 -35
  81. package/lib/tools/segment/__tests__/component.test.js.map +0 -1
  82. package/lib/tools/shared/__tests__/arrow-head.test.js +0 -45
  83. package/lib/tools/shared/__tests__/arrow-head.test.js.map +0 -1
  84. package/lib/tools/shared/line/__tests__/index.test.js +0 -124
  85. package/lib/tools/shared/line/__tests__/index.test.js.map +0 -1
  86. package/lib/tools/shared/line/__tests__/line-path.test.js +0 -62
  87. package/lib/tools/shared/line/__tests__/line-path.test.js.map +0 -1
  88. package/lib/tools/shared/line/__tests__/with-root-edge.test.js +0 -90
  89. package/lib/tools/shared/line/__tests__/with-root-edge.test.js.map +0 -1
  90. package/lib/tools/shared/point/__tests__/arrow-point.test.js +0 -127
  91. package/lib/tools/shared/point/__tests__/arrow-point.test.js.map +0 -1
  92. package/lib/tools/shared/point/__tests__/base-point.test.js +0 -122
  93. package/lib/tools/shared/point/__tests__/base-point.test.js.map +0 -1
  94. package/lib/tools/sine/__tests__/component.test.js +0 -72
  95. package/lib/tools/sine/__tests__/component.test.js.map +0 -1
  96. package/lib/tools/vector/__tests__/component.test.js +0 -32
  97. package/lib/tools/vector/__tests__/component.test.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"component.test.js","names":["_testUtils","require","_react","_interopRequireDefault","_utils","_component","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","describe","onChange","jest","fn","changeMarkProps","renderComponent","extras","defaults","classes","className","graphProps","from","xy","to","props","render","createElement","RawBaseCircle","labelNode","document","fromWithLabel","x","y","label","toWithLabel","renderWithLabels","undefined","it","_renderComponent","container","expect","firstChild","toBeInTheDocument","_renderWithLabels","_renderComponent2","g","querySelector","_renderComponent3","_renderComponent4","points","querySelectorAll","toBeGreaterThanOrEqual","_renderComponent5","building","_renderComponent6","disabled","_renderComponent7","correctness","_renderComponent8","coordinatesOnHover","_renderComponent9","labelModeEnabled","middle","_renderComponent0","_renderComponent1","_renderComponent10","customOnChange","_renderComponent11","customChangeMarkProps","_renderComponent12","onClick","_renderComponent13","onDragStart","_renderComponent14","onDragStop","_renderComponent15","_renderComponent16","customGraphProps","size","width","height","_renderComponent17","_renderComponent18","_renderWithLabels2","_renderWithLabels3","_renderComponent19","_renderComponent20","_renderComponent21","_renderComponent22","_renderComponent23","_renderComponent24","limitLabeling","_renderComponent25","_renderComponent26","_renderComponent27","_renderComponent28","_renderComponent29","_renderComponent30","_renderComponent31","_renderComponent32","_renderComponent33","_renderComponent34","_renderComponent35","_renderComponent36","_renderComponent37","_renderComponent38","_renderComponent39","_renderComponent40","_renderComponent41","_renderComponent42","_renderComponent43","_renderComponent44","_renderComponent45","_renderComponent46","_renderComponent47","_renderComponent48","root","_renderComponent49","_renderComponent50","_renderComponent51","_renderComponent52","_renderComponent53","_renderComponent54"],"sources":["../../../../src/tools/circle/__tests__/component.test.jsx"],"sourcesContent":["import { render } from '@pie-lib/test-utils';\nimport React from 'react';\nimport { graphProps, xy } from '../../../__tests__/utils';\n\nimport { RawBaseCircle } from '../component';\n\ndescribe('Component', () => {\n let onChange = jest.fn();\n let changeMarkProps = jest.fn();\n\n const renderComponent = (extras) => {\n const defaults = {\n classes: {},\n className: 'className',\n onChange,\n changeMarkProps,\n graphProps: graphProps(),\n from: xy(0, 0),\n to: xy(1, 1),\n };\n const props = { ...defaults, ...extras };\n\n return render(<RawBaseCircle {...props} />);\n };\n\n // used to test items that have labels attached to points\n const labelNode = document.createElement('foreignObject');\n const fromWithLabel = { x: 0, y: 0, label: 'A' };\n const toWithLabel = { x: 1, y: 1, label: 'B' };\n const renderWithLabels = (extras = {}) =>\n renderComponent({\n ...extras,\n labelNode: labelNode,\n from: fromWithLabel,\n to: toWithLabel,\n });\n\n describe('rendering', () => {\n it('renders without crashing', () => {\n const { container } = renderComponent();\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with labels', () => {\n const { container } = renderWithLabels();\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders a g element', () => {\n const { container } = renderComponent();\n const g = container.querySelector('g');\n expect(g).toBeInTheDocument();\n });\n\n it('renders BgCircle component', () => {\n const { container } = renderComponent();\n // BgCircle is rendered as a styled component\n expect(container.querySelector('g')).toBeInTheDocument();\n });\n\n it('renders two BasePoint components', () => {\n const { container } = renderComponent();\n // Two points: from and to\n const points = container.querySelectorAll('g');\n expect(points.length).toBeGreaterThanOrEqual(2);\n });\n\n it('renders with building prop', () => {\n const { container } = renderComponent({ building: true });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with disabled prop', () => {\n const { container } = renderComponent({ disabled: true });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with correctness prop', () => {\n const { container } = renderComponent({ correctness: 'correct' });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with coordinatesOnHover enabled', () => {\n const { container } = renderComponent({ coordinatesOnHover: true });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with labelModeEnabled', () => {\n const { container } = renderComponent({ labelModeEnabled: true });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with middle point', () => {\n const middle = { x: 0.5, y: 0.5, label: 'M' };\n const { container } = renderComponent({\n middle,\n labelNode,\n labelModeEnabled: true,\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('handles undefined to point (uses from)', () => {\n const { container } = renderComponent({ to: undefined });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('handles null to point (uses from)', () => {\n const { container } = renderComponent({ to: null });\n expect(container.firstChild).toBeInTheDocument();\n });\n });\n\n describe('props', () => {\n it('passes onChange callback', () => {\n const customOnChange = jest.fn();\n const { container } = renderComponent({ onChange: customOnChange });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('passes changeMarkProps callback', () => {\n const customChangeMarkProps = jest.fn();\n const { container } = renderComponent({ changeMarkProps: customChangeMarkProps });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('passes onClick callback', () => {\n const onClick = jest.fn();\n const { container } = renderComponent({ onClick });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('passes onDragStart callback', () => {\n const onDragStart = jest.fn();\n const { container } = renderComponent({ onDragStart });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('passes onDragStop callback', () => {\n const onDragStop = jest.fn();\n const { container } = renderComponent({ onDragStop });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('uses default onClick when not provided', () => {\n const { container } = renderComponent({ onClick: undefined });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('passes graphProps', () => {\n const customGraphProps = graphProps();\n customGraphProps.size = { width: 800, height: 600 };\n const { container } = renderComponent({ graphProps: customGraphProps });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('passes className', () => {\n const { container } = renderComponent({ className: 'custom-circle' });\n expect(container.firstChild).toBeInTheDocument();\n });\n });\n\n describe('labels', () => {\n it('renders from label when provided', () => {\n const { container } = renderWithLabels();\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders to label when provided', () => {\n const { container } = renderWithLabels();\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders middle label when provided', () => {\n const middle = { x: 0.5, y: 0.5, label: 'M' };\n const { container } = renderComponent({\n labelNode,\n middle,\n from: fromWithLabel,\n to: toWithLabel,\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('does not render labels when labelNode is not provided', () => {\n const { container } = renderComponent({\n from: fromWithLabel,\n to: toWithLabel,\n labelNode: null,\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('handles empty label', () => {\n const from = { x: 0, y: 0, label: '' };\n const to = { x: 1, y: 1, label: '' };\n const { container } = renderComponent({\n labelNode,\n from,\n to,\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with label mode enabled', () => {\n const { container } = renderComponent({\n labelNode,\n labelModeEnabled: true,\n from: fromWithLabel,\n to: toWithLabel,\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with label mode disabled', () => {\n const { container } = renderComponent({\n labelNode,\n labelModeEnabled: false,\n from: fromWithLabel,\n to: toWithLabel,\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with limitLabeling enabled', () => {\n const { container } = renderComponent({\n labelNode,\n limitLabeling: true,\n from: fromWithLabel,\n to: toWithLabel,\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('handles from label undefined', () => {\n const from = { x: 0, y: 0 };\n const to = { x: 1, y: 1, label: 'B' };\n const { container } = renderComponent({\n labelNode,\n from,\n to,\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('handles to label undefined', () => {\n const from = { x: 0, y: 0, label: 'A' };\n const to = { x: 1, y: 1 };\n const { container } = renderComponent({\n labelNode,\n from,\n to,\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n });\n\n describe('coordinates', () => {\n it('renders with positive coordinates', () => {\n const { container } = renderComponent({\n from: xy(5, 10),\n to: xy(15, 20),\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with negative coordinates', () => {\n const { container } = renderComponent({\n from: xy(-5, -10),\n to: xy(-15, -20),\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with zero coordinates', () => {\n const { container } = renderComponent({\n from: xy(0, 0),\n to: xy(0, 0),\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with decimal coordinates', () => {\n const { container } = renderComponent({\n from: { x: 1.5, y: 2.7 },\n to: { x: 3.2, y: 4.9 },\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with large coordinates', () => {\n const { container } = renderComponent({\n from: xy(1000, 1000),\n to: xy(2000, 2000),\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with mixed coordinate signs', () => {\n const { container } = renderComponent({\n from: xy(-5, 10),\n to: xy(15, -20),\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with very close points', () => {\n const { container } = renderComponent({\n from: { x: 5, y: 5 },\n to: { x: 5.01, y: 5.01 },\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with very far points', () => {\n const { container } = renderComponent({\n from: xy(0, 0),\n to: xy(10000, 10000),\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n });\n\n describe('states', () => {\n it('renders in building state', () => {\n const { container } = renderComponent({ building: true });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders in completed state', () => {\n const { container } = renderComponent({ building: false });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders in disabled state', () => {\n const { container } = renderComponent({ disabled: true });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders in enabled state', () => {\n const { container } = renderComponent({ disabled: false });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with building and disabled', () => {\n const { container } = renderComponent({ building: true, disabled: true });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with correctness correct', () => {\n const { container } = renderComponent({ correctness: 'correct' });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with correctness incorrect', () => {\n const { container } = renderComponent({ correctness: 'incorrect' });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with correctness partial', () => {\n const { container } = renderComponent({ correctness: 'partial' });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders without correctness', () => {\n const { container } = renderComponent({ correctness: undefined });\n expect(container.firstChild).toBeInTheDocument();\n });\n });\n\n describe('edge cases', () => {\n it('handles null labelNode', () => {\n const { container } = renderComponent({\n labelNode: null,\n from: fromWithLabel,\n to: toWithLabel,\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('handles undefined labelNode', () => {\n const { container } = renderComponent({\n labelNode: undefined,\n from: fromWithLabel,\n to: toWithLabel,\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('handles missing from coordinates', () => {\n const { container } = renderComponent({\n from: {},\n to: xy(1, 1),\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('handles all props undefined except required', () => {\n const { container } = renderComponent({\n building: undefined,\n disabled: undefined,\n correctness: undefined,\n coordinatesOnHover: undefined,\n labelModeEnabled: undefined,\n limitLabeling: undefined,\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with custom classes', () => {\n const { container } = renderComponent({\n classes: { root: 'custom-root' },\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with empty classes', () => {\n const { container } = renderComponent({ classes: {} });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('handles middle point without label', () => {\n const middle = { x: 0.5, y: 0.5 };\n const { container } = renderComponent({\n labelNode,\n middle,\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with all label types simultaneously', () => {\n const middle = { x: 0.5, y: 0.5, label: 'M' };\n const { container } = renderComponent({\n labelNode,\n from: fromWithLabel,\n to: toWithLabel,\n middle,\n labelModeEnabled: true,\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n });\n\n describe('integration', () => {\n it('renders complete circle with all features', () => {\n const middle = { x: 0.5, y: 0.5, label: 'Middle' };\n const { container } = renderComponent({\n from: fromWithLabel,\n to: toWithLabel,\n middle,\n labelNode,\n labelModeEnabled: true,\n coordinatesOnHover: true,\n correctness: 'correct',\n building: false,\n disabled: false,\n onClick: jest.fn(),\n onChange: jest.fn(),\n changeMarkProps: jest.fn(),\n onDragStart: jest.fn(),\n onDragStop: jest.fn(),\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders building circle without labels', () => {\n const { container } = renderComponent({\n from: xy(0, 0),\n to: xy(1, 1),\n building: true,\n disabled: false,\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders disabled circle with labels', () => {\n const { container } = renderComponent({\n from: fromWithLabel,\n to: toWithLabel,\n labelNode,\n disabled: true,\n building: false,\n });\n expect(container.firstChild).toBeInTheDocument();\n });\n });\n\n // Note: Instance method tests (dragFrom, dragTo, dragCircle, labelChange, clickPoint)\n // have been removed as they test internal implementation details.\n // These behaviors should be tested through:\n // 1. User interaction tests (drag-and-drop, clicks) - requires complex setup with @dnd-kit\n // 2. Integration/E2E tests\n // The component's public API (onChange, changeMarkProps callbacks) is what matters for RTL testing.\n});\n"],"mappings":";;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAEA,IAAAI,UAAA,GAAAJ,OAAA;AAA6C,SAAAK,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,OAAAG,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAL,CAAA,GAAAC,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAR,CAAA,EAAAC,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAZ,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAI,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,QAAAe,gBAAA,aAAAhB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAAlB,CAAA,EAAAG,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAH,OAAA,CAAAI,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAnB,CAAA,EAAAC,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAE7CoB,QAAQ,CAAC,WAAW,EAAE,YAAM;EAC1B,IAAIC,QAAQ,GAAGC,IAAI,CAACC,EAAE,CAAC,CAAC;EACxB,IAAIC,eAAe,GAAGF,IAAI,CAACC,EAAE,CAAC,CAAC;EAE/B,IAAME,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,MAAM,EAAK;IAClC,IAAMC,QAAQ,GAAG;MACfC,OAAO,EAAE,CAAC,CAAC;MACXC,SAAS,EAAE,WAAW;MACtBR,QAAQ,EAARA,QAAQ;MACRG,eAAe,EAAfA,eAAe;MACfM,UAAU,EAAE,IAAAA,iBAAU,EAAC,CAAC;MACxBC,IAAI,EAAE,IAAAC,SAAE,EAAC,CAAC,EAAE,CAAC,CAAC;MACdC,EAAE,EAAE,IAAAD,SAAE,EAAC,CAAC,EAAE,CAAC;IACb,CAAC;IACD,IAAME,KAAK,GAAAtB,aAAA,CAAAA,aAAA,KAAQe,QAAQ,GAAKD,MAAM,CAAE;IAExC,OAAO,IAAAS,iBAAM,eAACxC,MAAA,YAAAyC,aAAA,CAACtC,UAAA,CAAAuC,aAAa,EAAKH,KAAQ,CAAC,CAAC;EAC7C,CAAC;;EAED;EACA,IAAMI,SAAS,GAAGC,QAAQ,CAACH,aAAa,CAAC,eAAe,CAAC;EACzD,IAAMI,aAAa,GAAG;IAAEC,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEC,KAAK,EAAE;EAAI,CAAC;EAChD,IAAMC,WAAW,GAAG;IAAEH,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEC,KAAK,EAAE;EAAI,CAAC;EAC9C,IAAME,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAA;IAAA,IAAInB,MAAM,GAAAb,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAiC,SAAA,GAAAjC,SAAA,MAAG,CAAC,CAAC;IAAA,OACnCY,eAAe,CAAAb,aAAA,CAAAA,aAAA,KACVc,MAAM;MACTY,SAAS,EAAEA,SAAS;MACpBP,IAAI,EAAES,aAAa;MACnBP,EAAE,EAAEW;IAAW,EAChB,CAAC;EAAA;EAEJxB,QAAQ,CAAC,WAAW,EAAE,YAAM;IAC1B2B,EAAE,CAAC,0BAA0B,EAAE,YAAM;MACnC,IAAAC,gBAAA,GAAsBvB,eAAe,CAAC,CAAC;QAA/BwB,SAAS,GAAAD,gBAAA,CAATC,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,qBAAqB,EAAE,YAAM;MAC9B,IAAAM,iBAAA,GAAsBR,gBAAgB,CAAC,CAAC;QAAhCI,SAAS,GAAAI,iBAAA,CAATJ,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,qBAAqB,EAAE,YAAM;MAC9B,IAAAO,iBAAA,GAAsB7B,eAAe,CAAC,CAAC;QAA/BwB,SAAS,GAAAK,iBAAA,CAATL,SAAS;MACjB,IAAMM,CAAC,GAAGN,SAAS,CAACO,aAAa,CAAC,GAAG,CAAC;MACtCN,MAAM,CAACK,CAAC,CAAC,CAACH,iBAAiB,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEFL,EAAE,CAAC,4BAA4B,EAAE,YAAM;MACrC,IAAAU,iBAAA,GAAsBhC,eAAe,CAAC,CAAC;QAA/BwB,SAAS,GAAAQ,iBAAA,CAATR,SAAS;MACjB;MACAC,MAAM,CAACD,SAAS,CAACO,aAAa,CAAC,GAAG,CAAC,CAAC,CAACJ,iBAAiB,CAAC,CAAC;IAC1D,CAAC,CAAC;IAEFL,EAAE,CAAC,kCAAkC,EAAE,YAAM;MAC3C,IAAAW,iBAAA,GAAsBjC,eAAe,CAAC,CAAC;QAA/BwB,SAAS,GAAAS,iBAAA,CAATT,SAAS;MACjB;MACA,IAAMU,MAAM,GAAGV,SAAS,CAACW,gBAAgB,CAAC,GAAG,CAAC;MAC9CV,MAAM,CAACS,MAAM,CAAC7C,MAAM,CAAC,CAAC+C,sBAAsB,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC;IAEFd,EAAE,CAAC,4BAA4B,EAAE,YAAM;MACrC,IAAAe,iBAAA,GAAsBrC,eAAe,CAAC;UAAEsC,QAAQ,EAAE;QAAK,CAAC,CAAC;QAAjDd,SAAS,GAAAa,iBAAA,CAATb,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,4BAA4B,EAAE,YAAM;MACrC,IAAAiB,iBAAA,GAAsBvC,eAAe,CAAC;UAAEwC,QAAQ,EAAE;QAAK,CAAC,CAAC;QAAjDhB,SAAS,GAAAe,iBAAA,CAATf,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,+BAA+B,EAAE,YAAM;MACxC,IAAAmB,iBAAA,GAAsBzC,eAAe,CAAC;UAAE0C,WAAW,EAAE;QAAU,CAAC,CAAC;QAAzDlB,SAAS,GAAAiB,iBAAA,CAATjB,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,yCAAyC,EAAE,YAAM;MAClD,IAAAqB,iBAAA,GAAsB3C,eAAe,CAAC;UAAE4C,kBAAkB,EAAE;QAAK,CAAC,CAAC;QAA3DpB,SAAS,GAAAmB,iBAAA,CAATnB,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,+BAA+B,EAAE,YAAM;MACxC,IAAAuB,iBAAA,GAAsB7C,eAAe,CAAC;UAAE8C,gBAAgB,EAAE;QAAK,CAAC,CAAC;QAAzDtB,SAAS,GAAAqB,iBAAA,CAATrB,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,2BAA2B,EAAE,YAAM;MACpC,IAAMyB,MAAM,GAAG;QAAE/B,CAAC,EAAE,GAAG;QAAEC,CAAC,EAAE,GAAG;QAAEC,KAAK,EAAE;MAAI,CAAC;MAC7C,IAAA8B,iBAAA,GAAsBhD,eAAe,CAAC;UACpC+C,MAAM,EAANA,MAAM;UACNlC,SAAS,EAATA,SAAS;UACTiC,gBAAgB,EAAE;QACpB,CAAC,CAAC;QAJMtB,SAAS,GAAAwB,iBAAA,CAATxB,SAAS;MAKjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,wCAAwC,EAAE,YAAM;MACjD,IAAA2B,iBAAA,GAAsBjD,eAAe,CAAC;UAAEQ,EAAE,EAAEa;QAAU,CAAC,CAAC;QAAhDG,SAAS,GAAAyB,iBAAA,CAATzB,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,mCAAmC,EAAE,YAAM;MAC5C,IAAA4B,kBAAA,GAAsBlD,eAAe,CAAC;UAAEQ,EAAE,EAAE;QAAK,CAAC,CAAC;QAA3CgB,SAAS,GAAA0B,kBAAA,CAAT1B,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFhC,QAAQ,CAAC,OAAO,EAAE,YAAM;IACtB2B,EAAE,CAAC,0BAA0B,EAAE,YAAM;MACnC,IAAM6B,cAAc,GAAGtD,IAAI,CAACC,EAAE,CAAC,CAAC;MAChC,IAAAsD,kBAAA,GAAsBpD,eAAe,CAAC;UAAEJ,QAAQ,EAAEuD;QAAe,CAAC,CAAC;QAA3D3B,SAAS,GAAA4B,kBAAA,CAAT5B,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,iCAAiC,EAAE,YAAM;MAC1C,IAAM+B,qBAAqB,GAAGxD,IAAI,CAACC,EAAE,CAAC,CAAC;MACvC,IAAAwD,kBAAA,GAAsBtD,eAAe,CAAC;UAAED,eAAe,EAAEsD;QAAsB,CAAC,CAAC;QAAzE7B,SAAS,GAAA8B,kBAAA,CAAT9B,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,yBAAyB,EAAE,YAAM;MAClC,IAAMiC,OAAO,GAAG1D,IAAI,CAACC,EAAE,CAAC,CAAC;MACzB,IAAA0D,kBAAA,GAAsBxD,eAAe,CAAC;UAAEuD,OAAO,EAAPA;QAAQ,CAAC,CAAC;QAA1C/B,SAAS,GAAAgC,kBAAA,CAAThC,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,6BAA6B,EAAE,YAAM;MACtC,IAAMmC,WAAW,GAAG5D,IAAI,CAACC,EAAE,CAAC,CAAC;MAC7B,IAAA4D,kBAAA,GAAsB1D,eAAe,CAAC;UAAEyD,WAAW,EAAXA;QAAY,CAAC,CAAC;QAA9CjC,SAAS,GAAAkC,kBAAA,CAATlC,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,4BAA4B,EAAE,YAAM;MACrC,IAAMqC,UAAU,GAAG9D,IAAI,CAACC,EAAE,CAAC,CAAC;MAC5B,IAAA8D,kBAAA,GAAsB5D,eAAe,CAAC;UAAE2D,UAAU,EAAVA;QAAW,CAAC,CAAC;QAA7CnC,SAAS,GAAAoC,kBAAA,CAATpC,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,wCAAwC,EAAE,YAAM;MACjD,IAAAuC,kBAAA,GAAsB7D,eAAe,CAAC;UAAEuD,OAAO,EAAElC;QAAU,CAAC,CAAC;QAArDG,SAAS,GAAAqC,kBAAA,CAATrC,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,mBAAmB,EAAE,YAAM;MAC5B,IAAMwC,gBAAgB,GAAG,IAAAzD,iBAAU,EAAC,CAAC;MACrCyD,gBAAgB,CAACC,IAAI,GAAG;QAAEC,KAAK,EAAE,GAAG;QAAEC,MAAM,EAAE;MAAI,CAAC;MACnD,IAAAC,kBAAA,GAAsBlE,eAAe,CAAC;UAAEK,UAAU,EAAEyD;QAAiB,CAAC,CAAC;QAA/DtC,SAAS,GAAA0C,kBAAA,CAAT1C,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,kBAAkB,EAAE,YAAM;MAC3B,IAAA6C,kBAAA,GAAsBnE,eAAe,CAAC;UAAEI,SAAS,EAAE;QAAgB,CAAC,CAAC;QAA7DoB,SAAS,GAAA2C,kBAAA,CAAT3C,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFhC,QAAQ,CAAC,QAAQ,EAAE,YAAM;IACvB2B,EAAE,CAAC,kCAAkC,EAAE,YAAM;MAC3C,IAAA8C,kBAAA,GAAsBhD,gBAAgB,CAAC,CAAC;QAAhCI,SAAS,GAAA4C,kBAAA,CAAT5C,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,gCAAgC,EAAE,YAAM;MACzC,IAAA+C,kBAAA,GAAsBjD,gBAAgB,CAAC,CAAC;QAAhCI,SAAS,GAAA6C,kBAAA,CAAT7C,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,oCAAoC,EAAE,YAAM;MAC7C,IAAMyB,MAAM,GAAG;QAAE/B,CAAC,EAAE,GAAG;QAAEC,CAAC,EAAE,GAAG;QAAEC,KAAK,EAAE;MAAI,CAAC;MAC7C,IAAAoD,kBAAA,GAAsBtE,eAAe,CAAC;UACpCa,SAAS,EAATA,SAAS;UACTkC,MAAM,EAANA,MAAM;UACNzC,IAAI,EAAES,aAAa;UACnBP,EAAE,EAAEW;QACN,CAAC,CAAC;QALMK,SAAS,GAAA8C,kBAAA,CAAT9C,SAAS;MAMjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,uDAAuD,EAAE,YAAM;MAChE,IAAAiD,kBAAA,GAAsBvE,eAAe,CAAC;UACpCM,IAAI,EAAES,aAAa;UACnBP,EAAE,EAAEW,WAAW;UACfN,SAAS,EAAE;QACb,CAAC,CAAC;QAJMW,SAAS,GAAA+C,kBAAA,CAAT/C,SAAS;MAKjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,qBAAqB,EAAE,YAAM;MAC9B,IAAMhB,IAAI,GAAG;QAAEU,CAAC,EAAE,CAAC;QAAEC,CAAC,EAAE,CAAC;QAAEC,KAAK,EAAE;MAAG,CAAC;MACtC,IAAMV,EAAE,GAAG;QAAEQ,CAAC,EAAE,CAAC;QAAEC,CAAC,EAAE,CAAC;QAAEC,KAAK,EAAE;MAAG,CAAC;MACpC,IAAAsD,kBAAA,GAAsBxE,eAAe,CAAC;UACpCa,SAAS,EAATA,SAAS;UACTP,IAAI,EAAJA,IAAI;UACJE,EAAE,EAAFA;QACF,CAAC,CAAC;QAJMgB,SAAS,GAAAgD,kBAAA,CAAThD,SAAS;MAKjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,iCAAiC,EAAE,YAAM;MAC1C,IAAAmD,kBAAA,GAAsBzE,eAAe,CAAC;UACpCa,SAAS,EAATA,SAAS;UACTiC,gBAAgB,EAAE,IAAI;UACtBxC,IAAI,EAAES,aAAa;UACnBP,EAAE,EAAEW;QACN,CAAC,CAAC;QALMK,SAAS,GAAAiD,kBAAA,CAATjD,SAAS;MAMjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,kCAAkC,EAAE,YAAM;MAC3C,IAAAoD,kBAAA,GAAsB1E,eAAe,CAAC;UACpCa,SAAS,EAATA,SAAS;UACTiC,gBAAgB,EAAE,KAAK;UACvBxC,IAAI,EAAES,aAAa;UACnBP,EAAE,EAAEW;QACN,CAAC,CAAC;QALMK,SAAS,GAAAkD,kBAAA,CAATlD,SAAS;MAMjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,oCAAoC,EAAE,YAAM;MAC7C,IAAAqD,kBAAA,GAAsB3E,eAAe,CAAC;UACpCa,SAAS,EAATA,SAAS;UACT+D,aAAa,EAAE,IAAI;UACnBtE,IAAI,EAAES,aAAa;UACnBP,EAAE,EAAEW;QACN,CAAC,CAAC;QALMK,SAAS,GAAAmD,kBAAA,CAATnD,SAAS;MAMjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,8BAA8B,EAAE,YAAM;MACvC,IAAMhB,IAAI,GAAG;QAAEU,CAAC,EAAE,CAAC;QAAEC,CAAC,EAAE;MAAE,CAAC;MAC3B,IAAMT,EAAE,GAAG;QAAEQ,CAAC,EAAE,CAAC;QAAEC,CAAC,EAAE,CAAC;QAAEC,KAAK,EAAE;MAAI,CAAC;MACrC,IAAA2D,kBAAA,GAAsB7E,eAAe,CAAC;UACpCa,SAAS,EAATA,SAAS;UACTP,IAAI,EAAJA,IAAI;UACJE,EAAE,EAAFA;QACF,CAAC,CAAC;QAJMgB,SAAS,GAAAqD,kBAAA,CAATrD,SAAS;MAKjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,4BAA4B,EAAE,YAAM;MACrC,IAAMhB,IAAI,GAAG;QAAEU,CAAC,EAAE,CAAC;QAAEC,CAAC,EAAE,CAAC;QAAEC,KAAK,EAAE;MAAI,CAAC;MACvC,IAAMV,EAAE,GAAG;QAAEQ,CAAC,EAAE,CAAC;QAAEC,CAAC,EAAE;MAAE,CAAC;MACzB,IAAA6D,kBAAA,GAAsB9E,eAAe,CAAC;UACpCa,SAAS,EAATA,SAAS;UACTP,IAAI,EAAJA,IAAI;UACJE,EAAE,EAAFA;QACF,CAAC,CAAC;QAJMgB,SAAS,GAAAsD,kBAAA,CAATtD,SAAS;MAKjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFhC,QAAQ,CAAC,aAAa,EAAE,YAAM;IAC5B2B,EAAE,CAAC,mCAAmC,EAAE,YAAM;MAC5C,IAAAyD,kBAAA,GAAsB/E,eAAe,CAAC;UACpCM,IAAI,EAAE,IAAAC,SAAE,EAAC,CAAC,EAAE,EAAE,CAAC;UACfC,EAAE,EAAE,IAAAD,SAAE,EAAC,EAAE,EAAE,EAAE;QACf,CAAC,CAAC;QAHMiB,SAAS,GAAAuD,kBAAA,CAATvD,SAAS;MAIjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,mCAAmC,EAAE,YAAM;MAC5C,IAAA0D,kBAAA,GAAsBhF,eAAe,CAAC;UACpCM,IAAI,EAAE,IAAAC,SAAE,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;UACjBC,EAAE,EAAE,IAAAD,SAAE,EAAC,CAAC,EAAE,EAAE,CAAC,EAAE;QACjB,CAAC,CAAC;QAHMiB,SAAS,GAAAwD,kBAAA,CAATxD,SAAS;MAIjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,+BAA+B,EAAE,YAAM;MACxC,IAAA2D,kBAAA,GAAsBjF,eAAe,CAAC;UACpCM,IAAI,EAAE,IAAAC,SAAE,EAAC,CAAC,EAAE,CAAC,CAAC;UACdC,EAAE,EAAE,IAAAD,SAAE,EAAC,CAAC,EAAE,CAAC;QACb,CAAC,CAAC;QAHMiB,SAAS,GAAAyD,kBAAA,CAATzD,SAAS;MAIjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,kCAAkC,EAAE,YAAM;MAC3C,IAAA4D,kBAAA,GAAsBlF,eAAe,CAAC;UACpCM,IAAI,EAAE;YAAEU,CAAC,EAAE,GAAG;YAAEC,CAAC,EAAE;UAAI,CAAC;UACxBT,EAAE,EAAE;YAAEQ,CAAC,EAAE,GAAG;YAAEC,CAAC,EAAE;UAAI;QACvB,CAAC,CAAC;QAHMO,SAAS,GAAA0D,kBAAA,CAAT1D,SAAS;MAIjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,gCAAgC,EAAE,YAAM;MACzC,IAAA6D,kBAAA,GAAsBnF,eAAe,CAAC;UACpCM,IAAI,EAAE,IAAAC,SAAE,EAAC,IAAI,EAAE,IAAI,CAAC;UACpBC,EAAE,EAAE,IAAAD,SAAE,EAAC,IAAI,EAAE,IAAI;QACnB,CAAC,CAAC;QAHMiB,SAAS,GAAA2D,kBAAA,CAAT3D,SAAS;MAIjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,qCAAqC,EAAE,YAAM;MAC9C,IAAA8D,kBAAA,GAAsBpF,eAAe,CAAC;UACpCM,IAAI,EAAE,IAAAC,SAAE,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC;UAChBC,EAAE,EAAE,IAAAD,SAAE,EAAC,EAAE,EAAE,CAAC,EAAE;QAChB,CAAC,CAAC;QAHMiB,SAAS,GAAA4D,kBAAA,CAAT5D,SAAS;MAIjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,gCAAgC,EAAE,YAAM;MACzC,IAAA+D,kBAAA,GAAsBrF,eAAe,CAAC;UACpCM,IAAI,EAAE;YAAEU,CAAC,EAAE,CAAC;YAAEC,CAAC,EAAE;UAAE,CAAC;UACpBT,EAAE,EAAE;YAAEQ,CAAC,EAAE,IAAI;YAAEC,CAAC,EAAE;UAAK;QACzB,CAAC,CAAC;QAHMO,SAAS,GAAA6D,kBAAA,CAAT7D,SAAS;MAIjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,8BAA8B,EAAE,YAAM;MACvC,IAAAgE,kBAAA,GAAsBtF,eAAe,CAAC;UACpCM,IAAI,EAAE,IAAAC,SAAE,EAAC,CAAC,EAAE,CAAC,CAAC;UACdC,EAAE,EAAE,IAAAD,SAAE,EAAC,KAAK,EAAE,KAAK;QACrB,CAAC,CAAC;QAHMiB,SAAS,GAAA8D,kBAAA,CAAT9D,SAAS;MAIjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFhC,QAAQ,CAAC,QAAQ,EAAE,YAAM;IACvB2B,EAAE,CAAC,2BAA2B,EAAE,YAAM;MACpC,IAAAiE,kBAAA,GAAsBvF,eAAe,CAAC;UAAEsC,QAAQ,EAAE;QAAK,CAAC,CAAC;QAAjDd,SAAS,GAAA+D,kBAAA,CAAT/D,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,4BAA4B,EAAE,YAAM;MACrC,IAAAkE,kBAAA,GAAsBxF,eAAe,CAAC;UAAEsC,QAAQ,EAAE;QAAM,CAAC,CAAC;QAAlDd,SAAS,GAAAgE,kBAAA,CAAThE,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,2BAA2B,EAAE,YAAM;MACpC,IAAAmE,kBAAA,GAAsBzF,eAAe,CAAC;UAAEwC,QAAQ,EAAE;QAAK,CAAC,CAAC;QAAjDhB,SAAS,GAAAiE,kBAAA,CAATjE,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,0BAA0B,EAAE,YAAM;MACnC,IAAAoE,kBAAA,GAAsB1F,eAAe,CAAC;UAAEwC,QAAQ,EAAE;QAAM,CAAC,CAAC;QAAlDhB,SAAS,GAAAkE,kBAAA,CAATlE,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,oCAAoC,EAAE,YAAM;MAC7C,IAAAqE,kBAAA,GAAsB3F,eAAe,CAAC;UAAEsC,QAAQ,EAAE,IAAI;UAAEE,QAAQ,EAAE;QAAK,CAAC,CAAC;QAAjEhB,SAAS,GAAAmE,kBAAA,CAATnE,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,kCAAkC,EAAE,YAAM;MAC3C,IAAAsE,kBAAA,GAAsB5F,eAAe,CAAC;UAAE0C,WAAW,EAAE;QAAU,CAAC,CAAC;QAAzDlB,SAAS,GAAAoE,kBAAA,CAATpE,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,oCAAoC,EAAE,YAAM;MAC7C,IAAAuE,kBAAA,GAAsB7F,eAAe,CAAC;UAAE0C,WAAW,EAAE;QAAY,CAAC,CAAC;QAA3DlB,SAAS,GAAAqE,kBAAA,CAATrE,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,kCAAkC,EAAE,YAAM;MAC3C,IAAAwE,kBAAA,GAAsB9F,eAAe,CAAC;UAAE0C,WAAW,EAAE;QAAU,CAAC,CAAC;QAAzDlB,SAAS,GAAAsE,kBAAA,CAATtE,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,6BAA6B,EAAE,YAAM;MACtC,IAAAyE,kBAAA,GAAsB/F,eAAe,CAAC;UAAE0C,WAAW,EAAErB;QAAU,CAAC,CAAC;QAAzDG,SAAS,GAAAuE,kBAAA,CAATvE,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFhC,QAAQ,CAAC,YAAY,EAAE,YAAM;IAC3B2B,EAAE,CAAC,wBAAwB,EAAE,YAAM;MACjC,IAAA0E,kBAAA,GAAsBhG,eAAe,CAAC;UACpCa,SAAS,EAAE,IAAI;UACfP,IAAI,EAAES,aAAa;UACnBP,EAAE,EAAEW;QACN,CAAC,CAAC;QAJMK,SAAS,GAAAwE,kBAAA,CAATxE,SAAS;MAKjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,6BAA6B,EAAE,YAAM;MACtC,IAAA2E,kBAAA,GAAsBjG,eAAe,CAAC;UACpCa,SAAS,EAAEQ,SAAS;UACpBf,IAAI,EAAES,aAAa;UACnBP,EAAE,EAAEW;QACN,CAAC,CAAC;QAJMK,SAAS,GAAAyE,kBAAA,CAATzE,SAAS;MAKjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,kCAAkC,EAAE,YAAM;MAC3C,IAAA4E,kBAAA,GAAsBlG,eAAe,CAAC;UACpCM,IAAI,EAAE,CAAC,CAAC;UACRE,EAAE,EAAE,IAAAD,SAAE,EAAC,CAAC,EAAE,CAAC;QACb,CAAC,CAAC;QAHMiB,SAAS,GAAA0E,kBAAA,CAAT1E,SAAS;MAIjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,6CAA6C,EAAE,YAAM;MACtD,IAAA6E,kBAAA,GAAsBnG,eAAe,CAAC;UACpCsC,QAAQ,EAAEjB,SAAS;UACnBmB,QAAQ,EAAEnB,SAAS;UACnBqB,WAAW,EAAErB,SAAS;UACtBuB,kBAAkB,EAAEvB,SAAS;UAC7ByB,gBAAgB,EAAEzB,SAAS;UAC3BuD,aAAa,EAAEvD;QACjB,CAAC,CAAC;QAPMG,SAAS,GAAA2E,kBAAA,CAAT3E,SAAS;MAQjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,6BAA6B,EAAE,YAAM;MACtC,IAAA8E,kBAAA,GAAsBpG,eAAe,CAAC;UACpCG,OAAO,EAAE;YAAEkG,IAAI,EAAE;UAAc;QACjC,CAAC,CAAC;QAFM7E,SAAS,GAAA4E,kBAAA,CAAT5E,SAAS;MAGjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,4BAA4B,EAAE,YAAM;MACrC,IAAAgF,kBAAA,GAAsBtG,eAAe,CAAC;UAAEG,OAAO,EAAE,CAAC;QAAE,CAAC,CAAC;QAA9CqB,SAAS,GAAA8E,kBAAA,CAAT9E,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,oCAAoC,EAAE,YAAM;MAC7C,IAAMyB,MAAM,GAAG;QAAE/B,CAAC,EAAE,GAAG;QAAEC,CAAC,EAAE;MAAI,CAAC;MACjC,IAAAsF,kBAAA,GAAsBvG,eAAe,CAAC;UACpCa,SAAS,EAATA,SAAS;UACTkC,MAAM,EAANA;QACF,CAAC,CAAC;QAHMvB,SAAS,GAAA+E,kBAAA,CAAT/E,SAAS;MAIjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,6CAA6C,EAAE,YAAM;MACtD,IAAMyB,MAAM,GAAG;QAAE/B,CAAC,EAAE,GAAG;QAAEC,CAAC,EAAE,GAAG;QAAEC,KAAK,EAAE;MAAI,CAAC;MAC7C,IAAAsF,kBAAA,GAAsBxG,eAAe,CAAC;UACpCa,SAAS,EAATA,SAAS;UACTP,IAAI,EAAES,aAAa;UACnBP,EAAE,EAAEW,WAAW;UACf4B,MAAM,EAANA,MAAM;UACND,gBAAgB,EAAE;QACpB,CAAC,CAAC;QANMtB,SAAS,GAAAgF,kBAAA,CAAThF,SAAS;MAOjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFhC,QAAQ,CAAC,aAAa,EAAE,YAAM;IAC5B2B,EAAE,CAAC,2CAA2C,EAAE,YAAM;MACpD,IAAMyB,MAAM,GAAG;QAAE/B,CAAC,EAAE,GAAG;QAAEC,CAAC,EAAE,GAAG;QAAEC,KAAK,EAAE;MAAS,CAAC;MAClD,IAAAuF,kBAAA,GAAsBzG,eAAe,CAAC;UACpCM,IAAI,EAAES,aAAa;UACnBP,EAAE,EAAEW,WAAW;UACf4B,MAAM,EAANA,MAAM;UACNlC,SAAS,EAATA,SAAS;UACTiC,gBAAgB,EAAE,IAAI;UACtBF,kBAAkB,EAAE,IAAI;UACxBF,WAAW,EAAE,SAAS;UACtBJ,QAAQ,EAAE,KAAK;UACfE,QAAQ,EAAE,KAAK;UACfe,OAAO,EAAE1D,IAAI,CAACC,EAAE,CAAC,CAAC;UAClBF,QAAQ,EAAEC,IAAI,CAACC,EAAE,CAAC,CAAC;UACnBC,eAAe,EAAEF,IAAI,CAACC,EAAE,CAAC,CAAC;UAC1B2D,WAAW,EAAE5D,IAAI,CAACC,EAAE,CAAC,CAAC;UACtB6D,UAAU,EAAE9D,IAAI,CAACC,EAAE,CAAC;QACtB,CAAC,CAAC;QAfM0B,SAAS,GAAAiF,kBAAA,CAATjF,SAAS;MAgBjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,wCAAwC,EAAE,YAAM;MACjD,IAAAoF,kBAAA,GAAsB1G,eAAe,CAAC;UACpCM,IAAI,EAAE,IAAAC,SAAE,EAAC,CAAC,EAAE,CAAC,CAAC;UACdC,EAAE,EAAE,IAAAD,SAAE,EAAC,CAAC,EAAE,CAAC,CAAC;UACZ+B,QAAQ,EAAE,IAAI;UACdE,QAAQ,EAAE;QACZ,CAAC,CAAC;QALMhB,SAAS,GAAAkF,kBAAA,CAATlF,SAAS;MAMjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;IAEFL,EAAE,CAAC,qCAAqC,EAAE,YAAM;MAC9C,IAAAqF,kBAAA,GAAsB3G,eAAe,CAAC;UACpCM,IAAI,EAAES,aAAa;UACnBP,EAAE,EAAEW,WAAW;UACfN,SAAS,EAATA,SAAS;UACT2B,QAAQ,EAAE,IAAI;UACdF,QAAQ,EAAE;QACZ,CAAC,CAAC;QANMd,SAAS,GAAAmF,kBAAA,CAATnF,SAAS;MAOjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;EACJ,CAAC,CAAC;;EAEF;EACA;EACA;EACA;EACA;EACA;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,576 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
5
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
6
- var _index = require("../index");
7
- var _utils = require("../../../utils");
8
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
9
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
10
- jest.mock('../../../utils', function () {
11
- return {
12
- equalPoints: jest.fn()
13
- };
14
- });
15
- describe('circle tool', function () {
16
- var circleTool;
17
- beforeEach(function () {
18
- jest.clearAllMocks();
19
- circleTool = (0, _index.tool)();
20
- });
21
- describe('tool configuration', function () {
22
- it('creates a tool object', function () {
23
- expect(circleTool).toBeDefined();
24
- expect((0, _typeof2["default"])(circleTool)).toBe('object');
25
- });
26
- it('has type circle', function () {
27
- expect(circleTool.type).toBe('circle');
28
- });
29
- it('has a Component', function () {
30
- expect(circleTool.Component).toBeDefined();
31
- });
32
- it('has hover function', function () {
33
- expect((0, _typeof2["default"])(circleTool.hover)).toBe('function');
34
- });
35
- it('has addPoint function', function () {
36
- expect((0, _typeof2["default"])(circleTool.addPoint)).toBe('function');
37
- });
38
- });
39
- describe('hover', function () {
40
- it('returns mark with edge point', function () {
41
- var point = {
42
- x: 5,
43
- y: 10
44
- };
45
- var mark = {
46
- type: 'circle',
47
- root: {
48
- x: 0,
49
- y: 0
50
- }
51
- };
52
- var result = circleTool.hover(point, mark);
53
- expect(result).toEqual(_objectSpread(_objectSpread({}, mark), {}, {
54
- edge: point
55
- }));
56
- });
57
- it('updates existing mark with new edge', function () {
58
- var point = {
59
- x: 7,
60
- y: 8
61
- };
62
- var mark = {
63
- type: 'circle',
64
- root: {
65
- x: 1,
66
- y: 1
67
- },
68
- edge: {
69
- x: 3,
70
- y: 3
71
- }
72
- };
73
- var result = circleTool.hover(point, mark);
74
- expect(result.edge).toEqual(point);
75
- expect(result.root).toEqual(mark.root);
76
- });
77
- it('preserves mark properties', function () {
78
- var point = {
79
- x: 5,
80
- y: 5
81
- };
82
- var mark = {
83
- type: 'circle',
84
- root: {
85
- x: 0,
86
- y: 0
87
- },
88
- label: 'Circle A',
89
- correctness: {
90
- value: 'correct'
91
- }
92
- };
93
- var result = circleTool.hover(point, mark);
94
- expect(result.label).toBe('Circle A');
95
- expect(result.correctness).toEqual({
96
- value: 'correct'
97
- });
98
- });
99
- it('handles null mark', function () {
100
- var point = {
101
- x: 5,
102
- y: 10
103
- };
104
- var mark = null;
105
- var result = circleTool.hover(point, mark);
106
- expect(result).toEqual({
107
- edge: point
108
- });
109
- });
110
- it('handles undefined mark', function () {
111
- var point = {
112
- x: 5,
113
- y: 10
114
- };
115
- var mark = undefined;
116
- var result = circleTool.hover(point, mark);
117
- expect(result).toEqual({
118
- edge: point
119
- });
120
- });
121
- it('works with negative coordinates', function () {
122
- var point = {
123
- x: -5,
124
- y: -10
125
- };
126
- var mark = {
127
- type: 'circle',
128
- root: {
129
- x: -1,
130
- y: -1
131
- }
132
- };
133
- var result = circleTool.hover(point, mark);
134
- expect(result.edge).toEqual(point);
135
- });
136
- it('works with decimal coordinates', function () {
137
- var point = {
138
- x: 3.5,
139
- y: 7.8
140
- };
141
- var mark = {
142
- type: 'circle',
143
- root: {
144
- x: 1.2,
145
- y: 2.4
146
- }
147
- };
148
- var result = circleTool.hover(point, mark);
149
- expect(result.edge).toEqual(point);
150
- });
151
- });
152
- describe('addPoint', function () {
153
- describe('first point (creating root)', function () {
154
- it('creates new circle mark when no mark exists', function () {
155
- var point = {
156
- x: 5,
157
- y: 10
158
- };
159
- var mark = null;
160
- _utils.equalPoints.mockReturnValue(false);
161
- var result = circleTool.addPoint(point, mark);
162
- expect(result).toEqual({
163
- type: 'circle',
164
- root: point,
165
- building: true
166
- });
167
- });
168
- it('creates building circle with correct properties', function () {
169
- var point = {
170
- x: 3,
171
- y: 7
172
- };
173
- _utils.equalPoints.mockReturnValue(false);
174
- var result = circleTool.addPoint(point, null);
175
- expect(result.type).toBe('circle');
176
- expect(result.root).toEqual(point);
177
- expect(result.building).toBe(true);
178
- expect(result.edge).toBeUndefined();
179
- });
180
- it('works with negative coordinates', function () {
181
- var point = {
182
- x: -5,
183
- y: -10
184
- };
185
- _utils.equalPoints.mockReturnValue(false);
186
- var result = circleTool.addPoint(point, null);
187
- expect(result.root).toEqual(point);
188
- expect(result.building).toBe(true);
189
- });
190
- it('works with zero coordinates', function () {
191
- var point = {
192
- x: 0,
193
- y: 0
194
- };
195
- _utils.equalPoints.mockReturnValue(false);
196
- var result = circleTool.addPoint(point, null);
197
- expect(result.root).toEqual(point);
198
- expect(result.building).toBe(true);
199
- });
200
- it('works with decimal coordinates', function () {
201
- var point = {
202
- x: 3.5,
203
- y: 7.25
204
- };
205
- _utils.equalPoints.mockReturnValue(false);
206
- var result = circleTool.addPoint(point, null);
207
- expect(result.root).toEqual(point);
208
- expect(result.building).toBe(true);
209
- });
210
- });
211
- describe('second point (completing circle)', function () {
212
- it('completes circle when adding edge point', function () {
213
- var root = {
214
- x: 0,
215
- y: 0
216
- };
217
- var edge = {
218
- x: 5,
219
- y: 5
220
- };
221
- var mark = {
222
- type: 'circle',
223
- root: root,
224
- building: true
225
- };
226
- _utils.equalPoints.mockReturnValue(false);
227
- var result = circleTool.addPoint(edge, mark);
228
- expect(result).toEqual(_objectSpread(_objectSpread({}, mark), {}, {
229
- edge: edge,
230
- building: false
231
- }));
232
- });
233
- it('sets building to false', function () {
234
- var mark = {
235
- type: 'circle',
236
- root: {
237
- x: 1,
238
- y: 1
239
- },
240
- building: true
241
- };
242
- var point = {
243
- x: 5,
244
- y: 5
245
- };
246
- _utils.equalPoints.mockReturnValue(false);
247
- var result = circleTool.addPoint(point, mark);
248
- expect(result.building).toBe(false);
249
- });
250
- it('preserves mark type', function () {
251
- var mark = {
252
- type: 'circle',
253
- root: {
254
- x: 1,
255
- y: 1
256
- },
257
- building: true
258
- };
259
- var point = {
260
- x: 5,
261
- y: 5
262
- };
263
- _utils.equalPoints.mockReturnValue(false);
264
- var result = circleTool.addPoint(point, mark);
265
- expect(result.type).toBe('circle');
266
- });
267
- it('preserves root when adding edge', function () {
268
- var root = {
269
- x: 2,
270
- y: 3
271
- };
272
- var mark = {
273
- type: 'circle',
274
- root: root,
275
- building: true
276
- };
277
- var edge = {
278
- x: 8,
279
- y: 9
280
- };
281
- _utils.equalPoints.mockReturnValue(false);
282
- var result = circleTool.addPoint(edge, mark);
283
- expect(result.root).toEqual(root);
284
- expect(result.edge).toEqual(edge);
285
- });
286
- it('works with large radius', function () {
287
- var root = {
288
- x: 0,
289
- y: 0
290
- };
291
- var edge = {
292
- x: 100,
293
- y: 100
294
- };
295
- var mark = {
296
- type: 'circle',
297
- root: root,
298
- building: true
299
- };
300
- _utils.equalPoints.mockReturnValue(false);
301
- var result = circleTool.addPoint(edge, mark);
302
- expect(result.edge).toEqual(edge);
303
- expect(result.building).toBe(false);
304
- });
305
- it('works with small radius', function () {
306
- var root = {
307
- x: 5,
308
- y: 5
309
- };
310
- var edge = {
311
- x: 5.1,
312
- y: 5.1
313
- };
314
- var mark = {
315
- type: 'circle',
316
- root: root,
317
- building: true
318
- };
319
- _utils.equalPoints.mockReturnValue(false);
320
- var result = circleTool.addPoint(edge, mark);
321
- expect(result.edge).toEqual(edge);
322
- expect(result.building).toBe(false);
323
- });
324
- });
325
- describe('same point handling', function () {
326
- it('returns same mark when clicking same point as root', function () {
327
- var point = {
328
- x: 5,
329
- y: 10
330
- };
331
- var mark = {
332
- type: 'circle',
333
- root: point,
334
- building: true
335
- };
336
- _utils.equalPoints.mockReturnValue(true);
337
- var result = circleTool.addPoint(point, mark);
338
- expect(result).toBe(mark);
339
- });
340
- it('calls equalPoints with correct arguments', function () {
341
- var point = {
342
- x: 5,
343
- y: 10
344
- };
345
- var mark = {
346
- type: 'circle',
347
- root: {
348
- x: 5,
349
- y: 10
350
- },
351
- building: true
352
- };
353
- _utils.equalPoints.mockReturnValue(true);
354
- circleTool.addPoint(point, mark);
355
- expect(_utils.equalPoints).toHaveBeenCalledWith(mark.root, point);
356
- });
357
- it('prevents zero-radius circle', function () {
358
- var point = {
359
- x: 5,
360
- y: 10
361
- };
362
- var mark = {
363
- type: 'circle',
364
- root: {
365
- x: 5,
366
- y: 10
367
- },
368
- building: true
369
- };
370
- _utils.equalPoints.mockReturnValue(true);
371
- var result = circleTool.addPoint(point, mark);
372
-
373
- // Should return unchanged mark, not complete the circle
374
- expect(result).toBe(mark);
375
- expect(result.building).toBe(true);
376
- });
377
- });
378
- describe('edge cases', function () {
379
- it('handles undefined mark on first click', function () {
380
- var point = {
381
- x: 5,
382
- y: 10
383
- };
384
- _utils.equalPoints.mockReturnValue(false);
385
- var result = circleTool.addPoint(point, undefined);
386
- expect(result.type).toBe('circle');
387
- expect(result.root).toEqual(point);
388
- expect(result.building).toBe(true);
389
- });
390
- it('handles mark with additional properties', function () {
391
- var mark = {
392
- type: 'circle',
393
- root: {
394
- x: 1,
395
- y: 1
396
- },
397
- building: true,
398
- label: 'Circle 1',
399
- correctness: {
400
- value: 'correct'
401
- }
402
- };
403
- var point = {
404
- x: 5,
405
- y: 5
406
- };
407
- _utils.equalPoints.mockReturnValue(false);
408
- var result = circleTool.addPoint(point, mark);
409
- expect(result.label).toBe('Circle 1');
410
- expect(result.correctness).toEqual({
411
- value: 'correct'
412
- });
413
- expect(result.edge).toEqual(point);
414
- expect(result.building).toBe(false);
415
- });
416
- it('handles mark with existing edge', function () {
417
- var mark = {
418
- type: 'circle',
419
- root: {
420
- x: 0,
421
- y: 0
422
- },
423
- edge: {
424
- x: 3,
425
- y: 3
426
- },
427
- building: true
428
- };
429
- var newEdge = {
430
- x: 5,
431
- y: 5
432
- };
433
- _utils.equalPoints.mockReturnValue(false);
434
- var result = circleTool.addPoint(newEdge, mark);
435
- expect(result.edge).toEqual(newEdge);
436
- expect(result.building).toBe(false);
437
- });
438
- it('works with point at origin', function () {
439
- var point = {
440
- x: 0,
441
- y: 0
442
- };
443
- _utils.equalPoints.mockReturnValue(false);
444
- var result = circleTool.addPoint(point, null);
445
- expect(result.root).toEqual(point);
446
- expect(result.building).toBe(true);
447
- });
448
- it('works with very large coordinates', function () {
449
- var point = {
450
- x: 1000,
451
- y: 1000
452
- };
453
- _utils.equalPoints.mockReturnValue(false);
454
- var result = circleTool.addPoint(point, null);
455
- expect(result.root).toEqual(point);
456
- expect(result.building).toBe(true);
457
- });
458
- it('works with negative coordinates', function () {
459
- var point = {
460
- x: -10,
461
- y: -20
462
- };
463
- _utils.equalPoints.mockReturnValue(false);
464
- var result = circleTool.addPoint(point, null);
465
- expect(result.root).toEqual(point);
466
- expect(result.building).toBe(true);
467
- });
468
- });
469
- describe('immutability', function () {
470
- it('does not mutate original mark when adding edge', function () {
471
- var mark = {
472
- type: 'circle',
473
- root: {
474
- x: 1,
475
- y: 1
476
- },
477
- building: true
478
- };
479
- var originalMark = _objectSpread({}, mark);
480
- var point = {
481
- x: 5,
482
- y: 5
483
- };
484
- _utils.equalPoints.mockReturnValue(false);
485
- var result = circleTool.addPoint(point, mark);
486
- expect(mark).toEqual(originalMark);
487
- expect(result).not.toBe(mark);
488
- });
489
- it('does not mutate original mark when returning same', function () {
490
- var mark = {
491
- type: 'circle',
492
- root: {
493
- x: 5,
494
- y: 10
495
- },
496
- building: true
497
- };
498
- var point = {
499
- x: 5,
500
- y: 10
501
- };
502
- _utils.equalPoints.mockReturnValue(true);
503
- var result = circleTool.addPoint(point, mark);
504
- expect(result).toBe(mark);
505
- });
506
- });
507
- });
508
- describe('integration scenarios', function () {
509
- it('handles full circle creation flow', function () {
510
- _utils.equalPoints.mockReturnValue(false);
511
-
512
- // First click - create root
513
- var firstPoint = {
514
- x: 5,
515
- y: 5
516
- };
517
- var mark1 = circleTool.addPoint(firstPoint, null);
518
- expect(mark1.root).toEqual(firstPoint);
519
- expect(mark1.building).toBe(true);
520
-
521
- // Hover - show preview
522
- var hoverPoint = {
523
- x: 10,
524
- y: 10
525
- };
526
- var mark2 = circleTool.hover(hoverPoint, mark1);
527
- expect(mark2.edge).toEqual(hoverPoint);
528
-
529
- // Second click - complete circle
530
- var secondPoint = {
531
- x: 10,
532
- y: 5
533
- };
534
- var mark3 = circleTool.addPoint(secondPoint, mark1);
535
- expect(mark3.root).toEqual(firstPoint);
536
- expect(mark3.edge).toEqual(secondPoint);
537
- expect(mark3.building).toBe(false);
538
- });
539
- it('handles attempted zero-radius circle', function () {
540
- var point = {
541
- x: 5,
542
- y: 5
543
- };
544
-
545
- // First click
546
- _utils.equalPoints.mockReturnValue(false);
547
- var mark1 = circleTool.addPoint(point, null);
548
-
549
- // Second click at same point
550
- _utils.equalPoints.mockReturnValue(true);
551
- var mark2 = circleTool.addPoint(point, mark1);
552
-
553
- // Should return unchanged mark
554
- expect(mark2).toBe(mark1);
555
- expect(mark2.building).toBe(true);
556
- });
557
- it('handles circle with labels', function () {
558
- _utils.equalPoints.mockReturnValue(false);
559
- var firstPoint = {
560
- x: 0,
561
- y: 0,
562
- label: 'Center'
563
- };
564
- var mark1 = circleTool.addPoint(firstPoint, null);
565
- var secondPoint = {
566
- x: 5,
567
- y: 0,
568
- label: 'Edge'
569
- };
570
- var mark2 = circleTool.addPoint(secondPoint, mark1);
571
- expect(mark2.root.label).toBe('Center');
572
- expect(mark2.building).toBe(false);
573
- });
574
- });
575
- });
576
- //# sourceMappingURL=index.test.js.map