q2-tecton-elements 1.52.1 → 1.52.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/dist/cjs/click-elsewhere_2.cjs.entry.js +2 -13
  2. package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/q2-action-group.cjs.entry.js +38 -14
  5. package/dist/cjs/q2-action-group.cjs.entry.js.map +1 -1
  6. package/dist/cjs/q2-calendar.cjs.entry.js +18 -15
  7. package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
  8. package/dist/cjs/q2-dropdown.cjs.entry.js +1 -3
  9. package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
  10. package/dist/cjs/q2-pill.cjs.entry.js +1 -1
  11. package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
  12. package/dist/cjs/q2-select.cjs.entry.js +3 -4
  13. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  14. package/dist/cjs/q2-tag.cjs.entry.js +1 -2
  15. package/dist/cjs/q2-tag.cjs.entry.js.map +1 -1
  16. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  17. package/dist/collection/components/q2-action-group/q2-action-group.js +41 -14
  18. package/dist/collection/components/q2-action-group/q2-action-group.js.map +1 -1
  19. package/dist/collection/components/q2-action-group/test/q2-action-group.spec.js +97 -65
  20. package/dist/collection/components/q2-action-group/test/q2-action-group.spec.js.map +1 -1
  21. package/dist/collection/components/q2-calendar/q2-calendar.js +22 -17
  22. package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
  23. package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js +0 -27
  24. package/dist/collection/components/q2-calendar/test/q2-calendar-test.e2e.js.map +1 -1
  25. package/dist/collection/components/q2-dropdown/q2-dropdown.js +5 -9
  26. package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
  27. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js +14 -59
  28. package/dist/collection/components/q2-dropdown/test/q2-dropdown-test.e2e.js.map +1 -1
  29. package/dist/collection/components/q2-pill/q2-pill.js +5 -2
  30. package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
  31. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js +0 -49
  32. package/dist/collection/components/q2-pill/test/q2-pill-test.e2e.js.map +1 -1
  33. package/dist/collection/components/q2-popover/q2-popover.js +3 -16
  34. package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
  35. package/dist/collection/components/q2-select/q2-select.js +3 -5
  36. package/dist/collection/components/q2-select/q2-select.js.map +1 -1
  37. package/dist/collection/components/q2-select/test/q2-select-test.e2e.js.map +1 -1
  38. package/dist/collection/components/q2-tag/q2-tag.js +5 -4
  39. package/dist/collection/components/q2-tag/q2-tag.js.map +1 -1
  40. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js +0 -49
  41. package/dist/collection/components/q2-tag/test/q2-tag-test.e2e.js.map +1 -1
  42. package/dist/components/q2-action-group.js +40 -14
  43. package/dist/components/q2-action-group.js.map +1 -1
  44. package/dist/components/q2-calendar.js +18 -16
  45. package/dist/components/q2-calendar.js.map +1 -1
  46. package/dist/components/q2-dropdown.js +1 -4
  47. package/dist/components/q2-dropdown.js.map +1 -1
  48. package/dist/components/q2-pill.js +1 -1
  49. package/dist/components/q2-pill.js.map +1 -1
  50. package/dist/components/q2-popover2.js +3 -15
  51. package/dist/components/q2-popover2.js.map +1 -1
  52. package/dist/components/q2-select2.js +3 -5
  53. package/dist/components/q2-select2.js.map +1 -1
  54. package/dist/components/q2-tag.js +1 -3
  55. package/dist/components/q2-tag.js.map +1 -1
  56. package/dist/esm/click-elsewhere_2.entry.js +2 -13
  57. package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
  58. package/dist/esm/loader.js +1 -1
  59. package/dist/esm/q2-action-group.entry.js +38 -14
  60. package/dist/esm/q2-action-group.entry.js.map +1 -1
  61. package/dist/esm/q2-calendar.entry.js +18 -15
  62. package/dist/esm/q2-calendar.entry.js.map +1 -1
  63. package/dist/esm/q2-dropdown.entry.js +1 -3
  64. package/dist/esm/q2-dropdown.entry.js.map +1 -1
  65. package/dist/esm/q2-pill.entry.js +1 -1
  66. package/dist/esm/q2-pill.entry.js.map +1 -1
  67. package/dist/esm/q2-select.entry.js +3 -4
  68. package/dist/esm/q2-select.entry.js.map +1 -1
  69. package/dist/esm/q2-tag.entry.js +1 -2
  70. package/dist/esm/q2-tag.entry.js.map +1 -1
  71. package/dist/esm/q2-tecton-elements.js +1 -1
  72. package/dist/q2-tecton-elements/click-elsewhere_2.entry.js +21 -33
  73. package/dist/q2-tecton-elements/click-elsewhere_2.entry.js.map +1 -1
  74. package/dist/q2-tecton-elements/q2-action-group.entry.js +58 -32
  75. package/dist/q2-tecton-elements/q2-action-group.entry.js.map +1 -1
  76. package/dist/q2-tecton-elements/q2-calendar.entry.js +259 -256
  77. package/dist/q2-tecton-elements/q2-calendar.entry.js.map +1 -1
  78. package/dist/q2-tecton-elements/q2-dropdown.entry.js +6 -8
  79. package/dist/q2-tecton-elements/q2-dropdown.entry.js.map +1 -1
  80. package/dist/q2-tecton-elements/q2-pill.entry.js +13 -13
  81. package/dist/q2-tecton-elements/q2-pill.entry.js.map +1 -1
  82. package/dist/q2-tecton-elements/q2-select.entry.js +6 -7
  83. package/dist/q2-tecton-elements/q2-select.entry.js.map +1 -1
  84. package/dist/q2-tecton-elements/q2-tag.entry.js +12 -13
  85. package/dist/q2-tecton-elements/q2-tag.entry.js.map +1 -1
  86. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  87. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
  88. package/dist/types/components/q2-action-group/q2-action-group.d.ts +4 -0
  89. package/dist/types/components/q2-calendar/q2-calendar.d.ts +10 -5
  90. package/dist/types/components/q2-dropdown/q2-dropdown.d.ts +6 -2
  91. package/dist/types/components/q2-pill/q2-pill.d.ts +5 -1
  92. package/dist/types/components/q2-popover/q2-popover.d.ts +0 -1
  93. package/dist/types/components/q2-select/q2-select.d.ts +1 -1
  94. package/dist/types/components/q2-tag/q2-tag.d.ts +6 -2
  95. package/dist/types/components.d.ts +8 -0
  96. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"q2-pill-test.e2e.js","sourceRoot":"","sources":["../../../../src/components/q2-pill/test/q2-pill-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EElement, E2EPage, EventSpy } from '@stencil/core/testing';\nimport { ActionSheetListCloseData } from 'q2-tecton-common/lib/utility/action-sheet';\nimport {\n evaluateA11y,\n setup,\n getFocusedAttribute,\n getFocusedTagName,\n getFocusedOptionValue,\n getActiveElementTestId,\n getListOfStyleCompilationIssues,\n setTestStrings,\n} from '@/utils/helpers';\n\ndescribe('q2-pill', () => {\n let page: E2EPage;\n let pill: E2EElement;\n let popover: E2EElement;\n let allOptions: E2EElement[];\n let optionList: E2EElement;\n let optionContainer: E2EElement;\n let controlBtn: E2EElement;\n let changeSpy: EventSpy;\n\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: `<q2-pill></q2-pill>` });\n expect(await getListOfStyleCompilationIssues(page, 'q2-pill')).toHaveLength(0);\n });\n\n describe('Props', () => {\n describe('hoist', () => {\n const runHoistSetup = async (\n action: string,\n hoistEnabled: boolean = false,\n defineShowActionSheet: boolean = false,\n isCancelled: boolean = false\n ) => {\n page = await setup({\n html: `\n <q2-pill ${hoistEnabled ? 'hoist' : ''} label=\"My pill\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n\n if (defineShowActionSheet) {\n await page.evaluate(isCancelled => {\n const returnValue: ActionSheetListCloseData = isCancelled\n ? {\n type: 'cancel',\n value: '',\n values: [],\n }\n : {\n value: '3',\n values: [{ display: 'Option 3', value: '3' }],\n type: 'confirm',\n };\n (this as Window).TectonElements.showActionSheet = async () => returnValue;\n }, isCancelled);\n }\n\n popover = await page.find('q2-pill >>> q2-popover');\n pill = await page.find('q2-pill');\n controlBtn = await page.find('q2-pill >>> .btn-primary');\n changeSpy = await pill.spyOnEvent('change');\n\n expect(popover).not.toHaveAttribute('open');\n expect(await pill.getProperty('selectedOptions')).toEqual([]);\n\n if (action === 'click') {\n await controlBtn.click();\n } else {\n await controlBtn.press(action);\n }\n await page.waitForChanges();\n };\n\n describe('when window.Tecton.useActionSheets is true', () => {\n it('defaults the hoist prop to true', async () => {\n page = await setup({ html: `` });\n await page.evaluate(() => {\n (this as Window).Tecton = {\n inMobileApp: false,\n useActionSheets: true,\n noStrings: false,\n platformDimensions: null,\n platformUrl: null,\n };\n });\n await page.setContent(`\n <q2-pill label=\"My pill\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `);\n await page.waitForChanges();\n\n pill = await page.find('q2-pill');\n expect(await pill.getProperty('hoist')).toEqual(true);\n });\n\n it('sets hoist to false when manually set to false', async () => {\n page = await setup({ html: `` });\n await page.evaluate(() => {\n (this as Window).Tecton = {\n inMobileApp: false,\n useActionSheets: true,\n noStrings: false,\n platformDimensions: null,\n platformUrl: null,\n };\n });\n await page.setContent(`\n <q2-pill label=\"My pill\" hoist=\"false\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `);\n await page.waitForChanges();\n\n pill = await page.find('q2-pill');\n expect(await pill.getProperty('hoist')).toEqual(false);\n });\n });\n\n describe('when false (default)', () => {\n it('opens popover on click', async () => {\n await runHoistSetup('click', false, true);\n\n expect(popover).toHaveAttribute('open');\n\n const option = await page.find('q2-option[value=\"3\"]');\n await option.click();\n await page.waitForChanges();\n\n expect(popover).not.toHaveAttribute('open');\n\n expect(await pill.getProperty('selectedOptions')).toEqual([{ display: 'Option 3', value: '3' }]);\n expect(changeSpy).toHaveReceivedEventDetail({\n active: true,\n value: '3',\n values: [{ display: 'Option 3', value: '3' }],\n });\n });\n });\n\n describe('when true', () => {\n describe('when window.TectonElements.showActionSheet is not defined', () => {\n it('opens popover on click', async () => {\n await runHoistSetup('click', true, false);\n\n const option = await page.find('q2-option[value=\"3\"]');\n await option.click();\n await page.waitForChanges();\n\n expect(popover).not.toHaveAttribute('open');\n\n expect(await pill.getProperty('selectedOptions')).toEqual([\n { display: 'Option 3', value: '3' },\n ]);\n expect(changeSpy).toHaveReceivedEventDetail({\n active: true,\n value: '3',\n values: [{ display: 'Option 3', value: '3' }],\n });\n });\n });\n\n describe('when window.TectonElements.showActionSheet is defined', () => {\n ['click', 'ArrowDown', 'Space', 'Enter'].forEach(action => {\n it(`calls showActionSheet on ${action}`, async () => {\n await runHoistSetup(action, true, true);\n\n expect(await pill.getProperty('selectedOptions')).toEqual([\n { display: 'Option 3', value: '3' },\n ]);\n expect(changeSpy).toHaveReceivedEventDetail({\n active: true,\n value: '3',\n values: [{ display: 'Option 3', value: '3' }],\n });\n });\n });\n\n it(`calls showActionSheet on click and returns no data when cancelled`, async () => {\n await runHoistSetup('click', true, true, true);\n\n expect(await pill.getProperty('value')).toBeNull();\n expect(changeSpy).toHaveReceivedEventDetail({\n active: false,\n value: '',\n values: [],\n });\n });\n });\n });\n });\n\n describe('value', () => {\n describe('when not provided', () => {\n it('defaults to null', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\">\n <q2-option value=\"1\" display=\"First Option\">Option 1</q2-option>\n <q2-option value=\"2\" display=\"Second Option\">Option 2</q2-option>\n <q2-option value=\"3\" display=\"Third Option\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n pill = await page.find('q2-pill');\n expect(await pill.getProperty('value')).toBeUndefined();\n expect(await pill.getProperty('selectedOptions')).toEqual([]);\n });\n });\n\n describe('when provided', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" value=\"2\">\n <q2-option value=\"1\" display=\"First Option\">Option 1</q2-option>\n <q2-option value=\"2\" display=\"Second Option\">Option 2</q2-option>\n <q2-option value=\"3\" display=\"Third Option\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n await page.waitForChanges();\n pill = await page.find('q2-pill');\n });\n\n it('sets the pill text to the display prop of the matching option', async () => {\n expect(await pill.getProperty('value')).toEqual('2');\n expect(await pill.getProperty('selectedOptions')).toEqual([\n { value: '2', display: 'Second Option' },\n ]);\n\n const btnControl = await page.find('q2-pill >>> [test-id=\"btn-control\"]');\n expect(btnControl).toEqualText('Second Option');\n });\n\n it('updates the pill text to the display prop of the new matching option', async () => {\n pill.setProperty('value', '3');\n await page.waitForChanges();\n\n expect(await pill.getProperty('selectedOptions')).toEqual([\n { value: '3', display: 'Third Option' },\n ]);\n\n const btnControl = await page.find('q2-pill >>> [test-id=\"btn-control\"]');\n expect(btnControl).toEqualText('Third Option');\n });\n });\n });\n\n describe('selectedOptions', () => {\n describe('when not provided', () => {\n it('defaults to an empty array', async () => {\n page = await setup({\n html: `<q2-pill label=\"My pill\"></q2-pill>`,\n });\n const btnControl = await page.find('q2-pill >>> [test-id=\"btn-control\"]');\n expect(btnControl).toEqualText('My pill');\n });\n });\n\n describe('when provided', () => {\n it('uses the display attribute of the first option element as the label', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\">\n <q2-option value=\"1\" display=\"First Option\">Option 1</q2-option>\n <q2-option value=\"2\" display=\"Second Option\">Option 2</q2-option>\n <q2-option value=\"3\" display=\"Third Option\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n\n pill = await page.find('q2-pill');\n await pill.setProperty('selectedOptions', [{ display: 'Some display', value: '2' }]);\n await page.waitForChanges();\n\n expect(await pill.getProperty('value')).toEqual('2');\n\n const btnControl = await page.find('q2-pill >>> [test-id=\"btn-control\"]');\n expect(btnControl).toEqualText('Second Option');\n });\n\n describe('when multiple', () => {\n it('does not set value', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" multiple>\n <q2-option value=\"1\" display=\"First Option\">Option 1</q2-option>\n <q2-option value=\"2\" display=\"Second Option\">Option 2</q2-option>\n <q2-option value=\"3\" display=\"Third Option\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n pill = await page.find('q2-pill');\n await pill.setProperty('selectedOptions', [{ display: 'Some display', value: '2' }]);\n await page.waitForChanges();\n expect(await pill.getProperty('value')).toBeUndefined();\n });\n });\n });\n });\n\n describe('maxLength', () => {\n describe('when not provided', () => {\n it('does not truncate button content', async () => {\n page = await setup({\n html: `<q2-pill label=\"My pill with a super long name\"></q2-pill>`,\n });\n const btnControl = await page.find('q2-pill >>> [test-id=\"btn-control\"]');\n expect(btnControl).toEqualText('My pill with a super long name');\n });\n });\n\n describe('when provided', () => {\n it('truncates button content', async () => {\n page = await setup({\n html: `<q2-pill label=\"My pill with a super long name\" max-length=\"10\"></q2-pill>`,\n });\n const btnControl = await page.find('q2-pill >>> [test-id=\"btn-control\"]');\n expect(btnControl).toEqualText('My pill wi…');\n expect(btnControl).toEqualAttribute('aria-label', 'My pill with a super long name');\n });\n });\n });\n describe('label', () => {\n describe('when provided', () => {\n it('renders with provided label', async () => {\n page = await setup({\n html: `<q2-pill label=\"My pill\"></q2-pill>`,\n });\n controlBtn = await page.find('q2-pill >>> [test-id=\"btn-control\"]');\n expect(controlBtn).toEqualText('My pill');\n });\n });\n describe('when provided a custom label translation', () => {\n it('renders the translated value', async () => {\n page = await setup({\n html: ``,\n });\n await setTestStrings(page, {\n 'q2Pill.customLabel': 'Custom Label',\n });\n page.setContent(`<q2-pill label=\"q2Pill.customLabel\"></q2-pill>`);\n await page.waitForChanges();\n\n pill = await page.find('q2-pill');\n controlBtn = await page.find('q2-pill >>> [test-id=\"btn-control\"]');\n\n expect(await pill.getProperty('label')).toEqualText('q2Pill.customLabel');\n expect(controlBtn).toEqualText('Custom Label');\n });\n });\n });\n describe('popoverMinHeight', () => {\n describe('when not provided', () => {\n it('defaults to 150 and passes that value to q2-popover', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n pill = await page.find('q2-pill');\n popover = await page.find('q2-pill >>> q2-popover');\n\n expect(await pill.getProperty('popoverMinHeight')).toEqual(150);\n expect(await popover.getProperty('minHeight')).toEqual(150);\n });\n });\n describe('when provided', () => {\n it('passes the provided value to the q2-popover', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" popover-min-height=\"300\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n popover = await page.find('q2-pill >>> q2-popover');\n\n expect(await popover.getProperty('minHeight')).toEqual(300);\n });\n });\n });\n\n describe('popoverMaxHeight', () => {\n it('when provided, passes the value to q2-popover', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" popover-max-height=\"600\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n popover = await page.find('q2-pill >>> q2-popover');\n\n expect(await popover.getProperty('maxHeight')).toEqual(600);\n });\n });\n\n describe('popoverDirection', () => {\n describe('when not provided', () => {\n it('does not pass a value to q2-popover', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n pill = await page.find('q2-pill');\n popover = await page.find('q2-pill >>> q2-popover');\n\n expect(await pill.getProperty('popoverDirection')).toBeUndefined();\n expect(await popover.getProperty('direction')).toBeUndefined();\n });\n });\n describe('when provided', () => {\n it('passes the provided value to the q2-popover', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My tag\" popover-direction=\"up\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n popover = await page.find('q2-pill >>> q2-popover');\n\n expect(await popover.getProperty('direction')).toEqual('up');\n });\n });\n });\n describe('popoverAlingment', () => {\n it('can be mutated', async () => {\n page = await setup({\n html: `\n <q2-pill popover-alignment=\"left\">\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-pill>\n `,\n });\n await page.waitForChanges();\n pill = await page.find('q2-pill');\n expect(await pill.getProperty('popoverAlignment')).toEqual('left');\n\n pill.setProperty('popoverAlignment', 'right');\n await page.waitForChanges();\n\n expect(await pill.getProperty('popoverAlignment')).toEqual('right');\n\n pill.setProperty('popoverAlignment', 'left');\n await page.waitForChanges();\n\n expect(await pill.getProperty('popoverAlignment')).toEqual('left');\n });\n it('will default to right', async () => {\n page = await setup({\n html: `\n <q2-pill>\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-pill>\n `,\n });\n await page.waitForChanges();\n pill = await page.find('q2-pill');\n expect(await pill.getProperty('popoverAlignment')).toEqual('right');\n });\n });\n\n describe('borderless', () => {\n let page: E2EPage;\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" value=\"my-pill-value\" borderless>\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n });\n\n it('border style should be none when borderless', async function (): Promise<void> {\n const borderStyle = await page.$eval('q2-pill >>> button', el => {\n return window.getComputedStyle(el).getPropertyValue('border-style');\n });\n expect(borderStyle).toEqual('none');\n });\n });\n\n describe('open', () => {\n describe('when provided', () => {\n it('renders the popover', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" open>\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n pill = await page.find('q2-pill');\n popover = await page.find('q2-pill >>> q2-popover');\n\n expect(pill).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n });\n it('sets a value to the controlElement prop', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" open>\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n popover = await page.find('q2-pill >>> q2-popover');\n expect(await popover.getProperty('controlElement')).not.toBeUndefined();\n });\n });\n describe('when not provided', () => {\n it('does not render the popover', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n pill = await page.find('q2-pill');\n popover = await page.find('q2-pill >>> q2-popover');\n\n expect(pill).not.toHaveAttribute('open');\n expect(popover).not.toHaveAttribute('open');\n });\n });\n });\n });\n\n describe('Listeners', () => {\n describe('displayChanged', () => {\n describe('when option display prop provided', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\">\n <q2-option value=\"1\" display=\"First Option\">Option 1</q2-option>\n <q2-option value=\"2\" display=\"Second Option\">Option 2</q2-option>\n <q2-option value=\"3\" display=\"Third Option\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n pill = await page.find('q2-pill');\n changeSpy = await pill.spyOnEvent('displayChanged');\n });\n it('should receive displayChanged event when display prop changed in q2-option', async () => {\n const option = await page.find('q2-option[value=\"1\"]');\n option.setProperty('display', 'New Display');\n await page.waitForChanges();\n expect(changeSpy).toHaveReceivedEventDetail({ display: 'New Display', value: '1' });\n });\n it('should update pill text of selected option to new display value', async () => {\n const button = await page.find('q2-pill >>> button');\n pill.setAttribute('value', '2');\n await page.waitForChanges();\n const selectedOption = await page.find('q2-option[selected]');\n selectedOption.setProperty('display', 'New Display');\n await page.waitForChanges();\n expect(button.textContent.trim()).toEqual('New Display');\n });\n });\n describe('when option display prop not provided', () => {\n it('should receive displayChanged event when textContent changed in q2-option', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n pill = await page.find('q2-pill');\n changeSpy = await pill.spyOnEvent('displayChanged');\n const option = await page.find('q2-option[value=\"1\"]');\n option.textContent = 'New Display';\n await page.waitForChanges();\n expect(changeSpy).toHaveReceivedEventDetail({ display: 'New Display', value: '1' });\n });\n it('should update pill text of selected option to new textContent value', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\">\n <q2-option value=\"2\">Option 2</q2-option>\n </q2-pill>\n `,\n });\n pill = await page.find('q2-pill');\n changeSpy = await pill.spyOnEvent('displayChanged');\n const button = await page.find('q2-pill >>> button');\n pill.setAttribute('value', '2');\n await page.waitForChanges();\n const selectedOption = await page.find('q2-option[selected]');\n expect(button.textContent.trim()).toEqual(selectedOption.textContent.trim());\n selectedOption.textContent = 'New Display';\n await page.waitForChanges();\n expect(button.textContent.trim()).toEqual('New Display');\n expect(changeSpy).toHaveReceivedEventDetail({ display: 'New Display', value: '2' });\n });\n });\n });\n });\n\n describe('Methods', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My Pill\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n pill = await page.find('q2-pill');\n });\n it('openPopover() opens the popover', async () => {\n await pill.callMethod('openPopover');\n await page.waitForChanges();\n\n expect(pill).toHaveAttribute('open');\n });\n\n it('closePopover() closes the popover', async () => {\n expect(pill).not.toHaveAttribute('open');\n await pill.callMethod('openPopover');\n await page.waitForChanges();\n\n expect(pill).toHaveAttribute('open');\n\n await pill.callMethod('closePopover');\n await page.waitForChanges();\n\n expect(pill).not.toHaveAttribute('open');\n });\n\n describe('setValue()', () => {\n it('opens the popover, clicks the option matching the provided value, and closes the popover ', async () => {\n const clickSpy = await pill.spyOnEvent('change');\n await pill.callMethod('setValue', '1');\n await page.waitForChanges();\n\n expect(pill).not.toHaveAttribute('open');\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '1',\n values: [{ display: 'Option 1', value: '1' }],\n active: true,\n });\n });\n describe('when multiple', () => {\n it('opens the popover and selects the values matching the provided values', async () => {\n pill.setProperty('multiple', true);\n await page.waitForChanges();\n const clickSpy = await pill.spyOnEvent('change');\n await pill.callMethod('setValue', ['1', '3']);\n await page.waitForChanges();\n\n expect(pill).not.toHaveAttribute('open');\n expect(clickSpy).toHaveReceivedEventDetail({\n values: [\n { display: 'Option 1', value: '1' },\n { display: 'Option 3', value: '3' },\n ],\n active: true,\n });\n });\n it('keeps popover open when passed in args', async () => {\n pill.setProperty('multiple', true);\n await page.waitForChanges();\n const clickSpy = await pill.spyOnEvent('change');\n await pill.callMethod('setValue', ['1', '3'], { closePopover: false });\n await page.waitForChanges();\n\n expect(pill).toHaveAttribute('open');\n expect(clickSpy).toHaveReceivedEventDetail({\n values: [\n { display: 'Option 1', value: '1' },\n { display: 'Option 3', value: '3' },\n ],\n active: true,\n });\n });\n });\n });\n });\n\n describe('Click', () => {\n describe('when no options are provided', () => {\n it('toggles active on click', async () => {\n page = await setup({\n html: `<q2-pill label=\"My pill\" value=\"my-pill-value\"></q2-pill>`,\n });\n pill = await page.find('q2-pill');\n const closeBtn = await page.find('q2-pill >>> .btn-close');\n const closeIcon = await page.find('q2-pill >>> q2-icon');\n const btnWrapper = await page.find('q2-pill >>> .btn-wrapper');\n const changeSpy = await pill.spyOnEvent('change');\n\n expect(pill).not.toHaveAttribute('active');\n expect(await closeBtn.isVisible()).toBe(false);\n expect(closeIcon).toEqualAttribute('type', 'close');\n expect(btnWrapper.classList.contains('has-icon')).toBe(false);\n expect(btnWrapper.classList.contains('has-options')).toBe(false);\n\n await pill.click();\n await page.waitForChanges();\n\n expect(pill).toHaveAttribute('active');\n expect(await closeBtn.isVisible()).toBe(true);\n expect(btnWrapper.classList.contains('has-icon')).toBe(true);\n expect(btnWrapper.classList.contains('has-options')).toBe(false);\n expect(changeSpy).toHaveReceivedEventDetail({\n active: true,\n value: 'my-pill-value',\n values: [{ display: 'My pill', value: 'my-pill-value' }],\n });\n\n await pill.click();\n await page.waitForChanges();\n\n expect(pill).not.toHaveAttribute('active');\n expect(await closeBtn.isVisible()).toBe(false);\n expect(btnWrapper.classList.contains('has-icon')).toBe(false);\n expect(btnWrapper.classList.contains('has-options')).toBe(false);\n expect(changeSpy).toHaveReceivedEventDetail({\n active: false,\n value: 'my-pill-value',\n values: [],\n });\n });\n });\n\n describe('when options are provided', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n pill = await page.find('q2-pill');\n allOptions = await page.findAll('q2-option');\n optionList = await page.find('q2-pill >>> q2-option-list');\n popover = await page.find('q2-pill >>> q2-popover');\n optionContainer = await page.find('q2-pill >>> q2-option-list >>> .options');\n controlBtn = await page.find('q2-pill >>> .btn-primary');\n changeSpy = await pill.spyOnEvent('change');\n });\n\n it('can select options via mouse', async () => {\n let closeBtn = await page.find('q2-pill >>> .btn-close');\n let closeIcon = await page.find('q2-pill >>> q2-icon');\n const btnWrapper = await page.find('q2-pill >>> .btn-wrapper');\n\n expect(pill).not.toHaveAttribute('active');\n expect(await closeBtn.isVisible()).toBe(true);\n expect(closeIcon).toEqualAttribute('type', 'chevron-down');\n expect(btnWrapper.classList.contains('has-icon')).toBe(true);\n expect(btnWrapper.classList.contains('has-options')).toBe(true);\n expect(popover).not.toHaveAttribute('open');\n expect(closeBtn.tagName).toEqual('DIV');\n\n await pill.click();\n await page.waitForChanges();\n\n expect(pill).not.toHaveAttribute('active');\n expect(pill).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedTagName(page)).toEqual('Q2-PILL');\n\n await allOptions[1].click();\n await page.waitForChanges();\n\n expect(changeSpy).toHaveReceivedEventDetail({\n active: true,\n value: '2',\n values: [{ display: 'Option 2', value: '2' }],\n });\n expect(await optionList.getProperty('selectedOptions')).toEqual([{ display: 'Option 2', value: '2' }]);\n\n closeBtn = await page.find('q2-pill >>> .btn-close');\n closeIcon = await page.find('q2-pill >>> q2-icon');\n\n expect(closeBtn.tagName).toEqual('BUTTON');\n expect(closeIcon).toEqualAttribute('type', 'close');\n\n await closeBtn.click();\n await page.waitForChanges();\n\n expect(pill).not.toHaveAttribute('active');\n expect(changeSpy).toHaveReceivedEventDetail({\n active: false,\n value: null,\n values: [],\n });\n expect(await optionList.getProperty('selectedOptions')).toEqual([]);\n });\n describe('when multiple', () => {\n it('can select multiple options via mouse', async () => {\n pill.setProperty('multiple', true);\n await page.waitForChanges();\n\n let closeBtn = await page.find('q2-pill >>> .btn-close');\n let closeIcon = await page.find('q2-pill >>> q2-icon');\n const btnWrapper = await page.find('q2-pill >>> .btn-wrapper');\n\n expect(pill).not.toHaveAttribute('active');\n expect(await closeBtn.isVisible()).toBe(true);\n expect(closeIcon).toEqualAttribute('type', 'chevron-down');\n expect(btnWrapper.classList.contains('has-icon')).toBe(true);\n expect(btnWrapper.classList.contains('has-options')).toBe(true);\n expect(popover).not.toHaveAttribute('open');\n expect(closeBtn.tagName).toEqual('DIV');\n\n await pill.click();\n await page.waitForChanges();\n\n expect(pill).not.toHaveAttribute('active');\n expect(pill).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedTagName(page)).toEqual('Q2-PILL');\n\n await allOptions[1].click();\n await page.waitForChanges();\n\n expect(pill).toHaveAttribute('active');\n expect(pill).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(changeSpy).toHaveReceivedEventDetail({\n active: true,\n values: [{ display: 'Option 2', value: '2' }],\n });\n expect(await optionList.getProperty('selectedOptions')).toEqual([\n { display: 'Option 2', value: '2' },\n ]);\n\n closeBtn = await page.find('q2-pill >>> .btn-close');\n closeIcon = await page.find('q2-pill >>> q2-icon');\n\n expect(closeBtn.tagName).toEqual('BUTTON');\n expect(closeIcon).toEqualAttribute('type', 'close');\n\n await allOptions[2].click();\n await page.waitForChanges();\n\n expect(changeSpy).toHaveReceivedEventDetail({\n active: true,\n values: [\n { display: 'Option 2', value: '2' },\n { display: 'Option 3', value: '3' },\n ],\n });\n expect(await optionList.getProperty('selectedOptions')).toEqual([\n { display: 'Option 2', value: '2' },\n { display: 'Option 3', value: '3' },\n ]);\n\n expect(pill).toHaveAttribute('active');\n expect(pill).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n\n await btnWrapper.click();\n await page.waitForChanges();\n\n expect(pill).toHaveAttribute('active');\n expect(pill).not.toHaveAttribute('open');\n expect(popover).not.toHaveAttribute('open');\n\n await closeBtn.click();\n await page.waitForChanges();\n\n expect(pill).not.toHaveAttribute('active');\n expect(changeSpy).toHaveReceivedEventDetail({\n active: false,\n value: null,\n values: [],\n });\n expect(await optionList.getProperty('selectedOptions')).toEqual([]);\n });\n });\n });\n });\n\n describe('Focus', () => {\n let page: E2EPage;\n let pill: E2EElement;\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" value=\"my-pill-value\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n pill = await page.find('q2-pill');\n });\n\n it('focuses the <button> element when focus event is dispatched', async function (): Promise<void> {\n pill.triggerEvent('focus');\n await page.waitForChanges();\n\n expect(await getFocusedAttribute(page, 'test-id')).toEqual('btn-control');\n });\n });\n\n describe('Slot content', () => {\n describe('popover-top', () => {\n it('renders the provided content in the popover-top slot', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" value=\"my-pill-value\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n <div slot='popover-top'>Popover Slot Top</div>\n </q2-pill>\n `,\n });\n const slotContainer = await page.find('q2-pill >>> .popover-top-container');\n const slotData = await page.$eval('q2-pill', element => {\n const nodes = element.shadowRoot\n .querySelector<HTMLSlotElement>('slot[name=\"popover-top\"]')\n .assignedElements();\n return {\n childCount: nodes.length,\n slot: nodes[0].getAttribute('slot'),\n text: nodes[0].textContent,\n };\n });\n expect(slotContainer).not.toHaveAttribute('hidden');\n expect(slotData.childCount).toEqual(1);\n expect(slotData.slot).toEqual('popover-top');\n expect(slotData.text).toEqual('Popover Slot Top');\n });\n it('hides the container if no content provided', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" value=\"my-pill-value\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n const slotContainer = await page.find('q2-pill >>> .popover-top-container');\n expect(slotContainer).toHaveAttribute('hidden');\n });\n });\n describe('popover-bottom', () => {\n it('renders the provided content in the popover-bottom slot', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" value=\"my-pill-value\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n <div slot='popover-bottom'>Popover Slot Bottom</div>\n </q2-pill>\n `,\n });\n const slotContainer = await page.find('q2-pill >>> .popover-bottom-container');\n const slotData = await page.$eval('q2-pill', element => {\n const nodes = element.shadowRoot\n .querySelector<HTMLSlotElement>('slot[name=\"popover-bottom\"]')\n .assignedElements();\n return {\n childCount: nodes.length,\n slot: nodes[0].getAttribute('slot'),\n text: nodes[0].textContent,\n };\n });\n expect(slotContainer).not.toHaveAttribute('hidden');\n expect(slotData.childCount).toEqual(1);\n expect(slotData.slot).toEqual('popover-bottom');\n expect(slotData.text).toEqual('Popover Slot Bottom');\n });\n it('hides the container if no content provided', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" value=\"my-pill-value\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n const slotContainer = await page.find('q2-pill >>> .popover-bottom-container');\n expect(slotContainer).toHaveAttribute('hidden');\n });\n });\n });\n\n describe('Mutation Observer', () => {\n describe('Popover Slots', () => {\n it('updates the component when popover-top slot is added', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" value=\"my-pill-value\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n const slotContainer = await page.find('q2-pill >>> .popover-top-container');\n expect(slotContainer).toHaveAttribute('hidden');\n\n await page.evaluate(() => {\n const slot = document.createElement('div');\n slot.setAttribute('slot', 'popover-top');\n slot.textContent = 'Popover Slot Top';\n document.querySelector('q2-pill').appendChild(slot);\n });\n await page.waitForChanges();\n\n expect(slotContainer).not.toHaveAttribute('hidden');\n });\n it('updates the component when popover-bottom slot is added', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" value=\"my-pill-value\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n const slotContainer = await page.find('q2-pill >>> .popover-bottom-container');\n expect(slotContainer).toHaveAttribute('hidden');\n\n await page.evaluate(() => {\n const slot = document.createElement('div');\n slot.setAttribute('slot', 'popover-bottom');\n slot.textContent = 'Popover Slot Bottom';\n document.querySelector('q2-pill').appendChild(slot);\n });\n await page.waitForChanges();\n\n expect(slotContainer).not.toHaveAttribute('hidden');\n });\n });\n describe('Option Count', () => {\n it('updates the option count when options are added', async () => {\n page = await setup({ html: `` });\n await setTestStrings(page, {\n 'tecton.element.optionList.optionCount': 'This option list has {0} options.',\n });\n page.setContent(`\n <q2-pill label=\"My pill\" value=\"my-pill-value\">\n <q2-option value=\"1\">Option 1</q2-option>\n </q2-pill>`);\n await page.waitForChanges();\n pill = await page.find('q2-pill');\n const optionDescription = await page.find('q2-pill >>> #option-description');\n expect(optionDescription).toEqualText('This option list has 1 options.');\n\n await page.evaluate(() => {\n const option = document.createElement('q2-option');\n option.setAttribute('value', '2');\n option.textContent = 'Option 2';\n document.querySelector('q2-pill').appendChild(option);\n });\n await page.waitForChanges();\n\n const updatedOptionDescription = await page.find('q2-pill >>> #option-description');\n expect(updatedOptionDescription).toEqualText('This option list has 2 options.');\n });\n it('updates the option count when options are removed', async () => {\n page = await setup({ html: `` });\n await setTestStrings(page, {\n 'tecton.element.optionList.optionCount': 'This option list has {0} options.',\n });\n page.setContent(`\n <q2-pill label=\"My pill\" value=\"my-pill-value\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n </q2-pill>`);\n await page.waitForChanges();\n pill = await page.find('q2-pill');\n const optionDescription = await page.find('q2-pill >>> #option-description');\n expect(optionDescription).toEqualText('This option list has 2 options.');\n\n await page.evaluate(() => {\n const option = document.querySelector('q2-option');\n document.querySelector('q2-pill').removeChild(option);\n });\n await page.waitForChanges();\n\n const updatedOptionDescription = await page.find('q2-pill >>> #option-description');\n expect(updatedOptionDescription).toEqualText('This option list has 1 options.');\n });\n });\n });\n\n describe('Regressions', () => {\n describe('TCT-2161', () => {\n it('leaves the element when Tab is pressed', async function (): Promise<void> {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n <button test-id=\"btn-next\">Test</button>\n `,\n });\n pill = await page.find('q2-pill');\n await pill.focus();\n\n expect(await getActiveElementTestId(page)).toEqual('btn-control');\n\n await pill.press('Tab');\n await page.waitForChanges();\n\n expect(await getActiveElementTestId(page)).toEqual('btn-next');\n });\n });\n describe('TCT-2433', () => {\n it('zero is not rendered inside the click-elsewhere element', async () => {\n page = await setup({\n html: `<q2-pill label=\"My Pill\"></q2-pill>`,\n });\n pill = await page.find('q2-pill');\n const clickElsewhere = await page.find('q2-pill >>> click-elsewhere');\n expect(await pill.getProperty('label')).toBe('My Pill');\n expect(clickElsewhere.textContent.slice(-1)).not.toBe('0');\n });\n });\n });\n\n describe('Accessibility', () => {\n describe('aXe DevTools', () => {\n it('does not have accessibility violations with only label', async () => {\n page = await setup({ html: `<q2-pill label=\"My pill\"></q2-pill>` });\n const hasViolations = await evaluateA11y(page);\n expect(hasViolations).toBe(false);\n });\n\n it('does not have accessibility violations when options are present', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n const hasViolations = await evaluateA11y(page);\n expect(hasViolations).toBe(false);\n });\n\n it(\"option-list should have a role of 'listbox' and the options a role of 'option'\", async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" open>\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n await page.waitForChanges();\n\n const snapshot = await page.accessibility.snapshot();\n const button = snapshot.children[0].children[0];\n const optionList = snapshot.children[1];\n\n expect(button.role).toEqual('combobox');\n expect(optionList.role).toEqual('listbox');\n expect(optionList.children).toHaveLength(3);\n optionList.children.forEach(child => {\n expect(child.role).toEqual('option');\n expect(child.name).toBeTruthy();\n });\n });\n });\n describe('Accessibility Tree', () => {});\n describe('Keyboard Controls', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n pill = await page.find('q2-pill');\n allOptions = await page.findAll('q2-option');\n optionList = await page.find('q2-pill >>> q2-option-list');\n popover = await page.find('q2-pill >>> q2-popover');\n optionContainer = await page.find('q2-pill >>> q2-option-list >>> .options');\n controlBtn = await page.find('q2-pill >>> .btn-primary');\n changeSpy = await pill.spyOnEvent('change');\n });\n\n describe('pill button interactions', () => {\n it('opens list and focuses first option on ArrowDown', async () => {\n await controlBtn.press('ArrowDown');\n await page.waitForChanges();\n\n expect(popover).toHaveAttribute('open');\n expect(pill).toHaveAttribute('open');\n expect(await getFocusedAttribute(page, 'value')).toEqual('1');\n });\n\n it('opens list and focuses last option on ArrowUp', async () => {\n await controlBtn.press('ArrowUp');\n await page.waitForChanges();\n\n expect(popover).toHaveAttribute('open');\n expect(pill).toHaveAttribute('open');\n expect(await getFocusedAttribute(page, 'value')).toEqual('3');\n });\n\n it('opens list and does not focus first option on Enter', async () => {\n await controlBtn.press('Enter');\n await page.waitForChanges();\n\n expect(popover).toHaveAttribute('open');\n expect(pill).toHaveAttribute('open');\n expect(await getActiveElementTestId(page)).toEqual('btn-control');\n });\n\n it('opens list and does not focus first option on Space', async () => {\n await controlBtn.press(' ');\n await page.waitForChanges();\n\n expect(popover).toHaveAttribute('open');\n expect(pill).toHaveAttribute('open');\n expect(await getActiveElementTestId(page)).toEqual('btn-control');\n });\n\n it('opens list and focuses last option on Home', async () => {\n await controlBtn.press('Home');\n await page.waitForChanges();\n\n expect(popover).toHaveAttribute('open');\n expect(pill).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n });\n\n it('opens list and focuses last option on End', async () => {\n await controlBtn.press('End');\n await page.waitForChanges();\n\n expect(popover).toHaveAttribute('open');\n expect(pill).toHaveAttribute('open');\n expect(await getFocusedAttribute(page, 'value')).toEqual('3');\n });\n });\n describe('option list interactions', () => {\n it('can select options via keyboard', async () => {\n let closeBtn = await page.find('q2-pill >>> .btn-close');\n let closeIcon = await page.find('q2-pill >>> q2-icon');\n const btnWrapper = await page.find('q2-pill >>> .btn-wrapper');\n\n expect(pill).not.toHaveAttribute('active');\n expect(await closeBtn.isVisible()).toBe(true);\n expect(closeIcon).toEqualAttribute('type', 'chevron-down');\n expect(btnWrapper.classList.contains('has-icon')).toBe(true);\n expect(btnWrapper.classList.contains('has-options')).toBe(true);\n expect(popover).not.toHaveAttribute('open');\n expect(closeBtn.tagName).toEqual('DIV');\n\n await controlBtn.press('ArrowDown');\n await page.waitForChanges();\n\n expect(pill).not.toHaveAttribute('active');\n expect(pill).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n\n await optionContainer.press('ArrowDown');\n await page.waitForChanges();\n expect(await getFocusedOptionValue(page)).toEqual('2');\n await allOptions[1].press(' ');\n await page.waitForChanges();\n\n expect(pill).toHaveAttribute('active');\n expect(pill).not.toHaveAttribute('open');\n expect(popover).not.toHaveAttribute('open');\n expect(changeSpy).toHaveReceivedEventDetail({\n active: true,\n value: '2',\n values: [{ display: 'Option 2', value: '2' }],\n });\n expect(await optionList.getProperty('selectedOptions')).toEqual([\n { display: 'Option 2', value: '2' },\n ]);\n\n closeBtn = await page.find('q2-pill >>> .btn-close');\n closeIcon = await page.find('q2-pill >>> q2-icon');\n\n expect(closeBtn.tagName).toEqual('BUTTON');\n expect(closeIcon).toEqualAttribute('type', 'close');\n\n await closeBtn.press(' ');\n await page.waitForChanges();\n\n expect(pill).not.toHaveAttribute('active');\n expect(changeSpy).toHaveReceivedEventDetail({\n active: false,\n value: null,\n values: [],\n });\n expect(await optionList.getProperty('selectedOptions')).toEqual([]);\n });\n\n describe('when multiple', () => {\n it('can select multiple options via keyboard', async () => {\n pill.setProperty('multiple', true);\n await page.waitForChanges();\n\n let closeBtn = await page.find('q2-pill >>> .btn-close');\n let closeIcon = await page.find('q2-pill >>> q2-icon');\n const btnWrapper = await page.find('q2-pill >>> .btn-wrapper');\n\n expect(pill).not.toHaveAttribute('active');\n expect(await closeBtn.isVisible()).toBe(true);\n expect(closeIcon).toEqualAttribute('type', 'chevron-down');\n expect(btnWrapper.classList.contains('has-icon')).toBe(true);\n expect(btnWrapper.classList.contains('has-options')).toBe(true);\n expect(popover).not.toHaveAttribute('open');\n expect(closeBtn.tagName).toEqual('DIV');\n\n await controlBtn.press('ArrowDown');\n await page.waitForChanges();\n\n expect(pill).not.toHaveAttribute('active');\n expect(pill).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n\n await optionContainer.press('ArrowDown');\n await page.waitForChanges();\n expect(await getFocusedOptionValue(page)).toEqual('2');\n await allOptions[1].press(' ');\n await page.waitForChanges();\n\n expect(pill).toHaveAttribute('active');\n expect(pill).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(changeSpy).toHaveReceivedEventDetail({\n active: true,\n values: [{ display: 'Option 2', value: '2' }],\n });\n expect(await optionList.getProperty('selectedOptions')).toEqual([\n { display: 'Option 2', value: '2' },\n ]);\n\n closeBtn = await page.find('q2-pill >>> .btn-close');\n closeIcon = await page.find('q2-pill >>> q2-icon');\n\n expect(closeBtn.tagName).toEqual('BUTTON');\n expect(closeIcon).toEqualAttribute('type', 'close');\n\n await optionContainer.press('ArrowDown');\n await page.waitForChanges();\n expect(await getFocusedOptionValue(page)).toEqual('3');\n await allOptions[2].press(' ');\n await page.waitForChanges();\n\n expect(changeSpy).toHaveReceivedEventDetail({\n active: true,\n values: [\n { display: 'Option 2', value: '2' },\n { display: 'Option 3', value: '3' },\n ],\n });\n expect(await optionList.getProperty('selectedOptions')).toEqual([\n { display: 'Option 2', value: '2' },\n { display: 'Option 3', value: '3' },\n ]);\n\n expect(pill).toHaveAttribute('active');\n expect(pill).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n\n await btnWrapper.click();\n await page.waitForChanges();\n\n expect(pill).toHaveAttribute('active');\n expect(pill).not.toHaveAttribute('open');\n expect(optionList).not.toHaveAttribute('open');\n\n await closeBtn.click();\n await page.waitForChanges();\n\n expect(pill).not.toHaveAttribute('active');\n expect(changeSpy).toHaveReceivedEventDetail({\n active: false,\n value: null,\n values: [],\n });\n expect(await optionList.getProperty('selectedOptions')).toEqual([]);\n });\n });\n });\n });\n describe('Other', () => {});\n });\n});\n"]}
1
+ {"version":3,"file":"q2-pill-test.e2e.js","sourceRoot":"","sources":["../../../../src/components/q2-pill/test/q2-pill-test.e2e.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,YAAY,EACZ,KAAK,EACL,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,+BAA+B,EAC/B,cAAc,GACjB,MAAM,iBAAiB,CAAC;AAEzB,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACrB,IAAI,IAAa,CAAC;IAClB,IAAI,IAAgB,CAAC;IACrB,IAAI,OAAmB,CAAC;IACxB,IAAI,UAAwB,CAAC;IAC7B,IAAI,UAAsB,CAAC;IAC3B,IAAI,eAA2B,CAAC;IAChC,IAAI,UAAsB,CAAC;IAC3B,IAAI,SAAmB,CAAC;IAExB,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,+BAA+B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACnB,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,MAAM,aAAa,GAAG,KAAK,EACvB,MAAc,EACd,eAAwB,KAAK,EAC7B,wBAAiC,KAAK,EACtC,cAAuB,KAAK,EAC9B,EAAE;gBACA,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE;mCACS,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;;;;;qBAKzC;iBACJ,CAAC,CAAC;gBAEH,IAAI,qBAAqB,EAAE,CAAC;oBACxB,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;wBAC9B,MAAM,WAAW,GAA6B,WAAW;4BACrD,CAAC,CAAC;gCACI,IAAI,EAAE,QAAQ;gCACd,KAAK,EAAE,EAAE;gCACT,MAAM,EAAE,EAAE;6BACb;4BACH,CAAC,CAAC;gCACI,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;gCAC7C,IAAI,EAAE,SAAS;6BAClB,CAAC;wBACP,IAAe,CAAC,cAAc,CAAC,eAAe,GAAG,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC;oBAC9E,CAAC,EAAE,WAAW,CAAC,CAAC;gBACpB,CAAC;gBAED,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBACpD,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAClC,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBACzD,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAE5C,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBAC5C,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAE9D,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;oBACrB,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACJ,MAAM,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACnC,CAAC;gBACD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAChC,CAAC,CAAC;YAEF,QAAQ,CAAC,4CAA4C,EAAE,GAAG,EAAE;gBACxD,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;oBAC7C,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;oBACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;wBACpB,IAAe,CAAC,MAAM,GAAG;4BACtB,WAAW,EAAE,KAAK;4BAClB,eAAe,EAAE,IAAI;4BACrB,SAAS,EAAE,KAAK;4BAChB,kBAAkB,EAAE,IAAI;4BACxB,WAAW,EAAE,IAAI;yBACpB,CAAC;oBACN,CAAC,CAAC,CAAC;oBACH,MAAM,IAAI,CAAC,UAAU,CAAC;;;;;;yBAMjB,CAAC,CAAC;oBACP,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAClC,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC1D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;oBAC5D,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;oBACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;wBACpB,IAAe,CAAC,MAAM,GAAG;4BACtB,WAAW,EAAE,KAAK;4BAClB,eAAe,EAAE,IAAI;4BACrB,SAAS,EAAE,KAAK;4BAChB,kBAAkB,EAAE,IAAI;4BACxB,WAAW,EAAE,IAAI;yBACpB,CAAC;oBACN,CAAC,CAAC,CAAC;oBACH,MAAM,IAAI,CAAC,UAAU,CAAC;;;;;;qBAMrB,CAAC,CAAC;oBACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAClC,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;gBAClC,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;oBACpC,MAAM,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;oBAE1C,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBAExC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;oBACvD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;oBACrB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBAE5C,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;oBACjG,MAAM,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC;wBACxC,MAAM,EAAE,IAAI;wBACZ,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;qBAChD,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;gBACvB,QAAQ,CAAC,2DAA2D,EAAE,GAAG,EAAE;oBACvE,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;wBACpC,MAAM,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;wBAE1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;wBACvD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;wBACrB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;wBAE5B,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;wBAE5C,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC;4BACtD,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;yBACtC,CAAC,CAAC;wBACH,MAAM,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC;4BACxC,MAAM,EAAE,IAAI;4BACZ,KAAK,EAAE,GAAG;4BACV,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;yBAChD,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBAEH,QAAQ,CAAC,uDAAuD,EAAE,GAAG,EAAE;oBACnE,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;wBACtD,EAAE,CAAC,4BAA4B,MAAM,EAAE,EAAE,KAAK,IAAI,EAAE;4BAChD,MAAM,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;4BAExC,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC;gCACtD,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;6BACtC,CAAC,CAAC;4BACH,MAAM,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC;gCACxC,MAAM,EAAE,IAAI;gCACZ,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;6BAChD,CAAC,CAAC;wBACP,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;wBAC/E,MAAM,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;wBAE/C,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;wBACnD,MAAM,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC;4BACxC,MAAM,EAAE,KAAK;4BACb,KAAK,EAAE,EAAE;4BACT,MAAM,EAAE,EAAE;yBACb,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;gBAC/B,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;oBAC9B,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE;;;;;;yBAML;qBACJ,CAAC,CAAC;oBACH,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAClC,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;oBACxD,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAClE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,UAAU,CAAC,KAAK,IAAI,EAAE;oBAClB,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE;;;;;;yBAML;qBACJ,CAAC,CAAC;oBACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACtC,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;oBAC3E,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACrD,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC;wBACtD,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE;qBAC3C,CAAC,CAAC;oBAEH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;oBAC1E,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;gBACpD,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;oBAClF,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBAC/B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC;wBACtD,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE;qBAC1C,CAAC,CAAC;oBAEH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;oBAC1E,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;gBACnD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;YAC7B,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;gBAC/B,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;oBACxC,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE,qCAAqC;qBAC9C,CAAC,CAAC;oBACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;oBAC1E,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;oBACjF,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE;;;;;;yBAML;qBACJ,CAAC,CAAC;oBAEH,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAClC,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;oBACrF,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAErD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;oBAC1E,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;gBACpD,CAAC,CAAC,CAAC;gBAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;oBAC3B,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;wBAChC,IAAI,GAAG,MAAM,KAAK,CAAC;4BACf,IAAI,EAAE;;;;;;6BAML;yBACJ,CAAC,CAAC;wBACH,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBAClC,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;wBACrF,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;wBAC5B,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;oBAC5D,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;YACvB,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;gBAC/B,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;oBAC9C,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE,4DAA4D;qBACrE,CAAC,CAAC;oBACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;oBAC1E,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,gCAAgC,CAAC,CAAC;gBACrE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;oBACtC,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE,4EAA4E;qBACrF,CAAC,CAAC;oBACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;oBAC1E,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;oBAC9C,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,YAAY,EAAE,gCAAgC,CAAC,CAAC;gBACxF,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;oBACzC,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE,qCAAqC;qBAC9C,CAAC,CAAC;oBACH,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;oBACpE,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;gBACtD,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;oBAC1C,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE,EAAE;qBACX,CAAC,CAAC;oBACH,MAAM,cAAc,CAAC,IAAI,EAAE;wBACvB,oBAAoB,EAAE,cAAc;qBACvC,CAAC,CAAC;oBACH,IAAI,CAAC,UAAU,CAAC,gDAAgD,CAAC,CAAC;oBAClE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAClC,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;oBAEpE,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;oBAC1E,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;gBACnD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;YAC9B,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;gBAC/B,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;oBACjE,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE;;;;;;yBAML;qBACJ,CAAC,CAAC;oBACH,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAClC,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;oBAEpD,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAChE,MAAM,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAChE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;oBACzD,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE;;;;;;yBAML;qBACJ,CAAC,CAAC;oBACH,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;oBAEpD,MAAM,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAChE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;YAC9B,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;gBAC3D,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE;;;;;;yBAMD;iBACR,CAAC,CAAC;gBACH,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBAEpD,MAAM,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;YAC9B,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;gBAC/B,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;oBACjD,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE;;;;;;yBAML;qBACJ,CAAC,CAAC;oBACH,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAClC,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;oBAEpD,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;oBACnE,MAAM,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;gBACnE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;oBACzD,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE;;;;;;yBAML;qBACJ,CAAC,CAAC;oBACH,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;oBAEpD,MAAM,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACjE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;YAC9B,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;gBAC5B,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE;;;;;qBAKL;iBACJ,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAClC,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAEnE,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;gBAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAEpE,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;gBAC7C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACvE,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;gBACnC,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE;;;;;qBAKL;iBACJ,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAClC,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;YACxB,IAAI,IAAa,CAAC;YAClB,UAAU,CAAC,KAAK,IAAI,EAAE;gBAClB,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE;;;;;;iBAMT;iBACA,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK;gBACnD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,CAAC,EAAE;oBAC5D,OAAO,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;gBACxE,CAAC,CAAC,CAAC;gBACH,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACvB,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;YAC5B,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;gBAC/C,UAAU,CAAC,KAAK,IAAI,EAAE;oBAClB,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE;;;;;;yBAML;qBACJ,CAAC,CAAC;oBACH,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAClC,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;gBACxD,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;oBACxF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;oBACvD,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;oBAC7C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,MAAM,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;gBACxF,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;oBAC7E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;oBACrD,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;oBAC9D,cAAc,CAAC,WAAW,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;oBACrD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBAC7D,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;gBACnD,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;oBACvF,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE;;;;;;yBAML;qBACJ,CAAC,CAAC;oBACH,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAClC,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;oBACpD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;oBACvD,MAAM,CAAC,WAAW,GAAG,aAAa,CAAC;oBACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,MAAM,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;gBACxF,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;oBACjF,IAAI,GAAG,MAAM,KAAK,CAAC;wBACf,IAAI,EAAE;;;;yBAIL;qBACJ,CAAC,CAAC;oBACH,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAClC,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;oBACpD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;oBACrD,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;oBAC9D,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC7E,cAAc,CAAC,WAAW,GAAG,aAAa,CAAC;oBAC3C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;oBACzD,MAAM,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;gBACxF,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACrB,UAAU,CAAC,KAAK,IAAI,EAAE;YAClB,IAAI,GAAG,MAAM,KAAK,CAAC;gBACf,IAAI,EAAE;;;;;;iBAML;aACJ,CAAC,CAAC;YACH,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YACrC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YACrC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAErC,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YACtC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;YACxB,EAAE,CAAC,2FAA2F,EAAE,KAAK,IAAI,EAAE;gBACvG,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACjD,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;gBACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBACzC,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;oBACvC,KAAK,EAAE,GAAG;oBACV,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;oBAC7C,MAAM,EAAE,IAAI;iBACf,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;oBACnF,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;oBACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACjD,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;oBAC9C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBACzC,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;wBACvC,MAAM,EAAE;4BACJ,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;4BACnC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;yBACtC;wBACD,MAAM,EAAE,IAAI;qBACf,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;oBACpD,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;oBACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACjD,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;oBACvE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBACrC,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC;wBACvC,MAAM,EAAE;4BACJ,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;4BACnC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;yBACtC;wBACD,MAAM,EAAE,IAAI;qBACf,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACnB,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;YAC1C,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;gBACrC,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE,2DAA2D;iBACpE,CAAC,CAAC;gBACH,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAClC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBAC3D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBACzD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAC/D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAElD,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;gBAC3C,MAAM,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC/C,MAAM,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBACpD,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9D,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAEjE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;gBACnB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;gBACvC,MAAM,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9C,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7D,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjE,MAAM,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC;oBACxC,MAAM,EAAE,IAAI;oBACZ,KAAK,EAAE,eAAe;oBACtB,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;iBAC3D,CAAC,CAAC;gBAEH,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;gBACnB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;gBAC3C,MAAM,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC/C,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9D,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjE,MAAM,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC;oBACxC,MAAM,EAAE,KAAK;oBACb,KAAK,EAAE,eAAe;oBACtB,MAAM,EAAE,EAAE;iBACb,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACvC,UAAU,CAAC,KAAK,IAAI,EAAE;gBAClB,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE;;;;;;iBAMT;iBACA,CAAC,CAAC;gBACH,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAClC,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBAC7C,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;gBAC3D,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBACpD,eAAe,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;gBAC7E,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBACzD,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;gBAC1C,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBACzD,IAAI,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBACvD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBAE/D,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;gBAC3C,MAAM,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9C,MAAM,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;gBAC3D,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7D,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBAC5C,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAExC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;gBACnB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;gBAC3C,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBACrC,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBACxC,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAEzD,MAAM,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;gBAC5B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC;oBACxC,MAAM,EAAE,IAAI;oBACZ,KAAK,EAAE,GAAG;oBACV,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;iBAChD,CAAC,CAAC;gBACH,MAAM,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBAEvG,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBACrD,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBAEnD,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAEpD,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACvB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;gBAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC;oBACxC,MAAM,EAAE,KAAK;oBACb,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,EAAE;iBACb,CAAC,CAAC;gBACH,MAAM,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC3B,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;oBACnD,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;oBACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;oBACzD,IAAI,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;oBACvD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;oBAE/D,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;oBAC3C,MAAM,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC9C,MAAM,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;oBAC3D,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC7D,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAChE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBAC5C,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAExC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;oBACnB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;oBAC3C,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBACrC,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBACxC,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBAEzD,MAAM,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;oBAC5B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;oBACvC,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBACrC,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBACxC,MAAM,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC;wBACxC,MAAM,EAAE,IAAI;wBACZ,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;qBAChD,CAAC,CAAC;oBACH,MAAM,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC;wBAC5D,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;qBACtC,CAAC,CAAC;oBAEH,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;oBACrD,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;oBAEnD,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;oBAEpD,MAAM,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;oBAC5B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC;wBACxC,MAAM,EAAE,IAAI;wBACZ,MAAM,EAAE;4BACJ,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;4BACnC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;yBACtC;qBACJ,CAAC,CAAC;oBACH,MAAM,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC;wBAC5D,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;wBACnC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;qBACtC,CAAC,CAAC;oBAEH,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;oBACvC,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBACrC,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBAExC,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;oBACzB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;oBACvC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBACzC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBAE5C,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;oBACvB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;oBAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC;wBACxC,MAAM,EAAE,KAAK;wBACb,KAAK,EAAE,IAAI;wBACX,MAAM,EAAE,EAAE;qBACb,CAAC,CAAC;oBACH,MAAM,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACnB,IAAI,IAAa,CAAC;QAClB,IAAI,IAAgB,CAAC;QACrB,UAAU,CAAC,KAAK,IAAI,EAAE;YAClB,IAAI,GAAG,MAAM,KAAK,CAAC;gBACf,IAAI,EAAE;;;;;;qBAMD;aACR,CAAC,CAAC;YACH,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK;YACnE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAC3B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,MAAM,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC1B,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;YACzB,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;gBAClE,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE;;;;;;;qBAOL;iBACJ,CAAC,CAAC;gBACH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;gBAC5E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE;oBACnD,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU;yBAC3B,aAAa,CAAkB,0BAA0B,CAAC;yBAC1D,gBAAgB,EAAE,CAAC;oBACxB,OAAO;wBACH,UAAU,EAAE,KAAK,CAAC,MAAM;wBACxB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;wBACnC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW;qBAC7B,CAAC;gBACN,CAAC,CAAC,CAAC;gBACH,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;gBACpD,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACvC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBAC7C,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;gBACxD,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE;;;;;;qBAML;iBACJ,CAAC,CAAC;gBACH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;gBAC5E,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;YAC5B,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;gBACrE,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE;;;;;;;qBAOL;iBACJ,CAAC,CAAC;gBACH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;gBAC/E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE;oBACnD,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU;yBAC3B,aAAa,CAAkB,6BAA6B,CAAC;yBAC7D,gBAAgB,EAAE,CAAC;oBACxB,OAAO;wBACH,UAAU,EAAE,KAAK,CAAC,MAAM;wBACxB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;wBACnC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW;qBAC7B,CAAC;gBACN,CAAC,CAAC,CAAC;gBACH,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;gBACpD,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACvC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBAChD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;gBACxD,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE;;;;;;qBAML;iBACJ,CAAC,CAAC;gBACH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;gBAC/E,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC/B,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;YAC3B,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;gBAClE,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE;;;;;;qBAML;iBACJ,CAAC,CAAC;gBACH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;gBAC5E,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;gBAEhD,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;oBACrB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;oBAC3C,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;oBACzC,IAAI,CAAC,WAAW,GAAG,kBAAkB,CAAC;oBACtC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACxD,CAAC,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;gBACrE,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE;;;;;;qBAML;iBACJ,CAAC,CAAC;gBACH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;gBAC/E,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;gBAEhD,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;oBACrB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;oBAC3C,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;oBAC5C,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC;oBACzC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACxD,CAAC,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;YAC1B,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;gBAC7D,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBACjC,MAAM,cAAc,CAAC,IAAI,EAAE;oBACvB,uCAAuC,EAAE,mCAAmC;iBAC/E,CAAC,CAAC;gBACH,IAAI,CAAC,UAAU,CAAC;;;+BAGD,CAAC,CAAC;gBACjB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAClC,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;gBAC7E,MAAM,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,iCAAiC,CAAC,CAAC;gBAEzE,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;oBACrB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;oBACnD,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBAClC,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC;oBAChC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC1D,CAAC,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,wBAAwB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;gBACpF,MAAM,CAAC,wBAAwB,CAAC,CAAC,WAAW,CAAC,iCAAiC,CAAC,CAAC;YACpF,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;gBAC/D,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBACjC,MAAM,cAAc,CAAC,IAAI,EAAE;oBACvB,uCAAuC,EAAE,mCAAmC;iBAC/E,CAAC,CAAC;gBACH,IAAI,CAAC,UAAU,CAAC;;;;+BAID,CAAC,CAAC;gBACjB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAClC,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;gBAC7E,MAAM,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,iCAAiC,CAAC,CAAC;gBAEzE,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;oBACrB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;oBACnD,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC1D,CAAC,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,wBAAwB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;gBACpF,MAAM,CAAC,wBAAwB,CAAC,CAAC,WAAW,CAAC,iCAAiC,CAAC,CAAC;YACpF,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QACzB,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;YACtB,EAAE,CAAC,wCAAwC,EAAE,KAAK;gBAC9C,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE;;;;;;;yBAOD;iBACR,CAAC,CAAC;gBACH,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAClC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;gBAEnB,MAAM,CAAC,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBAElE,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACxB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,CAAC,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;YACtB,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;gBACrE,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE,qCAAqC;iBAC9C,CAAC,CAAC;gBACH,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAClC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBACtE,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACxD,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;YAC1B,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;gBACpE,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,qCAAqC,EAAE,CAAC,CAAC;gBACpE,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC/C,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;gBAC7E,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE;;;;;;qBAML;iBACJ,CAAC,CAAC;gBACH,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC/C,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;gBAC5F,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE;;;;;;qBAML;iBACJ,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;gBACrD,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAChD,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAExC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBACxC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAC3C,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAC5C,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBAChC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBACrC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;gBACpC,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACzC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;YAC/B,UAAU,CAAC,KAAK,IAAI,EAAE;gBAClB,IAAI,GAAG,MAAM,KAAK,CAAC;oBACf,IAAI,EAAE;;;;;;qBAML;iBACJ,CAAC,CAAC;gBACH,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAClC,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBAC7C,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;gBAC3D,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBACpD,eAAe,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;gBAC7E,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBACzD,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;gBACtC,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;oBAC9D,MAAM,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBACpC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBACxC,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBACrC,MAAM,CAAC,MAAM,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClE,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;oBAC3D,MAAM,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBAClC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBACxC,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBACrC,MAAM,CAAC,MAAM,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClE,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;oBACjE,MAAM,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAChC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBACxC,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBACrC,MAAM,CAAC,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBACtE,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;oBACjE,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBACxC,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBACrC,MAAM,CAAC,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBACtE,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;oBACxD,MAAM,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAC/B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBACxC,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBACrC,MAAM,CAAC,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;oBACvD,MAAM,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC9B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBACxC,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBACrC,MAAM,CAAC,MAAM,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;gBACtC,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;oBAC7C,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;oBACzD,IAAI,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;oBACvD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;oBAE/D,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;oBAC3C,MAAM,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC9C,MAAM,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;oBAC3D,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC7D,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAChE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBAC5C,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAExC,MAAM,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBACpC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;oBAC3C,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBACrC,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBACxC,MAAM,CAAC,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAEvD,MAAM,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBACzC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,MAAM,CAAC,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACvD,MAAM,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC/B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;oBACvC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBACzC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBAC5C,MAAM,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC;wBACxC,MAAM,EAAE,IAAI;wBACZ,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;qBAChD,CAAC,CAAC;oBACH,MAAM,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC;wBAC5D,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;qBACtC,CAAC,CAAC;oBAEH,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;oBACrD,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;oBAEnD,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;oBAEpD,MAAM,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAE5B,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;oBAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC;wBACxC,MAAM,EAAE,KAAK;wBACb,KAAK,EAAE,IAAI;wBACX,MAAM,EAAE,EAAE;qBACb,CAAC,CAAC;oBACH,MAAM,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxE,CAAC,CAAC,CAAC;gBAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;oBAC3B,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;wBACtD,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;wBACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;wBAE5B,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;wBACzD,IAAI,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;wBACvD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;wBAE/D,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;wBAC3C,MAAM,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC9C,MAAM,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;wBAC3D,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC7D,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAChE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;wBAC5C,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wBAExC,MAAM,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;wBACpC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;wBAE5B,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;wBAC3C,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;wBACrC,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;wBACxC,MAAM,CAAC,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;wBAEvD,MAAM,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;wBACzC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;wBAC5B,MAAM,CAAC,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;wBACvD,MAAM,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBAC/B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;wBAE5B,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;wBACvC,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;wBACrC,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;wBACxC,MAAM,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC;4BACxC,MAAM,EAAE,IAAI;4BACZ,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;yBAChD,CAAC,CAAC;wBACH,MAAM,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC;4BAC5D,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;yBACtC,CAAC,CAAC;wBAEH,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;wBACrD,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;wBAEnD,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;wBAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;wBAEpD,MAAM,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;wBACzC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;wBAC5B,MAAM,CAAC,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;wBACvD,MAAM,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBAC/B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;wBAE5B,MAAM,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC;4BACxC,MAAM,EAAE,IAAI;4BACZ,MAAM,EAAE;gCACJ,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;gCACnC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;6BACtC;yBACJ,CAAC,CAAC;wBACH,MAAM,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC;4BAC5D,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;4BACnC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;yBACtC,CAAC,CAAC;wBAEH,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;wBACvC,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;wBACrC,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;wBAExC,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;wBACzB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;wBAE5B,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;wBACvC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;wBACzC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;wBAE/C,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;wBACvB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;wBAE5B,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;wBAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC;4BACxC,MAAM,EAAE,KAAK;4BACb,KAAK,EAAE,IAAI;4BACX,MAAM,EAAE,EAAE;yBACb,CAAC,CAAC;wBACH,MAAM,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBACxE,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { E2EElement, E2EPage, EventSpy } from '@stencil/core/testing';\nimport { ActionSheetListCloseData } from 'q2-tecton-common/lib/utility/action-sheet';\nimport {\n evaluateA11y,\n setup,\n getFocusedAttribute,\n getFocusedTagName,\n getFocusedOptionValue,\n getActiveElementTestId,\n getListOfStyleCompilationIssues,\n setTestStrings,\n} from '@/utils/helpers';\n\ndescribe('q2-pill', () => {\n let page: E2EPage;\n let pill: E2EElement;\n let popover: E2EElement;\n let allOptions: E2EElement[];\n let optionList: E2EElement;\n let optionContainer: E2EElement;\n let controlBtn: E2EElement;\n let changeSpy: EventSpy;\n\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: `<q2-pill></q2-pill>` });\n expect(await getListOfStyleCompilationIssues(page, 'q2-pill')).toHaveLength(0);\n });\n\n describe('Props', () => {\n describe('hoist', () => {\n const runHoistSetup = async (\n action: string,\n hoistEnabled: boolean = false,\n defineShowActionSheet: boolean = false,\n isCancelled: boolean = false\n ) => {\n page = await setup({\n html: `\n <q2-pill ${hoistEnabled ? 'hoist' : ''} label=\"My pill\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n\n if (defineShowActionSheet) {\n await page.evaluate(isCancelled => {\n const returnValue: ActionSheetListCloseData = isCancelled\n ? {\n type: 'cancel',\n value: '',\n values: [],\n }\n : {\n value: '3',\n values: [{ display: 'Option 3', value: '3' }],\n type: 'confirm',\n };\n (this as Window).TectonElements.showActionSheet = async () => returnValue;\n }, isCancelled);\n }\n\n popover = await page.find('q2-pill >>> q2-popover');\n pill = await page.find('q2-pill');\n controlBtn = await page.find('q2-pill >>> .btn-primary');\n changeSpy = await pill.spyOnEvent('change');\n\n expect(popover).not.toHaveAttribute('open');\n expect(await pill.getProperty('selectedOptions')).toEqual([]);\n\n if (action === 'click') {\n await controlBtn.click();\n } else {\n await controlBtn.press(action);\n }\n await page.waitForChanges();\n };\n\n describe('when window.Tecton.useActionSheets is true', () => {\n it('defaults the hoist prop to true', async () => {\n page = await setup({ html: `` });\n await page.evaluate(() => {\n (this as Window).Tecton = {\n inMobileApp: false,\n useActionSheets: true,\n noStrings: false,\n platformDimensions: null,\n platformUrl: null,\n };\n });\n await page.setContent(`\n <q2-pill label=\"My pill\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `);\n await page.waitForChanges();\n\n pill = await page.find('q2-pill');\n expect(await pill.getProperty('hoist')).toEqual(true);\n });\n\n it('sets hoist to false when manually set to false', async () => {\n page = await setup({ html: `` });\n await page.evaluate(() => {\n (this as Window).Tecton = {\n inMobileApp: false,\n useActionSheets: true,\n noStrings: false,\n platformDimensions: null,\n platformUrl: null,\n };\n });\n await page.setContent(`\n <q2-pill label=\"My pill\" hoist=\"false\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `);\n await page.waitForChanges();\n\n pill = await page.find('q2-pill');\n expect(await pill.getProperty('hoist')).toEqual(false);\n });\n });\n\n describe('when false (default)', () => {\n it('opens popover on click', async () => {\n await runHoistSetup('click', false, true);\n\n expect(popover).toHaveAttribute('open');\n\n const option = await page.find('q2-option[value=\"3\"]');\n await option.click();\n await page.waitForChanges();\n\n expect(popover).not.toHaveAttribute('open');\n\n expect(await pill.getProperty('selectedOptions')).toEqual([{ display: 'Option 3', value: '3' }]);\n expect(changeSpy).toHaveReceivedEventDetail({\n active: true,\n value: '3',\n values: [{ display: 'Option 3', value: '3' }],\n });\n });\n });\n\n describe('when true', () => {\n describe('when window.TectonElements.showActionSheet is not defined', () => {\n it('opens popover on click', async () => {\n await runHoistSetup('click', true, false);\n\n const option = await page.find('q2-option[value=\"3\"]');\n await option.click();\n await page.waitForChanges();\n\n expect(popover).not.toHaveAttribute('open');\n\n expect(await pill.getProperty('selectedOptions')).toEqual([\n { display: 'Option 3', value: '3' },\n ]);\n expect(changeSpy).toHaveReceivedEventDetail({\n active: true,\n value: '3',\n values: [{ display: 'Option 3', value: '3' }],\n });\n });\n });\n\n describe('when window.TectonElements.showActionSheet is defined', () => {\n ['click', 'ArrowDown', 'Space', 'Enter'].forEach(action => {\n it(`calls showActionSheet on ${action}`, async () => {\n await runHoistSetup(action, true, true);\n\n expect(await pill.getProperty('selectedOptions')).toEqual([\n { display: 'Option 3', value: '3' },\n ]);\n expect(changeSpy).toHaveReceivedEventDetail({\n active: true,\n value: '3',\n values: [{ display: 'Option 3', value: '3' }],\n });\n });\n });\n\n it(`calls showActionSheet on click and returns no data when cancelled`, async () => {\n await runHoistSetup('click', true, true, true);\n\n expect(await pill.getProperty('value')).toBeNull();\n expect(changeSpy).toHaveReceivedEventDetail({\n active: false,\n value: '',\n values: [],\n });\n });\n });\n });\n });\n\n describe('value', () => {\n describe('when not provided', () => {\n it('defaults to null', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\">\n <q2-option value=\"1\" display=\"First Option\">Option 1</q2-option>\n <q2-option value=\"2\" display=\"Second Option\">Option 2</q2-option>\n <q2-option value=\"3\" display=\"Third Option\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n pill = await page.find('q2-pill');\n expect(await pill.getProperty('value')).toBeUndefined();\n expect(await pill.getProperty('selectedOptions')).toEqual([]);\n });\n });\n\n describe('when provided', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" value=\"2\">\n <q2-option value=\"1\" display=\"First Option\">Option 1</q2-option>\n <q2-option value=\"2\" display=\"Second Option\">Option 2</q2-option>\n <q2-option value=\"3\" display=\"Third Option\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n await page.waitForChanges();\n pill = await page.find('q2-pill');\n });\n\n it('sets the pill text to the display prop of the matching option', async () => {\n expect(await pill.getProperty('value')).toEqual('2');\n expect(await pill.getProperty('selectedOptions')).toEqual([\n { value: '2', display: 'Second Option' },\n ]);\n\n const btnControl = await page.find('q2-pill >>> [test-id=\"btn-control\"]');\n expect(btnControl).toEqualText('Second Option');\n });\n\n it('updates the pill text to the display prop of the new matching option', async () => {\n pill.setProperty('value', '3');\n await page.waitForChanges();\n\n expect(await pill.getProperty('selectedOptions')).toEqual([\n { value: '3', display: 'Third Option' },\n ]);\n\n const btnControl = await page.find('q2-pill >>> [test-id=\"btn-control\"]');\n expect(btnControl).toEqualText('Third Option');\n });\n });\n });\n\n describe('selectedOptions', () => {\n describe('when not provided', () => {\n it('defaults to an empty array', async () => {\n page = await setup({\n html: `<q2-pill label=\"My pill\"></q2-pill>`,\n });\n const btnControl = await page.find('q2-pill >>> [test-id=\"btn-control\"]');\n expect(btnControl).toEqualText('My pill');\n });\n });\n\n describe('when provided', () => {\n it('uses the display attribute of the first option element as the label', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\">\n <q2-option value=\"1\" display=\"First Option\">Option 1</q2-option>\n <q2-option value=\"2\" display=\"Second Option\">Option 2</q2-option>\n <q2-option value=\"3\" display=\"Third Option\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n\n pill = await page.find('q2-pill');\n await pill.setProperty('selectedOptions', [{ display: 'Some display', value: '2' }]);\n await page.waitForChanges();\n\n expect(await pill.getProperty('value')).toEqual('2');\n\n const btnControl = await page.find('q2-pill >>> [test-id=\"btn-control\"]');\n expect(btnControl).toEqualText('Second Option');\n });\n\n describe('when multiple', () => {\n it('does not set value', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" multiple>\n <q2-option value=\"1\" display=\"First Option\">Option 1</q2-option>\n <q2-option value=\"2\" display=\"Second Option\">Option 2</q2-option>\n <q2-option value=\"3\" display=\"Third Option\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n pill = await page.find('q2-pill');\n await pill.setProperty('selectedOptions', [{ display: 'Some display', value: '2' }]);\n await page.waitForChanges();\n expect(await pill.getProperty('value')).toBeUndefined();\n });\n });\n });\n });\n\n describe('maxLength', () => {\n describe('when not provided', () => {\n it('does not truncate button content', async () => {\n page = await setup({\n html: `<q2-pill label=\"My pill with a super long name\"></q2-pill>`,\n });\n const btnControl = await page.find('q2-pill >>> [test-id=\"btn-control\"]');\n expect(btnControl).toEqualText('My pill with a super long name');\n });\n });\n\n describe('when provided', () => {\n it('truncates button content', async () => {\n page = await setup({\n html: `<q2-pill label=\"My pill with a super long name\" max-length=\"10\"></q2-pill>`,\n });\n const btnControl = await page.find('q2-pill >>> [test-id=\"btn-control\"]');\n expect(btnControl).toEqualText('My pill wi…');\n expect(btnControl).toEqualAttribute('aria-label', 'My pill with a super long name');\n });\n });\n });\n describe('label', () => {\n describe('when provided', () => {\n it('renders with provided label', async () => {\n page = await setup({\n html: `<q2-pill label=\"My pill\"></q2-pill>`,\n });\n controlBtn = await page.find('q2-pill >>> [test-id=\"btn-control\"]');\n expect(controlBtn).toEqualText('My pill');\n });\n });\n describe('when provided a custom label translation', () => {\n it('renders the translated value', async () => {\n page = await setup({\n html: ``,\n });\n await setTestStrings(page, {\n 'q2Pill.customLabel': 'Custom Label',\n });\n page.setContent(`<q2-pill label=\"q2Pill.customLabel\"></q2-pill>`);\n await page.waitForChanges();\n\n pill = await page.find('q2-pill');\n controlBtn = await page.find('q2-pill >>> [test-id=\"btn-control\"]');\n\n expect(await pill.getProperty('label')).toEqualText('q2Pill.customLabel');\n expect(controlBtn).toEqualText('Custom Label');\n });\n });\n });\n describe('popoverMinHeight', () => {\n describe('when not provided', () => {\n it('defaults to 150 and passes that value to q2-popover', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n pill = await page.find('q2-pill');\n popover = await page.find('q2-pill >>> q2-popover');\n\n expect(await pill.getProperty('popoverMinHeight')).toEqual(150);\n expect(await popover.getProperty('minHeight')).toEqual(150);\n });\n });\n describe('when provided', () => {\n it('passes the provided value to the q2-popover', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" popover-min-height=\"300\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n popover = await page.find('q2-pill >>> q2-popover');\n\n expect(await popover.getProperty('minHeight')).toEqual(300);\n });\n });\n });\n\n describe('popoverMaxHeight', () => {\n it('when provided, passes the value to q2-popover', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" popover-max-height=\"600\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n popover = await page.find('q2-pill >>> q2-popover');\n\n expect(await popover.getProperty('maxHeight')).toEqual(600);\n });\n });\n\n describe('popoverDirection', () => {\n describe('when not provided', () => {\n it('does not pass a value to q2-popover', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n pill = await page.find('q2-pill');\n popover = await page.find('q2-pill >>> q2-popover');\n\n expect(await pill.getProperty('popoverDirection')).toBeUndefined();\n expect(await popover.getProperty('direction')).toBeUndefined();\n });\n });\n describe('when provided', () => {\n it('passes the provided value to the q2-popover', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My tag\" popover-direction=\"up\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n popover = await page.find('q2-pill >>> q2-popover');\n\n expect(await popover.getProperty('direction')).toEqual('up');\n });\n });\n });\n describe('popoverAlingment', () => {\n it('can be mutated', async () => {\n page = await setup({\n html: `\n <q2-pill popover-alignment=\"left\">\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-pill>\n `,\n });\n await page.waitForChanges();\n pill = await page.find('q2-pill');\n expect(await pill.getProperty('popoverAlignment')).toEqual('left');\n\n pill.setProperty('popoverAlignment', 'right');\n await page.waitForChanges();\n\n expect(await pill.getProperty('popoverAlignment')).toEqual('right');\n\n pill.setProperty('popoverAlignment', 'left');\n await page.waitForChanges();\n\n expect(await pill.getProperty('popoverAlignment')).toEqual('left');\n });\n it('will default to right', async () => {\n page = await setup({\n html: `\n <q2-pill>\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-pill>\n `,\n });\n await page.waitForChanges();\n pill = await page.find('q2-pill');\n expect(await pill.getProperty('popoverAlignment')).toEqual('right');\n });\n });\n\n describe('borderless', () => {\n let page: E2EPage;\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" value=\"my-pill-value\" borderless>\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n });\n\n it('border style should be none when borderless', async function (): Promise<void> {\n const borderStyle = await page.$eval('q2-pill >>> button', el => {\n return window.getComputedStyle(el).getPropertyValue('border-style');\n });\n expect(borderStyle).toEqual('none');\n });\n });\n });\n\n describe('Listeners', () => {\n describe('displayChanged', () => {\n describe('when option display prop provided', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\">\n <q2-option value=\"1\" display=\"First Option\">Option 1</q2-option>\n <q2-option value=\"2\" display=\"Second Option\">Option 2</q2-option>\n <q2-option value=\"3\" display=\"Third Option\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n pill = await page.find('q2-pill');\n changeSpy = await pill.spyOnEvent('displayChanged');\n });\n it('should receive displayChanged event when display prop changed in q2-option', async () => {\n const option = await page.find('q2-option[value=\"1\"]');\n option.setProperty('display', 'New Display');\n await page.waitForChanges();\n expect(changeSpy).toHaveReceivedEventDetail({ display: 'New Display', value: '1' });\n });\n it('should update pill text of selected option to new display value', async () => {\n const button = await page.find('q2-pill >>> button');\n pill.setAttribute('value', '2');\n await page.waitForChanges();\n const selectedOption = await page.find('q2-option[selected]');\n selectedOption.setProperty('display', 'New Display');\n await page.waitForChanges();\n expect(button.textContent.trim()).toEqual('New Display');\n });\n });\n describe('when option display prop not provided', () => {\n it('should receive displayChanged event when textContent changed in q2-option', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n pill = await page.find('q2-pill');\n changeSpy = await pill.spyOnEvent('displayChanged');\n const option = await page.find('q2-option[value=\"1\"]');\n option.textContent = 'New Display';\n await page.waitForChanges();\n expect(changeSpy).toHaveReceivedEventDetail({ display: 'New Display', value: '1' });\n });\n it('should update pill text of selected option to new textContent value', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\">\n <q2-option value=\"2\">Option 2</q2-option>\n </q2-pill>\n `,\n });\n pill = await page.find('q2-pill');\n changeSpy = await pill.spyOnEvent('displayChanged');\n const button = await page.find('q2-pill >>> button');\n pill.setAttribute('value', '2');\n await page.waitForChanges();\n const selectedOption = await page.find('q2-option[selected]');\n expect(button.textContent.trim()).toEqual(selectedOption.textContent.trim());\n selectedOption.textContent = 'New Display';\n await page.waitForChanges();\n expect(button.textContent.trim()).toEqual('New Display');\n expect(changeSpy).toHaveReceivedEventDetail({ display: 'New Display', value: '2' });\n });\n });\n });\n });\n\n describe('Methods', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My Pill\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n pill = await page.find('q2-pill');\n });\n it('openPopover() opens the popover', async () => {\n await pill.callMethod('openPopover');\n await page.waitForChanges();\n\n expect(pill).toHaveAttribute('open');\n });\n\n it('closePopover() closes the popover', async () => {\n expect(pill).not.toHaveAttribute('open');\n await pill.callMethod('openPopover');\n await page.waitForChanges();\n\n expect(pill).toHaveAttribute('open');\n\n await pill.callMethod('closePopover');\n await page.waitForChanges();\n\n expect(pill).not.toHaveAttribute('open');\n });\n\n describe('setValue()', () => {\n it('opens the popover, clicks the option matching the provided value, and closes the popover ', async () => {\n const clickSpy = await pill.spyOnEvent('change');\n await pill.callMethod('setValue', '1');\n await page.waitForChanges();\n\n expect(pill).not.toHaveAttribute('open');\n expect(clickSpy).toHaveReceivedEventDetail({\n value: '1',\n values: [{ display: 'Option 1', value: '1' }],\n active: true,\n });\n });\n describe('when multiple', () => {\n it('opens the popover and selects the values matching the provided values', async () => {\n pill.setProperty('multiple', true);\n await page.waitForChanges();\n const clickSpy = await pill.spyOnEvent('change');\n await pill.callMethod('setValue', ['1', '3']);\n await page.waitForChanges();\n\n expect(pill).not.toHaveAttribute('open');\n expect(clickSpy).toHaveReceivedEventDetail({\n values: [\n { display: 'Option 1', value: '1' },\n { display: 'Option 3', value: '3' },\n ],\n active: true,\n });\n });\n it('keeps popover open when passed in args', async () => {\n pill.setProperty('multiple', true);\n await page.waitForChanges();\n const clickSpy = await pill.spyOnEvent('change');\n await pill.callMethod('setValue', ['1', '3'], { closePopover: false });\n await page.waitForChanges();\n\n expect(pill).toHaveAttribute('open');\n expect(clickSpy).toHaveReceivedEventDetail({\n values: [\n { display: 'Option 1', value: '1' },\n { display: 'Option 3', value: '3' },\n ],\n active: true,\n });\n });\n });\n });\n });\n\n describe('Click', () => {\n describe('when no options are provided', () => {\n it('toggles active on click', async () => {\n page = await setup({\n html: `<q2-pill label=\"My pill\" value=\"my-pill-value\"></q2-pill>`,\n });\n pill = await page.find('q2-pill');\n const closeBtn = await page.find('q2-pill >>> .btn-close');\n const closeIcon = await page.find('q2-pill >>> q2-icon');\n const btnWrapper = await page.find('q2-pill >>> .btn-wrapper');\n const changeSpy = await pill.spyOnEvent('change');\n\n expect(pill).not.toHaveAttribute('active');\n expect(await closeBtn.isVisible()).toBe(false);\n expect(closeIcon).toEqualAttribute('type', 'close');\n expect(btnWrapper.classList.contains('has-icon')).toBe(false);\n expect(btnWrapper.classList.contains('has-options')).toBe(false);\n\n await pill.click();\n await page.waitForChanges();\n\n expect(pill).toHaveAttribute('active');\n expect(await closeBtn.isVisible()).toBe(true);\n expect(btnWrapper.classList.contains('has-icon')).toBe(true);\n expect(btnWrapper.classList.contains('has-options')).toBe(false);\n expect(changeSpy).toHaveReceivedEventDetail({\n active: true,\n value: 'my-pill-value',\n values: [{ display: 'My pill', value: 'my-pill-value' }],\n });\n\n await pill.click();\n await page.waitForChanges();\n\n expect(pill).not.toHaveAttribute('active');\n expect(await closeBtn.isVisible()).toBe(false);\n expect(btnWrapper.classList.contains('has-icon')).toBe(false);\n expect(btnWrapper.classList.contains('has-options')).toBe(false);\n expect(changeSpy).toHaveReceivedEventDetail({\n active: false,\n value: 'my-pill-value',\n values: [],\n });\n });\n });\n\n describe('when options are provided', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n pill = await page.find('q2-pill');\n allOptions = await page.findAll('q2-option');\n optionList = await page.find('q2-pill >>> q2-option-list');\n popover = await page.find('q2-pill >>> q2-popover');\n optionContainer = await page.find('q2-pill >>> q2-option-list >>> .options');\n controlBtn = await page.find('q2-pill >>> .btn-primary');\n changeSpy = await pill.spyOnEvent('change');\n });\n\n it('can select options via mouse', async () => {\n let closeBtn = await page.find('q2-pill >>> .btn-close');\n let closeIcon = await page.find('q2-pill >>> q2-icon');\n const btnWrapper = await page.find('q2-pill >>> .btn-wrapper');\n\n expect(pill).not.toHaveAttribute('active');\n expect(await closeBtn.isVisible()).toBe(true);\n expect(closeIcon).toEqualAttribute('type', 'chevron-down');\n expect(btnWrapper.classList.contains('has-icon')).toBe(true);\n expect(btnWrapper.classList.contains('has-options')).toBe(true);\n expect(popover).not.toHaveAttribute('open');\n expect(closeBtn.tagName).toEqual('DIV');\n\n await pill.click();\n await page.waitForChanges();\n\n expect(pill).not.toHaveAttribute('active');\n expect(pill).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedTagName(page)).toEqual('Q2-PILL');\n\n await allOptions[1].click();\n await page.waitForChanges();\n\n expect(changeSpy).toHaveReceivedEventDetail({\n active: true,\n value: '2',\n values: [{ display: 'Option 2', value: '2' }],\n });\n expect(await optionList.getProperty('selectedOptions')).toEqual([{ display: 'Option 2', value: '2' }]);\n\n closeBtn = await page.find('q2-pill >>> .btn-close');\n closeIcon = await page.find('q2-pill >>> q2-icon');\n\n expect(closeBtn.tagName).toEqual('BUTTON');\n expect(closeIcon).toEqualAttribute('type', 'close');\n\n await closeBtn.click();\n await page.waitForChanges();\n\n expect(pill).not.toHaveAttribute('active');\n expect(changeSpy).toHaveReceivedEventDetail({\n active: false,\n value: null,\n values: [],\n });\n expect(await optionList.getProperty('selectedOptions')).toEqual([]);\n });\n describe('when multiple', () => {\n it('can select multiple options via mouse', async () => {\n pill.setProperty('multiple', true);\n await page.waitForChanges();\n\n let closeBtn = await page.find('q2-pill >>> .btn-close');\n let closeIcon = await page.find('q2-pill >>> q2-icon');\n const btnWrapper = await page.find('q2-pill >>> .btn-wrapper');\n\n expect(pill).not.toHaveAttribute('active');\n expect(await closeBtn.isVisible()).toBe(true);\n expect(closeIcon).toEqualAttribute('type', 'chevron-down');\n expect(btnWrapper.classList.contains('has-icon')).toBe(true);\n expect(btnWrapper.classList.contains('has-options')).toBe(true);\n expect(popover).not.toHaveAttribute('open');\n expect(closeBtn.tagName).toEqual('DIV');\n\n await pill.click();\n await page.waitForChanges();\n\n expect(pill).not.toHaveAttribute('active');\n expect(pill).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedTagName(page)).toEqual('Q2-PILL');\n\n await allOptions[1].click();\n await page.waitForChanges();\n\n expect(pill).toHaveAttribute('active');\n expect(pill).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(changeSpy).toHaveReceivedEventDetail({\n active: true,\n values: [{ display: 'Option 2', value: '2' }],\n });\n expect(await optionList.getProperty('selectedOptions')).toEqual([\n { display: 'Option 2', value: '2' },\n ]);\n\n closeBtn = await page.find('q2-pill >>> .btn-close');\n closeIcon = await page.find('q2-pill >>> q2-icon');\n\n expect(closeBtn.tagName).toEqual('BUTTON');\n expect(closeIcon).toEqualAttribute('type', 'close');\n\n await allOptions[2].click();\n await page.waitForChanges();\n\n expect(changeSpy).toHaveReceivedEventDetail({\n active: true,\n values: [\n { display: 'Option 2', value: '2' },\n { display: 'Option 3', value: '3' },\n ],\n });\n expect(await optionList.getProperty('selectedOptions')).toEqual([\n { display: 'Option 2', value: '2' },\n { display: 'Option 3', value: '3' },\n ]);\n\n expect(pill).toHaveAttribute('active');\n expect(pill).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n\n await btnWrapper.click();\n await page.waitForChanges();\n\n expect(pill).toHaveAttribute('active');\n expect(pill).not.toHaveAttribute('open');\n expect(popover).not.toHaveAttribute('open');\n\n await closeBtn.click();\n await page.waitForChanges();\n\n expect(pill).not.toHaveAttribute('active');\n expect(changeSpy).toHaveReceivedEventDetail({\n active: false,\n value: null,\n values: [],\n });\n expect(await optionList.getProperty('selectedOptions')).toEqual([]);\n });\n });\n });\n });\n\n describe('Focus', () => {\n let page: E2EPage;\n let pill: E2EElement;\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" value=\"my-pill-value\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n pill = await page.find('q2-pill');\n });\n\n it('focuses the <button> element when focus event is dispatched', async function (): Promise<void> {\n pill.triggerEvent('focus');\n await page.waitForChanges();\n\n expect(await getFocusedAttribute(page, 'test-id')).toEqual('btn-control');\n });\n });\n\n describe('Slot content', () => {\n describe('popover-top', () => {\n it('renders the provided content in the popover-top slot', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" value=\"my-pill-value\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n <div slot='popover-top'>Popover Slot Top</div>\n </q2-pill>\n `,\n });\n const slotContainer = await page.find('q2-pill >>> .popover-top-container');\n const slotData = await page.$eval('q2-pill', element => {\n const nodes = element.shadowRoot\n .querySelector<HTMLSlotElement>('slot[name=\"popover-top\"]')\n .assignedElements();\n return {\n childCount: nodes.length,\n slot: nodes[0].getAttribute('slot'),\n text: nodes[0].textContent,\n };\n });\n expect(slotContainer).not.toHaveAttribute('hidden');\n expect(slotData.childCount).toEqual(1);\n expect(slotData.slot).toEqual('popover-top');\n expect(slotData.text).toEqual('Popover Slot Top');\n });\n it('hides the container if no content provided', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" value=\"my-pill-value\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n const slotContainer = await page.find('q2-pill >>> .popover-top-container');\n expect(slotContainer).toHaveAttribute('hidden');\n });\n });\n describe('popover-bottom', () => {\n it('renders the provided content in the popover-bottom slot', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" value=\"my-pill-value\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n <div slot='popover-bottom'>Popover Slot Bottom</div>\n </q2-pill>\n `,\n });\n const slotContainer = await page.find('q2-pill >>> .popover-bottom-container');\n const slotData = await page.$eval('q2-pill', element => {\n const nodes = element.shadowRoot\n .querySelector<HTMLSlotElement>('slot[name=\"popover-bottom\"]')\n .assignedElements();\n return {\n childCount: nodes.length,\n slot: nodes[0].getAttribute('slot'),\n text: nodes[0].textContent,\n };\n });\n expect(slotContainer).not.toHaveAttribute('hidden');\n expect(slotData.childCount).toEqual(1);\n expect(slotData.slot).toEqual('popover-bottom');\n expect(slotData.text).toEqual('Popover Slot Bottom');\n });\n it('hides the container if no content provided', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" value=\"my-pill-value\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n const slotContainer = await page.find('q2-pill >>> .popover-bottom-container');\n expect(slotContainer).toHaveAttribute('hidden');\n });\n });\n });\n\n describe('Mutation Observer', () => {\n describe('Popover Slots', () => {\n it('updates the component when popover-top slot is added', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" value=\"my-pill-value\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n const slotContainer = await page.find('q2-pill >>> .popover-top-container');\n expect(slotContainer).toHaveAttribute('hidden');\n\n await page.evaluate(() => {\n const slot = document.createElement('div');\n slot.setAttribute('slot', 'popover-top');\n slot.textContent = 'Popover Slot Top';\n document.querySelector('q2-pill').appendChild(slot);\n });\n await page.waitForChanges();\n\n expect(slotContainer).not.toHaveAttribute('hidden');\n });\n it('updates the component when popover-bottom slot is added', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" value=\"my-pill-value\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n const slotContainer = await page.find('q2-pill >>> .popover-bottom-container');\n expect(slotContainer).toHaveAttribute('hidden');\n\n await page.evaluate(() => {\n const slot = document.createElement('div');\n slot.setAttribute('slot', 'popover-bottom');\n slot.textContent = 'Popover Slot Bottom';\n document.querySelector('q2-pill').appendChild(slot);\n });\n await page.waitForChanges();\n\n expect(slotContainer).not.toHaveAttribute('hidden');\n });\n });\n describe('Option Count', () => {\n it('updates the option count when options are added', async () => {\n page = await setup({ html: `` });\n await setTestStrings(page, {\n 'tecton.element.optionList.optionCount': 'This option list has {0} options.',\n });\n page.setContent(`\n <q2-pill label=\"My pill\" value=\"my-pill-value\">\n <q2-option value=\"1\">Option 1</q2-option>\n </q2-pill>`);\n await page.waitForChanges();\n pill = await page.find('q2-pill');\n const optionDescription = await page.find('q2-pill >>> #option-description');\n expect(optionDescription).toEqualText('This option list has 1 options.');\n\n await page.evaluate(() => {\n const option = document.createElement('q2-option');\n option.setAttribute('value', '2');\n option.textContent = 'Option 2';\n document.querySelector('q2-pill').appendChild(option);\n });\n await page.waitForChanges();\n\n const updatedOptionDescription = await page.find('q2-pill >>> #option-description');\n expect(updatedOptionDescription).toEqualText('This option list has 2 options.');\n });\n it('updates the option count when options are removed', async () => {\n page = await setup({ html: `` });\n await setTestStrings(page, {\n 'tecton.element.optionList.optionCount': 'This option list has {0} options.',\n });\n page.setContent(`\n <q2-pill label=\"My pill\" value=\"my-pill-value\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n </q2-pill>`);\n await page.waitForChanges();\n pill = await page.find('q2-pill');\n const optionDescription = await page.find('q2-pill >>> #option-description');\n expect(optionDescription).toEqualText('This option list has 2 options.');\n\n await page.evaluate(() => {\n const option = document.querySelector('q2-option');\n document.querySelector('q2-pill').removeChild(option);\n });\n await page.waitForChanges();\n\n const updatedOptionDescription = await page.find('q2-pill >>> #option-description');\n expect(updatedOptionDescription).toEqualText('This option list has 1 options.');\n });\n });\n });\n\n describe('Regressions', () => {\n describe('TCT-2161', () => {\n it('leaves the element when Tab is pressed', async function (): Promise<void> {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n <button test-id=\"btn-next\">Test</button>\n `,\n });\n pill = await page.find('q2-pill');\n await pill.focus();\n\n expect(await getActiveElementTestId(page)).toEqual('btn-control');\n\n await pill.press('Tab');\n await page.waitForChanges();\n\n expect(await getActiveElementTestId(page)).toEqual('btn-next');\n });\n });\n describe('TCT-2433', () => {\n it('zero is not rendered inside the click-elsewhere element', async () => {\n page = await setup({\n html: `<q2-pill label=\"My Pill\"></q2-pill>`,\n });\n pill = await page.find('q2-pill');\n const clickElsewhere = await page.find('q2-pill >>> click-elsewhere');\n expect(await pill.getProperty('label')).toBe('My Pill');\n expect(clickElsewhere.textContent.slice(-1)).not.toBe('0');\n });\n });\n });\n\n describe('Accessibility', () => {\n describe('aXe DevTools', () => {\n it('does not have accessibility violations with only label', async () => {\n page = await setup({ html: `<q2-pill label=\"My pill\"></q2-pill>` });\n const hasViolations = await evaluateA11y(page);\n expect(hasViolations).toBe(false);\n });\n\n it('does not have accessibility violations when options are present', async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n const hasViolations = await evaluateA11y(page);\n expect(hasViolations).toBe(false);\n });\n\n it(\"option-list should have a role of 'listbox' and the options a role of 'option'\", async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\" open>\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n await page.waitForChanges();\n\n const snapshot = await page.accessibility.snapshot();\n const button = snapshot.children[0].children[0];\n const optionList = snapshot.children[1];\n\n expect(button.role).toEqual('combobox');\n expect(optionList.role).toEqual('listbox');\n expect(optionList.children).toHaveLength(3);\n optionList.children.forEach(child => {\n expect(child.role).toEqual('option');\n expect(child.name).toBeTruthy();\n });\n });\n });\n describe('Accessibility Tree', () => {});\n describe('Keyboard Controls', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-pill label=\"My pill\">\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n </q2-pill>\n `,\n });\n pill = await page.find('q2-pill');\n allOptions = await page.findAll('q2-option');\n optionList = await page.find('q2-pill >>> q2-option-list');\n popover = await page.find('q2-pill >>> q2-popover');\n optionContainer = await page.find('q2-pill >>> q2-option-list >>> .options');\n controlBtn = await page.find('q2-pill >>> .btn-primary');\n changeSpy = await pill.spyOnEvent('change');\n });\n\n describe('pill button interactions', () => {\n it('opens list and focuses first option on ArrowDown', async () => {\n await controlBtn.press('ArrowDown');\n await page.waitForChanges();\n\n expect(popover).toHaveAttribute('open');\n expect(pill).toHaveAttribute('open');\n expect(await getFocusedAttribute(page, 'value')).toEqual('1');\n });\n\n it('opens list and focuses last option on ArrowUp', async () => {\n await controlBtn.press('ArrowUp');\n await page.waitForChanges();\n\n expect(popover).toHaveAttribute('open');\n expect(pill).toHaveAttribute('open');\n expect(await getFocusedAttribute(page, 'value')).toEqual('3');\n });\n\n it('opens list and does not focus first option on Enter', async () => {\n await controlBtn.press('Enter');\n await page.waitForChanges();\n\n expect(popover).toHaveAttribute('open');\n expect(pill).toHaveAttribute('open');\n expect(await getActiveElementTestId(page)).toEqual('btn-control');\n });\n\n it('opens list and does not focus first option on Space', async () => {\n await controlBtn.press(' ');\n await page.waitForChanges();\n\n expect(popover).toHaveAttribute('open');\n expect(pill).toHaveAttribute('open');\n expect(await getActiveElementTestId(page)).toEqual('btn-control');\n });\n\n it('opens list and focuses last option on Home', async () => {\n await controlBtn.press('Home');\n await page.waitForChanges();\n\n expect(popover).toHaveAttribute('open');\n expect(pill).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n });\n\n it('opens list and focuses last option on End', async () => {\n await controlBtn.press('End');\n await page.waitForChanges();\n\n expect(popover).toHaveAttribute('open');\n expect(pill).toHaveAttribute('open');\n expect(await getFocusedAttribute(page, 'value')).toEqual('3');\n });\n });\n describe('option list interactions', () => {\n it('can select options via keyboard', async () => {\n let closeBtn = await page.find('q2-pill >>> .btn-close');\n let closeIcon = await page.find('q2-pill >>> q2-icon');\n const btnWrapper = await page.find('q2-pill >>> .btn-wrapper');\n\n expect(pill).not.toHaveAttribute('active');\n expect(await closeBtn.isVisible()).toBe(true);\n expect(closeIcon).toEqualAttribute('type', 'chevron-down');\n expect(btnWrapper.classList.contains('has-icon')).toBe(true);\n expect(btnWrapper.classList.contains('has-options')).toBe(true);\n expect(popover).not.toHaveAttribute('open');\n expect(closeBtn.tagName).toEqual('DIV');\n\n await controlBtn.press('ArrowDown');\n await page.waitForChanges();\n\n expect(pill).not.toHaveAttribute('active');\n expect(pill).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n\n await optionContainer.press('ArrowDown');\n await page.waitForChanges();\n expect(await getFocusedOptionValue(page)).toEqual('2');\n await allOptions[1].press(' ');\n await page.waitForChanges();\n\n expect(pill).toHaveAttribute('active');\n expect(pill).not.toHaveAttribute('open');\n expect(popover).not.toHaveAttribute('open');\n expect(changeSpy).toHaveReceivedEventDetail({\n active: true,\n value: '2',\n values: [{ display: 'Option 2', value: '2' }],\n });\n expect(await optionList.getProperty('selectedOptions')).toEqual([\n { display: 'Option 2', value: '2' },\n ]);\n\n closeBtn = await page.find('q2-pill >>> .btn-close');\n closeIcon = await page.find('q2-pill >>> q2-icon');\n\n expect(closeBtn.tagName).toEqual('BUTTON');\n expect(closeIcon).toEqualAttribute('type', 'close');\n\n await closeBtn.press(' ');\n await page.waitForChanges();\n\n expect(pill).not.toHaveAttribute('active');\n expect(changeSpy).toHaveReceivedEventDetail({\n active: false,\n value: null,\n values: [],\n });\n expect(await optionList.getProperty('selectedOptions')).toEqual([]);\n });\n\n describe('when multiple', () => {\n it('can select multiple options via keyboard', async () => {\n pill.setProperty('multiple', true);\n await page.waitForChanges();\n\n let closeBtn = await page.find('q2-pill >>> .btn-close');\n let closeIcon = await page.find('q2-pill >>> q2-icon');\n const btnWrapper = await page.find('q2-pill >>> .btn-wrapper');\n\n expect(pill).not.toHaveAttribute('active');\n expect(await closeBtn.isVisible()).toBe(true);\n expect(closeIcon).toEqualAttribute('type', 'chevron-down');\n expect(btnWrapper.classList.contains('has-icon')).toBe(true);\n expect(btnWrapper.classList.contains('has-options')).toBe(true);\n expect(popover).not.toHaveAttribute('open');\n expect(closeBtn.tagName).toEqual('DIV');\n\n await controlBtn.press('ArrowDown');\n await page.waitForChanges();\n\n expect(pill).not.toHaveAttribute('active');\n expect(pill).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(await getFocusedOptionValue(page)).toEqual('1');\n\n await optionContainer.press('ArrowDown');\n await page.waitForChanges();\n expect(await getFocusedOptionValue(page)).toEqual('2');\n await allOptions[1].press(' ');\n await page.waitForChanges();\n\n expect(pill).toHaveAttribute('active');\n expect(pill).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n expect(changeSpy).toHaveReceivedEventDetail({\n active: true,\n values: [{ display: 'Option 2', value: '2' }],\n });\n expect(await optionList.getProperty('selectedOptions')).toEqual([\n { display: 'Option 2', value: '2' },\n ]);\n\n closeBtn = await page.find('q2-pill >>> .btn-close');\n closeIcon = await page.find('q2-pill >>> q2-icon');\n\n expect(closeBtn.tagName).toEqual('BUTTON');\n expect(closeIcon).toEqualAttribute('type', 'close');\n\n await optionContainer.press('ArrowDown');\n await page.waitForChanges();\n expect(await getFocusedOptionValue(page)).toEqual('3');\n await allOptions[2].press(' ');\n await page.waitForChanges();\n\n expect(changeSpy).toHaveReceivedEventDetail({\n active: true,\n values: [\n { display: 'Option 2', value: '2' },\n { display: 'Option 3', value: '3' },\n ],\n });\n expect(await optionList.getProperty('selectedOptions')).toEqual([\n { display: 'Option 2', value: '2' },\n { display: 'Option 3', value: '3' },\n ]);\n\n expect(pill).toHaveAttribute('active');\n expect(pill).toHaveAttribute('open');\n expect(popover).toHaveAttribute('open');\n\n await btnWrapper.click();\n await page.waitForChanges();\n\n expect(pill).toHaveAttribute('active');\n expect(pill).not.toHaveAttribute('open');\n expect(optionList).not.toHaveAttribute('open');\n\n await closeBtn.click();\n await page.waitForChanges();\n\n expect(pill).not.toHaveAttribute('active');\n expect(changeSpy).toHaveReceivedEventDetail({\n active: false,\n value: null,\n values: [],\n });\n expect(await optionList.getProperty('selectedOptions')).toEqual([]);\n });\n });\n });\n });\n describe('Other', () => {});\n });\n});\n"]}