@pie-lib/config-ui 13.0.13 → 13.1.0-beta

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 (47) hide show
  1. package/CHANGELOG.md +0 -42
  2. package/lib/__tests__/alert-dialog.test.js +262 -0
  3. package/lib/__tests__/alert-dialog.test.js.map +1 -0
  4. package/lib/__tests__/checkbox.test.js +227 -0
  5. package/lib/__tests__/checkbox.test.js.map +1 -0
  6. package/lib/__tests__/choice-utils.test.js +14 -0
  7. package/lib/__tests__/choice-utils.test.js.map +1 -0
  8. package/lib/__tests__/form-section.test.js +252 -0
  9. package/lib/__tests__/form-section.test.js.map +1 -0
  10. package/lib/__tests__/help.test.js +270 -0
  11. package/lib/__tests__/help.test.js.map +1 -0
  12. package/lib/__tests__/input.test.js +268 -0
  13. package/lib/__tests__/input.test.js.map +1 -0
  14. package/lib/__tests__/langs.test.js +541 -0
  15. package/lib/__tests__/langs.test.js.map +1 -0
  16. package/lib/__tests__/number-text-field-custom.test.js +362 -0
  17. package/lib/__tests__/number-text-field-custom.test.js.map +1 -0
  18. package/lib/__tests__/number-text-field.test.js +421 -0
  19. package/lib/__tests__/number-text-field.test.js.map +1 -0
  20. package/lib/__tests__/radio-with-label.test.js +233 -0
  21. package/lib/__tests__/radio-with-label.test.js.map +1 -0
  22. package/lib/__tests__/settings-panel.test.js +184 -0
  23. package/lib/__tests__/settings-panel.test.js.map +1 -0
  24. package/lib/__tests__/settings.test.js +653 -0
  25. package/lib/__tests__/settings.test.js.map +1 -0
  26. package/lib/__tests__/tabs.test.js +211 -0
  27. package/lib/__tests__/tabs.test.js.map +1 -0
  28. package/lib/__tests__/two-choice.test.js +124 -0
  29. package/lib/__tests__/two-choice.test.js.map +1 -0
  30. package/lib/__tests__/with-stateful-model.test.js +221 -0
  31. package/lib/__tests__/with-stateful-model.test.js.map +1 -0
  32. package/lib/choice-configuration/__tests__/feedback-menu.test.js +287 -0
  33. package/lib/choice-configuration/__tests__/feedback-menu.test.js.map +1 -0
  34. package/lib/choice-configuration/__tests__/index.test.js +253 -0
  35. package/lib/choice-configuration/__tests__/index.test.js.map +1 -0
  36. package/lib/feedback-config/__tests__/feedback-config.test.js +201 -0
  37. package/lib/feedback-config/__tests__/feedback-config.test.js.map +1 -0
  38. package/lib/feedback-config/__tests__/feedback-selector.test.js +177 -0
  39. package/lib/feedback-config/__tests__/feedback-selector.test.js.map +1 -0
  40. package/lib/layout/__tests__/config.layout.test.js +70 -0
  41. package/lib/layout/__tests__/config.layout.test.js.map +1 -0
  42. package/lib/layout/__tests__/layout-content.test.js +6 -0
  43. package/lib/layout/__tests__/layout-content.test.js.map +1 -0
  44. package/lib/tags-input/__tests__/index.test.js +183 -0
  45. package/lib/tags-input/__tests__/index.test.js.map +1 -0
  46. package/package.json +5 -5
  47. package/LICENSE.md +0 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.test.js","names":["_react","_interopRequireDefault","require","_react2","_userEvent","_toggle","_displaySize","_settingsRadioLabel","_panel","describe","it","toggle","jest","fn","render","createElement","label","checked","expect","screen","getByText","toBeInTheDocument","defaultProps","size","width","height","onChange","beforeEach","clearAllMocks","getByLabelText","widthInput","heightInput","toHaveValue","_asyncToGenerator2","_regenerator","mark","_callee","user","wrap","_context","prev","next","userEvent","setup","_extends2","clear","type","fireEvent","blur","toHaveBeenCalledWith","objectContaining","stop","_callee2","_context2","_callee3","_context3","_callee4","_context4","_callee5","_context5","_render","rerender","_callee6","_context6","_callee7","_context7","_callee8","_context8","_callee9","_context9","_callee0","_context0","toHaveBeenCalled","_callee1","_context1","_render2","container","inputs","querySelectorAll","length","toBe","value","getByRole","radio","toBeChecked","not","_callee10","_context10","click","labelText","model","toggleSetting","numberValue","configuration","configValue","groups","onChangeModel","onChangeConfiguration","Panel","_render3","undefined","firstChild","children","_render4","_callee11","_render5","switchElement","_context11","querySelector","_callee12","_render6","_context12","isConfigProperty","modal","getByTestId","setting1","setting2","_render7","test","_render8","queryByText","_render9"],"sources":["../../src/__tests__/settings.test.jsx"],"sourcesContent":["import React from 'react';\nimport { fireEvent, render, screen } from '@testing-library/react';\nimport userEvent from '@testing-library/user-event';\nimport Toggle from '../settings/toggle';\nimport DisplaySize from '../settings/display-size';\nimport SettingsRadioLabel from '../settings/settings-radio-label';\nimport { Panel } from '../settings/panel';\n\ndescribe('Settings Components', () => {\n describe('Toggle', () => {\n it('renders toggle with label', () => {\n const toggle = jest.fn();\n render(<Toggle label=\"Enable Feature\" checked={false} toggle={toggle} />);\n\n expect(screen.getByText('Enable Feature')).toBeInTheDocument();\n });\n });\n\n describe('DisplaySize', () => {\n const defaultProps = {\n size: { width: 500, height: 400 },\n label: 'Display Size',\n onChange: jest.fn(),\n };\n\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n it('renders label and input fields', () => {\n render(<DisplaySize {...defaultProps} />);\n\n expect(screen.getByText('Display Size')).toBeInTheDocument();\n expect(screen.getByLabelText('Width')).toBeInTheDocument();\n expect(screen.getByLabelText('Height')).toBeInTheDocument();\n });\n\n it('displays width and height values', () => {\n render(<DisplaySize {...defaultProps} />);\n\n const widthInput = screen.getByLabelText('Width');\n const heightInput = screen.getByLabelText('Height');\n\n expect(widthInput).toHaveValue(500);\n expect(heightInput).toHaveValue(400);\n });\n\n it('calls onChange when width changes', async () => {\n const user = userEvent.setup();\n const onChange = jest.fn();\n render(<DisplaySize {...defaultProps} onChange={onChange} />);\n\n const widthInput = screen.getByLabelText('Width');\n await user.clear(widthInput);\n await user.type(widthInput, '600');\n fireEvent.blur(widthInput);\n\n expect(onChange).toHaveBeenCalledWith(expect.objectContaining({ width: 600 }));\n });\n\n it('calls onChange when height changes', async () => {\n const user = userEvent.setup();\n const onChange = jest.fn();\n render(<DisplaySize {...defaultProps} onChange={onChange} />);\n\n const heightInput = screen.getByLabelText('Height');\n await user.clear(heightInput);\n await user.type(heightInput, '500');\n fireEvent.blur(heightInput);\n\n expect(onChange).toHaveBeenCalledWith(expect.objectContaining({ height: 500 }));\n });\n\n it('maintains other dimension when one changes', async () => {\n const user = userEvent.setup();\n const onChange = jest.fn();\n render(<DisplaySize {...defaultProps} onChange={onChange} />);\n\n const widthInput = screen.getByLabelText('Width');\n await user.clear(widthInput);\n await user.type(widthInput, '700');\n fireEvent.blur(widthInput);\n\n expect(onChange).toHaveBeenCalledWith({\n width: 700,\n height: 400,\n });\n });\n\n it('enforces min value constraint', async () => {\n const user = userEvent.setup();\n const onChange = jest.fn();\n render(<DisplaySize {...defaultProps} onChange={onChange} />);\n\n const widthInput = screen.getByLabelText('Width');\n await user.clear(widthInput);\n await user.type(widthInput, '100');\n fireEvent.blur(widthInput);\n\n // Should clamp to minimum 150\n expect(widthInput).toHaveValue(150);\n });\n\n it('enforces max value constraint', async () => {\n const user = userEvent.setup();\n const onChange = jest.fn();\n render(<DisplaySize {...defaultProps} onChange={onChange} />);\n\n const widthInput = screen.getByLabelText('Width');\n await user.clear(widthInput);\n await user.type(widthInput, '2000');\n fireEvent.blur(widthInput);\n\n // Should clamp to maximum 1000\n expect(widthInput).toHaveValue(1000);\n });\n\n it('updates when size prop changes', () => {\n const { rerender } = render(<DisplaySize {...defaultProps} />);\n\n let widthInput = screen.getByLabelText('Width');\n expect(widthInput).toHaveValue(500);\n\n rerender(<DisplaySize {...defaultProps} size={{ width: 800, height: 600 }} />);\n\n widthInput = screen.getByLabelText('Width');\n expect(widthInput).toHaveValue(800);\n });\n\n it('handles boundary values at minimum', async () => {\n const user = userEvent.setup();\n const onChange = jest.fn();\n render(<DisplaySize {...defaultProps} onChange={onChange} />);\n\n const widthInput = screen.getByLabelText('Width');\n const heightInput = screen.getByLabelText('Height');\n\n await user.clear(widthInput);\n await user.type(widthInput, '150');\n fireEvent.blur(widthInput);\n\n await user.clear(heightInput);\n await user.type(heightInput, '150');\n fireEvent.blur(heightInput);\n\n expect(widthInput).toHaveValue(150);\n expect(heightInput).toHaveValue(150);\n });\n\n it('handles boundary values at maximum', async () => {\n const user = userEvent.setup();\n const onChange = jest.fn();\n render(<DisplaySize {...defaultProps} onChange={onChange} />);\n\n const widthInput = screen.getByLabelText('Width');\n const heightInput = screen.getByLabelText('Height');\n\n await user.clear(widthInput);\n await user.type(widthInput, '1000');\n fireEvent.blur(widthInput);\n\n await user.clear(heightInput);\n await user.type(heightInput, '1000');\n fireEvent.blur(heightInput);\n\n expect(widthInput).toHaveValue(1000);\n expect(heightInput).toHaveValue(1000);\n });\n\n it('handles decimal input values', async () => {\n const user = userEvent.setup();\n const onChange = jest.fn();\n render(<DisplaySize {...defaultProps} onChange={onChange} />);\n\n const widthInput = screen.getByLabelText('Width');\n await user.clear(widthInput);\n await user.type(widthInput, '500.5');\n fireEvent.blur(widthInput);\n\n expect(widthInput).toBeInTheDocument();\n });\n\n it('handles empty input and resets to min', async () => {\n const user = userEvent.setup();\n const onChange = jest.fn();\n render(<DisplaySize {...defaultProps} onChange={onChange} />);\n\n const widthInput = screen.getByLabelText('Width');\n await user.clear(widthInput);\n fireEvent.blur(widthInput);\n\n // Should reset to minimum value\n expect(widthInput).toHaveValue(150);\n });\n\n it('handles rapid width and height changes', async () => {\n const user = userEvent.setup();\n const onChange = jest.fn();\n render(<DisplaySize {...defaultProps} onChange={onChange} />);\n\n const widthInput = screen.getByLabelText('Width');\n\n await user.clear(widthInput);\n await user.type(widthInput, '6');\n await user.type(widthInput, '0');\n await user.type(widthInput, '0');\n fireEvent.blur(widthInput);\n\n expect(onChange).toHaveBeenCalled();\n });\n\n it('clamps height at both boundaries', async () => {\n const user = userEvent.setup();\n const onChange = jest.fn();\n render(<DisplaySize {...defaultProps} onChange={onChange} />);\n\n const heightInput = screen.getByLabelText('Height');\n\n // Test below min\n await user.clear(heightInput);\n await user.type(heightInput, '50');\n fireEvent.blur(heightInput);\n expect(heightInput).toHaveValue(150);\n\n // Test above max\n await user.clear(heightInput);\n await user.type(heightInput, '2500');\n fireEvent.blur(heightInput);\n expect(heightInput).toHaveValue(1000);\n });\n\n it('displays custom label text', () => {\n render(<DisplaySize size={{ width: 500, height: 400 }} label=\"Custom Size Settings\" onChange={jest.fn()} />);\n\n expect(screen.getByText('Custom Size Settings')).toBeInTheDocument();\n });\n\n it('renders with variant outlined', () => {\n const { container } = render(<DisplaySize {...defaultProps} />);\n\n const inputs = container.querySelectorAll('input');\n expect(inputs.length).toBe(2);\n });\n });\n\n describe('SettingsRadioLabel', () => {\n it('renders radio label', () => {\n const onChange = jest.fn();\n render(<SettingsRadioLabel label=\"Option 1\" value=\"option1\" checked={false} onChange={onChange} />);\n\n expect(screen.getByText('Option 1')).toBeInTheDocument();\n expect(screen.getByRole('radio')).toBeInTheDocument();\n });\n\n it('renders checked state', () => {\n const onChange = jest.fn();\n render(<SettingsRadioLabel label=\"Option 1\" value=\"option1\" checked={true} onChange={onChange} />);\n\n const radio = screen.getByRole('radio');\n expect(radio).toBeChecked();\n });\n\n it('renders unchecked state', () => {\n const onChange = jest.fn();\n render(<SettingsRadioLabel label=\"Option 1\" value=\"option1\" checked={false} onChange={onChange} />);\n\n const radio = screen.getByRole('radio');\n expect(radio).not.toBeChecked();\n });\n\n it('calls onChange when radio is clicked', async () => {\n const user = userEvent.setup();\n const onChange = jest.fn();\n render(<SettingsRadioLabel label=\"Option 1\" value=\"option1\" checked={false} onChange={onChange} />);\n\n const radio = screen.getByRole('radio');\n await user.click(radio);\n\n expect(onChange).toHaveBeenCalled();\n });\n\n it('displays label text correctly', () => {\n const onChange = jest.fn();\n const labelText = 'Custom Option Label';\n render(<SettingsRadioLabel label={labelText} value=\"custom\" checked={false} onChange={onChange} />);\n\n expect(screen.getByText(labelText)).toBeInTheDocument();\n });\n });\n\n describe('Panel', () => {\n const defaultProps = {\n model: { toggleSetting: true, numberValue: 5 },\n configuration: { configValue: 'test' },\n groups: {\n 'General Settings': {\n toggleSetting: {\n type: 'toggle',\n label: 'Enable Feature',\n },\n },\n },\n onChangeModel: jest.fn(),\n onChangeConfiguration: jest.fn(),\n };\n\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n it('renders panel with group label', () => {\n render(<Panel {...defaultProps} />);\n expect(screen.getByText('General Settings')).toBeInTheDocument();\n });\n\n it('renders empty when groups is undefined', () => {\n const { container } = render(<Panel {...defaultProps} groups={undefined} />);\n expect(container.firstChild.children.length).toBe(0);\n });\n\n it('renders empty when groups is empty', () => {\n const { container } = render(<Panel {...defaultProps} groups={{}} />);\n expect(container.firstChild.children.length).toBe(0);\n });\n\n it('calls onChangeModel when model changes', async () => {\n const user = userEvent.setup();\n const onChangeModel = jest.fn();\n const { container } = render(<Panel {...defaultProps} onChangeModel={onChangeModel} />);\n\n const switchElement = container.querySelector('input[type=\"checkbox\"]');\n await user.click(switchElement);\n\n expect(onChangeModel).toHaveBeenCalled();\n });\n\n it('calls onChangeConfiguration when configuration changes', async () => {\n const user = userEvent.setup();\n const onChangeConfiguration = jest.fn();\n const { container } = render(\n <Panel\n {...defaultProps}\n groups={{\n 'Config Group': {\n configValue: {\n type: 'toggle',\n label: 'Config Toggle',\n isConfigProperty: true,\n },\n },\n }}\n onChangeConfiguration={onChangeConfiguration}\n />,\n );\n\n const switchElement = container.querySelector('input[type=\"checkbox\"]');\n await user.click(switchElement);\n\n expect(onChangeConfiguration).toHaveBeenCalled();\n });\n\n it('renders with modal when provided', () => {\n const modal = <div data-testid=\"test-modal\">Modal Content</div>;\n render(<Panel {...defaultProps} modal={modal} />);\n\n expect(screen.getByTestId('test-modal')).toBeInTheDocument();\n expect(screen.getByText('Modal Content')).toBeInTheDocument();\n });\n\n it('renders multiple groups', () => {\n render(\n <Panel\n {...defaultProps}\n groups={{\n 'Group One': {\n setting1: {\n type: 'toggle',\n label: 'Setting One',\n },\n },\n 'Group Two': {\n setting2: {\n type: 'toggle',\n label: 'Setting Two',\n },\n },\n }}\n model={{ setting1: true, setting2: false }}\n />,\n );\n\n expect(screen.getByText('Group One')).toBeInTheDocument();\n expect(screen.getByText('Group Two')).toBeInTheDocument();\n });\n\n it('uses default callbacks when not provided', () => {\n const { container } = render(\n <Panel\n model={{ test: true }}\n groups={{\n 'Test Group': {\n test: { type: 'toggle', label: 'Test' },\n },\n }}\n />,\n );\n\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('filters out empty groups', () => {\n const { container } = render(\n <Panel\n {...defaultProps}\n groups={{\n 'Empty Group': {},\n 'General Settings': {\n toggleSetting: {\n type: 'toggle',\n label: 'Enable Feature',\n },\n },\n }}\n model={{ toggleSetting: true }}\n />,\n );\n\n expect(screen.getByText('General Settings')).toBeInTheDocument();\n expect(screen.queryByText('Empty Group')).not.toBeInTheDocument();\n });\n\n it('renders with null model', () => {\n const { container } = render(\n <Panel\n model={null}\n configuration={{}}\n groups={{\n 'General Settings': {\n toggleSetting: {\n type: 'toggle',\n label: 'Enable Feature',\n },\n },\n }}\n onChangeModel={jest.fn()}\n />,\n );\n\n expect(screen.getByText('General Settings')).toBeInTheDocument();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
6
+ var _react = _interopRequireDefault(require("react"));
7
+ var _react2 = require("@testing-library/react");
8
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
9
+ var _tabs = require("../tabs");
10
+ describe('Tabs Component', function () {
11
+ it('renders tabs with correct titles', function () {
12
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
13
+ title: "Tab 1"
14
+ }, "Content 1"), /*#__PURE__*/_react["default"].createElement("div", {
15
+ title: "Tab 2"
16
+ }, "Content 2"), /*#__PURE__*/_react["default"].createElement("div", {
17
+ title: "Tab 3"
18
+ }, "Content 3")));
19
+ expect(_react2.screen.getByText('Tab 1')).toBeInTheDocument();
20
+ expect(_react2.screen.getByText('Tab 2')).toBeInTheDocument();
21
+ expect(_react2.screen.getByText('Tab 3')).toBeInTheDocument();
22
+ });
23
+ it('renders first tab content by default', function () {
24
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
25
+ title: "Tab 1"
26
+ }, "Content 1"), /*#__PURE__*/_react["default"].createElement("div", {
27
+ title: "Tab 2"
28
+ }, "Content 2"), /*#__PURE__*/_react["default"].createElement("div", {
29
+ title: "Tab 3"
30
+ }, "Content 3")));
31
+ expect(_react2.screen.getByText('Content 1')).toBeInTheDocument();
32
+ expect(_react2.screen.queryByText('Content 2')).not.toBeInTheDocument();
33
+ expect(_react2.screen.queryByText('Content 3')).not.toBeInTheDocument();
34
+ });
35
+ it('switches to selected tab when clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
36
+ var user, tab2;
37
+ return _regenerator["default"].wrap(function (_context) {
38
+ while (1) switch (_context.prev = _context.next) {
39
+ case 0:
40
+ user = _userEvent["default"].setup();
41
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
42
+ title: "Tab 1"
43
+ }, "Content 1"), /*#__PURE__*/_react["default"].createElement("div", {
44
+ title: "Tab 2"
45
+ }, "Content 2"), /*#__PURE__*/_react["default"].createElement("div", {
46
+ title: "Tab 3"
47
+ }, "Content 3")));
48
+ tab2 = _react2.screen.getByRole('tab', {
49
+ name: 'Tab 2'
50
+ });
51
+ _context.next = 1;
52
+ return user.click(tab2);
53
+ case 1:
54
+ expect(_react2.screen.queryByText('Content 1')).not.toBeInTheDocument();
55
+ expect(_react2.screen.getByText('Content 2')).toBeInTheDocument();
56
+ expect(_react2.screen.queryByText('Content 3')).not.toBeInTheDocument();
57
+ case 2:
58
+ case "end":
59
+ return _context.stop();
60
+ }
61
+ }, _callee);
62
+ })));
63
+ it('displays correct content when multiple tabs are clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
64
+ var user;
65
+ return _regenerator["default"].wrap(function (_context2) {
66
+ while (1) switch (_context2.prev = _context2.next) {
67
+ case 0:
68
+ user = _userEvent["default"].setup();
69
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
70
+ title: "Tab 1"
71
+ }, "Content 1"), /*#__PURE__*/_react["default"].createElement("div", {
72
+ title: "Tab 2"
73
+ }, "Content 2"), /*#__PURE__*/_react["default"].createElement("div", {
74
+ title: "Tab 3"
75
+ }, "Content 3")));
76
+ _context2.next = 1;
77
+ return user.click(_react2.screen.getByRole('tab', {
78
+ name: 'Tab 2'
79
+ }));
80
+ case 1:
81
+ expect(_react2.screen.getByText('Content 2')).toBeInTheDocument();
82
+ _context2.next = 2;
83
+ return user.click(_react2.screen.getByRole('tab', {
84
+ name: 'Tab 3'
85
+ }));
86
+ case 2:
87
+ expect(_react2.screen.getByText('Content 3')).toBeInTheDocument();
88
+ _context2.next = 3;
89
+ return user.click(_react2.screen.getByRole('tab', {
90
+ name: 'Tab 1'
91
+ }));
92
+ case 3:
93
+ expect(_react2.screen.getByText('Content 1')).toBeInTheDocument();
94
+ case 4:
95
+ case "end":
96
+ return _context2.stop();
97
+ }
98
+ }, _callee2);
99
+ })));
100
+ it('applies custom className to root element', function () {
101
+ var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, {
102
+ className: "custom-tabs-class"
103
+ }, /*#__PURE__*/_react["default"].createElement("div", {
104
+ title: "Tab 1"
105
+ }, "Content 1"))),
106
+ container = _render.container;
107
+ var rootDiv = container.querySelector('.custom-tabs-class');
108
+ expect(rootDiv).toBeInTheDocument();
109
+ });
110
+ it('handles tabs without title prop gracefully', function () {
111
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
112
+ title: "Tab 1"
113
+ }, "Content 1"), /*#__PURE__*/_react["default"].createElement("div", null, "No Title Child"), /*#__PURE__*/_react["default"].createElement("div", {
114
+ title: "Tab 2"
115
+ }, "Content 2")));
116
+ var tabs = _react2.screen.getAllByRole('tab');
117
+ // Should only have 2 tabs since one doesn't have a title
118
+ expect(tabs).toHaveLength(2);
119
+ expect(_react2.screen.getByText('Tab 1')).toBeInTheDocument();
120
+ expect(_react2.screen.getByText('Tab 2')).toBeInTheDocument();
121
+ });
122
+ it('handles null children gracefully', function () {
123
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
124
+ title: "Tab 1"
125
+ }, "Content 1"), null, /*#__PURE__*/_react["default"].createElement("div", {
126
+ title: "Tab 2"
127
+ }, "Content 2")));
128
+ var tabs = _react2.screen.getAllByRole('tab');
129
+ expect(tabs).toHaveLength(2);
130
+ });
131
+ it('handles complex content in tabs', function () {
132
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
133
+ title: "Tab 1"
134
+ }, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("h2", null, "Tab 1 Header"), /*#__PURE__*/_react["default"].createElement("p", null, "Tab 1 description"), /*#__PURE__*/_react["default"].createElement("button", null, "Button in Tab 1"))), /*#__PURE__*/_react["default"].createElement("div", {
135
+ title: "Tab 2"
136
+ }, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("h2", null, "Tab 2 Header"), /*#__PURE__*/_react["default"].createElement("input", {
137
+ type: "text",
138
+ placeholder: "Input in Tab 2"
139
+ })))));
140
+ expect(_react2.screen.getByText('Tab 1 Header')).toBeInTheDocument();
141
+ expect(_react2.screen.getByRole('button', {
142
+ name: 'Button in Tab 1'
143
+ })).toBeInTheDocument();
144
+ var tab2 = _react2.screen.getByRole('tab', {
145
+ name: 'Tab 2'
146
+ });
147
+ expect(tab2).toBeInTheDocument();
148
+ });
149
+ it('renders all tabs in MuiTabs component', function () {
150
+ var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
151
+ title: "Tab A"
152
+ }, "Content A"), /*#__PURE__*/_react["default"].createElement("div", {
153
+ title: "Tab B"
154
+ }, "Content B"), /*#__PURE__*/_react["default"].createElement("div", {
155
+ title: "Tab C"
156
+ }, "Content C"))),
157
+ container = _render2.container;
158
+ var tabsComponent = container.querySelector('[role="tablist"]');
159
+ expect(tabsComponent).toBeInTheDocument();
160
+ });
161
+ it('applies correct value prop to MuiTabs', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
162
+ var user, tab1, tab2;
163
+ return _regenerator["default"].wrap(function (_context3) {
164
+ while (1) switch (_context3.prev = _context3.next) {
165
+ case 0:
166
+ user = _userEvent["default"].setup();
167
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
168
+ title: "Tab 1"
169
+ }, "Content 1"), /*#__PURE__*/_react["default"].createElement("div", {
170
+ title: "Tab 2"
171
+ }, "Content 2")));
172
+
173
+ // Initially first tab should be selected (value 0)
174
+ tab1 = _react2.screen.getByRole('tab', {
175
+ name: 'Tab 1'
176
+ });
177
+ expect(tab1).toHaveAttribute('aria-selected', 'true');
178
+
179
+ // Click second tab
180
+ _context3.next = 1;
181
+ return user.click(_react2.screen.getByRole('tab', {
182
+ name: 'Tab 2'
183
+ }));
184
+ case 1:
185
+ tab2 = _react2.screen.getByRole('tab', {
186
+ name: 'Tab 2'
187
+ });
188
+ expect(tab2).toHaveAttribute('aria-selected', 'true');
189
+ expect(tab1).toHaveAttribute('aria-selected', 'false');
190
+ case 2:
191
+ case "end":
192
+ return _context3.stop();
193
+ }
194
+ }, _callee3);
195
+ })));
196
+ it('renders with empty children array', function () {
197
+ var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, [])),
198
+ container = _render3.container;
199
+ expect(container).toBeInTheDocument();
200
+ });
201
+ it('handles long tab titles', function () {
202
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
203
+ title: "This is a very long tab title that should still render correctly"
204
+ }, "Content 1"), /*#__PURE__*/_react["default"].createElement("div", {
205
+ title: "Short"
206
+ }, "Content 2")));
207
+ expect(_react2.screen.getByText('This is a very long tab title that should still render correctly')).toBeInTheDocument();
208
+ expect(_react2.screen.getByText('Short')).toBeInTheDocument();
209
+ });
210
+ });
211
+ //# sourceMappingURL=tabs.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.test.js","names":["_react","_interopRequireDefault","require","_react2","_userEvent","_tabs","describe","it","render","createElement","Tabs","title","expect","screen","getByText","toBeInTheDocument","queryByText","not","_asyncToGenerator2","_regenerator","mark","_callee","user","tab2","wrap","_context","prev","next","userEvent","setup","getByRole","name","click","stop","_callee2","_context2","_render","className","container","rootDiv","querySelector","tabs","getAllByRole","toHaveLength","type","placeholder","_render2","tabsComponent","_callee3","tab1","_context3","toHaveAttribute","_render3"],"sources":["../../src/__tests__/tabs.test.jsx"],"sourcesContent":["import React from 'react';\nimport { render, screen } from '@testing-library/react';\nimport userEvent from '@testing-library/user-event';\nimport { Tabs } from '../tabs';\n\ndescribe('Tabs Component', () => {\n it('renders tabs with correct titles', () => {\n render(\n <Tabs>\n <div title=\"Tab 1\">Content 1</div>\n <div title=\"Tab 2\">Content 2</div>\n <div title=\"Tab 3\">Content 3</div>\n </Tabs>,\n );\n\n expect(screen.getByText('Tab 1')).toBeInTheDocument();\n expect(screen.getByText('Tab 2')).toBeInTheDocument();\n expect(screen.getByText('Tab 3')).toBeInTheDocument();\n });\n\n it('renders first tab content by default', () => {\n render(\n <Tabs>\n <div title=\"Tab 1\">Content 1</div>\n <div title=\"Tab 2\">Content 2</div>\n <div title=\"Tab 3\">Content 3</div>\n </Tabs>,\n );\n\n expect(screen.getByText('Content 1')).toBeInTheDocument();\n expect(screen.queryByText('Content 2')).not.toBeInTheDocument();\n expect(screen.queryByText('Content 3')).not.toBeInTheDocument();\n });\n\n it('switches to selected tab when clicked', async () => {\n const user = userEvent.setup();\n render(\n <Tabs>\n <div title=\"Tab 1\">Content 1</div>\n <div title=\"Tab 2\">Content 2</div>\n <div title=\"Tab 3\">Content 3</div>\n </Tabs>,\n );\n\n const tab2 = screen.getByRole('tab', { name: 'Tab 2' });\n await user.click(tab2);\n\n expect(screen.queryByText('Content 1')).not.toBeInTheDocument();\n expect(screen.getByText('Content 2')).toBeInTheDocument();\n expect(screen.queryByText('Content 3')).not.toBeInTheDocument();\n });\n\n it('displays correct content when multiple tabs are clicked', async () => {\n const user = userEvent.setup();\n render(\n <Tabs>\n <div title=\"Tab 1\">Content 1</div>\n <div title=\"Tab 2\">Content 2</div>\n <div title=\"Tab 3\">Content 3</div>\n </Tabs>,\n );\n\n await user.click(screen.getByRole('tab', { name: 'Tab 2' }));\n expect(screen.getByText('Content 2')).toBeInTheDocument();\n\n await user.click(screen.getByRole('tab', { name: 'Tab 3' }));\n expect(screen.getByText('Content 3')).toBeInTheDocument();\n\n await user.click(screen.getByRole('tab', { name: 'Tab 1' }));\n expect(screen.getByText('Content 1')).toBeInTheDocument();\n });\n\n it('applies custom className to root element', () => {\n const { container } = render(\n <Tabs className=\"custom-tabs-class\">\n <div title=\"Tab 1\">Content 1</div>\n </Tabs>,\n );\n\n const rootDiv = container.querySelector('.custom-tabs-class');\n expect(rootDiv).toBeInTheDocument();\n });\n\n it('handles tabs without title prop gracefully', () => {\n render(\n <Tabs>\n <div title=\"Tab 1\">Content 1</div>\n <div>No Title Child</div>\n <div title=\"Tab 2\">Content 2</div>\n </Tabs>,\n );\n\n const tabs = screen.getAllByRole('tab');\n // Should only have 2 tabs since one doesn't have a title\n expect(tabs).toHaveLength(2);\n expect(screen.getByText('Tab 1')).toBeInTheDocument();\n expect(screen.getByText('Tab 2')).toBeInTheDocument();\n });\n\n it('handles null children gracefully', () => {\n render(\n <Tabs>\n <div title=\"Tab 1\">Content 1</div>\n {null}\n <div title=\"Tab 2\">Content 2</div>\n </Tabs>,\n );\n\n const tabs = screen.getAllByRole('tab');\n expect(tabs).toHaveLength(2);\n });\n\n it('handles complex content in tabs', () => {\n render(\n <Tabs>\n <div title=\"Tab 1\">\n <div>\n <h2>Tab 1 Header</h2>\n <p>Tab 1 description</p>\n <button>Button in Tab 1</button>\n </div>\n </div>\n <div title=\"Tab 2\">\n <div>\n <h2>Tab 2 Header</h2>\n <input type=\"text\" placeholder=\"Input in Tab 2\" />\n </div>\n </div>\n </Tabs>,\n );\n\n expect(screen.getByText('Tab 1 Header')).toBeInTheDocument();\n expect(screen.getByRole('button', { name: 'Button in Tab 1' })).toBeInTheDocument();\n\n const tab2 = screen.getByRole('tab', { name: 'Tab 2' });\n expect(tab2).toBeInTheDocument();\n });\n\n it('renders all tabs in MuiTabs component', () => {\n const { container } = render(\n <Tabs>\n <div title=\"Tab A\">Content A</div>\n <div title=\"Tab B\">Content B</div>\n <div title=\"Tab C\">Content C</div>\n </Tabs>,\n );\n\n const tabsComponent = container.querySelector('[role=\"tablist\"]');\n expect(tabsComponent).toBeInTheDocument();\n });\n\n it('applies correct value prop to MuiTabs', async () => {\n const user = userEvent.setup();\n render(\n <Tabs>\n <div title=\"Tab 1\">Content 1</div>\n <div title=\"Tab 2\">Content 2</div>\n </Tabs>,\n );\n\n // Initially first tab should be selected (value 0)\n const tab1 = screen.getByRole('tab', { name: 'Tab 1' });\n expect(tab1).toHaveAttribute('aria-selected', 'true');\n\n // Click second tab\n await user.click(screen.getByRole('tab', { name: 'Tab 2' }));\n const tab2 = screen.getByRole('tab', { name: 'Tab 2' });\n expect(tab2).toHaveAttribute('aria-selected', 'true');\n expect(tab1).toHaveAttribute('aria-selected', 'false');\n });\n\n it('renders with empty children array', () => {\n const { container } = render(<Tabs>{[]}</Tabs>);\n expect(container).toBeInTheDocument();\n });\n\n it('handles long tab titles', () => {\n render(\n <Tabs>\n <div title=\"This is a very long tab title that should still render correctly\">Content 1</div>\n <div title=\"Short\">Content 2</div>\n </Tabs>,\n );\n\n expect(screen.getByText('This is a very long tab title that should still render correctly')).toBeInTheDocument();\n expect(screen.getByText('Short')).toBeInTheDocument();\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
6
+ var _react = _interopRequireDefault(require("react"));
7
+ var _react2 = require("@testing-library/react");
8
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
9
+ var _twoChoice = require("../two-choice");
10
+ describe('NChoice', function () {
11
+ var onChange = jest.fn();
12
+ beforeEach(function () {
13
+ onChange.mockClear();
14
+ });
15
+ it('renders radio buttons with vertical direction', function () {
16
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_twoChoice.NChoice, {
17
+ direction: "vertical",
18
+ header: "n-choice-vertical",
19
+ value: 'left',
20
+ onChange: onChange,
21
+ opts: [{
22
+ label: 'left',
23
+ value: 'left'
24
+ }, {
25
+ label: 'center',
26
+ value: 'center'
27
+ }, {
28
+ label: 'right',
29
+ value: 'right'
30
+ }]
31
+ }));
32
+ expect(_react2.screen.getByText('n-choice-vertical')).toBeInTheDocument();
33
+ expect(_react2.screen.getByLabelText('left')).toBeInTheDocument();
34
+ expect(_react2.screen.getByLabelText('center')).toBeInTheDocument();
35
+ expect(_react2.screen.getByLabelText('right')).toBeInTheDocument();
36
+ });
37
+ it('shows selected value as checked', function () {
38
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_twoChoice.NChoice, {
39
+ direction: "vertical",
40
+ header: "Options",
41
+ value: 'center',
42
+ onChange: onChange,
43
+ opts: [{
44
+ label: 'left',
45
+ value: 'left'
46
+ }, {
47
+ label: 'center',
48
+ value: 'center'
49
+ }, {
50
+ label: 'right',
51
+ value: 'right'
52
+ }]
53
+ }));
54
+ var centerRadio = _react2.screen.getByLabelText('center');
55
+ expect(centerRadio).toBeChecked();
56
+ expect(_react2.screen.getByLabelText('left')).not.toBeChecked();
57
+ expect(_react2.screen.getByLabelText('right')).not.toBeChecked();
58
+ });
59
+ it('calls onChange when user selects a different option', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
60
+ var user;
61
+ return _regenerator["default"].wrap(function (_context) {
62
+ while (1) switch (_context.prev = _context.next) {
63
+ case 0:
64
+ user = _userEvent["default"].setup();
65
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_twoChoice.NChoice, {
66
+ direction: "vertical",
67
+ header: "Options",
68
+ value: 'left',
69
+ onChange: onChange,
70
+ opts: [{
71
+ label: 'left',
72
+ value: 'left'
73
+ }, {
74
+ label: 'center',
75
+ value: 'center'
76
+ }, {
77
+ label: 'right',
78
+ value: 'right'
79
+ }]
80
+ }));
81
+ _context.next = 1;
82
+ return user.click(_react2.screen.getByLabelText('center'));
83
+ case 1:
84
+ expect(onChange).toHaveBeenCalledWith('center');
85
+ case 2:
86
+ case "end":
87
+ return _context.stop();
88
+ }
89
+ }, _callee);
90
+ })));
91
+ it('renders with horizontal direction', function () {
92
+ var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_twoChoice.NChoice, {
93
+ direction: "horizontal",
94
+ header: "Options",
95
+ value: 'left',
96
+ onChange: onChange,
97
+ opts: [{
98
+ label: 'left',
99
+ value: 'left'
100
+ }, {
101
+ label: 'right',
102
+ value: 'right'
103
+ }]
104
+ })),
105
+ container = _render.container;
106
+
107
+ // Check that all options are rendered
108
+ expect(_react2.screen.getByLabelText('left')).toBeInTheDocument();
109
+ expect(_react2.screen.getByLabelText('right')).toBeInTheDocument();
110
+ });
111
+ it('handles string options by converting them', function () {
112
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_twoChoice.NChoice, {
113
+ direction: "vertical",
114
+ header: "Options",
115
+ value: 'option1',
116
+ onChange: onChange,
117
+ opts: ['option1', 'option2', 'option3']
118
+ }));
119
+ expect(_react2.screen.getByLabelText('option1')).toBeInTheDocument();
120
+ expect(_react2.screen.getByLabelText('option2')).toBeInTheDocument();
121
+ expect(_react2.screen.getByLabelText('option3')).toBeInTheDocument();
122
+ });
123
+ });
124
+ //# sourceMappingURL=two-choice.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"two-choice.test.js","names":["_react","_interopRequireDefault","require","_react2","_userEvent","_twoChoice","describe","onChange","jest","fn","beforeEach","mockClear","it","render","createElement","NChoice","direction","header","value","opts","label","expect","screen","getByText","toBeInTheDocument","getByLabelText","centerRadio","toBeChecked","not","_asyncToGenerator2","_regenerator","mark","_callee","user","wrap","_context","prev","next","userEvent","setup","click","toHaveBeenCalledWith","stop","_render","container"],"sources":["../../src/__tests__/two-choice.test.js"],"sourcesContent":["import React from 'react';\nimport { render, screen } from '@testing-library/react';\nimport userEvent from '@testing-library/user-event';\nimport { NChoice } from '../two-choice';\n\ndescribe('NChoice', () => {\n const onChange = jest.fn();\n\n beforeEach(() => {\n onChange.mockClear();\n });\n\n it('renders radio buttons with vertical direction', () => {\n render(\n <NChoice\n direction=\"vertical\"\n header=\"n-choice-vertical\"\n value={'left'}\n onChange={onChange}\n opts={[\n { label: 'left', value: 'left' },\n { label: 'center', value: 'center' },\n { label: 'right', value: 'right' },\n ]}\n />,\n );\n\n expect(screen.getByText('n-choice-vertical')).toBeInTheDocument();\n expect(screen.getByLabelText('left')).toBeInTheDocument();\n expect(screen.getByLabelText('center')).toBeInTheDocument();\n expect(screen.getByLabelText('right')).toBeInTheDocument();\n });\n\n it('shows selected value as checked', () => {\n render(\n <NChoice\n direction=\"vertical\"\n header=\"Options\"\n value={'center'}\n onChange={onChange}\n opts={[\n { label: 'left', value: 'left' },\n { label: 'center', value: 'center' },\n { label: 'right', value: 'right' },\n ]}\n />,\n );\n\n const centerRadio = screen.getByLabelText('center');\n expect(centerRadio).toBeChecked();\n expect(screen.getByLabelText('left')).not.toBeChecked();\n expect(screen.getByLabelText('right')).not.toBeChecked();\n });\n\n it('calls onChange when user selects a different option', async () => {\n const user = userEvent.setup();\n render(\n <NChoice\n direction=\"vertical\"\n header=\"Options\"\n value={'left'}\n onChange={onChange}\n opts={[\n { label: 'left', value: 'left' },\n { label: 'center', value: 'center' },\n { label: 'right', value: 'right' },\n ]}\n />,\n );\n\n await user.click(screen.getByLabelText('center'));\n\n expect(onChange).toHaveBeenCalledWith('center');\n });\n\n it('renders with horizontal direction', () => {\n const { container } = render(\n <NChoice\n direction=\"horizontal\"\n header=\"Options\"\n value={'left'}\n onChange={onChange}\n opts={[\n { label: 'left', value: 'left' },\n { label: 'right', value: 'right' },\n ]}\n />,\n );\n\n // Check that all options are rendered\n expect(screen.getByLabelText('left')).toBeInTheDocument();\n expect(screen.getByLabelText('right')).toBeInTheDocument();\n });\n\n it('handles string options by converting them', () => {\n render(\n <NChoice\n direction=\"vertical\"\n header=\"Options\"\n value={'option1'}\n onChange={onChange}\n opts={['option1', 'option2', 'option3']}\n />,\n );\n\n expect(screen.getByLabelText('option1')).toBeInTheDocument();\n expect(screen.getByLabelText('option2')).toBeInTheDocument();\n expect(screen.getByLabelText('option3')).toBeInTheDocument();\n });\n});\n"],"mappings":";;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AAEAI,QAAQ,CAAC,SAAS,EAAE,YAAM;EACxB,IAAMC,QAAQ,GAAGC,IAAI,CAACC,EAAE,CAAC,CAAC;EAE1BC,UAAU,CAAC,YAAM;IACfH,QAAQ,CAACI,SAAS,CAAC,CAAC;EACtB,CAAC,CAAC;EAEFC,EAAE,CAAC,+CAA+C,EAAE,YAAM;IACxD,IAAAC,cAAM,eACJb,MAAA,YAAAc,aAAA,CAACT,UAAA,CAAAU,OAAO;MACNC,SAAS,EAAC,UAAU;MACpBC,MAAM,EAAC,mBAAmB;MAC1BC,KAAK,EAAE,MAAO;MACdX,QAAQ,EAAEA,QAAS;MACnBY,IAAI,EAAE,CACJ;QAAEC,KAAK,EAAE,MAAM;QAAEF,KAAK,EAAE;MAAO,CAAC,EAChC;QAAEE,KAAK,EAAE,QAAQ;QAAEF,KAAK,EAAE;MAAS,CAAC,EACpC;QAAEE,KAAK,EAAE,OAAO;QAAEF,KAAK,EAAE;MAAQ,CAAC;IAClC,CACH,CACH,CAAC;IAEDG,MAAM,CAACC,cAAM,CAACC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IACjEH,MAAM,CAACC,cAAM,CAACG,cAAc,CAAC,MAAM,CAAC,CAAC,CAACD,iBAAiB,CAAC,CAAC;IACzDH,MAAM,CAACC,cAAM,CAACG,cAAc,CAAC,QAAQ,CAAC,CAAC,CAACD,iBAAiB,CAAC,CAAC;IAC3DH,MAAM,CAACC,cAAM,CAACG,cAAc,CAAC,OAAO,CAAC,CAAC,CAACD,iBAAiB,CAAC,CAAC;EAC5D,CAAC,CAAC;EAEFZ,EAAE,CAAC,iCAAiC,EAAE,YAAM;IAC1C,IAAAC,cAAM,eACJb,MAAA,YAAAc,aAAA,CAACT,UAAA,CAAAU,OAAO;MACNC,SAAS,EAAC,UAAU;MACpBC,MAAM,EAAC,SAAS;MAChBC,KAAK,EAAE,QAAS;MAChBX,QAAQ,EAAEA,QAAS;MACnBY,IAAI,EAAE,CACJ;QAAEC,KAAK,EAAE,MAAM;QAAEF,KAAK,EAAE;MAAO,CAAC,EAChC;QAAEE,KAAK,EAAE,QAAQ;QAAEF,KAAK,EAAE;MAAS,CAAC,EACpC;QAAEE,KAAK,EAAE,OAAO;QAAEF,KAAK,EAAE;MAAQ,CAAC;IAClC,CACH,CACH,CAAC;IAED,IAAMQ,WAAW,GAAGJ,cAAM,CAACG,cAAc,CAAC,QAAQ,CAAC;IACnDJ,MAAM,CAACK,WAAW,CAAC,CAACC,WAAW,CAAC,CAAC;IACjCN,MAAM,CAACC,cAAM,CAACG,cAAc,CAAC,MAAM,CAAC,CAAC,CAACG,GAAG,CAACD,WAAW,CAAC,CAAC;IACvDN,MAAM,CAACC,cAAM,CAACG,cAAc,CAAC,OAAO,CAAC,CAAC,CAACG,GAAG,CAACD,WAAW,CAAC,CAAC;EAC1D,CAAC,CAAC;EAEFf,EAAE,CAAC,qDAAqD,mBAAAiB,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAC,QAAA;IAAA,IAAAC,IAAA;IAAA,OAAAH,YAAA,YAAAI,IAAA,WAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAClDJ,IAAI,GAAGK,qBAAS,CAACC,KAAK,CAAC,CAAC;UAC9B,IAAA1B,cAAM,eACJb,MAAA,YAAAc,aAAA,CAACT,UAAA,CAAAU,OAAO;YACNC,SAAS,EAAC,UAAU;YACpBC,MAAM,EAAC,SAAS;YAChBC,KAAK,EAAE,MAAO;YACdX,QAAQ,EAAEA,QAAS;YACnBY,IAAI,EAAE,CACJ;cAAEC,KAAK,EAAE,MAAM;cAAEF,KAAK,EAAE;YAAO,CAAC,EAChC;cAAEE,KAAK,EAAE,QAAQ;cAAEF,KAAK,EAAE;YAAS,CAAC,EACpC;cAAEE,KAAK,EAAE,OAAO;cAAEF,KAAK,EAAE;YAAQ,CAAC;UAClC,CACH,CACH,CAAC;UAACiB,QAAA,CAAAE,IAAA;UAAA,OAEIJ,IAAI,CAACO,KAAK,CAAClB,cAAM,CAACG,cAAc,CAAC,QAAQ,CAAC,CAAC;QAAA;UAEjDJ,MAAM,CAACd,QAAQ,CAAC,CAACkC,oBAAoB,CAAC,QAAQ,CAAC;QAAC;QAAA;UAAA,OAAAN,QAAA,CAAAO,IAAA;MAAA;IAAA,GAAAV,OAAA;EAAA,CACjD,GAAC;EAEFpB,EAAE,CAAC,mCAAmC,EAAE,YAAM;IAC5C,IAAA+B,OAAA,GAAsB,IAAA9B,cAAM,eAC1Bb,MAAA,YAAAc,aAAA,CAACT,UAAA,CAAAU,OAAO;QACNC,SAAS,EAAC,YAAY;QACtBC,MAAM,EAAC,SAAS;QAChBC,KAAK,EAAE,MAAO;QACdX,QAAQ,EAAEA,QAAS;QACnBY,IAAI,EAAE,CACJ;UAAEC,KAAK,EAAE,MAAM;UAAEF,KAAK,EAAE;QAAO,CAAC,EAChC;UAAEE,KAAK,EAAE,OAAO;UAAEF,KAAK,EAAE;QAAQ,CAAC;MAClC,CACH,CACH,CAAC;MAXO0B,SAAS,GAAAD,OAAA,CAATC,SAAS;;IAajB;IACAvB,MAAM,CAACC,cAAM,CAACG,cAAc,CAAC,MAAM,CAAC,CAAC,CAACD,iBAAiB,CAAC,CAAC;IACzDH,MAAM,CAACC,cAAM,CAACG,cAAc,CAAC,OAAO,CAAC,CAAC,CAACD,iBAAiB,CAAC,CAAC;EAC5D,CAAC,CAAC;EAEFZ,EAAE,CAAC,2CAA2C,EAAE,YAAM;IACpD,IAAAC,cAAM,eACJb,MAAA,YAAAc,aAAA,CAACT,UAAA,CAAAU,OAAO;MACNC,SAAS,EAAC,UAAU;MACpBC,MAAM,EAAC,SAAS;MAChBC,KAAK,EAAE,SAAU;MACjBX,QAAQ,EAAEA,QAAS;MACnBY,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS;IAAE,CACzC,CACH,CAAC;IAEDE,MAAM,CAACC,cAAM,CAACG,cAAc,CAAC,SAAS,CAAC,CAAC,CAACD,iBAAiB,CAAC,CAAC;IAC5DH,MAAM,CAACC,cAAM,CAACG,cAAc,CAAC,SAAS,CAAC,CAAC,CAACD,iBAAiB,CAAC,CAAC;IAC5DH,MAAM,CAACC,cAAM,CAACG,cAAc,CAAC,SAAS,CAAC,CAAC,CAACD,iBAAiB,CAAC,CAAC;EAC9D,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}