@spectrum-web-components/color-wheel 0.34.0 → 0.35.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.
@@ -92,6 +92,12 @@
92
92
  "default": "1",
93
93
  "attribute": "step"
94
94
  },
95
+ {
96
+ "kind": "field",
97
+ "name": "languageResolver",
98
+ "privacy": "private",
99
+ "default": "new LanguageResolutionController(this)"
100
+ },
95
101
  {
96
102
  "kind": "field",
97
103
  "name": "colorController",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spectrum-web-components/color-wheel",
3
- "version": "0.34.0",
3
+ "version": "0.35.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -62,13 +62,13 @@
62
62
  ],
63
63
  "dependencies": {
64
64
  "@ctrl/tinycolor": "^3.3.3",
65
- "@spectrum-web-components/base": "^0.34.0",
66
- "@spectrum-web-components/color-handle": "^0.34.0",
67
- "@spectrum-web-components/reactive-controllers": "^0.34.0",
68
- "@spectrum-web-components/shared": "^0.34.0"
65
+ "@spectrum-web-components/base": "^0.35.0",
66
+ "@spectrum-web-components/color-handle": "^0.35.0",
67
+ "@spectrum-web-components/reactive-controllers": "^0.35.0",
68
+ "@spectrum-web-components/shared": "^0.35.0"
69
69
  },
70
70
  "devDependencies": {
71
- "@spectrum-css/colorwheel": "^2.0.12"
71
+ "@spectrum-css/colorwheel": "^3.0.27"
72
72
  },
73
73
  "types": "./src/index.d.ts",
74
74
  "customElements": "custom-elements.json",
@@ -76,5 +76,5 @@
76
76
  "./sp-*.js",
77
77
  "./**/*.dev.js"
78
78
  ],
79
- "gitHead": "f9b3294d67cdd52b2c36897cdc1c20ceaeb019cf"
79
+ "gitHead": "1ee5a6c92838cdf48321276d97f61c20f8476ac1"
80
80
  }
@@ -16,6 +16,7 @@ export declare class ColorWheel extends Focusable {
16
16
  private handle;
17
17
  label: string;
18
18
  step: number;
19
+ private languageResolver;
19
20
  private colorController;
20
21
  get value(): number;
21
22
  set value(hue: number);
@@ -24,6 +24,7 @@ import "@spectrum-web-components/color-handle/sp-color-handle.js";
24
24
  import {
25
25
  ColorController
26
26
  } from "@spectrum-web-components/reactive-controllers/src/Color.js";
27
+ import { LanguageResolutionController } from "@spectrum-web-components/reactive-controllers/src/LanguageResolution.js";
27
28
  import styles from "./color-wheel.css.js";
28
29
  export class ColorWheel extends Focusable {
29
30
  constructor() {
@@ -32,6 +33,7 @@ export class ColorWheel extends Focusable {
32
33
  this.focused = false;
33
34
  this.label = "hue";
34
35
  this.step = 1;
36
+ this.languageResolver = new LanguageResolutionController(this);
35
37
  this.colorController = new ColorController(this, {
36
38
  /* c8 ignore next 3 */
37
39
  applyColorToState: () => {
@@ -205,7 +207,7 @@ export class ColorWheel extends Focusable {
205
207
  const pointX = event.clientX - centerX;
206
208
  const pointY = event.clientY - centerY;
207
209
  const value = Math.atan2(pointY, pointX) * 180 / Math.PI;
208
- return (360 + (360 + value)) % 360;
210
+ return (360 + (360 + (this.isLTR ? value : 180 - value))) % 360;
209
211
  }
210
212
  handleGradientPointerdown(event) {
211
213
  if (event.button !== 0 || event.target.classList.contains("innerCircle")) {
@@ -239,7 +241,7 @@ export class ColorWheel extends Focusable {
239
241
  const innerDiameterAfterBorder = innerDiameter + borderWidth * 2;
240
242
  const clipPathBorders = `"M ${radius} ${radius} m -${radius} 0 a ${radius} ${radius} 0 1 0 ${diameter} 0 a ${radius} ${radius} 0 1 0 -${diameter} 0 M ${radius} ${radius} m -${innerRadius} 0 a ${innerRadius} ${innerRadius} 0 1 0 ${innerDiameter} 0 a ${innerRadius} ${innerRadius} 0 1 0 -${innerDiameter} 0"`;
241
243
  const clipPath = `"M ${radiusAfterBoarder} ${radiusAfterBoarder} m -${radiusAfterBoarder} 0 a ${radiusAfterBoarder} ${radiusAfterBoarder} 0 1 0 ${diameterAfterBoarder} 0 a ${radiusAfterBoarder} ${radiusAfterBoarder} 0 1 0 -${diameterAfterBoarder} 0 M ${radiusAfterBoarder} ${radiusAfterBoarder} m -${innerRadiusAfterBorder} 0 a ${innerRadiusAfterBorder} ${innerRadiusAfterBorder} 0 1 0 ${innerDiameterAfterBorder} 0 a ${innerRadiusAfterBorder} ${innerRadiusAfterBorder} 0 1 0 -${innerDiameterAfterBorder} 0"`;
242
- const translateX = (radius - trackWidth / 2) * Math.cos(this.value * Math.PI / 180);
244
+ const translateX = (this.isLTR ? 1 : -1) * (radius - trackWidth / 2) * Math.cos(this.value * Math.PI / 180);
243
245
  const translateY = (radius - trackWidth / 2) * Math.sin(this.value * Math.PI / 180);
244
246
  const handleLocationStyles = `transform: translate(${translateX}px, ${translateY}px);`;
245
247
  return {
@@ -297,6 +299,16 @@ export class ColorWheel extends Focusable {
297
299
  max="360"
298
300
  step=${this.step}
299
301
  .value=${String(this.value)}
302
+ aria-valuetext=${`${new Intl.NumberFormat(
303
+ this.languageResolver.language,
304
+ {
305
+ maximumFractionDigits: 0,
306
+ minimumIntegerDigits: 1,
307
+ style: "unit",
308
+ unit: "degree",
309
+ unitDisplay: "narrow"
310
+ }
311
+ ).format(this.value)}`}
300
312
  @input=${this.handleInput}
301
313
  @change=${this.handleChange}
302
314
  @keydown=${this.handleKeydown}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["ColorWheel.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 {\n CSSResultArray,\n html,\n PropertyValues,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { ifDefined } from '@spectrum-web-components/base/src/directives.js';\nimport {\n property,\n query,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport { streamingListener } from '@spectrum-web-components/base/src/streaming-listener.js';\nimport { SWCResizeObserverEntry, WithSWCResizeObserver } from './types';\nimport { Focusable } from '@spectrum-web-components/shared/src/focusable.js';\nimport type { ColorHandle } from '@spectrum-web-components/color-handle';\nimport '@spectrum-web-components/color-handle/sp-color-handle.js';\nimport {\n ColorController,\n ColorValue,\n HSL,\n} from '@spectrum-web-components/reactive-controllers/src/Color.js';\n\nimport styles from './color-wheel.css.js';\n\n/**\n * @element sp-color-wheel\n * @slot gradient - a custom gradient visually outlining the available color values\n * @fires input - The value of the Color Wheel has changed.\n * @fires change - An alteration to the value of the Color Wheel has been committed by the user.\n */\nexport class ColorWheel extends Focusable {\n public static override get styles(): CSSResultArray {\n return [styles];\n }\n\n @property({ type: String, reflect: true })\n public override dir!: 'ltr' | 'rtl';\n\n @property({ type: Boolean, reflect: true })\n public override disabled = false;\n\n @property({ type: Boolean, reflect: true })\n public focused = false;\n\n @query('.handle')\n private handle!: ColorHandle;\n\n @property({ type: String })\n public label = 'hue';\n\n @property({ type: Number })\n public step = 1;\n\n private colorController = new ColorController(this, {\n /* c8 ignore next 3 */\n applyColorToState: () => {\n return;\n },\n extractColorFromState: (controller) => ({\n ...(controller.getColor('hsl') as HSL),\n h: this.value,\n }),\n maintains: 'saturation',\n });\n\n @property({ type: Number })\n public get value(): number {\n return this.colorController.hue;\n }\n\n public set value(hue: number) {\n this.colorController.hue = hue;\n }\n\n @property({ type: String })\n public get color(): ColorValue {\n return this.colorController.color;\n }\n\n public set color(color: ColorValue) {\n this.colorController.color = color;\n }\n\n private get altered(): number {\n return this._altered;\n }\n\n private set altered(altered: number) {\n this._altered = altered;\n this.step = Math.max(1, this.altered * 10);\n }\n\n private _altered = 0;\n\n @query('input')\n public input!: HTMLInputElement;\n\n public override get focusElement(): HTMLInputElement {\n return this.input;\n }\n\n private handleKeydown(event: KeyboardEvent): void {\n const { key } = event;\n this.focused = true;\n this.altered = [event.shiftKey, event.ctrlKey, event.altKey].filter(\n (key) => !!key\n ).length;\n let delta = 0;\n switch (key) {\n case 'ArrowUp':\n delta = this.step;\n break;\n case 'ArrowDown':\n delta = -this.step;\n break;\n case 'ArrowLeft':\n delta = this.step * (this.isLTR ? -1 : 1);\n break;\n case 'ArrowRight':\n delta = this.step * (this.isLTR ? 1 : -1);\n break;\n default:\n return;\n }\n event.preventDefault();\n this.value = (360 + this.value + delta) % 360;\n this.colorController.savePreviousColor();\n this.colorController.applyColorFromState();\n this.dispatchEvent(\n new Event('input', {\n bubbles: true,\n composed: true,\n })\n );\n const applyDefault = this.dispatchEvent(\n new Event('change', {\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n );\n if (!applyDefault) {\n this.colorController.restorePreviousColor();\n }\n }\n\n private handleInput(event: Event & { target: HTMLInputElement }): void {\n const { valueAsNumber } = event.target;\n\n this.value = valueAsNumber;\n this.colorController.applyColorFromState();\n }\n\n private handleChange(event: Event & { target: HTMLInputElement }): void {\n this.handleInput(event);\n this.dispatchEvent(\n new Event('change', {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n public override focus(focusOptions: FocusOptions = {}): void {\n super.focus(focusOptions);\n this.forwardFocus();\n }\n\n private forwardFocus(): void {\n this.focused = this.hasVisibleFocusInTree();\n this.input.focus();\n }\n\n private handleFocus(): void {\n this.focused = true;\n }\n\n private handleBlur(): void {\n if (this._pointerDown) {\n return;\n }\n this.altered = 0;\n this.focused = false;\n }\n\n private boundingClientRect!: DOMRect;\n private _pointerDown = false;\n\n private handlePointerdown(event: PointerEvent): void {\n if (event.button !== 0) {\n event.preventDefault();\n return;\n }\n this._pointerDown = true;\n this.colorController.savePreviousColor();\n this.boundingClientRect = this.getBoundingClientRect();\n (event.target as HTMLElement).setPointerCapture(event.pointerId);\n if (event.pointerType === 'mouse') {\n this.focused = true;\n }\n }\n\n private handlePointermove(event: PointerEvent): void {\n this.value = this.calculateHandlePosition(event);\n this.colorController.applyColorFromState();\n\n this.dispatchEvent(\n new Event('input', {\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n );\n }\n\n private handlePointerup(event: PointerEvent): void {\n this._pointerDown = false;\n (event.target as HTMLElement).releasePointerCapture(event.pointerId);\n\n const applyDefault = this.dispatchEvent(\n new Event('change', {\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n );\n if (!applyDefault) {\n this.colorController.restorePreviousColor();\n }\n // Retain focus on input element after mouse up to enable keyboard interactions\n this.focus();\n if (event.pointerType === 'mouse') {\n this.focused = false;\n }\n }\n\n /**\n * Returns the value under the cursor\n * @param: PointerEvent on slider\n * @return: Slider value that correlates to the position under the pointer\n */\n private calculateHandlePosition(event: PointerEvent): number {\n /* c8 ignore next 3 */\n if (!this.boundingClientRect) {\n return this.value;\n }\n const rect = this.boundingClientRect;\n const { width, height, left, top } = rect;\n const centerX = left + width / 2;\n const centerY = top + height / 2;\n const pointX = event.clientX - centerX;\n const pointY = event.clientY - centerY;\n const value = (Math.atan2(pointY, pointX) * 180) / Math.PI;\n\n return (360 + (360 + value)) % 360;\n }\n\n private handleGradientPointerdown(event: PointerEvent): void {\n if (\n event.button !== 0 ||\n (event.target as SVGElement).classList.contains('innerCircle')\n ) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n const { button, pointerId, pointerType } = event;\n this.handle.dispatchEvent(\n new PointerEvent('pointerdown', {\n button,\n pointerId,\n pointerType,\n })\n );\n this.handlePointermove(event);\n }\n\n calculateStyleData(): {\n clipPath: string;\n clipPathBorders: string;\n diameter: number;\n handleLocationStyles: string;\n } {\n // Extract values from element.\n const { width: diameter = 160 } = this.boundingClientRect || {};\n const styles = getComputedStyle(this);\n const borderWidth = parseFloat(\n styles.getPropertyValue('--border-width')\n );\n const trackWidth = parseFloat(styles.getPropertyValue('--track-width'));\n\n // Calculate wheel data.\n const radius = diameter / 2;\n const diameterAfterBoarder = diameter - borderWidth * 2;\n const radiusAfterBoarder = radius - borderWidth;\n const innerRadius = radius - trackWidth;\n const innerDiameter = innerRadius * 2;\n const innerRadiusAfterBorder = innerRadius + borderWidth;\n const innerDiameterAfterBorder = innerDiameter + borderWidth * 2;\n const clipPathBorders = `\"M ${radius} ${radius} m -${radius} 0 a ${radius} ${radius} 0 1 0 ${diameter} 0 a ${radius} ${radius} 0 1 0 -${diameter} 0 M ${radius} ${radius} m -${innerRadius} 0 a ${innerRadius} ${innerRadius} 0 1 0 ${innerDiameter} 0 a ${innerRadius} ${innerRadius} 0 1 0 -${innerDiameter} 0\"`;\n const clipPath = `\"M ${radiusAfterBoarder} ${radiusAfterBoarder} m -${radiusAfterBoarder} 0 a ${radiusAfterBoarder} ${radiusAfterBoarder} 0 1 0 ${diameterAfterBoarder} 0 a ${radiusAfterBoarder} ${radiusAfterBoarder} 0 1 0 -${diameterAfterBoarder} 0 M ${radiusAfterBoarder} ${radiusAfterBoarder} m -${innerRadiusAfterBorder} 0 a ${innerRadiusAfterBorder} ${innerRadiusAfterBorder} 0 1 0 ${innerDiameterAfterBorder} 0 a ${innerRadiusAfterBorder} ${innerRadiusAfterBorder} 0 1 0 -${innerDiameterAfterBorder} 0\"`;\n\n // Calculate handle position on the wheel.\n const translateX =\n (radius - trackWidth / 2) * Math.cos((this.value * Math.PI) / 180);\n const translateY =\n (radius - trackWidth / 2) * Math.sin((this.value * Math.PI) / 180);\n const handleLocationStyles = `transform: translate(${translateX}px, ${translateY}px);`;\n\n return {\n clipPath,\n clipPathBorders,\n diameter,\n handleLocationStyles,\n };\n }\n\n protected override render(): TemplateResult {\n const { clipPath, clipPathBorders, diameter, handleLocationStyles } =\n this.calculateStyleData();\n\n return html`\n <slot\n name=\"gradient\"\n @pointerdown=${this.handleGradientPointerdown}\n style=\"\n --spectrum-colorwheel-colorarea-container-size: ${diameter}px;\n --spectrum-colorwheel-height: ${diameter}px;\n --spectrum-colorwheel-width: ${diameter}px;\n --spectrum-colorwheel-path-borders: ${clipPathBorders};\n --spectrum-colorwheel-path: ${clipPath};\n \"\n >\n <div class=\"inner\">\n <div class=\"colorarea-container\"></div>\n </div>\n <div class=\"border\">\n <div class=\"wheel\"></div>\n </div>\n </slot>\n\n <sp-color-handle\n tabindex=${ifDefined(this.focused ? undefined : '0')}\n @focus=${this.forwardFocus}\n ?focused=${this.focused}\n class=\"handle\"\n color=\"hsl(${this.value}, 100%, 50%)\"\n ?disabled=${this.disabled}\n style=${handleLocationStyles}\n ${streamingListener({\n start: ['pointerdown', this.handlePointerdown],\n streamInside: ['pointermove', this.handlePointermove],\n end: [\n ['pointerup', 'pointercancel', 'pointerleave'],\n this.handlePointerup,\n ],\n })}\n ></sp-color-handle>\n\n <input\n type=\"range\"\n class=\"slider\"\n aria-label=${this.label}\n min=\"0\"\n max=\"360\"\n step=${this.step}\n .value=${String(this.value)}\n @input=${this.handleInput}\n @change=${this.handleChange}\n @keydown=${this.handleKeydown}\n />\n `;\n }\n\n protected override firstUpdated(changed: PropertyValues): void {\n super.firstUpdated(changed);\n this.boundingClientRect = this.getBoundingClientRect();\n this.addEventListener('focus', this.handleFocus);\n this.addEventListener('blur', this.handleBlur);\n }\n\n private observer?: WithSWCResizeObserver['ResizeObserver'];\n\n public override connectedCallback(): void {\n super.connectedCallback();\n if (\n !this.observer &&\n (window as unknown as WithSWCResizeObserver).ResizeObserver\n ) {\n this.observer = new (\n window as unknown as WithSWCResizeObserver\n ).ResizeObserver((entries: SWCResizeObserverEntry[]) => {\n for (const entry of entries) {\n this.boundingClientRect = entry.contentRect;\n }\n this.requestUpdate();\n });\n }\n this.observer?.observe(this);\n }\n\n public override disconnectedCallback(): void {\n this.observer?.unobserve(this);\n super.disconnectedCallback();\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 {\n CSSResultArray,\n html,\n PropertyValues,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { ifDefined } from '@spectrum-web-components/base/src/directives.js';\nimport {\n property,\n query,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport { streamingListener } from '@spectrum-web-components/base/src/streaming-listener.js';\nimport { SWCResizeObserverEntry, WithSWCResizeObserver } from './types';\nimport { Focusable } from '@spectrum-web-components/shared/src/focusable.js';\nimport type { ColorHandle } from '@spectrum-web-components/color-handle';\nimport '@spectrum-web-components/color-handle/sp-color-handle.js';\nimport {\n ColorController,\n ColorValue,\n HSL,\n} from '@spectrum-web-components/reactive-controllers/src/Color.js';\nimport { LanguageResolutionController } from '@spectrum-web-components/reactive-controllers/src/LanguageResolution.js';\n\nimport styles from './color-wheel.css.js';\n\n/**\n * @element sp-color-wheel\n * @slot gradient - a custom gradient visually outlining the available color values\n * @fires input - The value of the Color Wheel has changed.\n * @fires change - An alteration to the value of the Color Wheel has been committed by the user.\n */\nexport class ColorWheel extends Focusable {\n public static override get styles(): CSSResultArray {\n return [styles];\n }\n\n @property({ type: String, reflect: true })\n public override dir!: 'ltr' | 'rtl';\n\n @property({ type: Boolean, reflect: true })\n public override disabled = false;\n\n @property({ type: Boolean, reflect: true })\n public focused = false;\n\n @query('.handle')\n private handle!: ColorHandle;\n\n @property({ type: String })\n public label = 'hue';\n\n @property({ type: Number })\n public step = 1;\n\n private languageResolver = new LanguageResolutionController(this);\n\n private colorController = new ColorController(this, {\n /* c8 ignore next 3 */\n applyColorToState: () => {\n return;\n },\n extractColorFromState: (controller) => ({\n ...(controller.getColor('hsl') as HSL),\n h: this.value,\n }),\n maintains: 'saturation',\n });\n\n @property({ type: Number })\n public get value(): number {\n return this.colorController.hue;\n }\n\n public set value(hue: number) {\n this.colorController.hue = hue;\n }\n\n @property({ type: String })\n public get color(): ColorValue {\n return this.colorController.color;\n }\n\n public set color(color: ColorValue) {\n this.colorController.color = color;\n }\n\n private get altered(): number {\n return this._altered;\n }\n\n private set altered(altered: number) {\n this._altered = altered;\n this.step = Math.max(1, this.altered * 10);\n }\n\n private _altered = 0;\n\n @query('input')\n public input!: HTMLInputElement;\n\n public override get focusElement(): HTMLInputElement {\n return this.input;\n }\n\n private handleKeydown(event: KeyboardEvent): void {\n const { key } = event;\n this.focused = true;\n this.altered = [event.shiftKey, event.ctrlKey, event.altKey].filter(\n (key) => !!key\n ).length;\n let delta = 0;\n switch (key) {\n case 'ArrowUp':\n delta = this.step;\n break;\n case 'ArrowDown':\n delta = -this.step;\n break;\n case 'ArrowLeft':\n delta = this.step * (this.isLTR ? -1 : 1);\n break;\n case 'ArrowRight':\n delta = this.step * (this.isLTR ? 1 : -1);\n break;\n default:\n return;\n }\n event.preventDefault();\n this.value = (360 + this.value + delta) % 360;\n this.colorController.savePreviousColor();\n this.colorController.applyColorFromState();\n this.dispatchEvent(\n new Event('input', {\n bubbles: true,\n composed: true,\n })\n );\n const applyDefault = this.dispatchEvent(\n new Event('change', {\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n );\n if (!applyDefault) {\n this.colorController.restorePreviousColor();\n }\n }\n\n private handleInput(event: Event & { target: HTMLInputElement }): void {\n const { valueAsNumber } = event.target;\n\n this.value = valueAsNumber;\n this.colorController.applyColorFromState();\n }\n\n private handleChange(event: Event & { target: HTMLInputElement }): void {\n this.handleInput(event);\n this.dispatchEvent(\n new Event('change', {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n public override focus(focusOptions: FocusOptions = {}): void {\n super.focus(focusOptions);\n this.forwardFocus();\n }\n\n private forwardFocus(): void {\n this.focused = this.hasVisibleFocusInTree();\n this.input.focus();\n }\n\n private handleFocus(): void {\n this.focused = true;\n }\n\n private handleBlur(): void {\n if (this._pointerDown) {\n return;\n }\n this.altered = 0;\n this.focused = false;\n }\n\n private boundingClientRect!: DOMRect;\n private _pointerDown = false;\n\n private handlePointerdown(event: PointerEvent): void {\n if (event.button !== 0) {\n event.preventDefault();\n return;\n }\n this._pointerDown = true;\n this.colorController.savePreviousColor();\n this.boundingClientRect = this.getBoundingClientRect();\n (event.target as HTMLElement).setPointerCapture(event.pointerId);\n if (event.pointerType === 'mouse') {\n this.focused = true;\n }\n }\n\n private handlePointermove(event: PointerEvent): void {\n this.value = this.calculateHandlePosition(event);\n this.colorController.applyColorFromState();\n\n this.dispatchEvent(\n new Event('input', {\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n );\n }\n\n private handlePointerup(event: PointerEvent): void {\n this._pointerDown = false;\n (event.target as HTMLElement).releasePointerCapture(event.pointerId);\n\n const applyDefault = this.dispatchEvent(\n new Event('change', {\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n );\n if (!applyDefault) {\n this.colorController.restorePreviousColor();\n }\n // Retain focus on input element after mouse up to enable keyboard interactions\n this.focus();\n if (event.pointerType === 'mouse') {\n this.focused = false;\n }\n }\n\n /**\n * Returns the value under the cursor\n * @param: PointerEvent on slider\n * @return: Slider value that correlates to the position under the pointer\n */\n private calculateHandlePosition(event: PointerEvent): number {\n /* c8 ignore next 3 */\n if (!this.boundingClientRect) {\n return this.value;\n }\n const rect = this.boundingClientRect;\n const { width, height, left, top } = rect;\n const centerX = left + width / 2;\n const centerY = top + height / 2;\n const pointX = event.clientX - centerX;\n const pointY = event.clientY - centerY;\n const value = (Math.atan2(pointY, pointX) * 180) / Math.PI;\n\n return (360 + (360 + (this.isLTR ? value : 180 - value))) % 360;\n }\n\n private handleGradientPointerdown(event: PointerEvent): void {\n if (\n event.button !== 0 ||\n (event.target as SVGElement).classList.contains('innerCircle')\n ) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n const { button, pointerId, pointerType } = event;\n this.handle.dispatchEvent(\n new PointerEvent('pointerdown', {\n button,\n pointerId,\n pointerType,\n })\n );\n this.handlePointermove(event);\n }\n\n calculateStyleData(): {\n clipPath: string;\n clipPathBorders: string;\n diameter: number;\n handleLocationStyles: string;\n } {\n // Extract values from element.\n const { width: diameter = 160 } = this.boundingClientRect || {};\n const styles = getComputedStyle(this);\n const borderWidth = parseFloat(\n styles.getPropertyValue('--border-width')\n );\n const trackWidth = parseFloat(styles.getPropertyValue('--track-width'));\n\n // Calculate wheel data.\n const radius = diameter / 2;\n const diameterAfterBoarder = diameter - borderWidth * 2;\n const radiusAfterBoarder = radius - borderWidth;\n const innerRadius = radius - trackWidth;\n const innerDiameter = innerRadius * 2;\n const innerRadiusAfterBorder = innerRadius + borderWidth;\n const innerDiameterAfterBorder = innerDiameter + borderWidth * 2;\n const clipPathBorders = `\"M ${radius} ${radius} m -${radius} 0 a ${radius} ${radius} 0 1 0 ${diameter} 0 a ${radius} ${radius} 0 1 0 -${diameter} 0 M ${radius} ${radius} m -${innerRadius} 0 a ${innerRadius} ${innerRadius} 0 1 0 ${innerDiameter} 0 a ${innerRadius} ${innerRadius} 0 1 0 -${innerDiameter} 0\"`;\n const clipPath = `\"M ${radiusAfterBoarder} ${radiusAfterBoarder} m -${radiusAfterBoarder} 0 a ${radiusAfterBoarder} ${radiusAfterBoarder} 0 1 0 ${diameterAfterBoarder} 0 a ${radiusAfterBoarder} ${radiusAfterBoarder} 0 1 0 -${diameterAfterBoarder} 0 M ${radiusAfterBoarder} ${radiusAfterBoarder} m -${innerRadiusAfterBorder} 0 a ${innerRadiusAfterBorder} ${innerRadiusAfterBorder} 0 1 0 ${innerDiameterAfterBorder} 0 a ${innerRadiusAfterBorder} ${innerRadiusAfterBorder} 0 1 0 -${innerDiameterAfterBorder} 0\"`;\n\n // Calculate handle position on the wheel.\n const translateX =\n (this.isLTR ? 1 : -1) *\n (radius - trackWidth / 2) *\n Math.cos((this.value * Math.PI) / 180);\n const translateY =\n (radius - trackWidth / 2) * Math.sin((this.value * Math.PI) / 180);\n const handleLocationStyles = `transform: translate(${translateX}px, ${translateY}px);`;\n\n return {\n clipPath,\n clipPathBorders,\n diameter,\n handleLocationStyles,\n };\n }\n\n protected override render(): TemplateResult {\n const { clipPath, clipPathBorders, diameter, handleLocationStyles } =\n this.calculateStyleData();\n\n return html`\n <slot\n name=\"gradient\"\n @pointerdown=${this.handleGradientPointerdown}\n style=\"\n --spectrum-colorwheel-colorarea-container-size: ${diameter}px;\n --spectrum-colorwheel-height: ${diameter}px;\n --spectrum-colorwheel-width: ${diameter}px;\n --spectrum-colorwheel-path-borders: ${clipPathBorders};\n --spectrum-colorwheel-path: ${clipPath};\n \"\n >\n <div class=\"inner\">\n <div class=\"colorarea-container\"></div>\n </div>\n <div class=\"border\">\n <div class=\"wheel\"></div>\n </div>\n </slot>\n\n <sp-color-handle\n tabindex=${ifDefined(this.focused ? undefined : '0')}\n @focus=${this.forwardFocus}\n ?focused=${this.focused}\n class=\"handle\"\n color=\"hsl(${this.value}, 100%, 50%)\"\n ?disabled=${this.disabled}\n style=${handleLocationStyles}\n ${streamingListener({\n start: ['pointerdown', this.handlePointerdown],\n streamInside: ['pointermove', this.handlePointermove],\n end: [\n ['pointerup', 'pointercancel', 'pointerleave'],\n this.handlePointerup,\n ],\n })}\n ></sp-color-handle>\n\n <input\n type=\"range\"\n class=\"slider\"\n aria-label=${this.label}\n min=\"0\"\n max=\"360\"\n step=${this.step}\n .value=${String(this.value)}\n aria-valuetext=${`${new Intl.NumberFormat(\n this.languageResolver.language,\n {\n maximumFractionDigits: 0,\n minimumIntegerDigits: 1,\n style: 'unit',\n unit: 'degree',\n unitDisplay: 'narrow',\n }\n ).format(this.value)}`}\n @input=${this.handleInput}\n @change=${this.handleChange}\n @keydown=${this.handleKeydown}\n />\n `;\n }\n\n protected override firstUpdated(changed: PropertyValues): void {\n super.firstUpdated(changed);\n this.boundingClientRect = this.getBoundingClientRect();\n this.addEventListener('focus', this.handleFocus);\n this.addEventListener('blur', this.handleBlur);\n }\n\n private observer?: WithSWCResizeObserver['ResizeObserver'];\n\n public override connectedCallback(): void {\n super.connectedCallback();\n if (\n !this.observer &&\n (window as unknown as WithSWCResizeObserver).ResizeObserver\n ) {\n this.observer = new (\n window as unknown as WithSWCResizeObserver\n ).ResizeObserver((entries: SWCResizeObserverEntry[]) => {\n for (const entry of entries) {\n this.boundingClientRect = entry.contentRect;\n }\n this.requestUpdate();\n });\n }\n this.observer?.observe(this);\n }\n\n public override disconnectedCallback(): void {\n this.observer?.unobserve(this);\n super.disconnectedCallback();\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["key", "styles"]
7
7
  }
package/src/ColorWheel.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var C=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var n=(h,u,e,o)=>{for(var t=o>1?void 0:o?g(u,e):u,i=h.length-1,r;i>=0;i--)(r=h[i])&&(t=(o?r(u,e,t):r(t))||t);return o&&t&&C(u,e,t),t};import{html as P}from"@spectrum-web-components/base";import{ifDefined as E}from"@spectrum-web-components/base/src/directives.js";import{property as c,query as b}from"@spectrum-web-components/base/src/decorators.js";import{streamingListener as R}from"@spectrum-web-components/base/src/streaming-listener.js";import{Focusable as S}from"@spectrum-web-components/shared/src/focusable.js";import"@spectrum-web-components/color-handle/sp-color-handle.js";import{ColorController as D}from"@spectrum-web-components/reactive-controllers/src/Color.js";import L from"./color-wheel.css.js";export class ColorWheel extends S{constructor(){super(...arguments);this.disabled=!1;this.focused=!1;this.label="hue";this.step=1;this.colorController=new D(this,{applyColorToState:()=>{},extractColorFromState:e=>({...e.getColor("hsl"),h:this.value}),maintains:"saturation"});this._altered=0;this._pointerDown=!1}static get styles(){return[L]}get value(){return this.colorController.hue}set value(e){this.colorController.hue=e}get color(){return this.colorController.color}set color(e){this.colorController.color=e}get altered(){return this._altered}set altered(e){this._altered=e,this.step=Math.max(1,this.altered*10)}get focusElement(){return this.input}handleKeydown(e){const{key:o}=e;this.focused=!0,this.altered=[e.shiftKey,e.ctrlKey,e.altKey].filter(r=>!!r).length;let t=0;switch(o){case"ArrowUp":t=this.step;break;case"ArrowDown":t=-this.step;break;case"ArrowLeft":t=this.step*(this.isLTR?-1:1);break;case"ArrowRight":t=this.step*(this.isLTR?1:-1);break;default:return}e.preventDefault(),this.value=(360+this.value+t)%360,this.colorController.savePreviousColor(),this.colorController.applyColorFromState(),this.dispatchEvent(new Event("input",{bubbles:!0,composed:!0})),this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0,cancelable:!0}))||this.colorController.restorePreviousColor()}handleInput(e){const{valueAsNumber:o}=e.target;this.value=o,this.colorController.applyColorFromState()}handleChange(e){this.handleInput(e),this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0}))}focus(e={}){super.focus(e),this.forwardFocus()}forwardFocus(){this.focused=this.hasVisibleFocusInTree(),this.input.focus()}handleFocus(){this.focused=!0}handleBlur(){this._pointerDown||(this.altered=0,this.focused=!1)}handlePointerdown(e){if(e.button!==0){e.preventDefault();return}this._pointerDown=!0,this.colorController.savePreviousColor(),this.boundingClientRect=this.getBoundingClientRect(),e.target.setPointerCapture(e.pointerId),e.pointerType==="mouse"&&(this.focused=!0)}handlePointermove(e){this.value=this.calculateHandlePosition(e),this.colorController.applyColorFromState(),this.dispatchEvent(new Event("input",{bubbles:!0,composed:!0,cancelable:!0}))}handlePointerup(e){this._pointerDown=!1,e.target.releasePointerCapture(e.pointerId),this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0,cancelable:!0}))||this.colorController.restorePreviousColor(),this.focus(),e.pointerType==="mouse"&&(this.focused=!1)}calculateHandlePosition(e){if(!this.boundingClientRect)return this.value;const o=this.boundingClientRect,{width:t,height:i,left:r,top:p}=o,s=r+t/2,a=p+i/2,d=e.clientX-s,l=e.clientY-a;return(360+(360+Math.atan2(l,d)*180/Math.PI))%360}handleGradientPointerdown(e){if(e.button!==0||e.target.classList.contains("innerCircle"))return;e.stopPropagation(),e.preventDefault();const{button:o,pointerId:t,pointerType:i}=e;this.handle.dispatchEvent(new PointerEvent("pointerdown",{button:o,pointerId:t,pointerType:i})),this.handlePointermove(e)}calculateStyleData(){const{width:e=160}=this.boundingClientRect||{},o=getComputedStyle(this),t=parseFloat(o.getPropertyValue("--border-width")),i=parseFloat(o.getPropertyValue("--track-width")),r=e/2,p=e-t*2,s=r-t,a=r-i,d=a*2,l=a+t,v=d+t*2,m=`"M ${r} ${r} m -${r} 0 a ${r} ${r} 0 1 0 ${e} 0 a ${r} ${r} 0 1 0 -${e} 0 M ${r} ${r} m -${a} 0 a ${a} ${a} 0 1 0 ${d} 0 a ${a} ${a} 0 1 0 -${d} 0"`,f=`"M ${s} ${s} m -${s} 0 a ${s} ${s} 0 1 0 ${p} 0 a ${s} ${s} 0 1 0 -${p} 0 M ${s} ${s} m -${l} 0 a ${l} ${l} 0 1 0 ${v} 0 a ${l} ${l} 0 1 0 -${v} 0"`,$=(r-i/2)*Math.cos(this.value*Math.PI/180),y=(r-i/2)*Math.sin(this.value*Math.PI/180),w=`transform: translate(${$}px, ${y}px);`;return{clipPath:f,clipPathBorders:m,diameter:e,handleLocationStyles:w}}render(){const{clipPath:e,clipPathBorders:o,diameter:t,handleLocationStyles:i}=this.calculateStyleData();return P`
1
+ "use strict";var y=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var n=(v,c,e,i)=>{for(var t=i>1?void 0:i?C(c,e):c,o=v.length-1,r;o>=0;o--)(r=v[o])&&(t=(i?r(c,e,t):r(t))||t);return i&&t&&y(c,e,t),t};import{html as P}from"@spectrum-web-components/base";import{ifDefined as R}from"@spectrum-web-components/base/src/directives.js";import{property as u,query as b}from"@spectrum-web-components/base/src/decorators.js";import{streamingListener as E}from"@spectrum-web-components/base/src/streaming-listener.js";import{Focusable as S}from"@spectrum-web-components/shared/src/focusable.js";import"@spectrum-web-components/color-handle/sp-color-handle.js";import{ColorController as D}from"@spectrum-web-components/reactive-controllers/src/Color.js";import{LanguageResolutionController as L}from"@spectrum-web-components/reactive-controllers/src/LanguageResolution.js";import M from"./color-wheel.css.js";export class ColorWheel extends S{constructor(){super(...arguments);this.disabled=!1;this.focused=!1;this.label="hue";this.step=1;this.languageResolver=new L(this);this.colorController=new D(this,{applyColorToState:()=>{},extractColorFromState:e=>({...e.getColor("hsl"),h:this.value}),maintains:"saturation"});this._altered=0;this._pointerDown=!1}static get styles(){return[M]}get value(){return this.colorController.hue}set value(e){this.colorController.hue=e}get color(){return this.colorController.color}set color(e){this.colorController.color=e}get altered(){return this._altered}set altered(e){this._altered=e,this.step=Math.max(1,this.altered*10)}get focusElement(){return this.input}handleKeydown(e){const{key:i}=e;this.focused=!0,this.altered=[e.shiftKey,e.ctrlKey,e.altKey].filter(r=>!!r).length;let t=0;switch(i){case"ArrowUp":t=this.step;break;case"ArrowDown":t=-this.step;break;case"ArrowLeft":t=this.step*(this.isLTR?-1:1);break;case"ArrowRight":t=this.step*(this.isLTR?1:-1);break;default:return}e.preventDefault(),this.value=(360+this.value+t)%360,this.colorController.savePreviousColor(),this.colorController.applyColorFromState(),this.dispatchEvent(new Event("input",{bubbles:!0,composed:!0})),this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0,cancelable:!0}))||this.colorController.restorePreviousColor()}handleInput(e){const{valueAsNumber:i}=e.target;this.value=i,this.colorController.applyColorFromState()}handleChange(e){this.handleInput(e),this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0}))}focus(e={}){super.focus(e),this.forwardFocus()}forwardFocus(){this.focused=this.hasVisibleFocusInTree(),this.input.focus()}handleFocus(){this.focused=!0}handleBlur(){this._pointerDown||(this.altered=0,this.focused=!1)}handlePointerdown(e){if(e.button!==0){e.preventDefault();return}this._pointerDown=!0,this.colorController.savePreviousColor(),this.boundingClientRect=this.getBoundingClientRect(),e.target.setPointerCapture(e.pointerId),e.pointerType==="mouse"&&(this.focused=!0)}handlePointermove(e){this.value=this.calculateHandlePosition(e),this.colorController.applyColorFromState(),this.dispatchEvent(new Event("input",{bubbles:!0,composed:!0,cancelable:!0}))}handlePointerup(e){this._pointerDown=!1,e.target.releasePointerCapture(e.pointerId),this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0,cancelable:!0}))||this.colorController.restorePreviousColor(),this.focus(),e.pointerType==="mouse"&&(this.focused=!1)}calculateHandlePosition(e){if(!this.boundingClientRect)return this.value;const i=this.boundingClientRect,{width:t,height:o,left:r,top:h}=i,s=r+t/2,a=h+o/2,d=e.clientX-s,l=e.clientY-a,p=Math.atan2(l,d)*180/Math.PI;return(360+(360+(this.isLTR?p:180-p)))%360}handleGradientPointerdown(e){if(e.button!==0||e.target.classList.contains("innerCircle"))return;e.stopPropagation(),e.preventDefault();const{button:i,pointerId:t,pointerType:o}=e;this.handle.dispatchEvent(new PointerEvent("pointerdown",{button:i,pointerId:t,pointerType:o})),this.handlePointermove(e)}calculateStyleData(){const{width:e=160}=this.boundingClientRect||{},i=getComputedStyle(this),t=parseFloat(i.getPropertyValue("--border-width")),o=parseFloat(i.getPropertyValue("--track-width")),r=e/2,h=e-t*2,s=r-t,a=r-o,d=a*2,l=a+t,p=d+t*2,m=`"M ${r} ${r} m -${r} 0 a ${r} ${r} 0 1 0 ${e} 0 a ${r} ${r} 0 1 0 -${e} 0 M ${r} ${r} m -${a} 0 a ${a} ${a} 0 1 0 ${d} 0 a ${a} ${a} 0 1 0 -${d} 0"`,f=`"M ${s} ${s} m -${s} 0 a ${s} ${s} 0 1 0 ${h} 0 a ${s} ${s} 0 1 0 -${h} 0 M ${s} ${s} m -${l} 0 a ${l} ${l} 0 1 0 ${p} 0 a ${l} ${l} 0 1 0 -${p} 0"`,g=(this.isLTR?1:-1)*(r-o/2)*Math.cos(this.value*Math.PI/180),$=(r-o/2)*Math.sin(this.value*Math.PI/180),w=`transform: translate(${g}px, ${$}px);`;return{clipPath:f,clipPathBorders:m,diameter:e,handleLocationStyles:w}}render(){const{clipPath:e,clipPathBorders:i,diameter:t,handleLocationStyles:o}=this.calculateStyleData();return P`
2
2
  <slot
3
3
  name="gradient"
4
4
  @pointerdown=${this.handleGradientPointerdown}
@@ -6,7 +6,7 @@
6
6
  --spectrum-colorwheel-colorarea-container-size: ${t}px;
7
7
  --spectrum-colorwheel-height: ${t}px;
8
8
  --spectrum-colorwheel-width: ${t}px;
9
- --spectrum-colorwheel-path-borders: ${o};
9
+ --spectrum-colorwheel-path-borders: ${i};
10
10
  --spectrum-colorwheel-path: ${e};
11
11
  "
12
12
  >
@@ -19,14 +19,14 @@
19
19
  </slot>
20
20
 
21
21
  <sp-color-handle
22
- tabindex=${E(this.focused?void 0:"0")}
22
+ tabindex=${R(this.focused?void 0:"0")}
23
23
  @focus=${this.forwardFocus}
24
24
  ?focused=${this.focused}
25
25
  class="handle"
26
26
  color="hsl(${this.value}, 100%, 50%)"
27
27
  ?disabled=${this.disabled}
28
- style=${i}
29
- ${R({start:["pointerdown",this.handlePointerdown],streamInside:["pointermove",this.handlePointermove],end:[["pointerup","pointercancel","pointerleave"],this.handlePointerup]})}
28
+ style=${o}
29
+ ${E({start:["pointerdown",this.handlePointerdown],streamInside:["pointermove",this.handlePointermove],end:[["pointerup","pointercancel","pointerleave"],this.handlePointerup]})}
30
30
  ></sp-color-handle>
31
31
 
32
32
  <input
@@ -37,9 +37,10 @@
37
37
  max="360"
38
38
  step=${this.step}
39
39
  .value=${String(this.value)}
40
+ aria-valuetext=${`${new Intl.NumberFormat(this.languageResolver.language,{maximumFractionDigits:0,minimumIntegerDigits:1,style:"unit",unit:"degree",unitDisplay:"narrow"}).format(this.value)}`}
40
41
  @input=${this.handleInput}
41
42
  @change=${this.handleChange}
42
43
  @keydown=${this.handleKeydown}
43
44
  />
44
- `}firstUpdated(e){super.firstUpdated(e),this.boundingClientRect=this.getBoundingClientRect(),this.addEventListener("focus",this.handleFocus),this.addEventListener("blur",this.handleBlur)}connectedCallback(){var e;super.connectedCallback(),!this.observer&&window.ResizeObserver&&(this.observer=new window.ResizeObserver(o=>{for(const t of o)this.boundingClientRect=t.contentRect;this.requestUpdate()})),(e=this.observer)==null||e.observe(this)}disconnectedCallback(){var e;(e=this.observer)==null||e.unobserve(this),super.disconnectedCallback()}}n([c({type:String,reflect:!0})],ColorWheel.prototype,"dir",2),n([c({type:Boolean,reflect:!0})],ColorWheel.prototype,"disabled",2),n([c({type:Boolean,reflect:!0})],ColorWheel.prototype,"focused",2),n([b(".handle")],ColorWheel.prototype,"handle",2),n([c({type:String})],ColorWheel.prototype,"label",2),n([c({type:Number})],ColorWheel.prototype,"step",2),n([c({type:Number})],ColorWheel.prototype,"value",1),n([c({type:String})],ColorWheel.prototype,"color",1),n([b("input")],ColorWheel.prototype,"input",2);
45
+ `}firstUpdated(e){super.firstUpdated(e),this.boundingClientRect=this.getBoundingClientRect(),this.addEventListener("focus",this.handleFocus),this.addEventListener("blur",this.handleBlur)}connectedCallback(){var e;super.connectedCallback(),!this.observer&&window.ResizeObserver&&(this.observer=new window.ResizeObserver(i=>{for(const t of i)this.boundingClientRect=t.contentRect;this.requestUpdate()})),(e=this.observer)==null||e.observe(this)}disconnectedCallback(){var e;(e=this.observer)==null||e.unobserve(this),super.disconnectedCallback()}}n([u({type:String,reflect:!0})],ColorWheel.prototype,"dir",2),n([u({type:Boolean,reflect:!0})],ColorWheel.prototype,"disabled",2),n([u({type:Boolean,reflect:!0})],ColorWheel.prototype,"focused",2),n([b(".handle")],ColorWheel.prototype,"handle",2),n([u({type:String})],ColorWheel.prototype,"label",2),n([u({type:Number})],ColorWheel.prototype,"step",2),n([u({type:Number})],ColorWheel.prototype,"value",1),n([u({type:String})],ColorWheel.prototype,"color",1),n([b("input")],ColorWheel.prototype,"input",2);
45
46
  //# sourceMappingURL=ColorWheel.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["ColorWheel.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 {\n CSSResultArray,\n html,\n PropertyValues,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { ifDefined } from '@spectrum-web-components/base/src/directives.js';\nimport {\n property,\n query,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport { streamingListener } from '@spectrum-web-components/base/src/streaming-listener.js';\nimport { SWCResizeObserverEntry, WithSWCResizeObserver } from './types';\nimport { Focusable } from '@spectrum-web-components/shared/src/focusable.js';\nimport type { ColorHandle } from '@spectrum-web-components/color-handle';\nimport '@spectrum-web-components/color-handle/sp-color-handle.js';\nimport {\n ColorController,\n ColorValue,\n HSL,\n} from '@spectrum-web-components/reactive-controllers/src/Color.js';\n\nimport styles from './color-wheel.css.js';\n\n/**\n * @element sp-color-wheel\n * @slot gradient - a custom gradient visually outlining the available color values\n * @fires input - The value of the Color Wheel has changed.\n * @fires change - An alteration to the value of the Color Wheel has been committed by the user.\n */\nexport class ColorWheel extends Focusable {\n public static override get styles(): CSSResultArray {\n return [styles];\n }\n\n @property({ type: String, reflect: true })\n public override dir!: 'ltr' | 'rtl';\n\n @property({ type: Boolean, reflect: true })\n public override disabled = false;\n\n @property({ type: Boolean, reflect: true })\n public focused = false;\n\n @query('.handle')\n private handle!: ColorHandle;\n\n @property({ type: String })\n public label = 'hue';\n\n @property({ type: Number })\n public step = 1;\n\n private colorController = new ColorController(this, {\n /* c8 ignore next 3 */\n applyColorToState: () => {\n return;\n },\n extractColorFromState: (controller) => ({\n ...(controller.getColor('hsl') as HSL),\n h: this.value,\n }),\n maintains: 'saturation',\n });\n\n @property({ type: Number })\n public get value(): number {\n return this.colorController.hue;\n }\n\n public set value(hue: number) {\n this.colorController.hue = hue;\n }\n\n @property({ type: String })\n public get color(): ColorValue {\n return this.colorController.color;\n }\n\n public set color(color: ColorValue) {\n this.colorController.color = color;\n }\n\n private get altered(): number {\n return this._altered;\n }\n\n private set altered(altered: number) {\n this._altered = altered;\n this.step = Math.max(1, this.altered * 10);\n }\n\n private _altered = 0;\n\n @query('input')\n public input!: HTMLInputElement;\n\n public override get focusElement(): HTMLInputElement {\n return this.input;\n }\n\n private handleKeydown(event: KeyboardEvent): void {\n const { key } = event;\n this.focused = true;\n this.altered = [event.shiftKey, event.ctrlKey, event.altKey].filter(\n (key) => !!key\n ).length;\n let delta = 0;\n switch (key) {\n case 'ArrowUp':\n delta = this.step;\n break;\n case 'ArrowDown':\n delta = -this.step;\n break;\n case 'ArrowLeft':\n delta = this.step * (this.isLTR ? -1 : 1);\n break;\n case 'ArrowRight':\n delta = this.step * (this.isLTR ? 1 : -1);\n break;\n default:\n return;\n }\n event.preventDefault();\n this.value = (360 + this.value + delta) % 360;\n this.colorController.savePreviousColor();\n this.colorController.applyColorFromState();\n this.dispatchEvent(\n new Event('input', {\n bubbles: true,\n composed: true,\n })\n );\n const applyDefault = this.dispatchEvent(\n new Event('change', {\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n );\n if (!applyDefault) {\n this.colorController.restorePreviousColor();\n }\n }\n\n private handleInput(event: Event & { target: HTMLInputElement }): void {\n const { valueAsNumber } = event.target;\n\n this.value = valueAsNumber;\n this.colorController.applyColorFromState();\n }\n\n private handleChange(event: Event & { target: HTMLInputElement }): void {\n this.handleInput(event);\n this.dispatchEvent(\n new Event('change', {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n public override focus(focusOptions: FocusOptions = {}): void {\n super.focus(focusOptions);\n this.forwardFocus();\n }\n\n private forwardFocus(): void {\n this.focused = this.hasVisibleFocusInTree();\n this.input.focus();\n }\n\n private handleFocus(): void {\n this.focused = true;\n }\n\n private handleBlur(): void {\n if (this._pointerDown) {\n return;\n }\n this.altered = 0;\n this.focused = false;\n }\n\n private boundingClientRect!: DOMRect;\n private _pointerDown = false;\n\n private handlePointerdown(event: PointerEvent): void {\n if (event.button !== 0) {\n event.preventDefault();\n return;\n }\n this._pointerDown = true;\n this.colorController.savePreviousColor();\n this.boundingClientRect = this.getBoundingClientRect();\n (event.target as HTMLElement).setPointerCapture(event.pointerId);\n if (event.pointerType === 'mouse') {\n this.focused = true;\n }\n }\n\n private handlePointermove(event: PointerEvent): void {\n this.value = this.calculateHandlePosition(event);\n this.colorController.applyColorFromState();\n\n this.dispatchEvent(\n new Event('input', {\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n );\n }\n\n private handlePointerup(event: PointerEvent): void {\n this._pointerDown = false;\n (event.target as HTMLElement).releasePointerCapture(event.pointerId);\n\n const applyDefault = this.dispatchEvent(\n new Event('change', {\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n );\n if (!applyDefault) {\n this.colorController.restorePreviousColor();\n }\n // Retain focus on input element after mouse up to enable keyboard interactions\n this.focus();\n if (event.pointerType === 'mouse') {\n this.focused = false;\n }\n }\n\n /**\n * Returns the value under the cursor\n * @param: PointerEvent on slider\n * @return: Slider value that correlates to the position under the pointer\n */\n private calculateHandlePosition(event: PointerEvent): number {\n /* c8 ignore next 3 */\n if (!this.boundingClientRect) {\n return this.value;\n }\n const rect = this.boundingClientRect;\n const { width, height, left, top } = rect;\n const centerX = left + width / 2;\n const centerY = top + height / 2;\n const pointX = event.clientX - centerX;\n const pointY = event.clientY - centerY;\n const value = (Math.atan2(pointY, pointX) * 180) / Math.PI;\n\n return (360 + (360 + value)) % 360;\n }\n\n private handleGradientPointerdown(event: PointerEvent): void {\n if (\n event.button !== 0 ||\n (event.target as SVGElement).classList.contains('innerCircle')\n ) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n const { button, pointerId, pointerType } = event;\n this.handle.dispatchEvent(\n new PointerEvent('pointerdown', {\n button,\n pointerId,\n pointerType,\n })\n );\n this.handlePointermove(event);\n }\n\n calculateStyleData(): {\n clipPath: string;\n clipPathBorders: string;\n diameter: number;\n handleLocationStyles: string;\n } {\n // Extract values from element.\n const { width: diameter = 160 } = this.boundingClientRect || {};\n const styles = getComputedStyle(this);\n const borderWidth = parseFloat(\n styles.getPropertyValue('--border-width')\n );\n const trackWidth = parseFloat(styles.getPropertyValue('--track-width'));\n\n // Calculate wheel data.\n const radius = diameter / 2;\n const diameterAfterBoarder = diameter - borderWidth * 2;\n const radiusAfterBoarder = radius - borderWidth;\n const innerRadius = radius - trackWidth;\n const innerDiameter = innerRadius * 2;\n const innerRadiusAfterBorder = innerRadius + borderWidth;\n const innerDiameterAfterBorder = innerDiameter + borderWidth * 2;\n const clipPathBorders = `\"M ${radius} ${radius} m -${radius} 0 a ${radius} ${radius} 0 1 0 ${diameter} 0 a ${radius} ${radius} 0 1 0 -${diameter} 0 M ${radius} ${radius} m -${innerRadius} 0 a ${innerRadius} ${innerRadius} 0 1 0 ${innerDiameter} 0 a ${innerRadius} ${innerRadius} 0 1 0 -${innerDiameter} 0\"`;\n const clipPath = `\"M ${radiusAfterBoarder} ${radiusAfterBoarder} m -${radiusAfterBoarder} 0 a ${radiusAfterBoarder} ${radiusAfterBoarder} 0 1 0 ${diameterAfterBoarder} 0 a ${radiusAfterBoarder} ${radiusAfterBoarder} 0 1 0 -${diameterAfterBoarder} 0 M ${radiusAfterBoarder} ${radiusAfterBoarder} m -${innerRadiusAfterBorder} 0 a ${innerRadiusAfterBorder} ${innerRadiusAfterBorder} 0 1 0 ${innerDiameterAfterBorder} 0 a ${innerRadiusAfterBorder} ${innerRadiusAfterBorder} 0 1 0 -${innerDiameterAfterBorder} 0\"`;\n\n // Calculate handle position on the wheel.\n const translateX =\n (radius - trackWidth / 2) * Math.cos((this.value * Math.PI) / 180);\n const translateY =\n (radius - trackWidth / 2) * Math.sin((this.value * Math.PI) / 180);\n const handleLocationStyles = `transform: translate(${translateX}px, ${translateY}px);`;\n\n return {\n clipPath,\n clipPathBorders,\n diameter,\n handleLocationStyles,\n };\n }\n\n protected override render(): TemplateResult {\n const { clipPath, clipPathBorders, diameter, handleLocationStyles } =\n this.calculateStyleData();\n\n return html`\n <slot\n name=\"gradient\"\n @pointerdown=${this.handleGradientPointerdown}\n style=\"\n --spectrum-colorwheel-colorarea-container-size: ${diameter}px;\n --spectrum-colorwheel-height: ${diameter}px;\n --spectrum-colorwheel-width: ${diameter}px;\n --spectrum-colorwheel-path-borders: ${clipPathBorders};\n --spectrum-colorwheel-path: ${clipPath};\n \"\n >\n <div class=\"inner\">\n <div class=\"colorarea-container\"></div>\n </div>\n <div class=\"border\">\n <div class=\"wheel\"></div>\n </div>\n </slot>\n\n <sp-color-handle\n tabindex=${ifDefined(this.focused ? undefined : '0')}\n @focus=${this.forwardFocus}\n ?focused=${this.focused}\n class=\"handle\"\n color=\"hsl(${this.value}, 100%, 50%)\"\n ?disabled=${this.disabled}\n style=${handleLocationStyles}\n ${streamingListener({\n start: ['pointerdown', this.handlePointerdown],\n streamInside: ['pointermove', this.handlePointermove],\n end: [\n ['pointerup', 'pointercancel', 'pointerleave'],\n this.handlePointerup,\n ],\n })}\n ></sp-color-handle>\n\n <input\n type=\"range\"\n class=\"slider\"\n aria-label=${this.label}\n min=\"0\"\n max=\"360\"\n step=${this.step}\n .value=${String(this.value)}\n @input=${this.handleInput}\n @change=${this.handleChange}\n @keydown=${this.handleKeydown}\n />\n `;\n }\n\n protected override firstUpdated(changed: PropertyValues): void {\n super.firstUpdated(changed);\n this.boundingClientRect = this.getBoundingClientRect();\n this.addEventListener('focus', this.handleFocus);\n this.addEventListener('blur', this.handleBlur);\n }\n\n private observer?: WithSWCResizeObserver['ResizeObserver'];\n\n public override connectedCallback(): void {\n super.connectedCallback();\n if (\n !this.observer &&\n (window as unknown as WithSWCResizeObserver).ResizeObserver\n ) {\n this.observer = new (\n window as unknown as WithSWCResizeObserver\n ).ResizeObserver((entries: SWCResizeObserverEntry[]) => {\n for (const entry of entries) {\n this.boundingClientRect = entry.contentRect;\n }\n this.requestUpdate();\n });\n }\n this.observer?.observe(this);\n }\n\n public override disconnectedCallback(): void {\n this.observer?.unobserve(this);\n super.disconnectedCallback();\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["html", "ifDefined", "property", "query", "streamingListener", "Focusable", "ColorController", "styles", "controller", "hue", "color", "altered", "event", "key", "delta", "valueAsNumber", "focusOptions", "rect", "width", "height", "left", "top", "centerX", "centerY", "pointX", "pointY", "button", "pointerId", "pointerType", "diameter", "borderWidth", "trackWidth", "radius", "diameterAfterBoarder", "radiusAfterBoarder", "innerRadius", "innerDiameter", "innerRadiusAfterBorder", "innerDiameterAfterBorder", "clipPathBorders", "clipPath", "translateX", "translateY", "handleLocationStyles", "changed", "_a", "entries", "entry", "__decorateClass"]
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 {\n CSSResultArray,\n html,\n PropertyValues,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { ifDefined } from '@spectrum-web-components/base/src/directives.js';\nimport {\n property,\n query,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport { streamingListener } from '@spectrum-web-components/base/src/streaming-listener.js';\nimport { SWCResizeObserverEntry, WithSWCResizeObserver } from './types';\nimport { Focusable } from '@spectrum-web-components/shared/src/focusable.js';\nimport type { ColorHandle } from '@spectrum-web-components/color-handle';\nimport '@spectrum-web-components/color-handle/sp-color-handle.js';\nimport {\n ColorController,\n ColorValue,\n HSL,\n} from '@spectrum-web-components/reactive-controllers/src/Color.js';\nimport { LanguageResolutionController } from '@spectrum-web-components/reactive-controllers/src/LanguageResolution.js';\n\nimport styles from './color-wheel.css.js';\n\n/**\n * @element sp-color-wheel\n * @slot gradient - a custom gradient visually outlining the available color values\n * @fires input - The value of the Color Wheel has changed.\n * @fires change - An alteration to the value of the Color Wheel has been committed by the user.\n */\nexport class ColorWheel extends Focusable {\n public static override get styles(): CSSResultArray {\n return [styles];\n }\n\n @property({ type: String, reflect: true })\n public override dir!: 'ltr' | 'rtl';\n\n @property({ type: Boolean, reflect: true })\n public override disabled = false;\n\n @property({ type: Boolean, reflect: true })\n public focused = false;\n\n @query('.handle')\n private handle!: ColorHandle;\n\n @property({ type: String })\n public label = 'hue';\n\n @property({ type: Number })\n public step = 1;\n\n private languageResolver = new LanguageResolutionController(this);\n\n private colorController = new ColorController(this, {\n /* c8 ignore next 3 */\n applyColorToState: () => {\n return;\n },\n extractColorFromState: (controller) => ({\n ...(controller.getColor('hsl') as HSL),\n h: this.value,\n }),\n maintains: 'saturation',\n });\n\n @property({ type: Number })\n public get value(): number {\n return this.colorController.hue;\n }\n\n public set value(hue: number) {\n this.colorController.hue = hue;\n }\n\n @property({ type: String })\n public get color(): ColorValue {\n return this.colorController.color;\n }\n\n public set color(color: ColorValue) {\n this.colorController.color = color;\n }\n\n private get altered(): number {\n return this._altered;\n }\n\n private set altered(altered: number) {\n this._altered = altered;\n this.step = Math.max(1, this.altered * 10);\n }\n\n private _altered = 0;\n\n @query('input')\n public input!: HTMLInputElement;\n\n public override get focusElement(): HTMLInputElement {\n return this.input;\n }\n\n private handleKeydown(event: KeyboardEvent): void {\n const { key } = event;\n this.focused = true;\n this.altered = [event.shiftKey, event.ctrlKey, event.altKey].filter(\n (key) => !!key\n ).length;\n let delta = 0;\n switch (key) {\n case 'ArrowUp':\n delta = this.step;\n break;\n case 'ArrowDown':\n delta = -this.step;\n break;\n case 'ArrowLeft':\n delta = this.step * (this.isLTR ? -1 : 1);\n break;\n case 'ArrowRight':\n delta = this.step * (this.isLTR ? 1 : -1);\n break;\n default:\n return;\n }\n event.preventDefault();\n this.value = (360 + this.value + delta) % 360;\n this.colorController.savePreviousColor();\n this.colorController.applyColorFromState();\n this.dispatchEvent(\n new Event('input', {\n bubbles: true,\n composed: true,\n })\n );\n const applyDefault = this.dispatchEvent(\n new Event('change', {\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n );\n if (!applyDefault) {\n this.colorController.restorePreviousColor();\n }\n }\n\n private handleInput(event: Event & { target: HTMLInputElement }): void {\n const { valueAsNumber } = event.target;\n\n this.value = valueAsNumber;\n this.colorController.applyColorFromState();\n }\n\n private handleChange(event: Event & { target: HTMLInputElement }): void {\n this.handleInput(event);\n this.dispatchEvent(\n new Event('change', {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n public override focus(focusOptions: FocusOptions = {}): void {\n super.focus(focusOptions);\n this.forwardFocus();\n }\n\n private forwardFocus(): void {\n this.focused = this.hasVisibleFocusInTree();\n this.input.focus();\n }\n\n private handleFocus(): void {\n this.focused = true;\n }\n\n private handleBlur(): void {\n if (this._pointerDown) {\n return;\n }\n this.altered = 0;\n this.focused = false;\n }\n\n private boundingClientRect!: DOMRect;\n private _pointerDown = false;\n\n private handlePointerdown(event: PointerEvent): void {\n if (event.button !== 0) {\n event.preventDefault();\n return;\n }\n this._pointerDown = true;\n this.colorController.savePreviousColor();\n this.boundingClientRect = this.getBoundingClientRect();\n (event.target as HTMLElement).setPointerCapture(event.pointerId);\n if (event.pointerType === 'mouse') {\n this.focused = true;\n }\n }\n\n private handlePointermove(event: PointerEvent): void {\n this.value = this.calculateHandlePosition(event);\n this.colorController.applyColorFromState();\n\n this.dispatchEvent(\n new Event('input', {\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n );\n }\n\n private handlePointerup(event: PointerEvent): void {\n this._pointerDown = false;\n (event.target as HTMLElement).releasePointerCapture(event.pointerId);\n\n const applyDefault = this.dispatchEvent(\n new Event('change', {\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n );\n if (!applyDefault) {\n this.colorController.restorePreviousColor();\n }\n // Retain focus on input element after mouse up to enable keyboard interactions\n this.focus();\n if (event.pointerType === 'mouse') {\n this.focused = false;\n }\n }\n\n /**\n * Returns the value under the cursor\n * @param: PointerEvent on slider\n * @return: Slider value that correlates to the position under the pointer\n */\n private calculateHandlePosition(event: PointerEvent): number {\n /* c8 ignore next 3 */\n if (!this.boundingClientRect) {\n return this.value;\n }\n const rect = this.boundingClientRect;\n const { width, height, left, top } = rect;\n const centerX = left + width / 2;\n const centerY = top + height / 2;\n const pointX = event.clientX - centerX;\n const pointY = event.clientY - centerY;\n const value = (Math.atan2(pointY, pointX) * 180) / Math.PI;\n\n return (360 + (360 + (this.isLTR ? value : 180 - value))) % 360;\n }\n\n private handleGradientPointerdown(event: PointerEvent): void {\n if (\n event.button !== 0 ||\n (event.target as SVGElement).classList.contains('innerCircle')\n ) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n const { button, pointerId, pointerType } = event;\n this.handle.dispatchEvent(\n new PointerEvent('pointerdown', {\n button,\n pointerId,\n pointerType,\n })\n );\n this.handlePointermove(event);\n }\n\n calculateStyleData(): {\n clipPath: string;\n clipPathBorders: string;\n diameter: number;\n handleLocationStyles: string;\n } {\n // Extract values from element.\n const { width: diameter = 160 } = this.boundingClientRect || {};\n const styles = getComputedStyle(this);\n const borderWidth = parseFloat(\n styles.getPropertyValue('--border-width')\n );\n const trackWidth = parseFloat(styles.getPropertyValue('--track-width'));\n\n // Calculate wheel data.\n const radius = diameter / 2;\n const diameterAfterBoarder = diameter - borderWidth * 2;\n const radiusAfterBoarder = radius - borderWidth;\n const innerRadius = radius - trackWidth;\n const innerDiameter = innerRadius * 2;\n const innerRadiusAfterBorder = innerRadius + borderWidth;\n const innerDiameterAfterBorder = innerDiameter + borderWidth * 2;\n const clipPathBorders = `\"M ${radius} ${radius} m -${radius} 0 a ${radius} ${radius} 0 1 0 ${diameter} 0 a ${radius} ${radius} 0 1 0 -${diameter} 0 M ${radius} ${radius} m -${innerRadius} 0 a ${innerRadius} ${innerRadius} 0 1 0 ${innerDiameter} 0 a ${innerRadius} ${innerRadius} 0 1 0 -${innerDiameter} 0\"`;\n const clipPath = `\"M ${radiusAfterBoarder} ${radiusAfterBoarder} m -${radiusAfterBoarder} 0 a ${radiusAfterBoarder} ${radiusAfterBoarder} 0 1 0 ${diameterAfterBoarder} 0 a ${radiusAfterBoarder} ${radiusAfterBoarder} 0 1 0 -${diameterAfterBoarder} 0 M ${radiusAfterBoarder} ${radiusAfterBoarder} m -${innerRadiusAfterBorder} 0 a ${innerRadiusAfterBorder} ${innerRadiusAfterBorder} 0 1 0 ${innerDiameterAfterBorder} 0 a ${innerRadiusAfterBorder} ${innerRadiusAfterBorder} 0 1 0 -${innerDiameterAfterBorder} 0\"`;\n\n // Calculate handle position on the wheel.\n const translateX =\n (this.isLTR ? 1 : -1) *\n (radius - trackWidth / 2) *\n Math.cos((this.value * Math.PI) / 180);\n const translateY =\n (radius - trackWidth / 2) * Math.sin((this.value * Math.PI) / 180);\n const handleLocationStyles = `transform: translate(${translateX}px, ${translateY}px);`;\n\n return {\n clipPath,\n clipPathBorders,\n diameter,\n handleLocationStyles,\n };\n }\n\n protected override render(): TemplateResult {\n const { clipPath, clipPathBorders, diameter, handleLocationStyles } =\n this.calculateStyleData();\n\n return html`\n <slot\n name=\"gradient\"\n @pointerdown=${this.handleGradientPointerdown}\n style=\"\n --spectrum-colorwheel-colorarea-container-size: ${diameter}px;\n --spectrum-colorwheel-height: ${diameter}px;\n --spectrum-colorwheel-width: ${diameter}px;\n --spectrum-colorwheel-path-borders: ${clipPathBorders};\n --spectrum-colorwheel-path: ${clipPath};\n \"\n >\n <div class=\"inner\">\n <div class=\"colorarea-container\"></div>\n </div>\n <div class=\"border\">\n <div class=\"wheel\"></div>\n </div>\n </slot>\n\n <sp-color-handle\n tabindex=${ifDefined(this.focused ? undefined : '0')}\n @focus=${this.forwardFocus}\n ?focused=${this.focused}\n class=\"handle\"\n color=\"hsl(${this.value}, 100%, 50%)\"\n ?disabled=${this.disabled}\n style=${handleLocationStyles}\n ${streamingListener({\n start: ['pointerdown', this.handlePointerdown],\n streamInside: ['pointermove', this.handlePointermove],\n end: [\n ['pointerup', 'pointercancel', 'pointerleave'],\n this.handlePointerup,\n ],\n })}\n ></sp-color-handle>\n\n <input\n type=\"range\"\n class=\"slider\"\n aria-label=${this.label}\n min=\"0\"\n max=\"360\"\n step=${this.step}\n .value=${String(this.value)}\n aria-valuetext=${`${new Intl.NumberFormat(\n this.languageResolver.language,\n {\n maximumFractionDigits: 0,\n minimumIntegerDigits: 1,\n style: 'unit',\n unit: 'degree',\n unitDisplay: 'narrow',\n }\n ).format(this.value)}`}\n @input=${this.handleInput}\n @change=${this.handleChange}\n @keydown=${this.handleKeydown}\n />\n `;\n }\n\n protected override firstUpdated(changed: PropertyValues): void {\n super.firstUpdated(changed);\n this.boundingClientRect = this.getBoundingClientRect();\n this.addEventListener('focus', this.handleFocus);\n this.addEventListener('blur', this.handleBlur);\n }\n\n private observer?: WithSWCResizeObserver['ResizeObserver'];\n\n public override connectedCallback(): void {\n super.connectedCallback();\n if (\n !this.observer &&\n (window as unknown as WithSWCResizeObserver).ResizeObserver\n ) {\n this.observer = new (\n window as unknown as WithSWCResizeObserver\n ).ResizeObserver((entries: SWCResizeObserverEntry[]) => {\n for (const entry of entries) {\n this.boundingClientRect = entry.contentRect;\n }\n this.requestUpdate();\n });\n }\n this.observer?.observe(this);\n }\n\n public override disconnectedCallback(): void {\n this.observer?.unobserve(this);\n super.disconnectedCallback();\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["html", "ifDefined", "property", "query", "streamingListener", "Focusable", "ColorController", "LanguageResolutionController", "styles", "controller", "hue", "color", "altered", "event", "key", "delta", "valueAsNumber", "focusOptions", "rect", "width", "height", "left", "top", "centerX", "centerY", "pointX", "pointY", "value", "button", "pointerId", "pointerType", "diameter", "borderWidth", "trackWidth", "radius", "diameterAfterBoarder", "radiusAfterBoarder", "innerRadius", "innerDiameter", "innerRadiusAfterBorder", "innerDiameterAfterBorder", "clipPathBorders", "clipPath", "translateX", "translateY", "handleLocationStyles", "changed", "_a", "entries", "entry", "__decorateClass"]
7
7
  }
@@ -13,13 +13,13 @@ const styles = css`
13
13
  --mod-colorwheel-border-width,var(--spectrum-colorwheel-border-width)
14
14
  );block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));cursor:default;display:block;inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));min-inline-size:var(
15
15
  --mod-colorwheel-min-width,var(--spectrum-colorwheel-min-width)
16
- );position:relative;-webkit-user-select:none;user-select:none}:host([focused]){z-index:2}:host([focused]) .handle{block-size:calc(var(--spectrum-color-handle-size)*2);inline-size:calc(var(--spectrum-color-handle-size)*2);margin-block-start:calc(var(--spectrum-color-handle-size)*-1);margin-inline-start:calc(var(--spectrum-color-handle-size)*-1)}:host([disabled]){pointer-events:none}:host([dragged]){z-index:2}.inner{block-size:var(
16
+ );position:relative;-webkit-user-select:none;user-select:none}:host([focused]){z-index:2}:host([disabled]){pointer-events:none}:host([dragged]){z-index:2}.inner{block-size:var(
17
17
  --mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size)
18
18
  );display:flex;inline-size:var(
19
19
  --mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size)
20
20
  );inset-block:0;inset-inline:0;margin:auto;position:absolute}.colorarea-container{align-items:center;block-size:auto;display:flex;inline-size:100%;justify-content:center;margin:var(
21
21
  --mod-colorwheel-colorarea-margin,var(--spectrum-colorwheel-colorarea-margin)
22
- )}.slider{block-size:100%;inline-size:100%;inset-block-start:0;inset-inline-start:0;margin:0;opacity:0;pointer-events:none;position:absolute;z-index:0}.handle{inset-block-start:50%;transform:translate(var(--spectrum-colorwheel-colorhandle-position))}:host([dir=ltr]) .handle{inset-inline-start:50%}:host([dir=rtl]) .handle{inset-inline-end:50%}.border{background-color:var(
22
+ )}.slider{block-size:100%;inline-size:100%;inset-block-start:0;inset-inline-start:0;margin:0;opacity:0;pointer-events:none;position:absolute;z-index:0}.handle{inset-block-start:50%;inset-inline:50%;transform:translate(var(--spectrum-colorwheel-colorhandle-position))}.border{background-color:var(
23
23
  --mod-colorwheel-border-color,var(--spectrum-colorwheel-border-color)
24
24
  );block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));clip-path:path(evenodd,var(
25
25
  --mod-colorwheel-path-borders,var(--spectrum-colorwheel-path-borders)
@@ -35,7 +35,7 @@ const styles = css`
35
35
  --spectrum-colorwheel-border-color,var(--spectrum-alias-border-color-translucent)
36
36
  );border-radius:100%;border-style:solid;border-width:var(
37
37
  --spectrum-colorwheel-border-size,var(--spectrum-alias-border-size-thin)
38
- );box-sizing:border-box;inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));position:relative;z-index:0}
38
+ );box-sizing:border-box;inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));position:relative;z-index:0}:host([dir=rtl]) .wheel,:host([dir=rtl]) ::slotted([slot=gradient]){transform:scaleX(-1)}
39
39
  `;
40
40
  export default styles;
41
41
  //# sourceMappingURL=color-wheel.css.dev.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["color-wheel.css.ts"],
4
- "sourcesContent": ["/*\nCopyright 2023 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*/\nimport { css } from '@spectrum-web-components/base';\nconst styles = css`\n:host{--spectrum-colorwheel-width:var(--spectrum-color-wheel-width);--spectrum-colorwheel-min-width:var(--spectrum-color-wheel-minimum-width);--spectrum-colorwheel-height:var(--spectrum-color-wheel-width);--spectrum-colorwheel-border-color:var(--spectrum-transparent-black-200);--spectrum-colorwheel-border-width:var(--spectrum-border-width-100);--spectrum-colorwheel-fill-color-disabled:var(\n--spectrum-disabled-background-color\n);--spectrum-colorwheel-track-width:var(\n--spectrum-color-control-track-width\n);--spectrum-colorwheel-colorarea-margin:var(\n--spectrum-color-wheel-color-area-margin\n);--spectrum-colorwheel-colorhandle-position:calc(var(--spectrum-colorwheel-width)/2 - var(--spectrum-colorwheel-track-width)/2)}@media (forced-colors:active){:host{--highcontrast-colorwheel-border-color-disabled:GrayText;--highcontrast-colorwheel-fill-color-disabled:Canvas}:host{forced-color-adjust:none}}:host{--track-width:var(\n--mod-colorwheel-track-width,var(--spectrum-colorwheel-track-width)\n);--border-width:var(\n--mod-colorwheel-border-width,var(--spectrum-colorwheel-border-width)\n);block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));cursor:default;display:block;inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));min-inline-size:var(\n--mod-colorwheel-min-width,var(--spectrum-colorwheel-min-width)\n);position:relative;-webkit-user-select:none;user-select:none}:host([focused]){z-index:2}:host([focused]) .handle{block-size:calc(var(--spectrum-color-handle-size)*2);inline-size:calc(var(--spectrum-color-handle-size)*2);margin-block-start:calc(var(--spectrum-color-handle-size)*-1);margin-inline-start:calc(var(--spectrum-color-handle-size)*-1)}:host([disabled]){pointer-events:none}:host([dragged]){z-index:2}.inner{block-size:var(\n--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size)\n);display:flex;inline-size:var(\n--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size)\n);inset-block:0;inset-inline:0;margin:auto;position:absolute}.colorarea-container{align-items:center;block-size:auto;display:flex;inline-size:100%;justify-content:center;margin:var(\n--mod-colorwheel-colorarea-margin,var(--spectrum-colorwheel-colorarea-margin)\n)}.slider{block-size:100%;inline-size:100%;inset-block-start:0;inset-inline-start:0;margin:0;opacity:0;pointer-events:none;position:absolute;z-index:0}.handle{inset-block-start:50%;transform:translate(var(--spectrum-colorwheel-colorhandle-position))}:host([dir=ltr]) .handle{inset-inline-start:50%}:host([dir=rtl]) .handle{inset-inline-end:50%}.border{background-color:var(\n--mod-colorwheel-border-color,var(--spectrum-colorwheel-border-color)\n);block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));clip-path:path(evenodd,var(\n--mod-colorwheel-path-borders,var(--spectrum-colorwheel-path-borders)\n));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));position:relative}:host([disabled]) .border{background-color:var(\n--highcontrast-colorwheel-border-color-disabled,var(\n--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)\n)\n)}.wheel{background:conic-gradient(from 90deg,red,#ff8000,#ff0,#80ff00,#0f0,#00ff80,#0ff,#0080ff,#00f,#8000ff,#f0f,#ff0080,red);clip-path:path(evenodd,var(--mod-colorwheel-path,var(--spectrum-colorwheel-path)));inset-block:var(--spectrum-colorwheel-border-width);inset-inline:var(--spectrum-colorwheel-border-width);position:absolute}:host([disabled]) .wheel{background:var(\n--highcontrast-colorwheel-fill-color-disabled,var(\n--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)\n)\n);pointer-events:none}:host{touch-action:none}:host(:focus){outline:none}::slotted([slot=gradient]){block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));border-color:var(\n--spectrum-colorwheel-border-color,var(--spectrum-alias-border-color-translucent)\n);border-radius:100%;border-style:solid;border-width:var(\n--spectrum-colorwheel-border-size,var(--spectrum-alias-border-size-thin)\n);box-sizing:border-box;inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));position:relative;z-index:0}\n`;\nexport default styles;"],
4
+ "sourcesContent": ["/*\nCopyright 2023 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*/\nimport { css } from '@spectrum-web-components/base';\nconst styles = css`\n:host{--spectrum-colorwheel-width:var(--spectrum-color-wheel-width);--spectrum-colorwheel-min-width:var(--spectrum-color-wheel-minimum-width);--spectrum-colorwheel-height:var(--spectrum-color-wheel-width);--spectrum-colorwheel-border-color:var(--spectrum-transparent-black-200);--spectrum-colorwheel-border-width:var(--spectrum-border-width-100);--spectrum-colorwheel-fill-color-disabled:var(\n--spectrum-disabled-background-color\n);--spectrum-colorwheel-track-width:var(\n--spectrum-color-control-track-width\n);--spectrum-colorwheel-colorarea-margin:var(\n--spectrum-color-wheel-color-area-margin\n);--spectrum-colorwheel-colorhandle-position:calc(var(--spectrum-colorwheel-width)/2 - var(--spectrum-colorwheel-track-width)/2)}@media (forced-colors:active){:host{--highcontrast-colorwheel-border-color-disabled:GrayText;--highcontrast-colorwheel-fill-color-disabled:Canvas}:host{forced-color-adjust:none}}:host{--track-width:var(\n--mod-colorwheel-track-width,var(--spectrum-colorwheel-track-width)\n);--border-width:var(\n--mod-colorwheel-border-width,var(--spectrum-colorwheel-border-width)\n);block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));cursor:default;display:block;inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));min-inline-size:var(\n--mod-colorwheel-min-width,var(--spectrum-colorwheel-min-width)\n);position:relative;-webkit-user-select:none;user-select:none}:host([focused]){z-index:2}:host([disabled]){pointer-events:none}:host([dragged]){z-index:2}.inner{block-size:var(\n--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size)\n);display:flex;inline-size:var(\n--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size)\n);inset-block:0;inset-inline:0;margin:auto;position:absolute}.colorarea-container{align-items:center;block-size:auto;display:flex;inline-size:100%;justify-content:center;margin:var(\n--mod-colorwheel-colorarea-margin,var(--spectrum-colorwheel-colorarea-margin)\n)}.slider{block-size:100%;inline-size:100%;inset-block-start:0;inset-inline-start:0;margin:0;opacity:0;pointer-events:none;position:absolute;z-index:0}.handle{inset-block-start:50%;inset-inline:50%;transform:translate(var(--spectrum-colorwheel-colorhandle-position))}.border{background-color:var(\n--mod-colorwheel-border-color,var(--spectrum-colorwheel-border-color)\n);block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));clip-path:path(evenodd,var(\n--mod-colorwheel-path-borders,var(--spectrum-colorwheel-path-borders)\n));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));position:relative}:host([disabled]) .border{background-color:var(\n--highcontrast-colorwheel-border-color-disabled,var(\n--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)\n)\n)}.wheel{background:conic-gradient(from 90deg,red,#ff8000,#ff0,#80ff00,#0f0,#00ff80,#0ff,#0080ff,#00f,#8000ff,#f0f,#ff0080,red);clip-path:path(evenodd,var(--mod-colorwheel-path,var(--spectrum-colorwheel-path)));inset-block:var(--spectrum-colorwheel-border-width);inset-inline:var(--spectrum-colorwheel-border-width);position:absolute}:host([disabled]) .wheel{background:var(\n--highcontrast-colorwheel-fill-color-disabled,var(\n--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)\n)\n);pointer-events:none}:host{touch-action:none}:host(:focus){outline:none}::slotted([slot=gradient]){block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));border-color:var(\n--spectrum-colorwheel-border-color,var(--spectrum-alias-border-color-translucent)\n);border-radius:100%;border-style:solid;border-width:var(\n--spectrum-colorwheel-border-size,var(--spectrum-alias-border-size-thin)\n);box-sizing:border-box;inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));position:relative;z-index:0}:host([dir=rtl]) .wheel,:host([dir=rtl]) ::slotted([slot=gradient]){transform:scaleX(-1)}\n`;\nexport default styles;"],
5
5
  "mappings": ";AAWA,SAAS,WAAW;AACpB,MAAM,SAAS;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqCf,eAAe;",
6
6
  "names": []
7
7
  }
@@ -11,13 +11,13 @@
11
11
  --mod-colorwheel-border-width,var(--spectrum-colorwheel-border-width)
12
12
  );block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));cursor:default;display:block;inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));min-inline-size:var(
13
13
  --mod-colorwheel-min-width,var(--spectrum-colorwheel-min-width)
14
- );position:relative;-webkit-user-select:none;user-select:none}:host([focused]){z-index:2}:host([focused]) .handle{block-size:calc(var(--spectrum-color-handle-size)*2);inline-size:calc(var(--spectrum-color-handle-size)*2);margin-block-start:calc(var(--spectrum-color-handle-size)*-1);margin-inline-start:calc(var(--spectrum-color-handle-size)*-1)}:host([disabled]){pointer-events:none}:host([dragged]){z-index:2}.inner{block-size:var(
14
+ );position:relative;-webkit-user-select:none;user-select:none}:host([focused]){z-index:2}:host([disabled]){pointer-events:none}:host([dragged]){z-index:2}.inner{block-size:var(
15
15
  --mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size)
16
16
  );display:flex;inline-size:var(
17
17
  --mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size)
18
18
  );inset-block:0;inset-inline:0;margin:auto;position:absolute}.colorarea-container{align-items:center;block-size:auto;display:flex;inline-size:100%;justify-content:center;margin:var(
19
19
  --mod-colorwheel-colorarea-margin,var(--spectrum-colorwheel-colorarea-margin)
20
- )}.slider{block-size:100%;inline-size:100%;inset-block-start:0;inset-inline-start:0;margin:0;opacity:0;pointer-events:none;position:absolute;z-index:0}.handle{inset-block-start:50%;transform:translate(var(--spectrum-colorwheel-colorhandle-position))}:host([dir=ltr]) .handle{inset-inline-start:50%}:host([dir=rtl]) .handle{inset-inline-end:50%}.border{background-color:var(
20
+ )}.slider{block-size:100%;inline-size:100%;inset-block-start:0;inset-inline-start:0;margin:0;opacity:0;pointer-events:none;position:absolute;z-index:0}.handle{inset-block-start:50%;inset-inline:50%;transform:translate(var(--spectrum-colorwheel-colorhandle-position))}.border{background-color:var(
21
21
  --mod-colorwheel-border-color,var(--spectrum-colorwheel-border-color)
22
22
  );block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));clip-path:path(evenodd,var(
23
23
  --mod-colorwheel-path-borders,var(--spectrum-colorwheel-path-borders)
@@ -33,6 +33,6 @@
33
33
  --spectrum-colorwheel-border-color,var(--spectrum-alias-border-color-translucent)
34
34
  );border-radius:100%;border-style:solid;border-width:var(
35
35
  --spectrum-colorwheel-border-size,var(--spectrum-alias-border-size-thin)
36
- );box-sizing:border-box;inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));position:relative;z-index:0}
36
+ );box-sizing:border-box;inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));position:relative;z-index:0}:host([dir=rtl]) .wheel,:host([dir=rtl]) ::slotted([slot=gradient]){transform:scaleX(-1)}
37
37
  `;export default o;
38
38
  //# sourceMappingURL=color-wheel.css.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["color-wheel.css.ts"],
4
- "sourcesContent": ["/*\nCopyright 2023 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*/\nimport { css } from '@spectrum-web-components/base';\nconst styles = css`\n:host{--spectrum-colorwheel-width:var(--spectrum-color-wheel-width);--spectrum-colorwheel-min-width:var(--spectrum-color-wheel-minimum-width);--spectrum-colorwheel-height:var(--spectrum-color-wheel-width);--spectrum-colorwheel-border-color:var(--spectrum-transparent-black-200);--spectrum-colorwheel-border-width:var(--spectrum-border-width-100);--spectrum-colorwheel-fill-color-disabled:var(\n--spectrum-disabled-background-color\n);--spectrum-colorwheel-track-width:var(\n--spectrum-color-control-track-width\n);--spectrum-colorwheel-colorarea-margin:var(\n--spectrum-color-wheel-color-area-margin\n);--spectrum-colorwheel-colorhandle-position:calc(var(--spectrum-colorwheel-width)/2 - var(--spectrum-colorwheel-track-width)/2)}@media (forced-colors:active){:host{--highcontrast-colorwheel-border-color-disabled:GrayText;--highcontrast-colorwheel-fill-color-disabled:Canvas}:host{forced-color-adjust:none}}:host{--track-width:var(\n--mod-colorwheel-track-width,var(--spectrum-colorwheel-track-width)\n);--border-width:var(\n--mod-colorwheel-border-width,var(--spectrum-colorwheel-border-width)\n);block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));cursor:default;display:block;inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));min-inline-size:var(\n--mod-colorwheel-min-width,var(--spectrum-colorwheel-min-width)\n);position:relative;-webkit-user-select:none;user-select:none}:host([focused]){z-index:2}:host([focused]) .handle{block-size:calc(var(--spectrum-color-handle-size)*2);inline-size:calc(var(--spectrum-color-handle-size)*2);margin-block-start:calc(var(--spectrum-color-handle-size)*-1);margin-inline-start:calc(var(--spectrum-color-handle-size)*-1)}:host([disabled]){pointer-events:none}:host([dragged]){z-index:2}.inner{block-size:var(\n--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size)\n);display:flex;inline-size:var(\n--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size)\n);inset-block:0;inset-inline:0;margin:auto;position:absolute}.colorarea-container{align-items:center;block-size:auto;display:flex;inline-size:100%;justify-content:center;margin:var(\n--mod-colorwheel-colorarea-margin,var(--spectrum-colorwheel-colorarea-margin)\n)}.slider{block-size:100%;inline-size:100%;inset-block-start:0;inset-inline-start:0;margin:0;opacity:0;pointer-events:none;position:absolute;z-index:0}.handle{inset-block-start:50%;transform:translate(var(--spectrum-colorwheel-colorhandle-position))}:host([dir=ltr]) .handle{inset-inline-start:50%}:host([dir=rtl]) .handle{inset-inline-end:50%}.border{background-color:var(\n--mod-colorwheel-border-color,var(--spectrum-colorwheel-border-color)\n);block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));clip-path:path(evenodd,var(\n--mod-colorwheel-path-borders,var(--spectrum-colorwheel-path-borders)\n));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));position:relative}:host([disabled]) .border{background-color:var(\n--highcontrast-colorwheel-border-color-disabled,var(\n--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)\n)\n)}.wheel{background:conic-gradient(from 90deg,red,#ff8000,#ff0,#80ff00,#0f0,#00ff80,#0ff,#0080ff,#00f,#8000ff,#f0f,#ff0080,red);clip-path:path(evenodd,var(--mod-colorwheel-path,var(--spectrum-colorwheel-path)));inset-block:var(--spectrum-colorwheel-border-width);inset-inline:var(--spectrum-colorwheel-border-width);position:absolute}:host([disabled]) .wheel{background:var(\n--highcontrast-colorwheel-fill-color-disabled,var(\n--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)\n)\n);pointer-events:none}:host{touch-action:none}:host(:focus){outline:none}::slotted([slot=gradient]){block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));border-color:var(\n--spectrum-colorwheel-border-color,var(--spectrum-alias-border-color-translucent)\n);border-radius:100%;border-style:solid;border-width:var(\n--spectrum-colorwheel-border-size,var(--spectrum-alias-border-size-thin)\n);box-sizing:border-box;inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));position:relative;z-index:0}\n`;\nexport default styles;"],
4
+ "sourcesContent": ["/*\nCopyright 2023 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*/\nimport { css } from '@spectrum-web-components/base';\nconst styles = css`\n:host{--spectrum-colorwheel-width:var(--spectrum-color-wheel-width);--spectrum-colorwheel-min-width:var(--spectrum-color-wheel-minimum-width);--spectrum-colorwheel-height:var(--spectrum-color-wheel-width);--spectrum-colorwheel-border-color:var(--spectrum-transparent-black-200);--spectrum-colorwheel-border-width:var(--spectrum-border-width-100);--spectrum-colorwheel-fill-color-disabled:var(\n--spectrum-disabled-background-color\n);--spectrum-colorwheel-track-width:var(\n--spectrum-color-control-track-width\n);--spectrum-colorwheel-colorarea-margin:var(\n--spectrum-color-wheel-color-area-margin\n);--spectrum-colorwheel-colorhandle-position:calc(var(--spectrum-colorwheel-width)/2 - var(--spectrum-colorwheel-track-width)/2)}@media (forced-colors:active){:host{--highcontrast-colorwheel-border-color-disabled:GrayText;--highcontrast-colorwheel-fill-color-disabled:Canvas}:host{forced-color-adjust:none}}:host{--track-width:var(\n--mod-colorwheel-track-width,var(--spectrum-colorwheel-track-width)\n);--border-width:var(\n--mod-colorwheel-border-width,var(--spectrum-colorwheel-border-width)\n);block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));cursor:default;display:block;inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));min-inline-size:var(\n--mod-colorwheel-min-width,var(--spectrum-colorwheel-min-width)\n);position:relative;-webkit-user-select:none;user-select:none}:host([focused]){z-index:2}:host([disabled]){pointer-events:none}:host([dragged]){z-index:2}.inner{block-size:var(\n--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size)\n);display:flex;inline-size:var(\n--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size)\n);inset-block:0;inset-inline:0;margin:auto;position:absolute}.colorarea-container{align-items:center;block-size:auto;display:flex;inline-size:100%;justify-content:center;margin:var(\n--mod-colorwheel-colorarea-margin,var(--spectrum-colorwheel-colorarea-margin)\n)}.slider{block-size:100%;inline-size:100%;inset-block-start:0;inset-inline-start:0;margin:0;opacity:0;pointer-events:none;position:absolute;z-index:0}.handle{inset-block-start:50%;inset-inline:50%;transform:translate(var(--spectrum-colorwheel-colorhandle-position))}.border{background-color:var(\n--mod-colorwheel-border-color,var(--spectrum-colorwheel-border-color)\n);block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));clip-path:path(evenodd,var(\n--mod-colorwheel-path-borders,var(--spectrum-colorwheel-path-borders)\n));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));position:relative}:host([disabled]) .border{background-color:var(\n--highcontrast-colorwheel-border-color-disabled,var(\n--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)\n)\n)}.wheel{background:conic-gradient(from 90deg,red,#ff8000,#ff0,#80ff00,#0f0,#00ff80,#0ff,#0080ff,#00f,#8000ff,#f0f,#ff0080,red);clip-path:path(evenodd,var(--mod-colorwheel-path,var(--spectrum-colorwheel-path)));inset-block:var(--spectrum-colorwheel-border-width);inset-inline:var(--spectrum-colorwheel-border-width);position:absolute}:host([disabled]) .wheel{background:var(\n--highcontrast-colorwheel-fill-color-disabled,var(\n--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)\n)\n);pointer-events:none}:host{touch-action:none}:host(:focus){outline:none}::slotted([slot=gradient]){block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));border-color:var(\n--spectrum-colorwheel-border-color,var(--spectrum-alias-border-color-translucent)\n);border-radius:100%;border-style:solid;border-width:var(\n--spectrum-colorwheel-border-size,var(--spectrum-alias-border-size-thin)\n);box-sizing:border-box;inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));position:relative;z-index:0}:host([dir=rtl]) .wheel,:host([dir=rtl]) ::slotted([slot=gradient]){transform:scaleX(-1)}\n`;\nexport default styles;"],
5
5
  "mappings": "aAWA,OAAS,OAAAA,MAAW,gCACpB,MAAMC,EAASD;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqCf,eAAeC",
6
6
  "names": ["css", "styles"]
7
7
  }
@@ -13,13 +13,13 @@ const styles = css`
13
13
  --mod-colorwheel-border-width,var(--spectrum-colorwheel-border-width)
14
14
  );block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));cursor:default;display:block;inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));min-inline-size:var(
15
15
  --mod-colorwheel-min-width,var(--spectrum-colorwheel-min-width)
16
- );position:relative;-webkit-user-select:none;user-select:none}:host([focused]){z-index:2}:host([focused]) .handle{block-size:calc(var(--spectrum-color-handle-size)*2);inline-size:calc(var(--spectrum-color-handle-size)*2);margin-block-start:calc(var(--spectrum-color-handle-size)*-1);margin-inline-start:calc(var(--spectrum-color-handle-size)*-1)}:host([disabled]){pointer-events:none}:host([dragged]){z-index:2}.inner{block-size:var(
16
+ );position:relative;-webkit-user-select:none;user-select:none}:host([focused]){z-index:2}:host([disabled]){pointer-events:none}:host([dragged]){z-index:2}.inner{block-size:var(
17
17
  --mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size)
18
18
  );display:flex;inline-size:var(
19
19
  --mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size)
20
20
  );inset-block:0;inset-inline:0;margin:auto;position:absolute}.colorarea-container{align-items:center;block-size:auto;display:flex;inline-size:100%;justify-content:center;margin:var(
21
21
  --mod-colorwheel-colorarea-margin,var(--spectrum-colorwheel-colorarea-margin)
22
- )}.slider{block-size:100%;inline-size:100%;inset-block-start:0;inset-inline-start:0;margin:0;opacity:0;pointer-events:none;position:absolute;z-index:0}.handle{inset-block-start:50%;transform:translate(var(--spectrum-colorwheel-colorhandle-position))}:host([dir=ltr]) .handle{inset-inline-start:50%}:host([dir=rtl]) .handle{inset-inline-end:50%}.border{background-color:var(
22
+ )}.slider{block-size:100%;inline-size:100%;inset-block-start:0;inset-inline-start:0;margin:0;opacity:0;pointer-events:none;position:absolute;z-index:0}.handle{inset-block-start:50%;inset-inline:50%;transform:translate(var(--spectrum-colorwheel-colorhandle-position))}.border{background-color:var(
23
23
  --mod-colorwheel-border-color,var(--spectrum-colorwheel-border-color)
24
24
  );block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));clip-path:path(evenodd,var(
25
25
  --mod-colorwheel-path-borders,var(--spectrum-colorwheel-path-borders)
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["spectrum-color-wheel.css.ts"],
4
- "sourcesContent": ["/*\nCopyright 2023 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*/\nimport { css } from '@spectrum-web-components/base';\nconst styles = css`\n:host{--spectrum-colorwheel-width:var(--spectrum-color-wheel-width);--spectrum-colorwheel-min-width:var(--spectrum-color-wheel-minimum-width);--spectrum-colorwheel-height:var(--spectrum-color-wheel-width);--spectrum-colorwheel-border-color:var(--spectrum-transparent-black-200);--spectrum-colorwheel-border-width:var(--spectrum-border-width-100);--spectrum-colorwheel-fill-color-disabled:var(\n--spectrum-disabled-background-color\n);--spectrum-colorwheel-track-width:var(\n--spectrum-color-control-track-width\n);--spectrum-colorwheel-colorarea-margin:var(\n--spectrum-color-wheel-color-area-margin\n);--spectrum-colorwheel-colorhandle-position:calc(var(--spectrum-colorwheel-width)/2 - var(--spectrum-colorwheel-track-width)/2)}@media (forced-colors:active){:host{--highcontrast-colorwheel-border-color-disabled:GrayText;--highcontrast-colorwheel-fill-color-disabled:Canvas}:host{forced-color-adjust:none}}:host{--track-width:var(\n--mod-colorwheel-track-width,var(--spectrum-colorwheel-track-width)\n);--border-width:var(\n--mod-colorwheel-border-width,var(--spectrum-colorwheel-border-width)\n);block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));cursor:default;display:block;inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));min-inline-size:var(\n--mod-colorwheel-min-width,var(--spectrum-colorwheel-min-width)\n);position:relative;-webkit-user-select:none;user-select:none}:host([focused]){z-index:2}:host([focused]) .handle{block-size:calc(var(--spectrum-color-handle-size)*2);inline-size:calc(var(--spectrum-color-handle-size)*2);margin-block-start:calc(var(--spectrum-color-handle-size)*-1);margin-inline-start:calc(var(--spectrum-color-handle-size)*-1)}:host([disabled]){pointer-events:none}:host([dragged]){z-index:2}.inner{block-size:var(\n--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size)\n);display:flex;inline-size:var(\n--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size)\n);inset-block:0;inset-inline:0;margin:auto;position:absolute}.colorarea-container{align-items:center;block-size:auto;display:flex;inline-size:100%;justify-content:center;margin:var(\n--mod-colorwheel-colorarea-margin,var(--spectrum-colorwheel-colorarea-margin)\n)}.slider{block-size:100%;inline-size:100%;inset-block-start:0;inset-inline-start:0;margin:0;opacity:0;pointer-events:none;position:absolute;z-index:0}.handle{inset-block-start:50%;transform:translate(var(--spectrum-colorwheel-colorhandle-position))}:host([dir=ltr]) .handle{inset-inline-start:50%}:host([dir=rtl]) .handle{inset-inline-end:50%}.border{background-color:var(\n--mod-colorwheel-border-color,var(--spectrum-colorwheel-border-color)\n);block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));clip-path:path(evenodd,var(\n--mod-colorwheel-path-borders,var(--spectrum-colorwheel-path-borders)\n));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));position:relative}:host([disabled]) .border{background-color:var(\n--highcontrast-colorwheel-border-color-disabled,var(\n--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)\n)\n)}.wheel{background:conic-gradient(from 90deg,red,#ff8000,#ff0,#80ff00,#0f0,#00ff80,#0ff,#0080ff,#00f,#8000ff,#f0f,#ff0080,red);clip-path:path(evenodd,var(--mod-colorwheel-path,var(--spectrum-colorwheel-path)));inset-block:var(--spectrum-colorwheel-border-width);inset-inline:var(--spectrum-colorwheel-border-width);position:absolute}:host([disabled]) .wheel{background:var(\n--highcontrast-colorwheel-fill-color-disabled,var(\n--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)\n)\n);pointer-events:none}\n`;\nexport default styles;"],
4
+ "sourcesContent": ["/*\nCopyright 2023 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*/\nimport { css } from '@spectrum-web-components/base';\nconst styles = css`\n:host{--spectrum-colorwheel-width:var(--spectrum-color-wheel-width);--spectrum-colorwheel-min-width:var(--spectrum-color-wheel-minimum-width);--spectrum-colorwheel-height:var(--spectrum-color-wheel-width);--spectrum-colorwheel-border-color:var(--spectrum-transparent-black-200);--spectrum-colorwheel-border-width:var(--spectrum-border-width-100);--spectrum-colorwheel-fill-color-disabled:var(\n--spectrum-disabled-background-color\n);--spectrum-colorwheel-track-width:var(\n--spectrum-color-control-track-width\n);--spectrum-colorwheel-colorarea-margin:var(\n--spectrum-color-wheel-color-area-margin\n);--spectrum-colorwheel-colorhandle-position:calc(var(--spectrum-colorwheel-width)/2 - var(--spectrum-colorwheel-track-width)/2)}@media (forced-colors:active){:host{--highcontrast-colorwheel-border-color-disabled:GrayText;--highcontrast-colorwheel-fill-color-disabled:Canvas}:host{forced-color-adjust:none}}:host{--track-width:var(\n--mod-colorwheel-track-width,var(--spectrum-colorwheel-track-width)\n);--border-width:var(\n--mod-colorwheel-border-width,var(--spectrum-colorwheel-border-width)\n);block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));cursor:default;display:block;inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));min-inline-size:var(\n--mod-colorwheel-min-width,var(--spectrum-colorwheel-min-width)\n);position:relative;-webkit-user-select:none;user-select:none}:host([focused]){z-index:2}:host([disabled]){pointer-events:none}:host([dragged]){z-index:2}.inner{block-size:var(\n--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size)\n);display:flex;inline-size:var(\n--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size)\n);inset-block:0;inset-inline:0;margin:auto;position:absolute}.colorarea-container{align-items:center;block-size:auto;display:flex;inline-size:100%;justify-content:center;margin:var(\n--mod-colorwheel-colorarea-margin,var(--spectrum-colorwheel-colorarea-margin)\n)}.slider{block-size:100%;inline-size:100%;inset-block-start:0;inset-inline-start:0;margin:0;opacity:0;pointer-events:none;position:absolute;z-index:0}.handle{inset-block-start:50%;inset-inline:50%;transform:translate(var(--spectrum-colorwheel-colorhandle-position))}.border{background-color:var(\n--mod-colorwheel-border-color,var(--spectrum-colorwheel-border-color)\n);block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));clip-path:path(evenodd,var(\n--mod-colorwheel-path-borders,var(--spectrum-colorwheel-path-borders)\n));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));position:relative}:host([disabled]) .border{background-color:var(\n--highcontrast-colorwheel-border-color-disabled,var(\n--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)\n)\n)}.wheel{background:conic-gradient(from 90deg,red,#ff8000,#ff0,#80ff00,#0f0,#00ff80,#0ff,#0080ff,#00f,#8000ff,#f0f,#ff0080,red);clip-path:path(evenodd,var(--mod-colorwheel-path,var(--spectrum-colorwheel-path)));inset-block:var(--spectrum-colorwheel-border-width);inset-inline:var(--spectrum-colorwheel-border-width);position:absolute}:host([disabled]) .wheel{background:var(\n--highcontrast-colorwheel-fill-color-disabled,var(\n--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)\n)\n);pointer-events:none}\n`;\nexport default styles;"],
5
5
  "mappings": ";AAWA,SAAS,WAAW;AACpB,MAAM,SAAS;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAiCf,eAAe;",
6
6
  "names": []
7
7
  }
@@ -11,13 +11,13 @@
11
11
  --mod-colorwheel-border-width,var(--spectrum-colorwheel-border-width)
12
12
  );block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));cursor:default;display:block;inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));min-inline-size:var(
13
13
  --mod-colorwheel-min-width,var(--spectrum-colorwheel-min-width)
14
- );position:relative;-webkit-user-select:none;user-select:none}:host([focused]){z-index:2}:host([focused]) .handle{block-size:calc(var(--spectrum-color-handle-size)*2);inline-size:calc(var(--spectrum-color-handle-size)*2);margin-block-start:calc(var(--spectrum-color-handle-size)*-1);margin-inline-start:calc(var(--spectrum-color-handle-size)*-1)}:host([disabled]){pointer-events:none}:host([dragged]){z-index:2}.inner{block-size:var(
14
+ );position:relative;-webkit-user-select:none;user-select:none}:host([focused]){z-index:2}:host([disabled]){pointer-events:none}:host([dragged]){z-index:2}.inner{block-size:var(
15
15
  --mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size)
16
16
  );display:flex;inline-size:var(
17
17
  --mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size)
18
18
  );inset-block:0;inset-inline:0;margin:auto;position:absolute}.colorarea-container{align-items:center;block-size:auto;display:flex;inline-size:100%;justify-content:center;margin:var(
19
19
  --mod-colorwheel-colorarea-margin,var(--spectrum-colorwheel-colorarea-margin)
20
- )}.slider{block-size:100%;inline-size:100%;inset-block-start:0;inset-inline-start:0;margin:0;opacity:0;pointer-events:none;position:absolute;z-index:0}.handle{inset-block-start:50%;transform:translate(var(--spectrum-colorwheel-colorhandle-position))}:host([dir=ltr]) .handle{inset-inline-start:50%}:host([dir=rtl]) .handle{inset-inline-end:50%}.border{background-color:var(
20
+ )}.slider{block-size:100%;inline-size:100%;inset-block-start:0;inset-inline-start:0;margin:0;opacity:0;pointer-events:none;position:absolute;z-index:0}.handle{inset-block-start:50%;inset-inline:50%;transform:translate(var(--spectrum-colorwheel-colorhandle-position))}.border{background-color:var(
21
21
  --mod-colorwheel-border-color,var(--spectrum-colorwheel-border-color)
22
22
  );block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));clip-path:path(evenodd,var(
23
23
  --mod-colorwheel-path-borders,var(--spectrum-colorwheel-path-borders)
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["spectrum-color-wheel.css.ts"],
4
- "sourcesContent": ["/*\nCopyright 2023 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*/\nimport { css } from '@spectrum-web-components/base';\nconst styles = css`\n:host{--spectrum-colorwheel-width:var(--spectrum-color-wheel-width);--spectrum-colorwheel-min-width:var(--spectrum-color-wheel-minimum-width);--spectrum-colorwheel-height:var(--spectrum-color-wheel-width);--spectrum-colorwheel-border-color:var(--spectrum-transparent-black-200);--spectrum-colorwheel-border-width:var(--spectrum-border-width-100);--spectrum-colorwheel-fill-color-disabled:var(\n--spectrum-disabled-background-color\n);--spectrum-colorwheel-track-width:var(\n--spectrum-color-control-track-width\n);--spectrum-colorwheel-colorarea-margin:var(\n--spectrum-color-wheel-color-area-margin\n);--spectrum-colorwheel-colorhandle-position:calc(var(--spectrum-colorwheel-width)/2 - var(--spectrum-colorwheel-track-width)/2)}@media (forced-colors:active){:host{--highcontrast-colorwheel-border-color-disabled:GrayText;--highcontrast-colorwheel-fill-color-disabled:Canvas}:host{forced-color-adjust:none}}:host{--track-width:var(\n--mod-colorwheel-track-width,var(--spectrum-colorwheel-track-width)\n);--border-width:var(\n--mod-colorwheel-border-width,var(--spectrum-colorwheel-border-width)\n);block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));cursor:default;display:block;inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));min-inline-size:var(\n--mod-colorwheel-min-width,var(--spectrum-colorwheel-min-width)\n);position:relative;-webkit-user-select:none;user-select:none}:host([focused]){z-index:2}:host([focused]) .handle{block-size:calc(var(--spectrum-color-handle-size)*2);inline-size:calc(var(--spectrum-color-handle-size)*2);margin-block-start:calc(var(--spectrum-color-handle-size)*-1);margin-inline-start:calc(var(--spectrum-color-handle-size)*-1)}:host([disabled]){pointer-events:none}:host([dragged]){z-index:2}.inner{block-size:var(\n--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size)\n);display:flex;inline-size:var(\n--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size)\n);inset-block:0;inset-inline:0;margin:auto;position:absolute}.colorarea-container{align-items:center;block-size:auto;display:flex;inline-size:100%;justify-content:center;margin:var(\n--mod-colorwheel-colorarea-margin,var(--spectrum-colorwheel-colorarea-margin)\n)}.slider{block-size:100%;inline-size:100%;inset-block-start:0;inset-inline-start:0;margin:0;opacity:0;pointer-events:none;position:absolute;z-index:0}.handle{inset-block-start:50%;transform:translate(var(--spectrum-colorwheel-colorhandle-position))}:host([dir=ltr]) .handle{inset-inline-start:50%}:host([dir=rtl]) .handle{inset-inline-end:50%}.border{background-color:var(\n--mod-colorwheel-border-color,var(--spectrum-colorwheel-border-color)\n);block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));clip-path:path(evenodd,var(\n--mod-colorwheel-path-borders,var(--spectrum-colorwheel-path-borders)\n));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));position:relative}:host([disabled]) .border{background-color:var(\n--highcontrast-colorwheel-border-color-disabled,var(\n--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)\n)\n)}.wheel{background:conic-gradient(from 90deg,red,#ff8000,#ff0,#80ff00,#0f0,#00ff80,#0ff,#0080ff,#00f,#8000ff,#f0f,#ff0080,red);clip-path:path(evenodd,var(--mod-colorwheel-path,var(--spectrum-colorwheel-path)));inset-block:var(--spectrum-colorwheel-border-width);inset-inline:var(--spectrum-colorwheel-border-width);position:absolute}:host([disabled]) .wheel{background:var(\n--highcontrast-colorwheel-fill-color-disabled,var(\n--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)\n)\n);pointer-events:none}\n`;\nexport default styles;"],
4
+ "sourcesContent": ["/*\nCopyright 2023 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*/\nimport { css } from '@spectrum-web-components/base';\nconst styles = css`\n:host{--spectrum-colorwheel-width:var(--spectrum-color-wheel-width);--spectrum-colorwheel-min-width:var(--spectrum-color-wheel-minimum-width);--spectrum-colorwheel-height:var(--spectrum-color-wheel-width);--spectrum-colorwheel-border-color:var(--spectrum-transparent-black-200);--spectrum-colorwheel-border-width:var(--spectrum-border-width-100);--spectrum-colorwheel-fill-color-disabled:var(\n--spectrum-disabled-background-color\n);--spectrum-colorwheel-track-width:var(\n--spectrum-color-control-track-width\n);--spectrum-colorwheel-colorarea-margin:var(\n--spectrum-color-wheel-color-area-margin\n);--spectrum-colorwheel-colorhandle-position:calc(var(--spectrum-colorwheel-width)/2 - var(--spectrum-colorwheel-track-width)/2)}@media (forced-colors:active){:host{--highcontrast-colorwheel-border-color-disabled:GrayText;--highcontrast-colorwheel-fill-color-disabled:Canvas}:host{forced-color-adjust:none}}:host{--track-width:var(\n--mod-colorwheel-track-width,var(--spectrum-colorwheel-track-width)\n);--border-width:var(\n--mod-colorwheel-border-width,var(--spectrum-colorwheel-border-width)\n);block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));cursor:default;display:block;inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));min-inline-size:var(\n--mod-colorwheel-min-width,var(--spectrum-colorwheel-min-width)\n);position:relative;-webkit-user-select:none;user-select:none}:host([focused]){z-index:2}:host([disabled]){pointer-events:none}:host([dragged]){z-index:2}.inner{block-size:var(\n--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size)\n);display:flex;inline-size:var(\n--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size)\n);inset-block:0;inset-inline:0;margin:auto;position:absolute}.colorarea-container{align-items:center;block-size:auto;display:flex;inline-size:100%;justify-content:center;margin:var(\n--mod-colorwheel-colorarea-margin,var(--spectrum-colorwheel-colorarea-margin)\n)}.slider{block-size:100%;inline-size:100%;inset-block-start:0;inset-inline-start:0;margin:0;opacity:0;pointer-events:none;position:absolute;z-index:0}.handle{inset-block-start:50%;inset-inline:50%;transform:translate(var(--spectrum-colorwheel-colorhandle-position))}.border{background-color:var(\n--mod-colorwheel-border-color,var(--spectrum-colorwheel-border-color)\n);block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));clip-path:path(evenodd,var(\n--mod-colorwheel-path-borders,var(--spectrum-colorwheel-path-borders)\n));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));position:relative}:host([disabled]) .border{background-color:var(\n--highcontrast-colorwheel-border-color-disabled,var(\n--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)\n)\n)}.wheel{background:conic-gradient(from 90deg,red,#ff8000,#ff0,#80ff00,#0f0,#00ff80,#0ff,#0080ff,#00f,#8000ff,#f0f,#ff0080,red);clip-path:path(evenodd,var(--mod-colorwheel-path,var(--spectrum-colorwheel-path)));inset-block:var(--spectrum-colorwheel-border-width);inset-inline:var(--spectrum-colorwheel-border-width);position:absolute}:host([disabled]) .wheel{background:var(\n--highcontrast-colorwheel-fill-color-disabled,var(\n--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)\n)\n);pointer-events:none}\n`;\nexport default styles;"],
5
5
  "mappings": "aAWA,OAAS,OAAAA,MAAW,gCACpB,MAAMC,EAASD;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;AAAA;AAAA;AAAA;AAAA;AAAA,EAiCf,eAAeC",
6
6
  "names": ["css", "styles"]
7
7
  }
@@ -494,5 +494,22 @@ describe("ColorWheel", () => {
494
494
  expect(el.value).to.equal(hue);
495
495
  expect(tinyHSLA.equals(el.color)).to.be.true;
496
496
  });
497
+ it('should flip orientation with dir="rtl"', async () => {
498
+ const el = await fixture(
499
+ html`
500
+ <sp-color-wheel></sp-color-wheel>
501
+ `
502
+ );
503
+ await elementUpdated(el);
504
+ const root = el.shadowRoot ? el.shadowRoot : el;
505
+ expect(
506
+ getComputedStyle(root.querySelector(".wheel")).transform
507
+ ).to.equal("none");
508
+ el.setAttribute("dir", "rtl");
509
+ await elementUpdated(el);
510
+ expect(
511
+ getComputedStyle(root.querySelector(".wheel")).transform
512
+ ).to.equal("matrix(-1, 0, 0, 1, 0, 0)");
513
+ });
497
514
  });
498
515
  //# sourceMappingURL=color-wheel.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["color-wheel.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 { elementUpdated, expect, fixture, html } from '@open-wc/testing';\nimport {\n arrowDownEvent,\n arrowDownKeyupEvent,\n arrowLeftEvent,\n arrowLeftKeyupEvent,\n arrowRightEvent,\n arrowRightKeyupEvent,\n arrowUpEvent,\n arrowUpKeyupEvent,\n ignoreResizeObserverLoopError,\n testForLitDevWarnings,\n} from '../../../test/testing-helpers.js';\n\nimport '@spectrum-web-components/color-wheel/sp-color-wheel.js';\nimport { ColorWheel } from '@spectrum-web-components/color-wheel';\nimport { HSL, HSLA, HSV, HSVA, RGB, RGBA, TinyColor } from '@ctrl/tinycolor';\nimport { sendKeys } from '@web/test-runner-commands';\nimport { sendMouse } from '../../../test/plugins/browser.js';\nimport { spy } from 'sinon';\n\nignoreResizeObserverLoopError(before, after);\n\ndescribe('ColorWheel', () => {\n testForLitDevWarnings(\n async () =>\n await fixture<ColorWheel>(\n html`\n <sp-color-wheel></sp-color-wheel>\n `\n )\n );\n it('loads default color-wheel accessibly', async () => {\n const el = await fixture<ColorWheel>(\n html`\n <sp-color-wheel></sp-color-wheel>\n `\n );\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n\n it('manages a single tab stop', async () => {\n const test = await fixture<HTMLDivElement>(\n html`\n <div>\n <input type=\"text\" id=\"test-input-1\" />\n <sp-color-wheel></sp-color-wheel>\n <input type=\"text\" id=\"test-input-2\" />\n </div>\n `\n );\n const el = test.querySelector('sp-color-wheel') as ColorWheel;\n const input1 = test.querySelector(\n 'input:nth-of-type(1)'\n ) as HTMLInputElement;\n const input2 = test.querySelector(\n 'input:nth-of-type(2)'\n ) as HTMLInputElement;\n\n await elementUpdated(el);\n\n input1.focus();\n\n expect(document.activeElement).to.equal(input1);\n\n await sendKeys({\n press: 'Tab',\n });\n\n expect(document.activeElement).to.equal(el);\n\n let value = el.value;\n await sendKeys({\n press: 'ArrowRight',\n });\n expect(el.value).to.not.equal(value);\n await sendKeys({\n press: 'Tab',\n });\n\n expect(document.activeElement).to.equal(input2);\n\n await sendKeys({\n press: 'Shift+Tab',\n });\n\n expect(document.activeElement).to.equal(el);\n\n value = el.value;\n await sendKeys({\n press: 'ArrowDown',\n });\n expect(el.value).to.not.equal(value);\n await sendKeys({\n press: 'Shift+Tab',\n });\n\n expect(document.activeElement).to.equal(input1);\n });\n it('manages [focused]', async () => {\n const el = await fixture<ColorWheel>(\n html`\n <sp-color-wheel></sp-color-wheel>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.focused).to.be.false;\n\n await sendKeys({ press: 'Tab' });\n await elementUpdated(el);\n\n expect(el.focused).to.be.true;\n\n el.blur();\n await elementUpdated(el);\n\n expect(el.focused).to.be.false;\n\n el.dispatchEvent(new FocusEvent('focus'));\n await elementUpdated(el);\n\n expect(el.focused).to.be.true;\n\n el.dispatchEvent(new FocusEvent('blur'));\n await elementUpdated(el);\n\n expect(el.focused).to.be.false;\n });\n it('dispatches input and change events in response to \"Arrow*\" keypresses', async () => {\n const inputSpy = spy();\n const changeSpy = spy();\n const el = await fixture<ColorWheel>(\n html`\n <sp-color-wheel\n @change=${() => changeSpy()}\n @input=${() => inputSpy()}\n ></sp-color-wheel>\n `\n );\n\n await elementUpdated(el);\n el.focus();\n\n await sendKeys({ press: 'ArrowRight' });\n expect(inputSpy.callCount).to.equal(1);\n expect(changeSpy.callCount).to.equal(1);\n\n await sendKeys({ press: 'ArrowLeft' });\n expect(inputSpy.callCount).to.equal(2);\n expect(changeSpy.callCount).to.equal(2);\n\n await sendKeys({ press: 'ArrowUp' });\n expect(inputSpy.callCount).to.equal(3);\n expect(changeSpy.callCount).to.equal(3);\n\n await sendKeys({ press: 'ArrowDown' });\n expect(inputSpy.callCount).to.equal(4);\n expect(changeSpy.callCount).to.equal(4);\n });\n it('responds to events on the internal input element', async () => {\n // screen reader interactions dispatch events as found in the following test\n const inputSpy = spy();\n const changeSpy = spy();\n const el = await fixture<ColorWheel>(\n html`\n <sp-color-wheel\n @change=${() => changeSpy()}\n @input=${() => inputSpy()}\n ></sp-color-wheel>\n `\n );\n\n await elementUpdated(el);\n\n const input = el.focusElement;\n\n el.focus();\n\n input.dispatchEvent(\n new Event('input', {\n bubbles: true,\n composed: true,\n })\n );\n input.dispatchEvent(\n new Event('change', {\n bubbles: true,\n composed: false, // native change events do not compose themselves by default\n })\n );\n\n expect(inputSpy.callCount).to.equal(1);\n expect(changeSpy.callCount).to.equal(1);\n });\n it('accepts \"Arrow*\" keypresses', async () => {\n const el = await fixture<ColorWheel>(\n html`\n <sp-color-wheel></sp-color-wheel>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(0);\n\n const input = el.focusElement;\n\n input.dispatchEvent(arrowUpEvent());\n input.dispatchEvent(arrowUpKeyupEvent());\n input.dispatchEvent(arrowUpEvent());\n input.dispatchEvent(arrowUpKeyupEvent());\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(2);\n\n input.dispatchEvent(arrowRightEvent());\n input.dispatchEvent(arrowRightKeyupEvent());\n input.dispatchEvent(arrowRightEvent());\n input.dispatchEvent(arrowRightKeyupEvent());\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(4);\n\n input.dispatchEvent(arrowDownEvent());\n input.dispatchEvent(arrowDownKeyupEvent());\n input.dispatchEvent(arrowDownEvent());\n input.dispatchEvent(arrowDownKeyupEvent());\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(2);\n\n input.dispatchEvent(arrowLeftEvent());\n input.dispatchEvent(arrowLeftKeyupEvent());\n input.dispatchEvent(arrowLeftEvent());\n input.dispatchEvent(arrowLeftKeyupEvent());\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(0);\n });\n it('accepts \"Arrow*\" keypresses in dir=\"rtl\"', async () => {\n const el = await fixture<ColorWheel>(\n html`\n <sp-color-wheel dir=\"rtl\"></sp-color-wheel>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(0);\n\n const input = el.focusElement;\n\n input.dispatchEvent(arrowUpEvent());\n input.dispatchEvent(arrowUpKeyupEvent());\n input.dispatchEvent(arrowUpEvent());\n input.dispatchEvent(arrowUpKeyupEvent());\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(2);\n\n input.dispatchEvent(arrowRightEvent());\n input.dispatchEvent(arrowRightKeyupEvent());\n input.dispatchEvent(arrowRightEvent());\n input.dispatchEvent(arrowRightKeyupEvent());\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(0);\n\n input.dispatchEvent(arrowLeftEvent());\n input.dispatchEvent(arrowLeftKeyupEvent());\n input.dispatchEvent(arrowLeftEvent());\n input.dispatchEvent(arrowLeftKeyupEvent());\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(2);\n\n input.dispatchEvent(arrowDownEvent());\n input.dispatchEvent(arrowDownKeyupEvent());\n input.dispatchEvent(arrowDownEvent());\n input.dispatchEvent(arrowDownKeyupEvent());\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(0);\n });\n it('accepts \"Arrow*\" keypresses with alteration', async () => {\n const el = await fixture<ColorWheel>(\n html`\n <sp-color-wheel></sp-color-wheel>\n `\n );\n\n await elementUpdated(el);\n el.focus();\n expect(el.value).to.equal(0);\n\n await sendKeys({\n down: 'Shift',\n });\n await sendKeys({\n press: 'ArrowUp',\n });\n await sendKeys({\n press: 'ArrowUp',\n });\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(20);\n\n await sendKeys({\n press: 'ArrowRight',\n });\n await sendKeys({\n press: 'ArrowRight',\n });\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(40);\n\n await sendKeys({\n press: 'ArrowDown',\n });\n await sendKeys({\n press: 'ArrowDown',\n });\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(20);\n\n await sendKeys({\n press: 'ArrowLeft',\n });\n await sendKeys({\n press: 'ArrowLeft',\n });\n await sendKeys({\n up: 'Shift',\n });\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(0);\n });\n it('accepts pointer events', async () => {\n const color = new TinyColor({ h: '0', s: '20%', l: '70%' });\n const el = await fixture<ColorWheel>(\n html`\n <sp-color-wheel\n .color=${color}\n style=\"--mod-colorwheel-width: 160px; --mod-colorwheel-height: 160px;\"\n ></sp-color-wheel>\n `\n );\n\n await elementUpdated(el);\n\n const { handle } = el as unknown as { handle: HTMLElement };\n\n handle.setPointerCapture = () => {\n return;\n };\n handle.releasePointerCapture = () => {\n return;\n };\n\n expect(el.value).to.equal(0);\n expect((el.color as HSLA).s).to.be.within(0.19, 0.21);\n expect((el.color as HSLA).l).to.be.within(0.69, 0.71);\n\n handle.dispatchEvent(\n new PointerEvent('pointerdown', {\n button: 1,\n pointerId: 1,\n clientX: 80,\n clientY: 15,\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(0);\n expect((el.color as HSLA).s).to.be.within(0.19, 0.21);\n expect((el.color as HSLA).l).to.be.within(0.69, 0.71);\n\n const root = el.shadowRoot ? el.shadowRoot : el;\n const gradient = root.querySelector('[name=\"gradient\"]') as HTMLElement;\n gradient.dispatchEvent(\n new PointerEvent('pointerdown', {\n button: 1,\n pointerId: 1,\n clientX: 80,\n clientY: 15,\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(0);\n expect((el.color as HSLA).s).to.be.within(0.19, 0.21);\n expect((el.color as HSLA).l).to.be.within(0.69, 0.71);\n\n gradient.dispatchEvent(\n new PointerEvent('pointerdown', {\n pointerId: 1,\n clientX: 80,\n clientY: 15,\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(263.74596725608353);\n expect((el.color as HSLA).s).to.be.within(0.19, 0.21);\n expect((el.color as HSLA).l).to.be.within(0.69, 0.71);\n\n handle.dispatchEvent(\n new PointerEvent('pointermove', {\n pointerId: 1,\n clientX: 80,\n clientY: 160,\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n );\n handle.dispatchEvent(\n new PointerEvent('pointerup', {\n pointerId: 1,\n clientX: 80,\n clientY: 160,\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(96.34019174590992);\n expect((el.color as HSLA).s).to.be.within(0.19, 0.21);\n expect((el.color as HSLA).l).to.be.within(0.69, 0.71);\n });\n it('can have `change` events prevented', async () => {\n const color = new TinyColor({ h: '0', s: '20%', l: '70%' });\n const el = await fixture<ColorWheel>(\n html`\n <sp-color-wheel\n .color=${color}\n @change=${(event: Event) => {\n event?.preventDefault();\n }}\n style=\"--spectrum-global-dimension-size-125: 10px;\"\n ></sp-color-wheel>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(0);\n\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [80, 15],\n },\n {\n type: 'down',\n },\n {\n type: 'move',\n position: [80, 160],\n },\n ],\n });\n\n await elementUpdated(el);\n\n await sendMouse({\n steps: [\n {\n type: 'up',\n },\n ],\n });\n\n await elementUpdated(el);\n expect(el.value).to.equal(0);\n });\n const colorFormats: {\n name: string;\n color:\n | string\n | number\n | TinyColor\n | HSVA\n | HSV\n | RGB\n | RGBA\n | HSL\n | HSLA;\n }[] = [\n //rgb\n { name: 'RGB String', color: 'rgb(204, 51, 204)' },\n { name: 'RGB', color: { r: 204, g: 51, b: 204, a: 1 } },\n //prgb\n { name: 'PRGB String', color: 'rgb(80%, 20%, 80%)' },\n { name: 'PRGB', color: { r: '80%', g: '20%', b: '80%', a: 1 } },\n // hex\n { name: 'Hex', color: 'cc33cc' },\n { name: 'Hex String', color: '#cc33cc' },\n // hex8\n { name: 'Hex8', color: 'cc33ccff' },\n { name: 'Hex8 String', color: '#cc33ccff' },\n // name\n { name: 'string', color: 'red' },\n // hsl\n { name: 'HSL String', color: 'hsl(300, 60%, 50%)' },\n { name: 'HSL', color: { h: 300, s: 0.6000000000000001, l: 0.5, a: 1 } },\n // hsv\n { name: 'HSV String', color: 'hsv(300, 75%, 100%)' },\n { name: 'HSV', color: { h: 300, s: 0.75, v: 1, a: 1 } },\n ];\n colorFormats.map((format) => {\n it(`maintains \\`color\\` format as ${format.name}`, async () => {\n const el = await fixture<ColorWheel>(\n html`\n <sp-color-wheel></sp-color-wheel>\n `\n );\n\n el.color = format.color;\n if (format.name.startsWith('Hex')) {\n expect(el.color).to.equal(format.color);\n } else expect(el.color).to.deep.equal(format.color);\n });\n });\n it(`maintains \\`color\\` format as TinyColor`, async () => {\n const el = await fixture<ColorWheel>(\n html`\n <sp-color-wheel></sp-color-wheel>\n `\n );\n const color = new TinyColor('rgb(204, 51, 204)');\n el.color = color;\n expect(color.equals(el.color));\n });\n it(`maintains hue value`, async () => {\n const el = await fixture<ColorWheel>(\n html`\n <sp-color-wheel></sp-color-wheel>\n `\n );\n const hue = 300;\n const hsl = `hsl(${hue}, 60%, 100%)`;\n el.color = hsl;\n expect(el.value).to.equal(hue);\n expect(el.color).to.equal(hsl);\n\n const hsla = `hsla(${hue}, 60%, 100%, 0.9)`;\n el.color = hsla;\n expect(el.value).to.equal(hue);\n expect(el.color).to.equal(hsla);\n\n const hsv = `hsv(${hue}, 60%, 100%)`;\n el.color = hsv;\n expect(el.value).to.equal(hue);\n expect(el.color).to.equal(hsv);\n\n const hsva = `hsva(${hue}, 60%, 100%, 0.9)`;\n el.color = hsva;\n expect(el.value).to.equal(hue);\n expect(el.color).to.equal(hsva);\n\n const tinyHSV = new TinyColor({ h: hue, s: 60, v: 100 });\n el.color = tinyHSV;\n expect(el.value).to.equal(hue);\n expect(tinyHSV.equals(el.color)).to.be.true;\n\n const tinyHSVA = new TinyColor({ h: hue, s: 60, v: 100, a: 1 });\n el.color = tinyHSVA;\n expect(el.value).to.equal(hue);\n expect(tinyHSVA.equals(el.color)).to.be.true;\n\n const tinyHSL = new TinyColor({ h: hue, s: 60, l: 100 });\n el.color = tinyHSL;\n expect(el.value).to.equal(hue);\n expect(tinyHSL.equals(el.color)).to.be.true;\n\n const tinyHSLA = new TinyColor({ h: hue, s: 60, l: 100, a: 1 });\n el.color = tinyHSLA;\n expect(el.value).to.equal(hue);\n expect(tinyHSLA.equals(el.color)).to.be.true;\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 { elementUpdated, expect, fixture, html } from '@open-wc/testing';\nimport {\n arrowDownEvent,\n arrowDownKeyupEvent,\n arrowLeftEvent,\n arrowLeftKeyupEvent,\n arrowRightEvent,\n arrowRightKeyupEvent,\n arrowUpEvent,\n arrowUpKeyupEvent,\n ignoreResizeObserverLoopError,\n testForLitDevWarnings,\n} from '../../../test/testing-helpers.js';\n\nimport '@spectrum-web-components/color-wheel/sp-color-wheel.js';\nimport { ColorWheel } from '@spectrum-web-components/color-wheel';\nimport { HSL, HSLA, HSV, HSVA, RGB, RGBA, TinyColor } from '@ctrl/tinycolor';\nimport { sendKeys } from '@web/test-runner-commands';\nimport { sendMouse } from '../../../test/plugins/browser.js';\nimport { spy } from 'sinon';\n\nignoreResizeObserverLoopError(before, after);\n\ndescribe('ColorWheel', () => {\n testForLitDevWarnings(\n async () =>\n await fixture<ColorWheel>(\n html`\n <sp-color-wheel></sp-color-wheel>\n `\n )\n );\n it('loads default color-wheel accessibly', async () => {\n const el = await fixture<ColorWheel>(\n html`\n <sp-color-wheel></sp-color-wheel>\n `\n );\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n\n it('manages a single tab stop', async () => {\n const test = await fixture<HTMLDivElement>(\n html`\n <div>\n <input type=\"text\" id=\"test-input-1\" />\n <sp-color-wheel></sp-color-wheel>\n <input type=\"text\" id=\"test-input-2\" />\n </div>\n `\n );\n const el = test.querySelector('sp-color-wheel') as ColorWheel;\n const input1 = test.querySelector(\n 'input:nth-of-type(1)'\n ) as HTMLInputElement;\n const input2 = test.querySelector(\n 'input:nth-of-type(2)'\n ) as HTMLInputElement;\n\n await elementUpdated(el);\n\n input1.focus();\n\n expect(document.activeElement).to.equal(input1);\n\n await sendKeys({\n press: 'Tab',\n });\n\n expect(document.activeElement).to.equal(el);\n\n let value = el.value;\n await sendKeys({\n press: 'ArrowRight',\n });\n expect(el.value).to.not.equal(value);\n await sendKeys({\n press: 'Tab',\n });\n\n expect(document.activeElement).to.equal(input2);\n\n await sendKeys({\n press: 'Shift+Tab',\n });\n\n expect(document.activeElement).to.equal(el);\n\n value = el.value;\n await sendKeys({\n press: 'ArrowDown',\n });\n expect(el.value).to.not.equal(value);\n await sendKeys({\n press: 'Shift+Tab',\n });\n\n expect(document.activeElement).to.equal(input1);\n });\n it('manages [focused]', async () => {\n const el = await fixture<ColorWheel>(\n html`\n <sp-color-wheel></sp-color-wheel>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.focused).to.be.false;\n\n await sendKeys({ press: 'Tab' });\n await elementUpdated(el);\n\n expect(el.focused).to.be.true;\n\n el.blur();\n await elementUpdated(el);\n\n expect(el.focused).to.be.false;\n\n el.dispatchEvent(new FocusEvent('focus'));\n await elementUpdated(el);\n\n expect(el.focused).to.be.true;\n\n el.dispatchEvent(new FocusEvent('blur'));\n await elementUpdated(el);\n\n expect(el.focused).to.be.false;\n });\n it('dispatches input and change events in response to \"Arrow*\" keypresses', async () => {\n const inputSpy = spy();\n const changeSpy = spy();\n const el = await fixture<ColorWheel>(\n html`\n <sp-color-wheel\n @change=${() => changeSpy()}\n @input=${() => inputSpy()}\n ></sp-color-wheel>\n `\n );\n\n await elementUpdated(el);\n el.focus();\n\n await sendKeys({ press: 'ArrowRight' });\n expect(inputSpy.callCount).to.equal(1);\n expect(changeSpy.callCount).to.equal(1);\n\n await sendKeys({ press: 'ArrowLeft' });\n expect(inputSpy.callCount).to.equal(2);\n expect(changeSpy.callCount).to.equal(2);\n\n await sendKeys({ press: 'ArrowUp' });\n expect(inputSpy.callCount).to.equal(3);\n expect(changeSpy.callCount).to.equal(3);\n\n await sendKeys({ press: 'ArrowDown' });\n expect(inputSpy.callCount).to.equal(4);\n expect(changeSpy.callCount).to.equal(4);\n });\n it('responds to events on the internal input element', async () => {\n // screen reader interactions dispatch events as found in the following test\n const inputSpy = spy();\n const changeSpy = spy();\n const el = await fixture<ColorWheel>(\n html`\n <sp-color-wheel\n @change=${() => changeSpy()}\n @input=${() => inputSpy()}\n ></sp-color-wheel>\n `\n );\n\n await elementUpdated(el);\n\n const input = el.focusElement;\n\n el.focus();\n\n input.dispatchEvent(\n new Event('input', {\n bubbles: true,\n composed: true,\n })\n );\n input.dispatchEvent(\n new Event('change', {\n bubbles: true,\n composed: false, // native change events do not compose themselves by default\n })\n );\n\n expect(inputSpy.callCount).to.equal(1);\n expect(changeSpy.callCount).to.equal(1);\n });\n it('accepts \"Arrow*\" keypresses', async () => {\n const el = await fixture<ColorWheel>(\n html`\n <sp-color-wheel></sp-color-wheel>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(0);\n\n const input = el.focusElement;\n\n input.dispatchEvent(arrowUpEvent());\n input.dispatchEvent(arrowUpKeyupEvent());\n input.dispatchEvent(arrowUpEvent());\n input.dispatchEvent(arrowUpKeyupEvent());\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(2);\n\n input.dispatchEvent(arrowRightEvent());\n input.dispatchEvent(arrowRightKeyupEvent());\n input.dispatchEvent(arrowRightEvent());\n input.dispatchEvent(arrowRightKeyupEvent());\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(4);\n\n input.dispatchEvent(arrowDownEvent());\n input.dispatchEvent(arrowDownKeyupEvent());\n input.dispatchEvent(arrowDownEvent());\n input.dispatchEvent(arrowDownKeyupEvent());\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(2);\n\n input.dispatchEvent(arrowLeftEvent());\n input.dispatchEvent(arrowLeftKeyupEvent());\n input.dispatchEvent(arrowLeftEvent());\n input.dispatchEvent(arrowLeftKeyupEvent());\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(0);\n });\n it('accepts \"Arrow*\" keypresses in dir=\"rtl\"', async () => {\n const el = await fixture<ColorWheel>(\n html`\n <sp-color-wheel dir=\"rtl\"></sp-color-wheel>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(0);\n\n const input = el.focusElement;\n\n input.dispatchEvent(arrowUpEvent());\n input.dispatchEvent(arrowUpKeyupEvent());\n input.dispatchEvent(arrowUpEvent());\n input.dispatchEvent(arrowUpKeyupEvent());\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(2);\n\n input.dispatchEvent(arrowRightEvent());\n input.dispatchEvent(arrowRightKeyupEvent());\n input.dispatchEvent(arrowRightEvent());\n input.dispatchEvent(arrowRightKeyupEvent());\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(0);\n\n input.dispatchEvent(arrowLeftEvent());\n input.dispatchEvent(arrowLeftKeyupEvent());\n input.dispatchEvent(arrowLeftEvent());\n input.dispatchEvent(arrowLeftKeyupEvent());\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(2);\n\n input.dispatchEvent(arrowDownEvent());\n input.dispatchEvent(arrowDownKeyupEvent());\n input.dispatchEvent(arrowDownEvent());\n input.dispatchEvent(arrowDownKeyupEvent());\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(0);\n });\n it('accepts \"Arrow*\" keypresses with alteration', async () => {\n const el = await fixture<ColorWheel>(\n html`\n <sp-color-wheel></sp-color-wheel>\n `\n );\n\n await elementUpdated(el);\n el.focus();\n expect(el.value).to.equal(0);\n\n await sendKeys({\n down: 'Shift',\n });\n await sendKeys({\n press: 'ArrowUp',\n });\n await sendKeys({\n press: 'ArrowUp',\n });\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(20);\n\n await sendKeys({\n press: 'ArrowRight',\n });\n await sendKeys({\n press: 'ArrowRight',\n });\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(40);\n\n await sendKeys({\n press: 'ArrowDown',\n });\n await sendKeys({\n press: 'ArrowDown',\n });\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(20);\n\n await sendKeys({\n press: 'ArrowLeft',\n });\n await sendKeys({\n press: 'ArrowLeft',\n });\n await sendKeys({\n up: 'Shift',\n });\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(0);\n });\n it('accepts pointer events', async () => {\n const color = new TinyColor({ h: '0', s: '20%', l: '70%' });\n const el = await fixture<ColorWheel>(\n html`\n <sp-color-wheel\n .color=${color}\n style=\"--mod-colorwheel-width: 160px; --mod-colorwheel-height: 160px;\"\n ></sp-color-wheel>\n `\n );\n\n await elementUpdated(el);\n\n const { handle } = el as unknown as { handle: HTMLElement };\n\n handle.setPointerCapture = () => {\n return;\n };\n handle.releasePointerCapture = () => {\n return;\n };\n\n expect(el.value).to.equal(0);\n expect((el.color as HSLA).s).to.be.within(0.19, 0.21);\n expect((el.color as HSLA).l).to.be.within(0.69, 0.71);\n\n handle.dispatchEvent(\n new PointerEvent('pointerdown', {\n button: 1,\n pointerId: 1,\n clientX: 80,\n clientY: 15,\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(0);\n expect((el.color as HSLA).s).to.be.within(0.19, 0.21);\n expect((el.color as HSLA).l).to.be.within(0.69, 0.71);\n\n const root = el.shadowRoot ? el.shadowRoot : el;\n const gradient = root.querySelector('[name=\"gradient\"]') as HTMLElement;\n gradient.dispatchEvent(\n new PointerEvent('pointerdown', {\n button: 1,\n pointerId: 1,\n clientX: 80,\n clientY: 15,\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(0);\n expect((el.color as HSLA).s).to.be.within(0.19, 0.21);\n expect((el.color as HSLA).l).to.be.within(0.69, 0.71);\n\n gradient.dispatchEvent(\n new PointerEvent('pointerdown', {\n pointerId: 1,\n clientX: 80,\n clientY: 15,\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(263.74596725608353);\n expect((el.color as HSLA).s).to.be.within(0.19, 0.21);\n expect((el.color as HSLA).l).to.be.within(0.69, 0.71);\n\n handle.dispatchEvent(\n new PointerEvent('pointermove', {\n pointerId: 1,\n clientX: 80,\n clientY: 160,\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n );\n handle.dispatchEvent(\n new PointerEvent('pointerup', {\n pointerId: 1,\n clientX: 80,\n clientY: 160,\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(96.34019174590992);\n expect((el.color as HSLA).s).to.be.within(0.19, 0.21);\n expect((el.color as HSLA).l).to.be.within(0.69, 0.71);\n });\n it('can have `change` events prevented', async () => {\n const color = new TinyColor({ h: '0', s: '20%', l: '70%' });\n const el = await fixture<ColorWheel>(\n html`\n <sp-color-wheel\n .color=${color}\n @change=${(event: Event) => {\n event?.preventDefault();\n }}\n style=\"--spectrum-global-dimension-size-125: 10px;\"\n ></sp-color-wheel>\n `\n );\n\n await elementUpdated(el);\n\n expect(el.value).to.equal(0);\n\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [80, 15],\n },\n {\n type: 'down',\n },\n {\n type: 'move',\n position: [80, 160],\n },\n ],\n });\n\n await elementUpdated(el);\n\n await sendMouse({\n steps: [\n {\n type: 'up',\n },\n ],\n });\n\n await elementUpdated(el);\n expect(el.value).to.equal(0);\n });\n const colorFormats: {\n name: string;\n color:\n | string\n | number\n | TinyColor\n | HSVA\n | HSV\n | RGB\n | RGBA\n | HSL\n | HSLA;\n }[] = [\n //rgb\n { name: 'RGB String', color: 'rgb(204, 51, 204)' },\n { name: 'RGB', color: { r: 204, g: 51, b: 204, a: 1 } },\n //prgb\n { name: 'PRGB String', color: 'rgb(80%, 20%, 80%)' },\n { name: 'PRGB', color: { r: '80%', g: '20%', b: '80%', a: 1 } },\n // hex\n { name: 'Hex', color: 'cc33cc' },\n { name: 'Hex String', color: '#cc33cc' },\n // hex8\n { name: 'Hex8', color: 'cc33ccff' },\n { name: 'Hex8 String', color: '#cc33ccff' },\n // name\n { name: 'string', color: 'red' },\n // hsl\n { name: 'HSL String', color: 'hsl(300, 60%, 50%)' },\n { name: 'HSL', color: { h: 300, s: 0.6000000000000001, l: 0.5, a: 1 } },\n // hsv\n { name: 'HSV String', color: 'hsv(300, 75%, 100%)' },\n { name: 'HSV', color: { h: 300, s: 0.75, v: 1, a: 1 } },\n ];\n colorFormats.map((format) => {\n it(`maintains \\`color\\` format as ${format.name}`, async () => {\n const el = await fixture<ColorWheel>(\n html`\n <sp-color-wheel></sp-color-wheel>\n `\n );\n\n el.color = format.color;\n if (format.name.startsWith('Hex')) {\n expect(el.color).to.equal(format.color);\n } else expect(el.color).to.deep.equal(format.color);\n });\n });\n it(`maintains \\`color\\` format as TinyColor`, async () => {\n const el = await fixture<ColorWheel>(\n html`\n <sp-color-wheel></sp-color-wheel>\n `\n );\n const color = new TinyColor('rgb(204, 51, 204)');\n el.color = color;\n expect(color.equals(el.color));\n });\n it(`maintains hue value`, async () => {\n const el = await fixture<ColorWheel>(\n html`\n <sp-color-wheel></sp-color-wheel>\n `\n );\n const hue = 300;\n const hsl = `hsl(${hue}, 60%, 100%)`;\n el.color = hsl;\n expect(el.value).to.equal(hue);\n expect(el.color).to.equal(hsl);\n\n const hsla = `hsla(${hue}, 60%, 100%, 0.9)`;\n el.color = hsla;\n expect(el.value).to.equal(hue);\n expect(el.color).to.equal(hsla);\n\n const hsv = `hsv(${hue}, 60%, 100%)`;\n el.color = hsv;\n expect(el.value).to.equal(hue);\n expect(el.color).to.equal(hsv);\n\n const hsva = `hsva(${hue}, 60%, 100%, 0.9)`;\n el.color = hsva;\n expect(el.value).to.equal(hue);\n expect(el.color).to.equal(hsva);\n\n const tinyHSV = new TinyColor({ h: hue, s: 60, v: 100 });\n el.color = tinyHSV;\n expect(el.value).to.equal(hue);\n expect(tinyHSV.equals(el.color)).to.be.true;\n\n const tinyHSVA = new TinyColor({ h: hue, s: 60, v: 100, a: 1 });\n el.color = tinyHSVA;\n expect(el.value).to.equal(hue);\n expect(tinyHSVA.equals(el.color)).to.be.true;\n\n const tinyHSL = new TinyColor({ h: hue, s: 60, l: 100 });\n el.color = tinyHSL;\n expect(el.value).to.equal(hue);\n expect(tinyHSL.equals(el.color)).to.be.true;\n\n const tinyHSLA = new TinyColor({ h: hue, s: 60, l: 100, a: 1 });\n el.color = tinyHSLA;\n expect(el.value).to.equal(hue);\n expect(tinyHSLA.equals(el.color)).to.be.true;\n });\n it('should flip orientation with dir=\"rtl\"', async () => {\n const el = await fixture<ColorWheel>(\n html`\n <sp-color-wheel></sp-color-wheel>\n `\n );\n\n await elementUpdated(el);\n\n const root = el.shadowRoot ? el.shadowRoot : el;\n expect(\n getComputedStyle(root.querySelector('.wheel') as HTMLElement)\n .transform\n ).to.equal('none');\n\n el.setAttribute('dir', 'rtl');\n\n await elementUpdated(el);\n expect(\n getComputedStyle(root.querySelector('.wheel') as HTMLElement)\n .transform\n ).to.equal('matrix(-1, 0, 0, 1, 0, 0)');\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }