@spectrum-web-components/slider 0.12.15-devmode.7 → 0.14.0-devmode.0

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["slider-editable.test.ts"],
4
- "sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport '@spectrum-web-components/slider/sp-slider.js';\nimport { Slider } from '@spectrum-web-components/slider';\nimport {\n editable,\n hideStepper,\n Indeterminate,\n StoryArgs,\n} from '../stories/slider.stories.js';\nimport { elementUpdated, expect, fixture } from '@open-wc/testing';\nimport { TemplateResult } from '@spectrum-web-components/base';\nimport { sendKeys } from '@web/test-runner-commands';\nimport { spy } from 'sinon';\n\nasync function sliderFromFixture(\n sliderFixture: (args: StoryArgs) => TemplateResult\n): Promise<Slider> {\n const el = await fixture<Slider>(sliderFixture({}));\n const slider = el.querySelector('sp-slider') as Slider;\n return slider;\n}\n\ndescribe('Slider - editable', () => {\n it('loads', async () => {\n const el = await sliderFromFixture(editable);\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n\n it('loads - [hide-stepper]', async () => {\n const el = await sliderFromFixture(hideStepper);\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n\n it('loads - [disabled]', async () => {\n const el = document.createElement('sp-slider');\n el.editable = true;\n el.disabled = true;\n el.label = 'Disabled, editable, slider';\n\n try {\n document.body.append(el);\n } catch (error) {\n expect(true).to.be.false;\n }\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n el.remove();\n });\n\n it('toggles indeterminate when edited via the `<sp-number-field>`', async () => {\n const el = await sliderFromFixture(Indeterminate);\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(5);\n expect(el.indeterminate).to.be.true;\n\n el.focus();\n\n await elementUpdated(el);\n\n await sendKeys({ press: 'Backspace' });\n await sendKeys({ press: 'Backspace' });\n await sendKeys({ type: '15' });\n await sendKeys({ press: 'Enter' });\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(15);\n expect(el.indeterminate).to.be.false;\n });\n\n it('focuses `<sp-number-field>` directly', async () => {\n const el = await sliderFromFixture(editable);\n\n await elementUpdated(el);\n\n el.focus();\n\n await elementUpdated(el);\n\n expect(el.shadowRoot.activeElement).to.equal(el.numberField);\n });\n\n it('edits via the `<sp-number-field>`', async () => {\n const inputSpy = spy();\n const changeSpy = spy();\n const el = await sliderFromFixture(editable);\n el.addEventListener('input', () => inputSpy());\n el.addEventListener('change', () => changeSpy());\n\n await elementUpdated(el);\n\n el.focus();\n\n await elementUpdated(el);\n\n expect(el.shadowRoot.activeElement).to.equal(el.numberField);\n expect(el.value).to.equal(90);\n\n await sendKeys({ press: 'Backspace' });\n await sendKeys({ press: 'Backspace' });\n await sendKeys({ press: 'Backspace' });\n await sendKeys({ type: '45' });\n await sendKeys({ press: 'Enter' });\n\n await elementUpdated(el);\n\n expect(el.shadowRoot.activeElement).to.equal(el.numberField);\n expect(el.value).to.equal(45);\n expect(inputSpy.callCount, 'one input').to.equal(1);\n expect(changeSpy.callCount, 'one change').to.equal(1);\n\n await sendKeys({ press: 'Backspace' });\n await sendKeys({ press: 'Backspace' });\n await sendKeys({ press: 'Backspace' });\n await sendKeys({ press: 'Enter' });\n\n expect(el.shadowRoot.activeElement).to.equal(el.numberField);\n expect(el.value).to.equal(45);\n expect(inputSpy.callCount, 'still one input').to.equal(1);\n expect(changeSpy.callCount, 'still one change').to.equal(1);\n });\n\n it('focuses `<input>` after pointer interactions', async () => {\n let pointerId = -1;\n const el = await sliderFromFixture(editable);\n\n await elementUpdated(el);\n\n expect(el.dragging).to.be.false;\n expect(el.highlight).to.be.false;\n expect(pointerId).to.equal(-1);\n\n const handle = el.shadowRoot.querySelector('.handle') as HTMLDivElement;\n el.track.setPointerCapture = (id: number) => (pointerId = id);\n el.track.releasePointerCapture = (id: number) => (pointerId = id);\n handle.dispatchEvent(\n new PointerEvent('pointerdown', {\n button: 1,\n pointerId: 1,\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.dragging).to.be.false;\n expect(pointerId, '1').to.equal(-1);\n\n handle.dispatchEvent(\n new PointerEvent('pointerdown', {\n button: 0,\n pointerId: 1,\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.dragging, 'it is dragging 1').to.be.true;\n expect(pointerId, '2').to.equal(1);\n\n handle.dispatchEvent(\n new PointerEvent('pointerup', {\n pointerId: 2,\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.dragging).to.be.false;\n expect(el.highlight).to.be.false;\n expect(pointerId, '3').to.equal(2);\n\n handle.dispatchEvent(\n new PointerEvent('pointerdown', {\n button: 0,\n pointerId: 1,\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.dragging, 'it is dragging 2').to.be.true;\n expect(pointerId, '4').to.equal(1);\n\n handle.dispatchEvent(\n new PointerEvent('pointercancel', {\n pointerId: 3,\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.dragging).to.be.false;\n expect(pointerId, '5').to.equal(3);\n expect(el.shadowRoot.activeElement).to.equal(\n el.handleController.inputForHandle(el)\n );\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport '@spectrum-web-components/slider/sp-slider.js';\nimport { Slider } from '@spectrum-web-components/slider';\nimport {\n editable,\n hideStepper,\n Indeterminate,\n StoryArgs,\n} from '../stories/slider.stories.js';\nimport { elementUpdated, expect, fixture } from '@open-wc/testing';\nimport { TemplateResult } from '@spectrum-web-components/base';\nimport { sendKeys } from '@web/test-runner-commands';\nimport { spy } from 'sinon';\nimport { testForLitDevWarnings } from '../../../test/testing-helpers.js';\n\nasync function sliderFromFixture(\n sliderFixture: (args: StoryArgs) => TemplateResult\n): Promise<Slider> {\n const el = await fixture<Slider>(sliderFixture({}));\n const slider = el.querySelector('sp-slider') as Slider;\n return slider;\n}\n\ndescribe('Slider - editable', () => {\n testForLitDevWarnings(async () => await sliderFromFixture(editable));\n it('loads', async () => {\n const el = await sliderFromFixture(editable);\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n\n it('loads - [hide-stepper]', async () => {\n const el = await sliderFromFixture(hideStepper);\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n\n it('loads - [disabled]', async () => {\n const el = document.createElement('sp-slider');\n el.editable = true;\n el.disabled = true;\n el.label = 'Disabled, editable, slider';\n\n try {\n document.body.append(el);\n } catch (error) {\n expect(true).to.be.false;\n }\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n el.remove();\n });\n\n it('toggles indeterminate when edited via the `<sp-number-field>`', async () => {\n const el = await sliderFromFixture(Indeterminate);\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(5);\n expect(el.indeterminate).to.be.true;\n\n el.focus();\n\n await elementUpdated(el);\n\n await sendKeys({ press: 'Backspace' });\n await sendKeys({ press: 'Backspace' });\n await sendKeys({ type: '15' });\n await sendKeys({ press: 'Enter' });\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(15);\n expect(el.indeterminate).to.be.false;\n });\n\n it('focuses `<sp-number-field>` directly', async () => {\n const el = await sliderFromFixture(editable);\n\n await elementUpdated(el);\n\n el.focus();\n\n await elementUpdated(el);\n\n expect(el.shadowRoot.activeElement).to.equal(el.numberField);\n });\n\n it('edits via the `<sp-number-field>`', async () => {\n const inputSpy = spy();\n const changeSpy = spy();\n const el = await sliderFromFixture(editable);\n el.addEventListener('input', () => inputSpy());\n el.addEventListener('change', () => changeSpy());\n\n await elementUpdated(el);\n\n el.focus();\n\n await elementUpdated(el);\n\n expect(el.shadowRoot.activeElement).to.equal(el.numberField);\n expect(el.value).to.equal(90);\n\n await sendKeys({ press: 'Backspace' });\n await sendKeys({ press: 'Backspace' });\n await sendKeys({ press: 'Backspace' });\n await sendKeys({ type: '45' });\n await sendKeys({ press: 'Enter' });\n\n await elementUpdated(el);\n\n expect(el.shadowRoot.activeElement).to.equal(el.numberField);\n expect(el.value).to.equal(45);\n expect(inputSpy.callCount, 'one input').to.equal(1);\n expect(changeSpy.callCount, 'one change').to.equal(1);\n\n await sendKeys({ press: 'Backspace' });\n await sendKeys({ press: 'Backspace' });\n await sendKeys({ press: 'Backspace' });\n await sendKeys({ press: 'Enter' });\n\n expect(el.shadowRoot.activeElement).to.equal(el.numberField);\n expect(el.value).to.equal(45);\n expect(inputSpy.callCount, 'still one input').to.equal(1);\n expect(changeSpy.callCount, 'still one change').to.equal(1);\n });\n\n it('focuses `<input>` after pointer interactions', async () => {\n let pointerId = -1;\n const el = await sliderFromFixture(editable);\n\n await elementUpdated(el);\n\n expect(el.dragging).to.be.false;\n expect(el.highlight).to.be.false;\n expect(pointerId).to.equal(-1);\n\n const handle = el.shadowRoot.querySelector('.handle') as HTMLDivElement;\n el.track.setPointerCapture = (id: number) => (pointerId = id);\n el.track.releasePointerCapture = (id: number) => (pointerId = id);\n handle.dispatchEvent(\n new PointerEvent('pointerdown', {\n button: 1,\n pointerId: 1,\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.dragging).to.be.false;\n expect(pointerId, '1').to.equal(-1);\n\n handle.dispatchEvent(\n new PointerEvent('pointerdown', {\n button: 0,\n pointerId: 1,\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.dragging, 'it is dragging 1').to.be.true;\n expect(pointerId, '2').to.equal(1);\n\n handle.dispatchEvent(\n new PointerEvent('pointerup', {\n pointerId: 2,\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.dragging).to.be.false;\n expect(el.highlight).to.be.false;\n expect(pointerId, '3').to.equal(2);\n\n handle.dispatchEvent(\n new PointerEvent('pointerdown', {\n button: 0,\n pointerId: 1,\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.dragging, 'it is dragging 2').to.be.true;\n expect(pointerId, '4').to.equal(1);\n\n handle.dispatchEvent(\n new PointerEvent('pointercancel', {\n pointerId: 3,\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.dragging).to.be.false;\n expect(pointerId, '5').to.equal(3);\n expect(el.shadowRoot.activeElement).to.equal(\n el.handleController.inputForHandle(el)\n );\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -12,7 +12,12 @@ import {
12
12
  } from "@open-wc/testing";
13
13
  import { sendKeys } from "@web/test-runner-commands";
14
14
  import { sendMouse } from "../../../test/plugins/browser.js";
15
+ import { stub } from "sinon";
16
+ import { testForLitDevWarnings } from "../../../test/testing-helpers.js";
15
17
  describe("Slider", () => {
18
+ testForLitDevWarnings(async () => await fixture(html`
19
+ <sp-slider label="Slider"></sp-slider>
20
+ `));
16
21
  it("loads", async () => {
17
22
  const el = await fixture(html`
18
23
  <sp-slider label="Slider"></sp-slider>
@@ -757,6 +762,92 @@ describe("Slider", () => {
757
762
  await elementUpdated(el);
758
763
  expect(el.values).to.deep.equal({ a: 10, b: 10, c: 10 });
759
764
  });
765
+ it('warns in Dev Mode when `min="previous"` is leveraged on first handle', async () => {
766
+ const consoleWarnStub = stub(console, "warn");
767
+ window.__swc.issuedWarnings = /* @__PURE__ */ new Set();
768
+ const el = await fixture(html`
769
+ <sp-slider min="0" max="100">
770
+ <sp-slider-handle
771
+ id="first-handle"
772
+ min="previous"
773
+ max="next"
774
+ slot="handle"
775
+ name="a"
776
+ value="10"
777
+ ></sp-slider-handle>
778
+ <sp-slider-handle
779
+ id="middle-handle"
780
+ min="previous"
781
+ max="next"
782
+ slot="handle"
783
+ name="b"
784
+ value="20"
785
+ ></sp-slider-handle>
786
+ <sp-slider-handle
787
+ id="last-handle"
788
+ min="previous"
789
+ slot="handle"
790
+ name="c"
791
+ value="30"
792
+ ></sp-slider-handle>
793
+ </sp-slider>
794
+ `);
795
+ await elementUpdated(el);
796
+ expect(consoleWarnStub.called).to.be.true;
797
+ const spyCall = consoleWarnStub.getCall(0);
798
+ expect(spyCall.args.at(0).includes("previous"), 'confirm "previous" in message').to.be.true;
799
+ expect(spyCall.args.at(-1), "confirm `data` shape").to.deep.equal({
800
+ data: {
801
+ localName: "sp-slider",
802
+ type: "api",
803
+ level: "default"
804
+ }
805
+ });
806
+ consoleWarnStub.restore();
807
+ });
808
+ it('warns in Dev Mode when `max="next"` is leveraged on last handle', async () => {
809
+ const consoleWarnStub = stub(console, "warn");
810
+ window.__swc.issuedWarnings = /* @__PURE__ */ new Set();
811
+ const el = await fixture(html`
812
+ <sp-slider min="0" max="100">
813
+ <sp-slider-handle
814
+ id="first-handle"
815
+ max="next"
816
+ slot="handle"
817
+ name="a"
818
+ value="10"
819
+ ></sp-slider-handle>
820
+ <sp-slider-handle
821
+ id="middle-handle"
822
+ min="previous"
823
+ max="next"
824
+ slot="handle"
825
+ name="b"
826
+ value="20"
827
+ ></sp-slider-handle>
828
+ <sp-slider-handle
829
+ id="last-handle"
830
+ min="previous"
831
+ max="next"
832
+ slot="handle"
833
+ name="c"
834
+ value="30"
835
+ ></sp-slider-handle>
836
+ </sp-slider>
837
+ `);
838
+ await elementUpdated(el);
839
+ expect(consoleWarnStub.called).to.be.true;
840
+ const spyCall = consoleWarnStub.getCall(0);
841
+ expect(spyCall.args.at(0).includes("next"), 'confirm "next" in message').to.be.true;
842
+ expect(spyCall.args.at(-1), "confirm `data` shape").to.deep.equal({
843
+ data: {
844
+ localName: "sp-slider",
845
+ type: "api",
846
+ level: "default"
847
+ }
848
+ });
849
+ consoleWarnStub.restore();
850
+ });
760
851
  it("builds both handles from a <template>", async () => {
761
852
  var _a;
762
853
  const template = document.createElement("template");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["slider.test.ts"],
4
- "sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport '@spectrum-web-components/slider/sp-slider.js';\nimport '@spectrum-web-components/slider/sp-slider-handle.js';\nimport { Slider, SliderHandle } from '@spectrum-web-components/slider';\nimport { tick } from '../stories/slider.stories.js';\nimport {\n elementUpdated,\n expect,\n fixture,\n html,\n nextFrame,\n oneEvent,\n waitUntil,\n} from '@open-wc/testing';\nimport { sendKeys } from '@web/test-runner-commands';\nimport { ProvideLang } from '@spectrum-web-components/theme';\nimport { sendMouse } from '../../../test/plugins/browser.js';\n\ndescribe('Slider', () => {\n it('loads', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider label=\"Slider\"></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n it('loads - [variant=\"tick\"]', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider\n label=\"Ticked Slider\"\n min=\"-100\"\n max=\"100\"\n value=\"0\"\n tick-labels\n variant=\"tick\"\n ></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n it('loads - [variant=\"tick\"] irregularly', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider label=\"Slider\"></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n it('receives value from the outside', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider max=\"20\"></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(10);\n\n el.value = 10;\n await elementUpdated(el);\n\n expect(el.value).to.equal(10);\n\n el.value = 50;\n await elementUpdated(el);\n\n expect(el.value).to.equal(20);\n });\n it('accepts keyboard events', async () => {\n const el = await fixture<Slider>(\n tick({\n variant: 'tick',\n tickStep: 5,\n })\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(10);\n expect(el.highlight).to.be.false;\n\n el.focus();\n await sendKeys({\n press: 'ArrowDown',\n });\n await elementUpdated(el);\n\n expect(el.value).to.equal(9);\n expect(el.highlight).to.be.true;\n await sendKeys({\n press: 'ArrowUp',\n });\n await elementUpdated(el);\n\n expect(el.value).to.equal(10);\n expect(el.highlight).to.be.true;\n });\n it('accepts pointer events', async () => {\n let pointerId = -1;\n const el = await fixture<Slider>(\n html`\n <sp-slider></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.dragging).to.be.false;\n expect(el.highlight).to.be.false;\n expect(pointerId).to.equal(-1);\n\n const handle = el.shadowRoot.querySelector('.handle') as HTMLDivElement;\n el.track.setPointerCapture = (id: number) => (pointerId = id);\n el.track.releasePointerCapture = (id: number) => (pointerId = id);\n handle.dispatchEvent(\n new PointerEvent('pointerdown', {\n button: 1,\n pointerId: 1,\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.dragging).to.be.false;\n expect(pointerId, '1').to.equal(-1);\n\n handle.dispatchEvent(\n new PointerEvent('pointerdown', {\n button: 0,\n pointerId: 1,\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.dragging, 'it is dragging 1').to.be.true;\n expect(pointerId, '2').to.equal(1);\n\n handle.dispatchEvent(\n new PointerEvent('pointerup', {\n pointerId: 2,\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.dragging).to.be.false;\n expect(el.highlight).to.be.false;\n expect(pointerId, '3').to.equal(2);\n\n handle.dispatchEvent(\n new PointerEvent('pointerdown', {\n button: 0,\n pointerId: 1,\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.dragging, 'it is dragging 2').to.be.true;\n expect(pointerId, '4').to.equal(1);\n\n handle.dispatchEvent(\n new PointerEvent('pointercancel', {\n pointerId: 3,\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.dragging).to.be.false;\n expect(pointerId, '5').to.equal(3);\n });\n it('will `trackPointerDown` on `#controls`', async () => {\n let pointerId = -1;\n const el = await fixture<Slider>(\n html`\n <sp-slider style=\"width: 500px\" max=\"70\"></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(10);\n\n const controls = el.shadowRoot.querySelector(\n '#controls'\n ) as HTMLDivElement;\n const handle = el.shadowRoot.querySelector('.handle') as HTMLDivElement;\n el.track.setPointerCapture = (id: number) => (pointerId = id);\n el.track.releasePointerCapture = (id: number) => (pointerId = id);\n\n controls.dispatchEvent(\n new PointerEvent('pointerdown', {\n button: 1,\n // account for 8px <body> margin by default\n clientX: 9,\n pointerId: 4,\n bubbles: true,\n cancelable: true,\n })\n );\n await elementUpdated(el);\n\n expect(pointerId).to.equal(-1);\n expect(el.value).to.equal(10);\n expect(el.dragging, 'handle is not yet being dragged').to.be.false;\n\n controls.dispatchEvent(\n new PointerEvent('pointerdown', {\n button: 0,\n // account for 8px <body> margin by default\n clientX: 9,\n pointerId: 4,\n bubbles: true,\n cancelable: true,\n })\n );\n await elementUpdated(el);\n\n expect(pointerId).to.equal(4);\n expect(el.value).to.equal(0);\n expect(el.dragging, 'handle is being dragged').to.be.true;\n handle.dispatchEvent(\n new PointerEvent('pointermove', {\n button: 0,\n // account for 8px <body> margin by default\n clientX: 508,\n pointerId: 4,\n bubbles: true,\n cancelable: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.dragging, 'handle is still being dragged').to.be.true;\n expect(pointerId).to.equal(4);\n expect(el.value).to.equal(70);\n\n handle.dispatchEvent(\n new PointerEvent('pointerup', {\n button: 0,\n // account for 8px <body> margin by default\n clientX: 9,\n pointerId: 4,\n bubbles: true,\n cancelable: true,\n })\n );\n await elementUpdated(el);\n\n expect(pointerId).to.equal(4);\n expect(el.value).to.equal(70);\n expect(el.dragging, 'handle is no longer being dragged').to.be.false;\n });\n it('can be disabled', async () => {\n let pointerId = -1;\n const el = await fixture<Slider>(\n html`\n <sp-slider disabled></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.dragging).to.be.false;\n expect(pointerId).to.equal(-1);\n expect(el.value).to.equal(10);\n\n const handle = el.shadowRoot.querySelector('.handle') as HTMLDivElement;\n handle.setPointerCapture = (id: number) => (pointerId = id);\n\n handle.dispatchEvent(\n new PointerEvent('pointerdown', {\n button: 0,\n pointerId: 1,\n cancelable: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.dragging).to.be.false;\n expect(pointerId).to.equal(-1);\n\n const controls = el.shadowRoot.querySelector(\n '#controls'\n ) as HTMLDivElement;\n\n controls.dispatchEvent(\n new PointerEvent('pointerdown', {\n button: 0,\n clientX: 50,\n pointerId: 1,\n cancelable: true,\n })\n );\n await elementUpdated(el);\n\n expect(pointerId).to.equal(-1);\n expect(el.value).to.equal(10);\n });\n it('accepts pointermove events', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider></sp-slider>\n `\n );\n await elementUpdated(el);\n\n expect(el.value).to.equal(10);\n\n const handle = el.shadowRoot.querySelector('.handle') as HTMLDivElement;\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [9, 30],\n },\n {\n type: 'down',\n },\n ],\n });\n await elementUpdated(el);\n\n expect(el.dragging, 'is dragging').to.be.true;\n expect(el.highlight, 'not highlighted').to.be.false;\n\n handle.dispatchEvent(\n new PointerEvent('pointermove', {\n clientX: 0,\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.value).to.equal(0);\n });\n\n it('manages RTL when min != 0', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider min=\"1\" max=\"11\" dir=\"rtl\"></sp-slider>\n `\n );\n await elementUpdated(el);\n\n expect(el.value).to.equal(10);\n\n const handle = el.shadowRoot.querySelector('.handle') as HTMLDivElement;\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [9, 30],\n },\n {\n type: 'down',\n },\n ],\n });\n await elementUpdated(el);\n\n expect(el.dragging, 'is dragging').to.be.true;\n expect(el.highlight, 'not highlighted').to.be.false;\n\n handle.dispatchEvent(\n new PointerEvent('pointermove', {\n clientX: 0,\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.value).to.equal(11);\n });\n\n it('goes [disabled] while dragging', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider></sp-slider>\n `\n );\n await elementUpdated(el);\n\n expect(el.value).to.equal(10);\n\n const handle = el.shadowRoot.querySelector('.handle') as HTMLDivElement;\n const handleBoundingRect = handle.getBoundingClientRect();\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n handleBoundingRect.x + handleBoundingRect.width / 2,\n handleBoundingRect.y + handleBoundingRect.height / 2,\n ],\n },\n {\n type: 'down',\n },\n ],\n });\n await elementUpdated(el);\n\n expect(el.dragging, 'is dragging').to.be.true;\n expect(el.highlight, 'not highlighted').to.be.false;\n expect(el.value).to.equal(10);\n\n const inputEvent = oneEvent(el, 'input');\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n handleBoundingRect.x +\n handleBoundingRect.width / 2 +\n 100,\n handleBoundingRect.y + handleBoundingRect.height / 2,\n ],\n },\n ],\n });\n await inputEvent;\n\n expect(el.value).to.equal(13);\n\n el.disabled = true;\n await elementUpdated(el);\n\n expect(el.dragging, 'is dragging').to.be.false;\n expect(el.highlight, 'not highlighted').to.be.false;\n\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n 0,\n handleBoundingRect.top + handleBoundingRect.height / 2,\n ],\n },\n ],\n });\n\n expect(el.value).to.equal(13);\n });\n it('accepts pointermove events in separate interactions', async () => {\n let pointerId = -1;\n const el = await fixture<Slider>(\n html`\n <sp-slider style=\"width: 100px\"></sp-slider>\n `\n );\n await elementUpdated(el);\n\n expect(el.value, 'initial').to.equal(10);\n\n const handle = el.shadowRoot.querySelector('.handle') as HTMLDivElement;\n el.track.setPointerCapture = (id: number) => (pointerId = id);\n el.track.releasePointerCapture = (id: number) => (pointerId = id);\n handle.dispatchEvent(\n new PointerEvent('pointerdown', {\n clientX: 58,\n cancelable: true,\n button: 0,\n pointerId: 100,\n composed: true,\n bubbles: true,\n })\n );\n await elementUpdated(el);\n handle.dispatchEvent(\n new PointerEvent('pointermove', {\n clientX: 58,\n cancelable: true,\n composed: true,\n bubbles: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.value, 'first pointerdown').to.equal(50);\n expect(el.dragging, 'is dragging').to.be.true;\n expect(el.classList.contains('handle-highlight'), 'not highlighted').to\n .be.false;\n expect(pointerId).to.equal(100);\n\n handle.dispatchEvent(\n new PointerEvent('pointermove', {\n clientX: 0,\n cancelable: true,\n composed: true,\n bubbles: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.value, 'first pointermove').to.equal(0);\n\n handle.dispatchEvent(\n new PointerEvent('pointerup', {\n clientX: 0,\n cancelable: true,\n composed: true,\n bubbles: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.value, 'first pointerup').to.equal(0);\n expect(el.dragging, 'is dragging').to.be.false;\n handle.dispatchEvent(\n new PointerEvent('pointerdown', {\n clientX: 58,\n cancelable: true,\n button: 0,\n composed: true,\n bubbles: true,\n })\n );\n await elementUpdated(el);\n handle.dispatchEvent(\n new PointerEvent('pointermove', {\n clientX: 58,\n cancelable: true,\n composed: true,\n bubbles: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.value, 'second pointerdown').to.equal(50);\n expect(el.dragging, 'is dragging').to.be.true;\n expect(el.classList.contains('handle-highlight'), 'not highlighted').to\n .be.false;\n\n handle.dispatchEvent(\n new PointerEvent('pointermove', {\n clientX: 0,\n cancelable: true,\n composed: true,\n bubbles: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.value, 'second pointermove').to.equal(0);\n\n handle.dispatchEvent(\n new PointerEvent('pointerup', {\n clientX: 0,\n cancelable: true,\n composed: true,\n bubbles: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.value, 'second pointerup').to.equal(0);\n expect(el.dragging, 'is dragging').to.be.false;\n });\n it('accepts pointermove events - [step=0]', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider step=\"0\" max=\"20\" style=\"width: 500px; float: left;\">\n Step = 0\n </sp-slider>\n `\n );\n await elementUpdated(el);\n await nextFrame();\n await nextFrame();\n\n expect(el.value).to.equal(10);\n\n const handle = el.shadowRoot.querySelector('.handle') as HTMLDivElement;\n const handleBoundingRect = handle.getBoundingClientRect();\n const position: [number, number] = [\n handleBoundingRect.x + handleBoundingRect.width / 2,\n handleBoundingRect.y + handleBoundingRect.height / 2,\n ];\n await sendMouse({\n steps: [\n {\n type: 'move',\n position,\n },\n {\n type: 'down',\n },\n ],\n });\n\n await nextFrame();\n\n expect(el.highlight, 'with no highlight').to.be.false;\n expect(el.dragging, 'dragging').to.be.true;\n\n let inputEvent = oneEvent(el, 'input');\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n 200,\n handleBoundingRect.y + handleBoundingRect.height + 100,\n ],\n },\n ],\n });\n await inputEvent;\n\n expect(el.value).to.equal(8);\n\n inputEvent = oneEvent(el, 'input');\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [125, position[1]],\n },\n ],\n });\n await inputEvent;\n\n expect(el.value).to.equal(5);\n });\n it('will not pointermove unless `pointerdown`', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(10);\n expect(el.dragging).to.be.false;\n\n const handle = el.shadowRoot.querySelector('.handle') as HTMLDivElement;\n\n handle.dispatchEvent(\n new PointerEvent('pointermove', {\n clientX: 0,\n cancelable: true,\n })\n );\n await nextFrame();\n\n expect(el.value).to.equal(10);\n });\n it('responds to input events on the <input/> element', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(10);\n\n const input = el.shadowRoot.querySelector('.input') as HTMLInputElement;\n\n input.value = '0';\n input.dispatchEvent(new Event('change'));\n\n expect(el.value).to.equal(0);\n });\n it('accepts variants', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider variant=\"tick\"></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.variant).to.equal('tick');\n expect(el.getAttribute('variant')).to.equal('tick');\n\n el.variant = 'ramp';\n\n await elementUpdated(el);\n\n expect(el.variant).to.equal('ramp');\n expect(el.getAttribute('variant')).to.equal('ramp');\n\n el.setAttribute('variant', 'filled');\n\n await elementUpdated(el);\n\n expect(el.variant).to.equal('filled');\n expect(el.getAttribute('variant')).to.equal('filled');\n\n el.removeAttribute('variant');\n\n await elementUpdated(el);\n\n expect(el.variant).to.equal('');\n expect(el.hasAttribute('variant')).to.be.false;\n });\n it('validates variants', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider variant=\"other\"></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.variant).to.equal('');\n expect(el.hasAttribute('variant')).to.be.false;\n\n el.variant = 'tick';\n\n await elementUpdated(el);\n\n expect(el.variant).to.equal('tick');\n expect(el.getAttribute('variant')).to.equal('tick');\n\n el.variant = 'tick';\n\n await elementUpdated(el);\n\n expect(el.variant).to.equal('tick');\n expect(el.getAttribute('variant')).to.equal('tick');\n });\n it('has a `focusElement`', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n const input = el.focusElement as HTMLInputElement;\n expect(input).to.not.be.undefined;\n expect(input.type).to.equal('range');\n });\n it('displays result of getAriaValueText', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider\n value=\"50\"\n min=\"0\"\n max=\"100\"\n .getAriaHandleText=${(value: number) => `${value}%`}\n ></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n const input = el.focusElement as HTMLInputElement;\n expect(input.getAttribute('aria-valuetext')).to.equal('50%');\n\n el.value = 100;\n await elementUpdated(el);\n\n expect(input.getAttribute('aria-valuetext')).to.equal('100%');\n });\n it('displays Intl.formatNumber results', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider\n value=\".5\"\n min=\"0\"\n max=\"1\"\n .formatOptions=${{ style: 'percent' }}\n ></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n const input = el.focusElement as HTMLInputElement;\n expect(input.getAttribute('aria-valuetext')).to.equal('50%');\n\n el.value = 100;\n await elementUpdated(el);\n\n expect(input.getAttribute('aria-valuetext')).to.equal('100%');\n });\n it('obeys language property', async () => {\n let lang = 'de';\n const langResolvers: ProvideLang['callback'][] = [];\n const createLangResolver = (event: CustomEvent<ProvideLang>): void => {\n langResolvers.push(event.detail.callback);\n resolveLanguage();\n };\n const resolveLanguage = (): void => {\n langResolvers.forEach((resolver) => resolver(lang));\n };\n let el = await fixture<Slider>(\n html`\n <sp-slider\n value=\"2.44\"\n min=\"0\"\n max=\"10\"\n step=\"0.01\"\n @sp-language-context=${createLangResolver}\n .formatOptions=${{ maximumFractionDigits: 2 }}\n ></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n let input = el.focusElement as HTMLInputElement;\n expect(\n input.getAttribute('aria-valuetext'),\n 'First German number'\n ).to.equal('2,44');\n\n lang = 'en';\n resolveLanguage();\n await elementUpdated(el);\n\n expect(\n input.getAttribute('aria-valuetext'),\n 'First English number'\n ).to.equal('2.44');\n\n lang = 'de';\n resolveLanguage();\n el = await fixture<Slider>(\n html`\n <sp-slider\n min=\"0\"\n max=\"10\"\n @sp-language-context=${createLangResolver}\n >\n <sp-slider-handle\n slot=\"handle\"\n step=\"0.01\"\n value=\"2.44\"\n .formatOptions=${{ maximumFractionDigits: 2 }}\n @sp-language-context=${createLangResolver}\n ></sp-slider-handle>\n </sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n input = el.focusElement as HTMLInputElement;\n expect(\n input.getAttribute('aria-valuetext'),\n 'Second German number'\n ).to.equal('2,44');\n\n lang = 'en';\n resolveLanguage();\n await elementUpdated(el);\n\n expect(\n input.getAttribute('aria-valuetext'),\n 'Second English number'\n ).to.equal('2.44');\n });\n it('uses fallback ariaValueText', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider value=\"50\" min=\"0\" max=\"100\"></sp-slider>\n `\n );\n\n await elementUpdated(el);\n (\n el as unknown as {\n getAriaValueText: boolean;\n }\n ).getAriaValueText = false;\n\n const input = el.focusElement as HTMLInputElement;\n await elementUpdated(el);\n\n expect(input.getAttribute('aria-valuetext')).to.equal('50');\n });\n it('accepts min/max/value in the same timing', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(10);\n\n el.min = 0;\n el.max = 200;\n el.value = 200;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(200);\n\n el.value = 500;\n el.min = 0;\n el.max = 500;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(500);\n\n el.value = -100;\n el.min = -100;\n el.max = 500;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(-100);\n });\n it('returns values for handles', async () => {\n let el = await fixture<Slider>(\n html`\n <sp-slider>\n <sp-slider-handle\n slot=\"handle\"\n name=\"a\"\n min=\"0\"\n value=\"10\"\n ></sp-slider-handle>\n <sp-slider-handle\n id=\"middle-handle\"\n slot=\"handle\"\n name=\"b\"\n value=\"20\"\n ></sp-slider-handle>\n <sp-slider-handle\n slot=\"handle\"\n name=\"c\"\n value=\"30\"\n max=\"100\"\n ></sp-slider-handle>\n </sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.values).to.deep.equal({ a: 10, b: 20, c: 30 });\n\n const middleHandle = el.querySelector('#middle-handle') as SliderHandle;\n middleHandle.value = 22;\n\n await elementUpdated(el);\n\n expect(el.values).to.deep.equal({ a: 10, b: 22, c: 30 });\n\n el = await fixture<Slider>(\n html`\n <sp-slider value=\"10\" min=\"0\" max=\"100\"></sp-slider>\n `\n );\n expect(el.values).to.deep.equal({ value: 10 });\n\n el = await fixture<Slider>(\n html`\n <sp-slider min=\"0\" max=\"100\">\n <sp-slider-handle\n slot=\"handle\"\n value=\"10\"\n ></sp-slider-handle>\n </sp-slider>\n `\n );\n expect(el.values).to.deep.equal({ handle1: 10 });\n });\n it('clamps values for multi-handle slider', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider min=\"0\" max=\"100\">\n <sp-slider-handle\n id=\"first-handle\"\n max=\"next\"\n slot=\"handle\"\n name=\"a\"\n value=\"10\"\n ></sp-slider-handle>\n <sp-slider-handle\n id=\"middle-handle\"\n min=\"previous\"\n max=\"next\"\n slot=\"handle\"\n name=\"b\"\n value=\"20\"\n ></sp-slider-handle>\n <sp-slider-handle\n id=\"last-handle\"\n min=\"previous\"\n slot=\"handle\"\n name=\"c\"\n value=\"30\"\n ></sp-slider-handle>\n </sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.values).to.deep.equal({ a: 10, b: 20, c: 30 });\n\n const firstHandle = el.querySelector('#first-handle') as SliderHandle;\n const middleHandle = el.querySelector('#middle-handle') as SliderHandle;\n const lastHandle = el.querySelector('#last-handle') as SliderHandle;\n\n firstHandle.value = 25;\n await elementUpdated(el);\n expect(el.values).to.deep.equal({ a: 20, b: 20, c: 30 });\n\n firstHandle.value = 10;\n await elementUpdated(el);\n middleHandle.value = 5;\n await elementUpdated(el);\n expect(el.values).to.deep.equal({ a: 10, b: 10, c: 30 });\n\n lastHandle.value = 11;\n await elementUpdated(el);\n expect(el.values).to.deep.equal({ a: 10, b: 10, c: 11 });\n\n lastHandle.value = 7;\n await elementUpdated(el);\n expect(el.values).to.deep.equal({ a: 10, b: 10, c: 10 });\n });\n it('builds both handles from a <template>', async () => {\n const template = document.createElement('template');\n template.innerHTML = `\n <sp-slider variant=\"range\" step=\"1\" id=\"price\" name=\"price\" label=\"Max Price\" min=\"35425\" max=\"86610\">\n <sp-slider-handle slot=\"handle\" name=\"min\" label=\"Minimum\" max=\"next\" value=\"35425\"></sp-slider-handle>\n <sp-slider-handle slot=\"handle\" name=\"max\" label=\"Maximum\" min=\"previous\" value=\"86610\"></sp-slider-handle>\n </sp-slider>\n `;\n const el = await fixture<HTMLDivElement>(\n html`\n <div></div>\n `\n );\n\n el.appendChild(template.content.cloneNode(true));\n await waitUntil(() => {\n return el.querySelector('sp-slider')?.shadowRoot != null;\n });\n // Sliders take several frames to fully upgrade\n await nextFrame();\n\n const createdHandles =\n el\n .querySelector('sp-slider')\n ?.shadowRoot.querySelectorAll('.handle') || [];\n expect(createdHandles).to.have.lengthOf(2);\n });\n it('enforces next/previous max/min', async () => {\n let el = await fixture<Slider>(\n html`\n <sp-slider min=\"0\" max=\"100\">\n <sp-slider-handle\n id=\"first-handle\"\n max=\"next\"\n slot=\"handle\"\n name=\"a\"\n value=\"10\"\n ></sp-slider-handle>\n <sp-slider-handle\n id=\"middle-handle\"\n min=\"previous\"\n max=\"next\"\n slot=\"handle\"\n name=\"b\"\n value=\"20\"\n ></sp-slider-handle>\n <sp-slider-handle\n id=\"last-handle\"\n min=\"previous\"\n slot=\"handle\"\n name=\"c\"\n value=\"30\"\n ></sp-slider-handle>\n </sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.values).to.deep.equal({ a: 10, b: 20, c: 30 });\n\n let firstHandle = el.querySelector('#first-handle') as SliderHandle;\n let lastHandle = el.querySelector('#last-handle') as SliderHandle;\n\n let firstInput = el.shadowRoot.querySelector(\n '.handle[name=\"a\"] > input'\n ) as HTMLInputElement;\n let middleInput = el.shadowRoot.querySelector(\n '.handle[name=\"b\"] > input'\n ) as HTMLInputElement;\n let lastInput = el.shadowRoot.querySelector(\n '.handle[name=\"c\"] > input'\n ) as HTMLInputElement;\n\n expect(firstInput.min).to.equal('0');\n expect(firstInput.max).to.equal('20');\n\n expect(middleInput.min).to.equal('10');\n expect(middleInput.max).to.equal('30');\n\n expect(lastInput.min).to.equal('20');\n expect(lastInput.max).to.equal('100');\n\n firstHandle.value = 15;\n lastHandle.value = 85;\n\n await elementUpdated(el);\n await elementUpdated(el);\n\n expect(firstInput.min).to.equal('0');\n expect(firstInput.max).to.equal('20');\n\n expect(middleInput.min).to.equal('15');\n expect(middleInput.max).to.equal('85');\n\n expect(lastInput.min).to.equal('20');\n expect(lastInput.max).to.equal('100');\n\n el = await fixture<Slider>(\n html`\n <sp-slider>\n <sp-slider-handle\n id=\"first-handle\"\n min=\"0\"\n max=\"next\"\n slot=\"handle\"\n name=\"a\"\n value=\"10\"\n ></sp-slider-handle>\n <sp-slider-handle\n id=\"middle-handle\"\n min=\"previous\"\n max=\"next\"\n slot=\"handle\"\n name=\"b\"\n value=\"20\"\n ></sp-slider-handle>\n <sp-slider-handle\n id=\"last-handle\"\n min=\"previous\"\n max=\"100\"\n slot=\"handle\"\n name=\"c\"\n value=\"30\"\n ></sp-slider-handle>\n </sp-slider>\n `\n );\n\n firstInput = el.shadowRoot.querySelector(\n '.handle[name=\"a\"] > input'\n ) as HTMLInputElement;\n middleInput = el.shadowRoot.querySelector(\n '.handle[name=\"b\"] > input'\n ) as HTMLInputElement;\n lastInput = el.shadowRoot.querySelector(\n '.handle[name=\"c\"] > input'\n ) as HTMLInputElement;\n\n expect(firstInput.min).to.equal('0');\n expect(firstInput.max).to.equal('20');\n\n expect(middleInput.min).to.equal('10');\n expect(middleInput.max).to.equal('30');\n\n expect(lastInput.min).to.equal('20');\n expect(lastInput.max).to.equal('100');\n\n firstHandle = el.querySelector('#first-handle') as SliderHandle;\n lastHandle = el.querySelector('#last-handle') as SliderHandle;\n\n firstHandle.min = 5;\n lastHandle.max = 95;\n\n await elementUpdated(el);\n await elementUpdated(el);\n\n expect(firstInput.min).to.equal('5');\n expect(firstInput.max).to.equal('20');\n\n expect(lastInput.min).to.equal('20');\n expect(lastInput.max).to.equal('95');\n });\n it('sends keyboard events to active handle', async () => {\n // let pointerId = -1;\n\n const el = await fixture<Slider>(\n html`\n <sp-slider step=\"1\" min=\"0\" max=\"100\">\n <sp-slider-handle\n id=\"first-handle\"\n max=\"next\"\n slot=\"handle\"\n name=\"a\"\n value=\"10\"\n ></sp-slider-handle>\n <sp-slider-handle\n id=\"middle-handle\"\n min=\"previous\"\n max=\"next\"\n slot=\"handle\"\n name=\"b\"\n value=\"20\"\n ></sp-slider-handle>\n <sp-slider-handle\n id=\"last-handle\"\n min=\"previous\"\n slot=\"handle\"\n name=\"c\"\n value=\"30\"\n ></sp-slider-handle>\n </sp-slider>\n `\n );\n\n await elementUpdated(el);\n expect(el.values).to.deep.equal({ a: 10, b: 20, c: 30 });\n\n const lastHandle = el.querySelector('#last-handle') as SliderHandle;\n lastHandle.focus();\n\n await sendKeys({\n press: 'ArrowDown',\n });\n await elementUpdated(el);\n expect(el.values).to.deep.equal({ a: 10, b: 20, c: 29 });\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport '@spectrum-web-components/slider/sp-slider.js';\nimport '@spectrum-web-components/slider/sp-slider-handle.js';\nimport { Slider, SliderHandle } from '@spectrum-web-components/slider';\nimport { tick } from '../stories/slider.stories.js';\nimport {\n elementUpdated,\n expect,\n fixture,\n html,\n nextFrame,\n oneEvent,\n waitUntil,\n} from '@open-wc/testing';\nimport { sendKeys } from '@web/test-runner-commands';\nimport { ProvideLang } from '@spectrum-web-components/theme';\nimport { sendMouse } from '../../../test/plugins/browser.js';\nimport { stub } from 'sinon';\nimport { testForLitDevWarnings } from '../../../test/testing-helpers.js';\n\ndescribe('Slider', () => {\n testForLitDevWarnings(\n async () =>\n await fixture<Slider>(\n html`\n <sp-slider label=\"Slider\"></sp-slider>\n `\n )\n );\n it('loads', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider label=\"Slider\"></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n it('loads - [variant=\"tick\"]', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider\n label=\"Ticked Slider\"\n min=\"-100\"\n max=\"100\"\n value=\"0\"\n tick-labels\n variant=\"tick\"\n ></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n it('loads - [variant=\"tick\"] irregularly', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider label=\"Slider\"></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n it('receives value from the outside', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider max=\"20\"></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(10);\n\n el.value = 10;\n await elementUpdated(el);\n\n expect(el.value).to.equal(10);\n\n el.value = 50;\n await elementUpdated(el);\n\n expect(el.value).to.equal(20);\n });\n it('accepts keyboard events', async () => {\n const el = await fixture<Slider>(\n tick({\n variant: 'tick',\n tickStep: 5,\n })\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(10);\n expect(el.highlight).to.be.false;\n\n el.focus();\n await sendKeys({\n press: 'ArrowDown',\n });\n await elementUpdated(el);\n\n expect(el.value).to.equal(9);\n expect(el.highlight).to.be.true;\n await sendKeys({\n press: 'ArrowUp',\n });\n await elementUpdated(el);\n\n expect(el.value).to.equal(10);\n expect(el.highlight).to.be.true;\n });\n it('accepts pointer events', async () => {\n let pointerId = -1;\n const el = await fixture<Slider>(\n html`\n <sp-slider></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.dragging).to.be.false;\n expect(el.highlight).to.be.false;\n expect(pointerId).to.equal(-1);\n\n const handle = el.shadowRoot.querySelector('.handle') as HTMLDivElement;\n el.track.setPointerCapture = (id: number) => (pointerId = id);\n el.track.releasePointerCapture = (id: number) => (pointerId = id);\n handle.dispatchEvent(\n new PointerEvent('pointerdown', {\n button: 1,\n pointerId: 1,\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.dragging).to.be.false;\n expect(pointerId, '1').to.equal(-1);\n\n handle.dispatchEvent(\n new PointerEvent('pointerdown', {\n button: 0,\n pointerId: 1,\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.dragging, 'it is dragging 1').to.be.true;\n expect(pointerId, '2').to.equal(1);\n\n handle.dispatchEvent(\n new PointerEvent('pointerup', {\n pointerId: 2,\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.dragging).to.be.false;\n expect(el.highlight).to.be.false;\n expect(pointerId, '3').to.equal(2);\n\n handle.dispatchEvent(\n new PointerEvent('pointerdown', {\n button: 0,\n pointerId: 1,\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.dragging, 'it is dragging 2').to.be.true;\n expect(pointerId, '4').to.equal(1);\n\n handle.dispatchEvent(\n new PointerEvent('pointercancel', {\n pointerId: 3,\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.dragging).to.be.false;\n expect(pointerId, '5').to.equal(3);\n });\n it('will `trackPointerDown` on `#controls`', async () => {\n let pointerId = -1;\n const el = await fixture<Slider>(\n html`\n <sp-slider style=\"width: 500px\" max=\"70\"></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(10);\n\n const controls = el.shadowRoot.querySelector(\n '#controls'\n ) as HTMLDivElement;\n const handle = el.shadowRoot.querySelector('.handle') as HTMLDivElement;\n el.track.setPointerCapture = (id: number) => (pointerId = id);\n el.track.releasePointerCapture = (id: number) => (pointerId = id);\n\n controls.dispatchEvent(\n new PointerEvent('pointerdown', {\n button: 1,\n // account for 8px <body> margin by default\n clientX: 9,\n pointerId: 4,\n bubbles: true,\n cancelable: true,\n })\n );\n await elementUpdated(el);\n\n expect(pointerId).to.equal(-1);\n expect(el.value).to.equal(10);\n expect(el.dragging, 'handle is not yet being dragged').to.be.false;\n\n controls.dispatchEvent(\n new PointerEvent('pointerdown', {\n button: 0,\n // account for 8px <body> margin by default\n clientX: 9,\n pointerId: 4,\n bubbles: true,\n cancelable: true,\n })\n );\n await elementUpdated(el);\n\n expect(pointerId).to.equal(4);\n expect(el.value).to.equal(0);\n expect(el.dragging, 'handle is being dragged').to.be.true;\n handle.dispatchEvent(\n new PointerEvent('pointermove', {\n button: 0,\n // account for 8px <body> margin by default\n clientX: 508,\n pointerId: 4,\n bubbles: true,\n cancelable: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.dragging, 'handle is still being dragged').to.be.true;\n expect(pointerId).to.equal(4);\n expect(el.value).to.equal(70);\n\n handle.dispatchEvent(\n new PointerEvent('pointerup', {\n button: 0,\n // account for 8px <body> margin by default\n clientX: 9,\n pointerId: 4,\n bubbles: true,\n cancelable: true,\n })\n );\n await elementUpdated(el);\n\n expect(pointerId).to.equal(4);\n expect(el.value).to.equal(70);\n expect(el.dragging, 'handle is no longer being dragged').to.be.false;\n });\n it('can be disabled', async () => {\n let pointerId = -1;\n const el = await fixture<Slider>(\n html`\n <sp-slider disabled></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.dragging).to.be.false;\n expect(pointerId).to.equal(-1);\n expect(el.value).to.equal(10);\n\n const handle = el.shadowRoot.querySelector('.handle') as HTMLDivElement;\n handle.setPointerCapture = (id: number) => (pointerId = id);\n\n handle.dispatchEvent(\n new PointerEvent('pointerdown', {\n button: 0,\n pointerId: 1,\n cancelable: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.dragging).to.be.false;\n expect(pointerId).to.equal(-1);\n\n const controls = el.shadowRoot.querySelector(\n '#controls'\n ) as HTMLDivElement;\n\n controls.dispatchEvent(\n new PointerEvent('pointerdown', {\n button: 0,\n clientX: 50,\n pointerId: 1,\n cancelable: true,\n })\n );\n await elementUpdated(el);\n\n expect(pointerId).to.equal(-1);\n expect(el.value).to.equal(10);\n });\n it('accepts pointermove events', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider></sp-slider>\n `\n );\n await elementUpdated(el);\n\n expect(el.value).to.equal(10);\n\n const handle = el.shadowRoot.querySelector('.handle') as HTMLDivElement;\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [9, 30],\n },\n {\n type: 'down',\n },\n ],\n });\n await elementUpdated(el);\n\n expect(el.dragging, 'is dragging').to.be.true;\n expect(el.highlight, 'not highlighted').to.be.false;\n\n handle.dispatchEvent(\n new PointerEvent('pointermove', {\n clientX: 0,\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.value).to.equal(0);\n });\n\n it('manages RTL when min != 0', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider min=\"1\" max=\"11\" dir=\"rtl\"></sp-slider>\n `\n );\n await elementUpdated(el);\n\n expect(el.value).to.equal(10);\n\n const handle = el.shadowRoot.querySelector('.handle') as HTMLDivElement;\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [9, 30],\n },\n {\n type: 'down',\n },\n ],\n });\n await elementUpdated(el);\n\n expect(el.dragging, 'is dragging').to.be.true;\n expect(el.highlight, 'not highlighted').to.be.false;\n\n handle.dispatchEvent(\n new PointerEvent('pointermove', {\n clientX: 0,\n cancelable: true,\n bubbles: true,\n composed: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.value).to.equal(11);\n });\n\n it('goes [disabled] while dragging', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider></sp-slider>\n `\n );\n await elementUpdated(el);\n\n expect(el.value).to.equal(10);\n\n const handle = el.shadowRoot.querySelector('.handle') as HTMLDivElement;\n const handleBoundingRect = handle.getBoundingClientRect();\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n handleBoundingRect.x + handleBoundingRect.width / 2,\n handleBoundingRect.y + handleBoundingRect.height / 2,\n ],\n },\n {\n type: 'down',\n },\n ],\n });\n await elementUpdated(el);\n\n expect(el.dragging, 'is dragging').to.be.true;\n expect(el.highlight, 'not highlighted').to.be.false;\n expect(el.value).to.equal(10);\n\n const inputEvent = oneEvent(el, 'input');\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n handleBoundingRect.x +\n handleBoundingRect.width / 2 +\n 100,\n handleBoundingRect.y + handleBoundingRect.height / 2,\n ],\n },\n ],\n });\n await inputEvent;\n\n expect(el.value).to.equal(13);\n\n el.disabled = true;\n await elementUpdated(el);\n\n expect(el.dragging, 'is dragging').to.be.false;\n expect(el.highlight, 'not highlighted').to.be.false;\n\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n 0,\n handleBoundingRect.top + handleBoundingRect.height / 2,\n ],\n },\n ],\n });\n\n expect(el.value).to.equal(13);\n });\n it('accepts pointermove events in separate interactions', async () => {\n let pointerId = -1;\n const el = await fixture<Slider>(\n html`\n <sp-slider style=\"width: 100px\"></sp-slider>\n `\n );\n await elementUpdated(el);\n\n expect(el.value, 'initial').to.equal(10);\n\n const handle = el.shadowRoot.querySelector('.handle') as HTMLDivElement;\n el.track.setPointerCapture = (id: number) => (pointerId = id);\n el.track.releasePointerCapture = (id: number) => (pointerId = id);\n handle.dispatchEvent(\n new PointerEvent('pointerdown', {\n clientX: 58,\n cancelable: true,\n button: 0,\n pointerId: 100,\n composed: true,\n bubbles: true,\n })\n );\n await elementUpdated(el);\n handle.dispatchEvent(\n new PointerEvent('pointermove', {\n clientX: 58,\n cancelable: true,\n composed: true,\n bubbles: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.value, 'first pointerdown').to.equal(50);\n expect(el.dragging, 'is dragging').to.be.true;\n expect(el.classList.contains('handle-highlight'), 'not highlighted').to\n .be.false;\n expect(pointerId).to.equal(100);\n\n handle.dispatchEvent(\n new PointerEvent('pointermove', {\n clientX: 0,\n cancelable: true,\n composed: true,\n bubbles: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.value, 'first pointermove').to.equal(0);\n\n handle.dispatchEvent(\n new PointerEvent('pointerup', {\n clientX: 0,\n cancelable: true,\n composed: true,\n bubbles: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.value, 'first pointerup').to.equal(0);\n expect(el.dragging, 'is dragging').to.be.false;\n handle.dispatchEvent(\n new PointerEvent('pointerdown', {\n clientX: 58,\n cancelable: true,\n button: 0,\n composed: true,\n bubbles: true,\n })\n );\n await elementUpdated(el);\n handle.dispatchEvent(\n new PointerEvent('pointermove', {\n clientX: 58,\n cancelable: true,\n composed: true,\n bubbles: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.value, 'second pointerdown').to.equal(50);\n expect(el.dragging, 'is dragging').to.be.true;\n expect(el.classList.contains('handle-highlight'), 'not highlighted').to\n .be.false;\n\n handle.dispatchEvent(\n new PointerEvent('pointermove', {\n clientX: 0,\n cancelable: true,\n composed: true,\n bubbles: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.value, 'second pointermove').to.equal(0);\n\n handle.dispatchEvent(\n new PointerEvent('pointerup', {\n clientX: 0,\n cancelable: true,\n composed: true,\n bubbles: true,\n })\n );\n await elementUpdated(el);\n\n expect(el.value, 'second pointerup').to.equal(0);\n expect(el.dragging, 'is dragging').to.be.false;\n });\n it('accepts pointermove events - [step=0]', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider step=\"0\" max=\"20\" style=\"width: 500px; float: left;\">\n Step = 0\n </sp-slider>\n `\n );\n await elementUpdated(el);\n await nextFrame();\n await nextFrame();\n\n expect(el.value).to.equal(10);\n\n const handle = el.shadowRoot.querySelector('.handle') as HTMLDivElement;\n const handleBoundingRect = handle.getBoundingClientRect();\n const position: [number, number] = [\n handleBoundingRect.x + handleBoundingRect.width / 2,\n handleBoundingRect.y + handleBoundingRect.height / 2,\n ];\n await sendMouse({\n steps: [\n {\n type: 'move',\n position,\n },\n {\n type: 'down',\n },\n ],\n });\n\n await nextFrame();\n\n expect(el.highlight, 'with no highlight').to.be.false;\n expect(el.dragging, 'dragging').to.be.true;\n\n let inputEvent = oneEvent(el, 'input');\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n 200,\n handleBoundingRect.y + handleBoundingRect.height + 100,\n ],\n },\n ],\n });\n await inputEvent;\n\n expect(el.value).to.equal(8);\n\n inputEvent = oneEvent(el, 'input');\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [125, position[1]],\n },\n ],\n });\n await inputEvent;\n\n expect(el.value).to.equal(5);\n });\n it('will not pointermove unless `pointerdown`', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(10);\n expect(el.dragging).to.be.false;\n\n const handle = el.shadowRoot.querySelector('.handle') as HTMLDivElement;\n\n handle.dispatchEvent(\n new PointerEvent('pointermove', {\n clientX: 0,\n cancelable: true,\n })\n );\n await nextFrame();\n\n expect(el.value).to.equal(10);\n });\n it('responds to input events on the <input/> element', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(10);\n\n const input = el.shadowRoot.querySelector('.input') as HTMLInputElement;\n\n input.value = '0';\n input.dispatchEvent(new Event('change'));\n\n expect(el.value).to.equal(0);\n });\n it('accepts variants', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider variant=\"tick\"></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.variant).to.equal('tick');\n expect(el.getAttribute('variant')).to.equal('tick');\n\n el.variant = 'ramp';\n\n await elementUpdated(el);\n\n expect(el.variant).to.equal('ramp');\n expect(el.getAttribute('variant')).to.equal('ramp');\n\n el.setAttribute('variant', 'filled');\n\n await elementUpdated(el);\n\n expect(el.variant).to.equal('filled');\n expect(el.getAttribute('variant')).to.equal('filled');\n\n el.removeAttribute('variant');\n\n await elementUpdated(el);\n\n expect(el.variant).to.equal('');\n expect(el.hasAttribute('variant')).to.be.false;\n });\n it('validates variants', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider variant=\"other\"></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.variant).to.equal('');\n expect(el.hasAttribute('variant')).to.be.false;\n\n el.variant = 'tick';\n\n await elementUpdated(el);\n\n expect(el.variant).to.equal('tick');\n expect(el.getAttribute('variant')).to.equal('tick');\n\n el.variant = 'tick';\n\n await elementUpdated(el);\n\n expect(el.variant).to.equal('tick');\n expect(el.getAttribute('variant')).to.equal('tick');\n });\n it('has a `focusElement`', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n const input = el.focusElement as HTMLInputElement;\n expect(input).to.not.be.undefined;\n expect(input.type).to.equal('range');\n });\n it('displays result of getAriaValueText', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider\n value=\"50\"\n min=\"0\"\n max=\"100\"\n .getAriaHandleText=${(value: number) => `${value}%`}\n ></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n const input = el.focusElement as HTMLInputElement;\n expect(input.getAttribute('aria-valuetext')).to.equal('50%');\n\n el.value = 100;\n await elementUpdated(el);\n\n expect(input.getAttribute('aria-valuetext')).to.equal('100%');\n });\n it('displays Intl.formatNumber results', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider\n value=\".5\"\n min=\"0\"\n max=\"1\"\n .formatOptions=${{ style: 'percent' }}\n ></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n const input = el.focusElement as HTMLInputElement;\n expect(input.getAttribute('aria-valuetext')).to.equal('50%');\n\n el.value = 100;\n await elementUpdated(el);\n\n expect(input.getAttribute('aria-valuetext')).to.equal('100%');\n });\n it('obeys language property', async () => {\n let lang = 'de';\n const langResolvers: ProvideLang['callback'][] = [];\n const createLangResolver = (event: CustomEvent<ProvideLang>): void => {\n langResolvers.push(event.detail.callback);\n resolveLanguage();\n };\n const resolveLanguage = (): void => {\n langResolvers.forEach((resolver) => resolver(lang));\n };\n let el = await fixture<Slider>(\n html`\n <sp-slider\n value=\"2.44\"\n min=\"0\"\n max=\"10\"\n step=\"0.01\"\n @sp-language-context=${createLangResolver}\n .formatOptions=${{ maximumFractionDigits: 2 }}\n ></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n let input = el.focusElement as HTMLInputElement;\n expect(\n input.getAttribute('aria-valuetext'),\n 'First German number'\n ).to.equal('2,44');\n\n lang = 'en';\n resolveLanguage();\n await elementUpdated(el);\n\n expect(\n input.getAttribute('aria-valuetext'),\n 'First English number'\n ).to.equal('2.44');\n\n lang = 'de';\n resolveLanguage();\n el = await fixture<Slider>(\n html`\n <sp-slider\n min=\"0\"\n max=\"10\"\n @sp-language-context=${createLangResolver}\n >\n <sp-slider-handle\n slot=\"handle\"\n step=\"0.01\"\n value=\"2.44\"\n .formatOptions=${{ maximumFractionDigits: 2 }}\n @sp-language-context=${createLangResolver}\n ></sp-slider-handle>\n </sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n input = el.focusElement as HTMLInputElement;\n expect(\n input.getAttribute('aria-valuetext'),\n 'Second German number'\n ).to.equal('2,44');\n\n lang = 'en';\n resolveLanguage();\n await elementUpdated(el);\n\n expect(\n input.getAttribute('aria-valuetext'),\n 'Second English number'\n ).to.equal('2.44');\n });\n it('uses fallback ariaValueText', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider value=\"50\" min=\"0\" max=\"100\"></sp-slider>\n `\n );\n\n await elementUpdated(el);\n (\n el as unknown as {\n getAriaValueText: boolean;\n }\n ).getAriaValueText = false;\n\n const input = el.focusElement as HTMLInputElement;\n await elementUpdated(el);\n\n expect(input.getAttribute('aria-valuetext')).to.equal('50');\n });\n it('accepts min/max/value in the same timing', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider></sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(10);\n\n el.min = 0;\n el.max = 200;\n el.value = 200;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(200);\n\n el.value = 500;\n el.min = 0;\n el.max = 500;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(500);\n\n el.value = -100;\n el.min = -100;\n el.max = 500;\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(-100);\n });\n it('returns values for handles', async () => {\n let el = await fixture<Slider>(\n html`\n <sp-slider>\n <sp-slider-handle\n slot=\"handle\"\n name=\"a\"\n min=\"0\"\n value=\"10\"\n ></sp-slider-handle>\n <sp-slider-handle\n id=\"middle-handle\"\n slot=\"handle\"\n name=\"b\"\n value=\"20\"\n ></sp-slider-handle>\n <sp-slider-handle\n slot=\"handle\"\n name=\"c\"\n value=\"30\"\n max=\"100\"\n ></sp-slider-handle>\n </sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.values).to.deep.equal({ a: 10, b: 20, c: 30 });\n\n const middleHandle = el.querySelector('#middle-handle') as SliderHandle;\n middleHandle.value = 22;\n\n await elementUpdated(el);\n\n expect(el.values).to.deep.equal({ a: 10, b: 22, c: 30 });\n\n el = await fixture<Slider>(\n html`\n <sp-slider value=\"10\" min=\"0\" max=\"100\"></sp-slider>\n `\n );\n expect(el.values).to.deep.equal({ value: 10 });\n\n el = await fixture<Slider>(\n html`\n <sp-slider min=\"0\" max=\"100\">\n <sp-slider-handle\n slot=\"handle\"\n value=\"10\"\n ></sp-slider-handle>\n </sp-slider>\n `\n );\n expect(el.values).to.deep.equal({ handle1: 10 });\n });\n it('clamps values for multi-handle slider', async () => {\n const el = await fixture<Slider>(\n html`\n <sp-slider min=\"0\" max=\"100\">\n <sp-slider-handle\n id=\"first-handle\"\n max=\"next\"\n slot=\"handle\"\n name=\"a\"\n value=\"10\"\n ></sp-slider-handle>\n <sp-slider-handle\n id=\"middle-handle\"\n min=\"previous\"\n max=\"next\"\n slot=\"handle\"\n name=\"b\"\n value=\"20\"\n ></sp-slider-handle>\n <sp-slider-handle\n id=\"last-handle\"\n min=\"previous\"\n slot=\"handle\"\n name=\"c\"\n value=\"30\"\n ></sp-slider-handle>\n </sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.values).to.deep.equal({ a: 10, b: 20, c: 30 });\n\n const firstHandle = el.querySelector('#first-handle') as SliderHandle;\n const middleHandle = el.querySelector('#middle-handle') as SliderHandle;\n const lastHandle = el.querySelector('#last-handle') as SliderHandle;\n\n firstHandle.value = 25;\n await elementUpdated(el);\n expect(el.values).to.deep.equal({ a: 20, b: 20, c: 30 });\n\n firstHandle.value = 10;\n await elementUpdated(el);\n middleHandle.value = 5;\n await elementUpdated(el);\n expect(el.values).to.deep.equal({ a: 10, b: 10, c: 30 });\n\n lastHandle.value = 11;\n await elementUpdated(el);\n expect(el.values).to.deep.equal({ a: 10, b: 10, c: 11 });\n\n lastHandle.value = 7;\n await elementUpdated(el);\n expect(el.values).to.deep.equal({ a: 10, b: 10, c: 10 });\n });\n it('warns in Dev Mode when `min=\"previous\"` is leveraged on first handle', async () => {\n const consoleWarnStub = stub(console, 'warn');\n window.__swc.issuedWarnings = new Set<BrandedSWCWarningID>();\n const el = await fixture<Slider>(\n html`\n <sp-slider min=\"0\" max=\"100\">\n <sp-slider-handle\n id=\"first-handle\"\n min=\"previous\"\n max=\"next\"\n slot=\"handle\"\n name=\"a\"\n value=\"10\"\n ></sp-slider-handle>\n <sp-slider-handle\n id=\"middle-handle\"\n min=\"previous\"\n max=\"next\"\n slot=\"handle\"\n name=\"b\"\n value=\"20\"\n ></sp-slider-handle>\n <sp-slider-handle\n id=\"last-handle\"\n min=\"previous\"\n slot=\"handle\"\n name=\"c\"\n value=\"30\"\n ></sp-slider-handle>\n </sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n expect(consoleWarnStub.called).to.be.true;\n const spyCall = consoleWarnStub.getCall(0);\n expect(\n spyCall.args.at(0).includes('previous'),\n 'confirm \"previous\" in message'\n ).to.be.true;\n expect(spyCall.args.at(-1), 'confirm `data` shape').to.deep.equal({\n data: {\n localName: 'sp-slider',\n type: 'api',\n level: 'default',\n },\n });\n consoleWarnStub.restore();\n });\n it('warns in Dev Mode when `max=\"next\"` is leveraged on last handle', async () => {\n const consoleWarnStub = stub(console, 'warn');\n window.__swc.issuedWarnings = new Set<BrandedSWCWarningID>();\n const el = await fixture<Slider>(\n html`\n <sp-slider min=\"0\" max=\"100\">\n <sp-slider-handle\n id=\"first-handle\"\n max=\"next\"\n slot=\"handle\"\n name=\"a\"\n value=\"10\"\n ></sp-slider-handle>\n <sp-slider-handle\n id=\"middle-handle\"\n min=\"previous\"\n max=\"next\"\n slot=\"handle\"\n name=\"b\"\n value=\"20\"\n ></sp-slider-handle>\n <sp-slider-handle\n id=\"last-handle\"\n min=\"previous\"\n max=\"next\"\n slot=\"handle\"\n name=\"c\"\n value=\"30\"\n ></sp-slider-handle>\n </sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n expect(consoleWarnStub.called).to.be.true;\n const spyCall = consoleWarnStub.getCall(0);\n expect(spyCall.args.at(0).includes('next'), 'confirm \"next\" in message')\n .to.be.true;\n expect(spyCall.args.at(-1), 'confirm `data` shape').to.deep.equal({\n data: {\n localName: 'sp-slider',\n type: 'api',\n level: 'default',\n },\n });\n consoleWarnStub.restore();\n });\n it('builds both handles from a <template>', async () => {\n const template = document.createElement('template');\n template.innerHTML = `\n <sp-slider variant=\"range\" step=\"1\" id=\"price\" name=\"price\" label=\"Max Price\" min=\"35425\" max=\"86610\">\n <sp-slider-handle slot=\"handle\" name=\"min\" label=\"Minimum\" max=\"next\" value=\"35425\"></sp-slider-handle>\n <sp-slider-handle slot=\"handle\" name=\"max\" label=\"Maximum\" min=\"previous\" value=\"86610\"></sp-slider-handle>\n </sp-slider>\n `;\n const el = await fixture<HTMLDivElement>(\n html`\n <div></div>\n `\n );\n\n el.appendChild(template.content.cloneNode(true));\n await waitUntil(() => {\n return el.querySelector('sp-slider')?.shadowRoot != null;\n });\n // Sliders take several frames to fully upgrade\n await nextFrame();\n\n const createdHandles =\n el\n .querySelector('sp-slider')\n ?.shadowRoot.querySelectorAll('.handle') || [];\n expect(createdHandles).to.have.lengthOf(2);\n });\n it('enforces next/previous max/min', async () => {\n let el = await fixture<Slider>(\n html`\n <sp-slider min=\"0\" max=\"100\">\n <sp-slider-handle\n id=\"first-handle\"\n max=\"next\"\n slot=\"handle\"\n name=\"a\"\n value=\"10\"\n ></sp-slider-handle>\n <sp-slider-handle\n id=\"middle-handle\"\n min=\"previous\"\n max=\"next\"\n slot=\"handle\"\n name=\"b\"\n value=\"20\"\n ></sp-slider-handle>\n <sp-slider-handle\n id=\"last-handle\"\n min=\"previous\"\n slot=\"handle\"\n name=\"c\"\n value=\"30\"\n ></sp-slider-handle>\n </sp-slider>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.values).to.deep.equal({ a: 10, b: 20, c: 30 });\n\n let firstHandle = el.querySelector('#first-handle') as SliderHandle;\n let lastHandle = el.querySelector('#last-handle') as SliderHandle;\n\n let firstInput = el.shadowRoot.querySelector(\n '.handle[name=\"a\"] > input'\n ) as HTMLInputElement;\n let middleInput = el.shadowRoot.querySelector(\n '.handle[name=\"b\"] > input'\n ) as HTMLInputElement;\n let lastInput = el.shadowRoot.querySelector(\n '.handle[name=\"c\"] > input'\n ) as HTMLInputElement;\n\n expect(firstInput.min).to.equal('0');\n expect(firstInput.max).to.equal('20');\n\n expect(middleInput.min).to.equal('10');\n expect(middleInput.max).to.equal('30');\n\n expect(lastInput.min).to.equal('20');\n expect(lastInput.max).to.equal('100');\n\n firstHandle.value = 15;\n lastHandle.value = 85;\n\n await elementUpdated(el);\n await elementUpdated(el);\n\n expect(firstInput.min).to.equal('0');\n expect(firstInput.max).to.equal('20');\n\n expect(middleInput.min).to.equal('15');\n expect(middleInput.max).to.equal('85');\n\n expect(lastInput.min).to.equal('20');\n expect(lastInput.max).to.equal('100');\n\n el = await fixture<Slider>(\n html`\n <sp-slider>\n <sp-slider-handle\n id=\"first-handle\"\n min=\"0\"\n max=\"next\"\n slot=\"handle\"\n name=\"a\"\n value=\"10\"\n ></sp-slider-handle>\n <sp-slider-handle\n id=\"middle-handle\"\n min=\"previous\"\n max=\"next\"\n slot=\"handle\"\n name=\"b\"\n value=\"20\"\n ></sp-slider-handle>\n <sp-slider-handle\n id=\"last-handle\"\n min=\"previous\"\n max=\"100\"\n slot=\"handle\"\n name=\"c\"\n value=\"30\"\n ></sp-slider-handle>\n </sp-slider>\n `\n );\n\n firstInput = el.shadowRoot.querySelector(\n '.handle[name=\"a\"] > input'\n ) as HTMLInputElement;\n middleInput = el.shadowRoot.querySelector(\n '.handle[name=\"b\"] > input'\n ) as HTMLInputElement;\n lastInput = el.shadowRoot.querySelector(\n '.handle[name=\"c\"] > input'\n ) as HTMLInputElement;\n\n expect(firstInput.min).to.equal('0');\n expect(firstInput.max).to.equal('20');\n\n expect(middleInput.min).to.equal('10');\n expect(middleInput.max).to.equal('30');\n\n expect(lastInput.min).to.equal('20');\n expect(lastInput.max).to.equal('100');\n\n firstHandle = el.querySelector('#first-handle') as SliderHandle;\n lastHandle = el.querySelector('#last-handle') as SliderHandle;\n\n firstHandle.min = 5;\n lastHandle.max = 95;\n\n await elementUpdated(el);\n await elementUpdated(el);\n\n expect(firstInput.min).to.equal('5');\n expect(firstInput.max).to.equal('20');\n\n expect(lastInput.min).to.equal('20');\n expect(lastInput.max).to.equal('95');\n });\n it('sends keyboard events to active handle', async () => {\n // let pointerId = -1;\n\n const el = await fixture<Slider>(\n html`\n <sp-slider step=\"1\" min=\"0\" max=\"100\">\n <sp-slider-handle\n id=\"first-handle\"\n max=\"next\"\n slot=\"handle\"\n name=\"a\"\n value=\"10\"\n ></sp-slider-handle>\n <sp-slider-handle\n id=\"middle-handle\"\n min=\"previous\"\n max=\"next\"\n slot=\"handle\"\n name=\"b\"\n value=\"20\"\n ></sp-slider-handle>\n <sp-slider-handle\n id=\"last-handle\"\n min=\"previous\"\n slot=\"handle\"\n name=\"c\"\n value=\"30\"\n ></sp-slider-handle>\n </sp-slider>\n `\n );\n\n await elementUpdated(el);\n expect(el.values).to.deep.equal({ a: 10, b: 20, c: 30 });\n\n const lastHandle = el.querySelector('#last-handle') as SliderHandle;\n lastHandle.focus();\n\n await sendKeys({\n press: 'ArrowDown',\n });\n await elementUpdated(el);\n expect(el.values).to.deep.equal({ a: 10, b: 20, c: 29 });\n });\n});\n"],
5
+ "mappings": "AAYA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA;AAEA;AACA;AACA;AAEA,SAAS,UAAU,MAAM;AACrB,wBACI,YACI,MAAM,QACF;AAAA;AAAA,iBAGJ,CACR;AACA,KAAG,SAAS,YAAY;AACpB,UAAM,KAAK,MAAM,QACb;AAAA;AAAA,aAGJ;AAEA,UAAM,eAAe,EAAE;AAEvB,UAAM,OAAO,EAAE,EAAE,GAAG,GAAG,WAAW;AAAA,EACtC,CAAC;AACD,KAAG,4BAA4B,YAAY;AACvC,UAAM,KAAK,MAAM,QACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAUJ;AAEA,UAAM,eAAe,EAAE;AAEvB,UAAM,OAAO,EAAE,EAAE,GAAG,GAAG,WAAW;AAAA,EACtC,CAAC;AACD,KAAG,wCAAwC,YAAY;AACnD,UAAM,KAAK,MAAM,QACb;AAAA;AAAA,aAGJ;AAEA,UAAM,eAAe,EAAE;AAEvB,UAAM,OAAO,EAAE,EAAE,GAAG,GAAG,WAAW;AAAA,EACtC,CAAC;AACD,KAAG,mCAAmC,YAAY;AAC9C,UAAM,KAAK,MAAM,QACb;AAAA;AAAA,aAGJ;AAEA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE;AAE5B,OAAG,QAAQ;AACX,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE;AAE5B,OAAG,QAAQ;AACX,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE;AAAA,EAChC,CAAC;AACD,KAAG,2BAA2B,YAAY;AACtC,UAAM,KAAK,MAAM,QACb,KAAK;AAAA,MACD,SAAS;AAAA,MACT,UAAU;AAAA,IACd,CAAC,CACL;AAEA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE;AAC5B,WAAO,GAAG,SAAS,EAAE,GAAG,GAAG;AAE3B,OAAG,MAAM;AACT,UAAM,SAAS;AAAA,MACX,OAAO;AAAA,IACX,CAAC;AACD,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;AAC3B,WAAO,GAAG,SAAS,EAAE,GAAG,GAAG;AAC3B,UAAM,SAAS;AAAA,MACX,OAAO;AAAA,IACX,CAAC;AACD,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE;AAC5B,WAAO,GAAG,SAAS,EAAE,GAAG,GAAG;AAAA,EAC/B,CAAC;AACD,KAAG,0BAA0B,YAAY;AACrC,QAAI,YAAY;AAChB,UAAM,KAAK,MAAM,QACb;AAAA;AAAA,aAGJ;AAEA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,QAAQ,EAAE,GAAG,GAAG;AAC1B,WAAO,GAAG,SAAS,EAAE,GAAG,GAAG;AAC3B,WAAO,SAAS,EAAE,GAAG,MAAM,EAAE;AAE7B,UAAM,SAAS,GAAG,WAAW,cAAc,SAAS;AACpD,OAAG,MAAM,oBAAoB,CAAC,OAAgB,YAAY;AAC1D,OAAG,MAAM,wBAAwB,CAAC,OAAgB,YAAY;AAC9D,WAAO,cACH,IAAI,aAAa,eAAe;AAAA,MAC5B,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,UAAU;AAAA,IACd,CAAC,CACL;AACA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,QAAQ,EAAE,GAAG,GAAG;AAC1B,WAAO,WAAW,GAAG,EAAE,GAAG,MAAM,EAAE;AAElC,WAAO,cACH,IAAI,aAAa,eAAe;AAAA,MAC5B,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,UAAU;AAAA,IACd,CAAC,CACL;AACA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,UAAU,kBAAkB,EAAE,GAAG,GAAG;AAC9C,WAAO,WAAW,GAAG,EAAE,GAAG,MAAM,CAAC;AAEjC,WAAO,cACH,IAAI,aAAa,aAAa;AAAA,MAC1B,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,UAAU;AAAA,IACd,CAAC,CACL;AACA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,QAAQ,EAAE,GAAG,GAAG;AAC1B,WAAO,GAAG,SAAS,EAAE,GAAG,GAAG;AAC3B,WAAO,WAAW,GAAG,EAAE,GAAG,MAAM,CAAC;AAEjC,WAAO,cACH,IAAI,aAAa,eAAe;AAAA,MAC5B,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,UAAU;AAAA,IACd,CAAC,CACL;AACA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,UAAU,kBAAkB,EAAE,GAAG,GAAG;AAC9C,WAAO,WAAW,GAAG,EAAE,GAAG,MAAM,CAAC;AAEjC,WAAO,cACH,IAAI,aAAa,iBAAiB;AAAA,MAC9B,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,UAAU;AAAA,IACd,CAAC,CACL;AACA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,QAAQ,EAAE,GAAG,GAAG;AAC1B,WAAO,WAAW,GAAG,EAAE,GAAG,MAAM,CAAC;AAAA,EACrC,CAAC;AACD,KAAG,0CAA0C,YAAY;AACrD,QAAI,YAAY;AAChB,UAAM,KAAK,MAAM,QACb;AAAA;AAAA,aAGJ;AAEA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE;AAE5B,UAAM,WAAW,GAAG,WAAW,cAC3B,WACJ;AACA,UAAM,SAAS,GAAG,WAAW,cAAc,SAAS;AACpD,OAAG,MAAM,oBAAoB,CAAC,OAAgB,YAAY;AAC1D,OAAG,MAAM,wBAAwB,CAAC,OAAgB,YAAY;AAE9D,aAAS,cACL,IAAI,aAAa,eAAe;AAAA,MAC5B,QAAQ;AAAA,MAER,SAAS;AAAA,MACT,WAAW;AAAA,MACX,SAAS;AAAA,MACT,YAAY;AAAA,IAChB,CAAC,CACL;AACA,UAAM,eAAe,EAAE;AAEvB,WAAO,SAAS,EAAE,GAAG,MAAM,EAAE;AAC7B,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE;AAC5B,WAAO,GAAG,UAAU,iCAAiC,EAAE,GAAG,GAAG;AAE7D,aAAS,cACL,IAAI,aAAa,eAAe;AAAA,MAC5B,QAAQ;AAAA,MAER,SAAS;AAAA,MACT,WAAW;AAAA,MACX,SAAS;AAAA,MACT,YAAY;AAAA,IAChB,CAAC,CACL;AACA,UAAM,eAAe,EAAE;AAEvB,WAAO,SAAS,EAAE,GAAG,MAAM,CAAC;AAC5B,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;AAC3B,WAAO,GAAG,UAAU,yBAAyB,EAAE,GAAG,GAAG;AACrD,WAAO,cACH,IAAI,aAAa,eAAe;AAAA,MAC5B,QAAQ;AAAA,MAER,SAAS;AAAA,MACT,WAAW;AAAA,MACX,SAAS;AAAA,MACT,YAAY;AAAA,IAChB,CAAC,CACL;AACA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,UAAU,+BAA+B,EAAE,GAAG,GAAG;AAC3D,WAAO,SAAS,EAAE,GAAG,MAAM,CAAC;AAC5B,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE;AAE5B,WAAO,cACH,IAAI,aAAa,aAAa;AAAA,MAC1B,QAAQ;AAAA,MAER,SAAS;AAAA,MACT,WAAW;AAAA,MACX,SAAS;AAAA,MACT,YAAY;AAAA,IAChB,CAAC,CACL;AACA,UAAM,eAAe,EAAE;AAEvB,WAAO,SAAS,EAAE,GAAG,MAAM,CAAC;AAC5B,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE;AAC5B,WAAO,GAAG,UAAU,mCAAmC,EAAE,GAAG,GAAG;AAAA,EACnE,CAAC;AACD,KAAG,mBAAmB,YAAY;AAC9B,QAAI,YAAY;AAChB,UAAM,KAAK,MAAM,QACb;AAAA;AAAA,aAGJ;AAEA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,QAAQ,EAAE,GAAG,GAAG;AAC1B,WAAO,SAAS,EAAE,GAAG,MAAM,EAAE;AAC7B,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE;AAE5B,UAAM,SAAS,GAAG,WAAW,cAAc,SAAS;AACpD,WAAO,oBAAoB,CAAC,OAAgB,YAAY;AAExD,WAAO,cACH,IAAI,aAAa,eAAe;AAAA,MAC5B,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,YAAY;AAAA,IAChB,CAAC,CACL;AACA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,QAAQ,EAAE,GAAG,GAAG;AAC1B,WAAO,SAAS,EAAE,GAAG,MAAM,EAAE;AAE7B,UAAM,WAAW,GAAG,WAAW,cAC3B,WACJ;AAEA,aAAS,cACL,IAAI,aAAa,eAAe;AAAA,MAC5B,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY;AAAA,IAChB,CAAC,CACL;AACA,UAAM,eAAe,EAAE;AAEvB,WAAO,SAAS,EAAE,GAAG,MAAM,EAAE;AAC7B,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE;AAAA,EAChC,CAAC;AACD,KAAG,8BAA8B,YAAY;AACzC,UAAM,KAAK,MAAM,QACb;AAAA;AAAA,aAGJ;AACA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE;AAE5B,UAAM,SAAS,GAAG,WAAW,cAAc,SAAS;AACpD,UAAM,UAAU;AAAA,MACZ,OAAO;AAAA,QACH;AAAA,UACI,MAAM;AAAA,UACN,UAAU,CAAC,GAAG,EAAE;AAAA,QACpB;AAAA,QACA;AAAA,UACI,MAAM;AAAA,QACV;AAAA,MACJ;AAAA,IACJ,CAAC;AACD,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,UAAU,aAAa,EAAE,GAAG,GAAG;AACzC,WAAO,GAAG,WAAW,iBAAiB,EAAE,GAAG,GAAG;AAE9C,WAAO,cACH,IAAI,aAAa,eAAe;AAAA,MAC5B,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,UAAU;AAAA,IACd,CAAC,CACL;AACA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;AAAA,EAC/B,CAAC;AAED,KAAG,6BAA6B,YAAY;AACxC,UAAM,KAAK,MAAM,QACb;AAAA;AAAA,aAGJ;AACA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE;AAE5B,UAAM,SAAS,GAAG,WAAW,cAAc,SAAS;AACpD,UAAM,UAAU;AAAA,MACZ,OAAO;AAAA,QACH;AAAA,UACI,MAAM;AAAA,UACN,UAAU,CAAC,GAAG,EAAE;AAAA,QACpB;AAAA,QACA;AAAA,UACI,MAAM;AAAA,QACV;AAAA,MACJ;AAAA,IACJ,CAAC;AACD,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,UAAU,aAAa,EAAE,GAAG,GAAG;AACzC,WAAO,GAAG,WAAW,iBAAiB,EAAE,GAAG,GAAG;AAE9C,WAAO,cACH,IAAI,aAAa,eAAe;AAAA,MAC5B,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,UAAU;AAAA,IACd,CAAC,CACL;AACA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE;AAAA,EAChC,CAAC;AAED,KAAG,kCAAkC,YAAY;AAC7C,UAAM,KAAK,MAAM,QACb;AAAA;AAAA,aAGJ;AACA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE;AAE5B,UAAM,SAAS,GAAG,WAAW,cAAc,SAAS;AACpD,UAAM,qBAAqB,OAAO,sBAAsB;AACxD,UAAM,UAAU;AAAA,MACZ,OAAO;AAAA,QACH;AAAA,UACI,MAAM;AAAA,UACN,UAAU;AAAA,YACN,mBAAmB,IAAI,mBAAmB,QAAQ;AAAA,YAClD,mBAAmB,IAAI,mBAAmB,SAAS;AAAA,UACvD;AAAA,QACJ;AAAA,QACA;AAAA,UACI,MAAM;AAAA,QACV;AAAA,MACJ;AAAA,IACJ,CAAC;AACD,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,UAAU,aAAa,EAAE,GAAG,GAAG;AACzC,WAAO,GAAG,WAAW,iBAAiB,EAAE,GAAG,GAAG;AAC9C,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE;AAE5B,UAAM,aAAa,SAAS,IAAI,OAAO;AACvC,UAAM,UAAU;AAAA,MACZ,OAAO;AAAA,QACH;AAAA,UACI,MAAM;AAAA,UACN,UAAU;AAAA,YACN,mBAAmB,IACf,mBAAmB,QAAQ,IAC3B;AAAA,YACJ,mBAAmB,IAAI,mBAAmB,SAAS;AAAA,UACvD;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ,CAAC;AACD,UAAM;AAEN,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE;AAE5B,OAAG,WAAW;AACd,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,UAAU,aAAa,EAAE,GAAG,GAAG;AACzC,WAAO,GAAG,WAAW,iBAAiB,EAAE,GAAG,GAAG;AAE9C,UAAM,UAAU;AAAA,MACZ,OAAO;AAAA,QACH;AAAA,UACI,MAAM;AAAA,UACN,UAAU;AAAA,YACN;AAAA,YACA,mBAAmB,MAAM,mBAAmB,SAAS;AAAA,UACzD;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ,CAAC;AAED,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE;AAAA,EAChC,CAAC;AACD,KAAG,uDAAuD,YAAY;AAClE,QAAI,YAAY;AAChB,UAAM,KAAK,MAAM,QACb;AAAA;AAAA,aAGJ;AACA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,OAAO,SAAS,EAAE,GAAG,MAAM,EAAE;AAEvC,UAAM,SAAS,GAAG,WAAW,cAAc,SAAS;AACpD,OAAG,MAAM,oBAAoB,CAAC,OAAgB,YAAY;AAC1D,OAAG,MAAM,wBAAwB,CAAC,OAAgB,YAAY;AAC9D,WAAO,cACH,IAAI,aAAa,eAAe;AAAA,MAC5B,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,UAAU;AAAA,MACV,SAAS;AAAA,IACb,CAAC,CACL;AACA,UAAM,eAAe,EAAE;AACvB,WAAO,cACH,IAAI,aAAa,eAAe;AAAA,MAC5B,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,SAAS;AAAA,IACb,CAAC,CACL;AACA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,OAAO,mBAAmB,EAAE,GAAG,MAAM,EAAE;AACjD,WAAO,GAAG,UAAU,aAAa,EAAE,GAAG,GAAG;AACzC,WAAO,GAAG,UAAU,SAAS,kBAAkB,GAAG,iBAAiB,EAAE,GAChE,GAAG;AACR,WAAO,SAAS,EAAE,GAAG,MAAM,GAAG;AAE9B,WAAO,cACH,IAAI,aAAa,eAAe;AAAA,MAC5B,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,SAAS;AAAA,IACb,CAAC,CACL;AACA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,OAAO,mBAAmB,EAAE,GAAG,MAAM,CAAC;AAEhD,WAAO,cACH,IAAI,aAAa,aAAa;AAAA,MAC1B,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,SAAS;AAAA,IACb,CAAC,CACL;AACA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,OAAO,iBAAiB,EAAE,GAAG,MAAM,CAAC;AAC9C,WAAO,GAAG,UAAU,aAAa,EAAE,GAAG,GAAG;AACzC,WAAO,cACH,IAAI,aAAa,eAAe;AAAA,MAC5B,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,SAAS;AAAA,IACb,CAAC,CACL;AACA,UAAM,eAAe,EAAE;AACvB,WAAO,cACH,IAAI,aAAa,eAAe;AAAA,MAC5B,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,SAAS;AAAA,IACb,CAAC,CACL;AACA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,OAAO,oBAAoB,EAAE,GAAG,MAAM,EAAE;AAClD,WAAO,GAAG,UAAU,aAAa,EAAE,GAAG,GAAG;AACzC,WAAO,GAAG,UAAU,SAAS,kBAAkB,GAAG,iBAAiB,EAAE,GAChE,GAAG;AAER,WAAO,cACH,IAAI,aAAa,eAAe;AAAA,MAC5B,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,SAAS;AAAA,IACb,CAAC,CACL;AACA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,OAAO,oBAAoB,EAAE,GAAG,MAAM,CAAC;AAEjD,WAAO,cACH,IAAI,aAAa,aAAa;AAAA,MAC1B,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,SAAS;AAAA,IACb,CAAC,CACL;AACA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,OAAO,kBAAkB,EAAE,GAAG,MAAM,CAAC;AAC/C,WAAO,GAAG,UAAU,aAAa,EAAE,GAAG,GAAG;AAAA,EAC7C,CAAC;AACD,KAAG,yCAAyC,YAAY;AACpD,UAAM,KAAK,MAAM,QACb;AAAA;AAAA;AAAA;AAAA,aAKJ;AACA,UAAM,eAAe,EAAE;AACvB,UAAM,UAAU;AAChB,UAAM,UAAU;AAEhB,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE;AAE5B,UAAM,SAAS,GAAG,WAAW,cAAc,SAAS;AACpD,UAAM,qBAAqB,OAAO,sBAAsB;AACxD,UAAM,WAA6B;AAAA,MAC/B,mBAAmB,IAAI,mBAAmB,QAAQ;AAAA,MAClD,mBAAmB,IAAI,mBAAmB,SAAS;AAAA,IACvD;AACA,UAAM,UAAU;AAAA,MACZ,OAAO;AAAA,QACH;AAAA,UACI,MAAM;AAAA,UACN;AAAA,QACJ;AAAA,QACA;AAAA,UACI,MAAM;AAAA,QACV;AAAA,MACJ;AAAA,IACJ,CAAC;AAED,UAAM,UAAU;AAEhB,WAAO,GAAG,WAAW,mBAAmB,EAAE,GAAG,GAAG;AAChD,WAAO,GAAG,UAAU,UAAU,EAAE,GAAG,GAAG;AAEtC,QAAI,aAAa,SAAS,IAAI,OAAO;AACrC,UAAM,UAAU;AAAA,MACZ,OAAO;AAAA,QACH;AAAA,UACI,MAAM;AAAA,UACN,UAAU;AAAA,YACN;AAAA,YACA,mBAAmB,IAAI,mBAAmB,SAAS;AAAA,UACvD;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ,CAAC;AACD,UAAM;AAEN,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;AAE3B,iBAAa,SAAS,IAAI,OAAO;AACjC,UAAM,UAAU;AAAA,MACZ,OAAO;AAAA,QACH;AAAA,UACI,MAAM;AAAA,UACN,UAAU,CAAC,KAAK,SAAS,EAAE;AAAA,QAC/B;AAAA,MACJ;AAAA,IACJ,CAAC;AACD,UAAM;AAEN,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;AAAA,EAC/B,CAAC;AACD,KAAG,6CAA6C,YAAY;AACxD,UAAM,KAAK,MAAM,QACb;AAAA;AAAA,aAGJ;AAEA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE;AAC5B,WAAO,GAAG,QAAQ,EAAE,GAAG,GAAG;AAE1B,UAAM,SAAS,GAAG,WAAW,cAAc,SAAS;AAEpD,WAAO,cACH,IAAI,aAAa,eAAe;AAAA,MAC5B,SAAS;AAAA,MACT,YAAY;AAAA,IAChB,CAAC,CACL;AACA,UAAM,UAAU;AAEhB,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE;AAAA,EAChC,CAAC;AACD,KAAG,oDAAoD,YAAY;AAC/D,UAAM,KAAK,MAAM,QACb;AAAA;AAAA,aAGJ;AAEA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE;AAE5B,UAAM,QAAQ,GAAG,WAAW,cAAc,QAAQ;AAElD,UAAM,QAAQ;AACd,UAAM,cAAc,IAAI,MAAM,QAAQ,CAAC;AAEvC,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;AAAA,EAC/B,CAAC;AACD,KAAG,oBAAoB,YAAY;AAC/B,UAAM,KAAK,MAAM,QACb;AAAA;AAAA,aAGJ;AAEA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,OAAO,EAAE,GAAG,MAAM,MAAM;AAClC,WAAO,GAAG,aAAa,SAAS,CAAC,EAAE,GAAG,MAAM,MAAM;AAElD,OAAG,UAAU;AAEb,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,OAAO,EAAE,GAAG,MAAM,MAAM;AAClC,WAAO,GAAG,aAAa,SAAS,CAAC,EAAE,GAAG,MAAM,MAAM;AAElD,OAAG,aAAa,WAAW,QAAQ;AAEnC,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,OAAO,EAAE,GAAG,MAAM,QAAQ;AACpC,WAAO,GAAG,aAAa,SAAS,CAAC,EAAE,GAAG,MAAM,QAAQ;AAEpD,OAAG,gBAAgB,SAAS;AAE5B,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,OAAO,EAAE,GAAG,MAAM,EAAE;AAC9B,WAAO,GAAG,aAAa,SAAS,CAAC,EAAE,GAAG,GAAG;AAAA,EAC7C,CAAC;AACD,KAAG,sBAAsB,YAAY;AACjC,UAAM,KAAK,MAAM,QACb;AAAA;AAAA,aAGJ;AAEA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,OAAO,EAAE,GAAG,MAAM,EAAE;AAC9B,WAAO,GAAG,aAAa,SAAS,CAAC,EAAE,GAAG,GAAG;AAEzC,OAAG,UAAU;AAEb,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,OAAO,EAAE,GAAG,MAAM,MAAM;AAClC,WAAO,GAAG,aAAa,SAAS,CAAC,EAAE,GAAG,MAAM,MAAM;AAElD,OAAG,UAAU;AAEb,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,OAAO,EAAE,GAAG,MAAM,MAAM;AAClC,WAAO,GAAG,aAAa,SAAS,CAAC,EAAE,GAAG,MAAM,MAAM;AAAA,EACtD,CAAC;AACD,KAAG,wBAAwB,YAAY;AACnC,UAAM,KAAK,MAAM,QACb;AAAA;AAAA,aAGJ;AAEA,UAAM,eAAe,EAAE;AAEvB,UAAM,QAAQ,GAAG;AACjB,WAAO,KAAK,EAAE,GAAG,IAAI,GAAG;AACxB,WAAO,MAAM,IAAI,EAAE,GAAG,MAAM,OAAO;AAAA,EACvC,CAAC;AACD,KAAG,uCAAuC,YAAY;AAClD,UAAM,KAAK,MAAM,QACb;AAAA;AAAA;AAAA;AAAA;AAAA,yCAK6B,CAAC,UAAkB,GAAG;AAAA;AAAA,aAGvD;AAEA,UAAM,eAAe,EAAE;AAEvB,UAAM,QAAQ,GAAG;AACjB,WAAO,MAAM,aAAa,gBAAgB,CAAC,EAAE,GAAG,MAAM,KAAK;AAE3D,OAAG,QAAQ;AACX,UAAM,eAAe,EAAE;AAEvB,WAAO,MAAM,aAAa,gBAAgB,CAAC,EAAE,GAAG,MAAM,MAAM;AAAA,EAChE,CAAC;AACD,KAAG,sCAAsC,YAAY;AACjD,UAAM,KAAK,MAAM,QACb;AAAA;AAAA;AAAA;AAAA;AAAA,qCAKyB,EAAE,OAAO,UAAU;AAAA;AAAA,aAGhD;AAEA,UAAM,eAAe,EAAE;AAEvB,UAAM,QAAQ,GAAG;AACjB,WAAO,MAAM,aAAa,gBAAgB,CAAC,EAAE,GAAG,MAAM,KAAK;AAE3D,OAAG,QAAQ;AACX,UAAM,eAAe,EAAE;AAEvB,WAAO,MAAM,aAAa,gBAAgB,CAAC,EAAE,GAAG,MAAM,MAAM;AAAA,EAChE,CAAC;AACD,KAAG,2BAA2B,YAAY;AACtC,QAAI,OAAO;AACX,UAAM,gBAA2C,CAAC;AAClD,UAAM,qBAAqB,CAAC,UAA0C;AAClE,oBAAc,KAAK,MAAM,OAAO,QAAQ;AACxC,sBAAgB;AAAA,IACpB;AACA,UAAM,kBAAkB,MAAY;AAChC,oBAAc,QAAQ,CAAC,aAAa,SAAS,IAAI,CAAC;AAAA,IACtD;AACA,QAAI,KAAK,MAAM,QACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2CAM+B;AAAA,qCACN,EAAE,uBAAuB,EAAE;AAAA;AAAA,aAGxD;AAEA,UAAM,eAAe,EAAE;AAEvB,QAAI,QAAQ,GAAG;AACf,WACI,MAAM,aAAa,gBAAgB,GACnC,qBACJ,EAAE,GAAG,MAAM,MAAM;AAEjB,WAAO;AACP,oBAAgB;AAChB,UAAM,eAAe,EAAE;AAEvB,WACI,MAAM,aAAa,gBAAgB,GACnC,sBACJ,EAAE,GAAG,MAAM,MAAM;AAEjB,WAAO;AACP,oBAAgB;AAChB,SAAK,MAAM,QACP;AAAA;AAAA;AAAA;AAAA,2CAI+B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yCAMF,EAAE,uBAAuB,EAAE;AAAA,+CACrB;AAAA;AAAA;AAAA,aAIvC;AAEA,UAAM,eAAe,EAAE;AAEvB,YAAQ,GAAG;AACX,WACI,MAAM,aAAa,gBAAgB,GACnC,sBACJ,EAAE,GAAG,MAAM,MAAM;AAEjB,WAAO;AACP,oBAAgB;AAChB,UAAM,eAAe,EAAE;AAEvB,WACI,MAAM,aAAa,gBAAgB,GACnC,uBACJ,EAAE,GAAG,MAAM,MAAM;AAAA,EACrB,CAAC;AACD,KAAG,+BAA+B,YAAY;AAC1C,UAAM,KAAK,MAAM,QACb;AAAA;AAAA,aAGJ;AAEA,UAAM,eAAe,EAAE;AACvB,IACI,GAGF,mBAAmB;AAErB,UAAM,QAAQ,GAAG;AACjB,UAAM,eAAe,EAAE;AAEvB,WAAO,MAAM,aAAa,gBAAgB,CAAC,EAAE,GAAG,MAAM,IAAI;AAAA,EAC9D,CAAC;AACD,KAAG,4CAA4C,YAAY;AACvD,UAAM,KAAK,MAAM,QACb;AAAA;AAAA,aAGJ;AAEA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE;AAE5B,OAAG,MAAM;AACT,OAAG,MAAM;AACT,OAAG,QAAQ;AAEX,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,GAAG;AAE7B,OAAG,QAAQ;AACX,OAAG,MAAM;AACT,OAAG,MAAM;AAET,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,GAAG;AAE7B,OAAG,QAAQ;AACX,OAAG,MAAM;AACT,OAAG,MAAM;AAET,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,KAAK,EAAE,GAAG,MAAM,IAAI;AAAA,EAClC,CAAC;AACD,KAAG,8BAA8B,YAAY;AACzC,QAAI,KAAK,MAAM,QACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAsBJ;AAEA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,MAAM,EAAE,GAAG,KAAK,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;AAEvD,UAAM,eAAe,GAAG,cAAc,gBAAgB;AACtD,iBAAa,QAAQ;AAErB,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,MAAM,EAAE,GAAG,KAAK,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;AAEvD,SAAK,MAAM,QACP;AAAA;AAAA,aAGJ;AACA,WAAO,GAAG,MAAM,EAAE,GAAG,KAAK,MAAM,EAAE,OAAO,GAAG,CAAC;AAE7C,SAAK,MAAM,QACP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAQJ;AACA,WAAO,GAAG,MAAM,EAAE,GAAG,KAAK,MAAM,EAAE,SAAS,GAAG,CAAC;AAAA,EACnD,CAAC;AACD,KAAG,yCAAyC,YAAY;AACpD,UAAM,KAAK,MAAM,QACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aA0BJ;AAEA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,MAAM,EAAE,GAAG,KAAK,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;AAEvD,UAAM,cAAc,GAAG,cAAc,eAAe;AACpD,UAAM,eAAe,GAAG,cAAc,gBAAgB;AACtD,UAAM,aAAa,GAAG,cAAc,cAAc;AAElD,gBAAY,QAAQ;AACpB,UAAM,eAAe,EAAE;AACvB,WAAO,GAAG,MAAM,EAAE,GAAG,KAAK,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;AAEvD,gBAAY,QAAQ;AACpB,UAAM,eAAe,EAAE;AACvB,iBAAa,QAAQ;AACrB,UAAM,eAAe,EAAE;AACvB,WAAO,GAAG,MAAM,EAAE,GAAG,KAAK,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;AAEvD,eAAW,QAAQ;AACnB,UAAM,eAAe,EAAE;AACvB,WAAO,GAAG,MAAM,EAAE,GAAG,KAAK,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;AAEvD,eAAW,QAAQ;AACnB,UAAM,eAAe,EAAE;AACvB,WAAO,GAAG,MAAM,EAAE,GAAG,KAAK,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;AAAA,EAC3D,CAAC;AACD,KAAG,wEAAwE,YAAY;AACnF,UAAM,kBAAkB,KAAK,SAAS,MAAM;AAC5C,WAAO,MAAM,iBAAiB,oBAAI,IAAyB;AAC3D,UAAM,KAAK,MAAM,QACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aA2BJ;AAEA,UAAM,eAAe,EAAE;AAEvB,WAAO,gBAAgB,MAAM,EAAE,GAAG,GAAG;AACrC,UAAM,UAAU,gBAAgB,QAAQ,CAAC;AACzC,WACI,QAAQ,KAAK,GAAG,CAAC,EAAE,SAAS,UAAU,GACtC,+BACJ,EAAE,GAAG,GAAG;AACR,WAAO,QAAQ,KAAK,GAAG,EAAE,GAAG,sBAAsB,EAAE,GAAG,KAAK,MAAM;AAAA,MAC9D,MAAM;AAAA,QACF,WAAW;AAAA,QACX,MAAM;AAAA,QACN,OAAO;AAAA,MACX;AAAA,IACJ,CAAC;AACD,oBAAgB,QAAQ;AAAA,EAC5B,CAAC;AACD,KAAG,mEAAmE,YAAY;AAC9E,UAAM,kBAAkB,KAAK,SAAS,MAAM;AAC5C,WAAO,MAAM,iBAAiB,oBAAI,IAAyB;AAC3D,UAAM,KAAK,MAAM,QACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aA2BJ;AAEA,UAAM,eAAe,EAAE;AAEvB,WAAO,gBAAgB,MAAM,EAAE,GAAG,GAAG;AACrC,UAAM,UAAU,gBAAgB,QAAQ,CAAC;AACzC,WAAO,QAAQ,KAAK,GAAG,CAAC,EAAE,SAAS,MAAM,GAAG,2BAA2B,EAClE,GAAG,GAAG;AACX,WAAO,QAAQ,KAAK,GAAG,EAAE,GAAG,sBAAsB,EAAE,GAAG,KAAK,MAAM;AAAA,MAC9D,MAAM;AAAA,QACF,WAAW;AAAA,QACX,MAAM;AAAA,QACN,OAAO;AAAA,MACX;AAAA,IACJ,CAAC;AACD,oBAAgB,QAAQ;AAAA,EAC5B,CAAC;AACD,KAAG,yCAAyC,YAAY;AAtpC5D;AAupCQ,UAAM,WAAW,SAAS,cAAc,UAAU;AAClD,aAAS,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAMrB,UAAM,KAAK,MAAM,QACb;AAAA;AAAA,aAGJ;AAEA,OAAG,YAAY,SAAS,QAAQ,UAAU,IAAI,CAAC;AAC/C,UAAM,UAAU,MAAM;AArqC9B;AAsqCY,aAAO,WAAG,cAAc,WAAW,MAA5B,oBAA+B,eAAc;AAAA,IACxD,CAAC;AAED,UAAM,UAAU;AAEhB,UAAM,iBACF,UACK,cAAc,WAAW,MAD9B,mBAEM,WAAW,iBAAiB,eAAc,CAAC;AACrD,WAAO,cAAc,EAAE,GAAG,KAAK,SAAS,CAAC;AAAA,EAC7C,CAAC;AACD,KAAG,kCAAkC,YAAY;AAC7C,QAAI,KAAK,MAAM,QACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aA0BJ;AAEA,UAAM,eAAe,EAAE;AAEvB,WAAO,GAAG,MAAM,EAAE,GAAG,KAAK,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;AAEvD,QAAI,cAAc,GAAG,cAAc,eAAe;AAClD,QAAI,aAAa,GAAG,cAAc,cAAc;AAEhD,QAAI,aAAa,GAAG,WAAW,cAC3B,2BACJ;AACA,QAAI,cAAc,GAAG,WAAW,cAC5B,2BACJ;AACA,QAAI,YAAY,GAAG,WAAW,cAC1B,2BACJ;AAEA,WAAO,WAAW,GAAG,EAAE,GAAG,MAAM,GAAG;AACnC,WAAO,WAAW,GAAG,EAAE,GAAG,MAAM,IAAI;AAEpC,WAAO,YAAY,GAAG,EAAE,GAAG,MAAM,IAAI;AACrC,WAAO,YAAY,GAAG,EAAE,GAAG,MAAM,IAAI;AAErC,WAAO,UAAU,GAAG,EAAE,GAAG,MAAM,IAAI;AACnC,WAAO,UAAU,GAAG,EAAE,GAAG,MAAM,KAAK;AAEpC,gBAAY,QAAQ;AACpB,eAAW,QAAQ;AAEnB,UAAM,eAAe,EAAE;AACvB,UAAM,eAAe,EAAE;AAEvB,WAAO,WAAW,GAAG,EAAE,GAAG,MAAM,GAAG;AACnC,WAAO,WAAW,GAAG,EAAE,GAAG,MAAM,IAAI;AAEpC,WAAO,YAAY,GAAG,EAAE,GAAG,MAAM,IAAI;AACrC,WAAO,YAAY,GAAG,EAAE,GAAG,MAAM,IAAI;AAErC,WAAO,UAAU,GAAG,EAAE,GAAG,MAAM,IAAI;AACnC,WAAO,UAAU,GAAG,EAAE,GAAG,MAAM,KAAK;AAEpC,SAAK,MAAM,QACP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aA4BJ;AAEA,iBAAa,GAAG,WAAW,cACvB,2BACJ;AACA,kBAAc,GAAG,WAAW,cACxB,2BACJ;AACA,gBAAY,GAAG,WAAW,cACtB,2BACJ;AAEA,WAAO,WAAW,GAAG,EAAE,GAAG,MAAM,GAAG;AACnC,WAAO,WAAW,GAAG,EAAE,GAAG,MAAM,IAAI;AAEpC,WAAO,YAAY,GAAG,EAAE,GAAG,MAAM,IAAI;AACrC,WAAO,YAAY,GAAG,EAAE,GAAG,MAAM,IAAI;AAErC,WAAO,UAAU,GAAG,EAAE,GAAG,MAAM,IAAI;AACnC,WAAO,UAAU,GAAG,EAAE,GAAG,MAAM,KAAK;AAEpC,kBAAc,GAAG,cAAc,eAAe;AAC9C,iBAAa,GAAG,cAAc,cAAc;AAE5C,gBAAY,MAAM;AAClB,eAAW,MAAM;AAEjB,UAAM,eAAe,EAAE;AACvB,UAAM,eAAe,EAAE;AAEvB,WAAO,WAAW,GAAG,EAAE,GAAG,MAAM,GAAG;AACnC,WAAO,WAAW,GAAG,EAAE,GAAG,MAAM,IAAI;AAEpC,WAAO,UAAU,GAAG,EAAE,GAAG,MAAM,IAAI;AACnC,WAAO,UAAU,GAAG,EAAE,GAAG,MAAM,IAAI;AAAA,EACvC,CAAC;AACD,KAAG,0CAA0C,YAAY;AAGrD,UAAM,KAAK,MAAM,QACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aA0BJ;AAEA,UAAM,eAAe,EAAE;AACvB,WAAO,GAAG,MAAM,EAAE,GAAG,KAAK,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;AAEvD,UAAM,aAAa,GAAG,cAAc,cAAc;AAClD,eAAW,MAAM;AAEjB,UAAM,SAAS;AAAA,MACX,OAAO;AAAA,IACX,CAAC;AACD,UAAM,eAAe,EAAE;AACvB,WAAO,GAAG,MAAM,EAAE,GAAG,KAAK,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;AAAA,EAC3D,CAAC;AACL,CAAC;",
6
6
  "names": []
7
7
  }