@spectrum-web-components/color-wheel 0.0.0-20241209155954
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.
- package/README.md +64 -0
- package/package.json +80 -0
- package/sp-color-wheel.d.ts +6 -0
- package/sp-color-wheel.dev.js +5 -0
- package/sp-color-wheel.dev.js.map +7 -0
- package/sp-color-wheel.js +2 -0
- package/sp-color-wheel.js.map +7 -0
- package/src/ColorWheel.d.ts +60 -0
- package/src/ColorWheel.dev.js +371 -0
- package/src/ColorWheel.dev.js.map +7 -0
- package/src/ColorWheel.js +46 -0
- package/src/ColorWheel.js.map +7 -0
- package/src/color-wheel-overrides.css.d.ts +2 -0
- package/src/color-wheel-overrides.css.dev.js +7 -0
- package/src/color-wheel-overrides.css.dev.js.map +7 -0
- package/src/color-wheel-overrides.css.js +4 -0
- package/src/color-wheel-overrides.css.js.map +7 -0
- package/src/color-wheel.css.d.ts +2 -0
- package/src/color-wheel.css.dev.js +7 -0
- package/src/color-wheel.css.dev.js.map +7 -0
- package/src/color-wheel.css.js +4 -0
- package/src/color-wheel.css.js.map +7 -0
- package/src/index.d.ts +1 -0
- package/src/index.dev.js +3 -0
- package/src/index.dev.js.map +7 -0
- package/src/index.js +2 -0
- package/src/index.js.map +7 -0
- package/src/spectrum-color-wheel.css.d.ts +2 -0
- package/src/spectrum-color-wheel.css.dev.js +7 -0
- package/src/spectrum-color-wheel.css.dev.js.map +7 -0
- package/src/spectrum-color-wheel.css.js +4 -0
- package/src/spectrum-color-wheel.css.js.map +7 -0
- package/src/spectrum-config.js +59 -0
- package/src/types.d.ts +13 -0
- package/src/types.dev.js +2 -0
- package/src/types.dev.js.map +7 -0
- package/src/types.js +2 -0
- package/src/types.js.map +7 -0
package/README.md
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
## Description
|
|
2
|
+
|
|
3
|
+
An `<sp-color-wheel>` lets users visually change an individual channel of a color on a circular track.
|
|
4
|
+
|
|
5
|
+
### Usage
|
|
6
|
+
|
|
7
|
+
[](https://www.npmjs.com/package/@spectrum-web-components/color-wheel)
|
|
8
|
+
[](https://bundlephobia.com/result?p=@spectrum-web-components/color-wheel)
|
|
9
|
+
[](https://webcomponents.dev/edit/collection/fO75441E1Q5ZlI0e9pgq/m5lUgBAAejgIkESwRvEs/src/index.ts)
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
yarn add @spectrum-web-components/color-wheel
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Import the side effectful registration of `<sp-color-wheel>` via:
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
import '@spectrum-web-components/color-wheel/sp-color-wheel.js';
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
When looking to leverage the `ColorWheel` base class as a type and/or for extension purposes, do so via:
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
import { ColorWheel } from '@spectrum-web-components/color-wheel';
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Color Formatting
|
|
28
|
+
|
|
29
|
+
When using the color elements, use `el.color` to access the `color` property, which should manage itself in the color format supplied. If you supply a color in `rgb()` format, `el.color` should return the color in `rgb()` format, as well.
|
|
30
|
+
|
|
31
|
+
The current color formats supported are as follows:
|
|
32
|
+
|
|
33
|
+
- Hex3, Hex4, Hex6, Hex8
|
|
34
|
+
- HSV, HSVA
|
|
35
|
+
- HSL, HSLA
|
|
36
|
+
- RGB, RGBA
|
|
37
|
+
- Strings (eg "red", "blue")
|
|
38
|
+
|
|
39
|
+
**Please note for the following formats: HSV, HSVA, HSL, HSLA**
|
|
40
|
+
When using the HSL or HSV formats, and a color's value (in HSV) is set to 0, or its luminosity (in HSL) is set to 0 or 1, the hue and saturation values may not be preserved by the element's `color` property. This is detailed in the [TinyColor documentation](https://www.npmjs.com/package/@ctrl/tinycolor). Seperately, the element's `value` property is directly managed by the hue as represented in the interface.
|
|
41
|
+
|
|
42
|
+
## Example
|
|
43
|
+
|
|
44
|
+
```html
|
|
45
|
+
<sp-color-wheel></sp-color-wheel>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Disabled
|
|
49
|
+
|
|
50
|
+
A color wheel in a disabled state shows that an input exists, but is not available in that circumstance. This can be used to maintain layout continuity and communicate that the wheel may become available later.
|
|
51
|
+
|
|
52
|
+
```html
|
|
53
|
+
<sp-color-wheel disabled></sp-color-wheel>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Variants
|
|
57
|
+
|
|
58
|
+
### Sized
|
|
59
|
+
|
|
60
|
+
An `<sp-color-wheel>`’s size can be customized appropriately for its context. By default, the size is size-2400 (192 px on desktop, 240 px on mobile).
|
|
61
|
+
|
|
62
|
+
```html
|
|
63
|
+
<sp-color-wheel style="width: 300px; height: 300px;"></sp-color-wheel>
|
|
64
|
+
```
|
package/package.json
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@spectrum-web-components/color-wheel",
|
|
3
|
+
"version": "0.0.0-20241209155954",
|
|
4
|
+
"publishConfig": {
|
|
5
|
+
"access": "public"
|
|
6
|
+
},
|
|
7
|
+
"description": "",
|
|
8
|
+
"license": "Apache-2.0",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "https://github.com/adobe/spectrum-web-components.git",
|
|
12
|
+
"directory": "packages/color-wheel"
|
|
13
|
+
},
|
|
14
|
+
"author": "",
|
|
15
|
+
"homepage": "https://opensource.adobe.com/spectrum-web-components/components/color-wheel",
|
|
16
|
+
"bugs": {
|
|
17
|
+
"url": "https://github.com/adobe/spectrum-web-components/issues"
|
|
18
|
+
},
|
|
19
|
+
"main": "src/index.js",
|
|
20
|
+
"module": "src/index.js",
|
|
21
|
+
"type": "module",
|
|
22
|
+
"exports": {
|
|
23
|
+
".": {
|
|
24
|
+
"development": "./src/index.dev.js",
|
|
25
|
+
"default": "./src/index.js"
|
|
26
|
+
},
|
|
27
|
+
"./package.json": "./package.json",
|
|
28
|
+
"./src/ColorWheel.js": {
|
|
29
|
+
"development": "./src/ColorWheel.dev.js",
|
|
30
|
+
"default": "./src/ColorWheel.js"
|
|
31
|
+
},
|
|
32
|
+
"./src/color-wheel-overrides.css.js": "./src/color-wheel-overrides.css.js",
|
|
33
|
+
"./src/color-wheel.css.js": "./src/color-wheel.css.js",
|
|
34
|
+
"./src/index.js": {
|
|
35
|
+
"development": "./src/index.dev.js",
|
|
36
|
+
"default": "./src/index.js"
|
|
37
|
+
},
|
|
38
|
+
"./src/types.js": {
|
|
39
|
+
"development": "./src/types.dev.js",
|
|
40
|
+
"default": "./src/types.js"
|
|
41
|
+
},
|
|
42
|
+
"./sp-color-wheel.js": {
|
|
43
|
+
"development": "./sp-color-wheel.dev.js",
|
|
44
|
+
"default": "./sp-color-wheel.js"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"scripts": {
|
|
48
|
+
"test": "echo \"Error: run tests from mono-repo root.\" && exit 1"
|
|
49
|
+
},
|
|
50
|
+
"files": [
|
|
51
|
+
"**/*.d.ts",
|
|
52
|
+
"**/*.js",
|
|
53
|
+
"**/*.js.map",
|
|
54
|
+
"custom-elements.json",
|
|
55
|
+
"!stories/",
|
|
56
|
+
"!test/"
|
|
57
|
+
],
|
|
58
|
+
"keywords": [
|
|
59
|
+
"spectrum css",
|
|
60
|
+
"web components",
|
|
61
|
+
"lit-element",
|
|
62
|
+
"lit-html"
|
|
63
|
+
],
|
|
64
|
+
"dependencies": {
|
|
65
|
+
"@ctrl/tinycolor": "^4.0.3",
|
|
66
|
+
"@spectrum-web-components/base": "0.0.0-20241209155954",
|
|
67
|
+
"@spectrum-web-components/color-handle": "0.0.0-20241209155954",
|
|
68
|
+
"@spectrum-web-components/reactive-controllers": "0.0.0-20241209155954",
|
|
69
|
+
"@spectrum-web-components/shared": "0.0.0-20241209155954"
|
|
70
|
+
},
|
|
71
|
+
"devDependencies": {
|
|
72
|
+
"@spectrum-css/colorwheel": "^5.0.0-s2-foundations.15"
|
|
73
|
+
},
|
|
74
|
+
"types": "./src/index.d.ts",
|
|
75
|
+
"customElements": "custom-elements.json",
|
|
76
|
+
"sideEffects": [
|
|
77
|
+
"./sp-*.js",
|
|
78
|
+
"./**/*.dev.js"
|
|
79
|
+
]
|
|
80
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["sp-color-wheel.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 { ColorWheel } from './src/ColorWheel.dev.js'\nimport { defineElement } from '@spectrum-web-components/base/src/define-element.js';\n\ndefineElement('sp-color-wheel', ColorWheel);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-color-wheel': ColorWheel;\n }\n}\n"],
|
|
5
|
+
"mappings": ";AAYA,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAE9B,cAAc,kBAAkB,UAAU;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["sp-color-wheel.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 { ColorWheel } from './src/ColorWheel.js';\nimport { defineElement } from '@spectrum-web-components/base/src/define-element.js';\n\ndefineElement('sp-color-wheel', ColorWheel);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-color-wheel': ColorWheel;\n }\n}\n"],
|
|
5
|
+
"mappings": "aAYA,OAAS,cAAAA,MAAkB,sBAC3B,OAAS,iBAAAC,MAAqB,sDAE9BA,EAAc,iBAAkBD,CAAU",
|
|
6
|
+
"names": ["ColorWheel", "defineElement"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { CSSResultArray, PropertyValues, TemplateResult } from '@spectrum-web-components/base';
|
|
2
|
+
import { Focusable } from '@spectrum-web-components/shared/src/focusable.js';
|
|
3
|
+
import '@spectrum-web-components/color-handle/sp-color-handle.js';
|
|
4
|
+
import { ColorValue } from '@spectrum-web-components/reactive-controllers/src/Color.js';
|
|
5
|
+
/**
|
|
6
|
+
* @element sp-color-wheel
|
|
7
|
+
* @slot gradient - a custom gradient visually outlining the available color values
|
|
8
|
+
* @fires input - The value of the Color Wheel has changed.
|
|
9
|
+
* @fires change - An alteration to the value of the Color Wheel has been committed by the user.
|
|
10
|
+
*/
|
|
11
|
+
export declare class ColorWheel extends Focusable {
|
|
12
|
+
static get styles(): CSSResultArray;
|
|
13
|
+
dir: 'ltr' | 'rtl';
|
|
14
|
+
disabled: boolean;
|
|
15
|
+
focused: boolean;
|
|
16
|
+
private handle;
|
|
17
|
+
label: string;
|
|
18
|
+
step: number;
|
|
19
|
+
private languageResolver;
|
|
20
|
+
private colorController;
|
|
21
|
+
get value(): number;
|
|
22
|
+
set value(hue: number);
|
|
23
|
+
get color(): ColorValue;
|
|
24
|
+
set color(color: ColorValue);
|
|
25
|
+
private get altered();
|
|
26
|
+
private set altered(value);
|
|
27
|
+
private _altered;
|
|
28
|
+
input: HTMLInputElement;
|
|
29
|
+
get focusElement(): HTMLInputElement;
|
|
30
|
+
private handleKeydown;
|
|
31
|
+
private handleInput;
|
|
32
|
+
private handleChange;
|
|
33
|
+
focus(focusOptions?: FocusOptions): void;
|
|
34
|
+
private forwardFocus;
|
|
35
|
+
private handleFocus;
|
|
36
|
+
private handleBlur;
|
|
37
|
+
private boundingClientRect;
|
|
38
|
+
private _pointerDown;
|
|
39
|
+
private handlePointerdown;
|
|
40
|
+
private handlePointermove;
|
|
41
|
+
private handlePointerup;
|
|
42
|
+
/**
|
|
43
|
+
* Returns the value under the cursor
|
|
44
|
+
* @param: PointerEvent on slider
|
|
45
|
+
* @return: Slider value that correlates to the position under the pointer
|
|
46
|
+
*/
|
|
47
|
+
private calculateHandlePosition;
|
|
48
|
+
private handleGradientPointerdown;
|
|
49
|
+
calculateStyleData(): {
|
|
50
|
+
clipPath: string;
|
|
51
|
+
clipPathBorders: string;
|
|
52
|
+
diameter: number;
|
|
53
|
+
handleLocationStyles: string;
|
|
54
|
+
};
|
|
55
|
+
protected render(): TemplateResult;
|
|
56
|
+
protected firstUpdated(changed: PropertyValues): void;
|
|
57
|
+
private observer?;
|
|
58
|
+
connectedCallback(): void;
|
|
59
|
+
disconnectedCallback(): void;
|
|
60
|
+
}
|
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
5
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
6
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
7
|
+
if (decorator = decorators[i])
|
|
8
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
9
|
+
if (kind && result) __defProp(target, key, result);
|
|
10
|
+
return result;
|
|
11
|
+
};
|
|
12
|
+
import {
|
|
13
|
+
html
|
|
14
|
+
} from "@spectrum-web-components/base";
|
|
15
|
+
import { ifDefined } from "@spectrum-web-components/base/src/directives.js";
|
|
16
|
+
import {
|
|
17
|
+
property,
|
|
18
|
+
query
|
|
19
|
+
} from "@spectrum-web-components/base/src/decorators.js";
|
|
20
|
+
import { streamingListener } from "@spectrum-web-components/base/src/streaming-listener.js";
|
|
21
|
+
import { Focusable } from "@spectrum-web-components/shared/src/focusable.js";
|
|
22
|
+
import "@spectrum-web-components/color-handle/sp-color-handle.js";
|
|
23
|
+
import {
|
|
24
|
+
ColorController
|
|
25
|
+
} from "@spectrum-web-components/reactive-controllers/src/Color.js";
|
|
26
|
+
import { LanguageResolutionController } from "@spectrum-web-components/reactive-controllers/src/LanguageResolution.js";
|
|
27
|
+
import styles from "./color-wheel.css.js";
|
|
28
|
+
export class ColorWheel extends Focusable {
|
|
29
|
+
constructor() {
|
|
30
|
+
super(...arguments);
|
|
31
|
+
this.disabled = false;
|
|
32
|
+
this.focused = false;
|
|
33
|
+
this.label = "hue";
|
|
34
|
+
this.step = 1;
|
|
35
|
+
this.languageResolver = new LanguageResolutionController(this);
|
|
36
|
+
this.colorController = new ColorController(this, {
|
|
37
|
+
/* c8 ignore next 3 */
|
|
38
|
+
applyColorToState: () => {
|
|
39
|
+
return;
|
|
40
|
+
},
|
|
41
|
+
extractColorFromState: (controller) => ({
|
|
42
|
+
...controller.getColor("hsl"),
|
|
43
|
+
h: this.value
|
|
44
|
+
}),
|
|
45
|
+
maintains: "saturation"
|
|
46
|
+
});
|
|
47
|
+
this._altered = 0;
|
|
48
|
+
this._pointerDown = false;
|
|
49
|
+
}
|
|
50
|
+
static get styles() {
|
|
51
|
+
return [styles];
|
|
52
|
+
}
|
|
53
|
+
get value() {
|
|
54
|
+
return this.colorController.hue;
|
|
55
|
+
}
|
|
56
|
+
set value(hue) {
|
|
57
|
+
this.colorController.hue = hue;
|
|
58
|
+
}
|
|
59
|
+
get color() {
|
|
60
|
+
return this.colorController.color;
|
|
61
|
+
}
|
|
62
|
+
set color(color) {
|
|
63
|
+
this.colorController.color = color;
|
|
64
|
+
}
|
|
65
|
+
get altered() {
|
|
66
|
+
return this._altered;
|
|
67
|
+
}
|
|
68
|
+
set altered(altered) {
|
|
69
|
+
this._altered = altered;
|
|
70
|
+
this.step = Math.max(1, this.altered * 10);
|
|
71
|
+
}
|
|
72
|
+
get focusElement() {
|
|
73
|
+
return this.input;
|
|
74
|
+
}
|
|
75
|
+
handleKeydown(event) {
|
|
76
|
+
const { key } = event;
|
|
77
|
+
this.focused = true;
|
|
78
|
+
this.altered = [event.shiftKey, event.ctrlKey, event.altKey].filter(
|
|
79
|
+
(key2) => !!key2
|
|
80
|
+
).length;
|
|
81
|
+
let delta = 0;
|
|
82
|
+
switch (key) {
|
|
83
|
+
case "ArrowUp":
|
|
84
|
+
delta = this.step;
|
|
85
|
+
break;
|
|
86
|
+
case "ArrowDown":
|
|
87
|
+
delta = -this.step;
|
|
88
|
+
break;
|
|
89
|
+
case "ArrowLeft":
|
|
90
|
+
delta = this.step * (this.isLTR ? -1 : 1);
|
|
91
|
+
break;
|
|
92
|
+
case "ArrowRight":
|
|
93
|
+
delta = this.step * (this.isLTR ? 1 : -1);
|
|
94
|
+
break;
|
|
95
|
+
default:
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
event.preventDefault();
|
|
99
|
+
this.value = (360 + this.value + delta) % 360;
|
|
100
|
+
this.colorController.savePreviousColor();
|
|
101
|
+
this.colorController.applyColorFromState();
|
|
102
|
+
this.dispatchEvent(
|
|
103
|
+
new Event("input", {
|
|
104
|
+
bubbles: true,
|
|
105
|
+
composed: true
|
|
106
|
+
})
|
|
107
|
+
);
|
|
108
|
+
const applyDefault = this.dispatchEvent(
|
|
109
|
+
new Event("change", {
|
|
110
|
+
bubbles: true,
|
|
111
|
+
composed: true,
|
|
112
|
+
cancelable: true
|
|
113
|
+
})
|
|
114
|
+
);
|
|
115
|
+
if (!applyDefault) {
|
|
116
|
+
this.colorController.restorePreviousColor();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
handleInput(event) {
|
|
120
|
+
const { valueAsNumber } = event.target;
|
|
121
|
+
this.value = valueAsNumber;
|
|
122
|
+
this.colorController.applyColorFromState();
|
|
123
|
+
}
|
|
124
|
+
handleChange(event) {
|
|
125
|
+
this.handleInput(event);
|
|
126
|
+
this.dispatchEvent(
|
|
127
|
+
new Event("change", {
|
|
128
|
+
bubbles: true,
|
|
129
|
+
composed: true
|
|
130
|
+
})
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
focus(focusOptions = {}) {
|
|
134
|
+
super.focus(focusOptions);
|
|
135
|
+
this.forwardFocus();
|
|
136
|
+
}
|
|
137
|
+
forwardFocus() {
|
|
138
|
+
this.focused = this.hasVisibleFocusInTree();
|
|
139
|
+
this.input.focus();
|
|
140
|
+
}
|
|
141
|
+
handleFocus() {
|
|
142
|
+
this.focused = true;
|
|
143
|
+
}
|
|
144
|
+
handleBlur() {
|
|
145
|
+
if (this._pointerDown) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
this.altered = 0;
|
|
149
|
+
this.focused = false;
|
|
150
|
+
}
|
|
151
|
+
handlePointerdown(event) {
|
|
152
|
+
if (event.button !== 0) {
|
|
153
|
+
event.preventDefault();
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
this._pointerDown = true;
|
|
157
|
+
this.colorController.savePreviousColor();
|
|
158
|
+
this.boundingClientRect = this.getBoundingClientRect();
|
|
159
|
+
event.target.setPointerCapture(event.pointerId);
|
|
160
|
+
if (event.pointerType === "mouse") {
|
|
161
|
+
this.focused = true;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
handlePointermove(event) {
|
|
165
|
+
this.value = this.calculateHandlePosition(event);
|
|
166
|
+
this.colorController.applyColorFromState();
|
|
167
|
+
this.dispatchEvent(
|
|
168
|
+
new Event("input", {
|
|
169
|
+
bubbles: true,
|
|
170
|
+
composed: true,
|
|
171
|
+
cancelable: true
|
|
172
|
+
})
|
|
173
|
+
);
|
|
174
|
+
}
|
|
175
|
+
handlePointerup(event) {
|
|
176
|
+
this._pointerDown = false;
|
|
177
|
+
event.target.releasePointerCapture(event.pointerId);
|
|
178
|
+
const applyDefault = this.dispatchEvent(
|
|
179
|
+
new Event("change", {
|
|
180
|
+
bubbles: true,
|
|
181
|
+
composed: true,
|
|
182
|
+
cancelable: true
|
|
183
|
+
})
|
|
184
|
+
);
|
|
185
|
+
if (!applyDefault) {
|
|
186
|
+
this.colorController.restorePreviousColor();
|
|
187
|
+
}
|
|
188
|
+
this.focus();
|
|
189
|
+
if (event.pointerType === "mouse") {
|
|
190
|
+
this.focused = false;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Returns the value under the cursor
|
|
195
|
+
* @param: PointerEvent on slider
|
|
196
|
+
* @return: Slider value that correlates to the position under the pointer
|
|
197
|
+
*/
|
|
198
|
+
calculateHandlePosition(event) {
|
|
199
|
+
if (!this.boundingClientRect) {
|
|
200
|
+
return this.value;
|
|
201
|
+
}
|
|
202
|
+
const rect = this.boundingClientRect;
|
|
203
|
+
const { width, height, left, top } = rect;
|
|
204
|
+
const centerX = left + width / 2;
|
|
205
|
+
const centerY = top + height / 2;
|
|
206
|
+
const pointX = event.clientX - centerX;
|
|
207
|
+
const pointY = event.clientY - centerY;
|
|
208
|
+
const value = Math.atan2(pointY, pointX) * 180 / Math.PI;
|
|
209
|
+
return (360 + (360 + (this.isLTR ? value : 180 - value))) % 360;
|
|
210
|
+
}
|
|
211
|
+
handleGradientPointerdown(event) {
|
|
212
|
+
if (event.button !== 0 || event.target.classList.contains("innerCircle")) {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
event.stopPropagation();
|
|
216
|
+
event.preventDefault();
|
|
217
|
+
const { button, pointerId, pointerType } = event;
|
|
218
|
+
this.handle.dispatchEvent(
|
|
219
|
+
new PointerEvent("pointerdown", {
|
|
220
|
+
button,
|
|
221
|
+
pointerId,
|
|
222
|
+
pointerType
|
|
223
|
+
})
|
|
224
|
+
);
|
|
225
|
+
this.handlePointermove(event);
|
|
226
|
+
}
|
|
227
|
+
calculateStyleData() {
|
|
228
|
+
const { width: diameter = 160 } = this.boundingClientRect || {};
|
|
229
|
+
const styles2 = getComputedStyle(this);
|
|
230
|
+
const borderWidth = parseFloat(
|
|
231
|
+
styles2.getPropertyValue("--_border-width")
|
|
232
|
+
);
|
|
233
|
+
const trackWidth = parseFloat(
|
|
234
|
+
styles2.getPropertyValue("--_track-width")
|
|
235
|
+
);
|
|
236
|
+
const radius = diameter / 2;
|
|
237
|
+
const diameterAfterBoarder = diameter - borderWidth * 2;
|
|
238
|
+
const radiusAfterBoarder = radius - borderWidth;
|
|
239
|
+
const innerRadius = radius - trackWidth;
|
|
240
|
+
const innerDiameter = innerRadius * 2;
|
|
241
|
+
const innerRadiusAfterBorder = innerRadius + borderWidth;
|
|
242
|
+
const innerDiameterAfterBorder = innerDiameter + borderWidth * 2;
|
|
243
|
+
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"`;
|
|
244
|
+
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"`;
|
|
245
|
+
const translateX = (this.isLTR ? 1 : -1) * (radius - trackWidth / 2) * Math.cos(this.value * Math.PI / 180);
|
|
246
|
+
const translateY = (radius - trackWidth / 2) * Math.sin(this.value * Math.PI / 180);
|
|
247
|
+
const handleLocationStyles = `transform: translate(${translateX}px, ${translateY}px);`;
|
|
248
|
+
return {
|
|
249
|
+
clipPath,
|
|
250
|
+
clipPathBorders,
|
|
251
|
+
diameter,
|
|
252
|
+
handleLocationStyles
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
render() {
|
|
256
|
+
const { clipPath, clipPathBorders, diameter, handleLocationStyles } = this.calculateStyleData();
|
|
257
|
+
return html`
|
|
258
|
+
<slot
|
|
259
|
+
name="gradient"
|
|
260
|
+
@pointerdown=${this.handleGradientPointerdown}
|
|
261
|
+
style="
|
|
262
|
+
--spectrum-colorwheel-colorarea-container-size: ${diameter}px;
|
|
263
|
+
--spectrum-colorwheel-height: ${diameter}px;
|
|
264
|
+
--spectrum-colorwheel-width: ${diameter}px;
|
|
265
|
+
--spectrum-colorwheel-path-borders: ${clipPathBorders};
|
|
266
|
+
--spectrum-colorwheel-path: ${clipPath};
|
|
267
|
+
"
|
|
268
|
+
>
|
|
269
|
+
<div class="inner">
|
|
270
|
+
<div class="colorarea-container"></div>
|
|
271
|
+
</div>
|
|
272
|
+
<div class="border">
|
|
273
|
+
<div class="wheel"></div>
|
|
274
|
+
</div>
|
|
275
|
+
</slot>
|
|
276
|
+
|
|
277
|
+
<sp-color-handle
|
|
278
|
+
tabindex=${ifDefined(this.focused ? void 0 : "0")}
|
|
279
|
+
@focus=${this.forwardFocus}
|
|
280
|
+
?focused=${this.focused}
|
|
281
|
+
class="handle"
|
|
282
|
+
color="hsl(${this.value}, 100%, 50%)"
|
|
283
|
+
?disabled=${this.disabled}
|
|
284
|
+
style=${handleLocationStyles}
|
|
285
|
+
${streamingListener({
|
|
286
|
+
start: ["pointerdown", this.handlePointerdown],
|
|
287
|
+
streamInside: ["pointermove", this.handlePointermove],
|
|
288
|
+
end: [
|
|
289
|
+
["pointerup", "pointercancel", "pointerleave"],
|
|
290
|
+
this.handlePointerup
|
|
291
|
+
]
|
|
292
|
+
})}
|
|
293
|
+
></sp-color-handle>
|
|
294
|
+
|
|
295
|
+
<input
|
|
296
|
+
type="range"
|
|
297
|
+
class="slider"
|
|
298
|
+
aria-label=${this.label}
|
|
299
|
+
min="0"
|
|
300
|
+
max="360"
|
|
301
|
+
step=${this.step}
|
|
302
|
+
.value=${String(this.value)}
|
|
303
|
+
aria-valuetext=${`${new Intl.NumberFormat(
|
|
304
|
+
this.languageResolver.language,
|
|
305
|
+
{
|
|
306
|
+
maximumFractionDigits: 0,
|
|
307
|
+
minimumIntegerDigits: 1,
|
|
308
|
+
style: "unit",
|
|
309
|
+
unit: "degree",
|
|
310
|
+
unitDisplay: "narrow"
|
|
311
|
+
}
|
|
312
|
+
).format(this.value)}`}
|
|
313
|
+
@input=${this.handleInput}
|
|
314
|
+
@change=${this.handleChange}
|
|
315
|
+
@keydown=${this.handleKeydown}
|
|
316
|
+
/>
|
|
317
|
+
`;
|
|
318
|
+
}
|
|
319
|
+
firstUpdated(changed) {
|
|
320
|
+
super.firstUpdated(changed);
|
|
321
|
+
this.boundingClientRect = this.getBoundingClientRect();
|
|
322
|
+
this.addEventListener("focus", this.handleFocus);
|
|
323
|
+
this.addEventListener("blur", this.handleBlur);
|
|
324
|
+
}
|
|
325
|
+
connectedCallback() {
|
|
326
|
+
var _a;
|
|
327
|
+
super.connectedCallback();
|
|
328
|
+
if (!this.observer && window.ResizeObserver) {
|
|
329
|
+
this.observer = new window.ResizeObserver((entries) => {
|
|
330
|
+
for (const entry of entries) {
|
|
331
|
+
this.boundingClientRect = entry.contentRect;
|
|
332
|
+
}
|
|
333
|
+
this.requestUpdate();
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
(_a = this.observer) == null ? void 0 : _a.observe(this);
|
|
337
|
+
}
|
|
338
|
+
disconnectedCallback() {
|
|
339
|
+
var _a;
|
|
340
|
+
(_a = this.observer) == null ? void 0 : _a.unobserve(this);
|
|
341
|
+
super.disconnectedCallback();
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
__decorateClass([
|
|
345
|
+
property({ type: String, reflect: true })
|
|
346
|
+
], ColorWheel.prototype, "dir", 2);
|
|
347
|
+
__decorateClass([
|
|
348
|
+
property({ type: Boolean, reflect: true })
|
|
349
|
+
], ColorWheel.prototype, "disabled", 2);
|
|
350
|
+
__decorateClass([
|
|
351
|
+
property({ type: Boolean, reflect: true })
|
|
352
|
+
], ColorWheel.prototype, "focused", 2);
|
|
353
|
+
__decorateClass([
|
|
354
|
+
query(".handle")
|
|
355
|
+
], ColorWheel.prototype, "handle", 2);
|
|
356
|
+
__decorateClass([
|
|
357
|
+
property({ type: String })
|
|
358
|
+
], ColorWheel.prototype, "label", 2);
|
|
359
|
+
__decorateClass([
|
|
360
|
+
property({ type: Number })
|
|
361
|
+
], ColorWheel.prototype, "step", 2);
|
|
362
|
+
__decorateClass([
|
|
363
|
+
property({ type: Number })
|
|
364
|
+
], ColorWheel.prototype, "value", 1);
|
|
365
|
+
__decorateClass([
|
|
366
|
+
property({ type: String })
|
|
367
|
+
], ColorWheel.prototype, "color", 1);
|
|
368
|
+
__decorateClass([
|
|
369
|
+
query("input")
|
|
370
|
+
], ColorWheel.prototype, "input", 2);
|
|
371
|
+
//# sourceMappingURL=ColorWheel.dev.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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';\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(\n styles.getPropertyValue('--_track-width')\n );\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": ["key", "styles"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
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
|
+
<slot
|
|
3
|
+
name="gradient"
|
|
4
|
+
@pointerdown=${this.handleGradientPointerdown}
|
|
5
|
+
style="
|
|
6
|
+
--spectrum-colorwheel-colorarea-container-size: ${t}px;
|
|
7
|
+
--spectrum-colorwheel-height: ${t}px;
|
|
8
|
+
--spectrum-colorwheel-width: ${t}px;
|
|
9
|
+
--spectrum-colorwheel-path-borders: ${i};
|
|
10
|
+
--spectrum-colorwheel-path: ${e};
|
|
11
|
+
"
|
|
12
|
+
>
|
|
13
|
+
<div class="inner">
|
|
14
|
+
<div class="colorarea-container"></div>
|
|
15
|
+
</div>
|
|
16
|
+
<div class="border">
|
|
17
|
+
<div class="wheel"></div>
|
|
18
|
+
</div>
|
|
19
|
+
</slot>
|
|
20
|
+
|
|
21
|
+
<sp-color-handle
|
|
22
|
+
tabindex=${R(this.focused?void 0:"0")}
|
|
23
|
+
@focus=${this.forwardFocus}
|
|
24
|
+
?focused=${this.focused}
|
|
25
|
+
class="handle"
|
|
26
|
+
color="hsl(${this.value}, 100%, 50%)"
|
|
27
|
+
?disabled=${this.disabled}
|
|
28
|
+
style=${o}
|
|
29
|
+
${E({start:["pointerdown",this.handlePointerdown],streamInside:["pointermove",this.handlePointermove],end:[["pointerup","pointercancel","pointerleave"],this.handlePointerup]})}
|
|
30
|
+
></sp-color-handle>
|
|
31
|
+
|
|
32
|
+
<input
|
|
33
|
+
type="range"
|
|
34
|
+
class="slider"
|
|
35
|
+
aria-label=${this.label}
|
|
36
|
+
min="0"
|
|
37
|
+
max="360"
|
|
38
|
+
step=${this.step}
|
|
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)}`}
|
|
41
|
+
@input=${this.handleInput}
|
|
42
|
+
@change=${this.handleChange}
|
|
43
|
+
@keydown=${this.handleKeydown}
|
|
44
|
+
/>
|
|
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);
|
|
46
|
+
//# sourceMappingURL=ColorWheel.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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';\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(\n styles.getPropertyValue('--_track-width')\n );\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
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import { css } from "@spectrum-web-components/base";
|
|
3
|
+
const styles = css`
|
|
4
|
+
:host{--spectrum-colorwheel-width:var(--system-color-wheel-width);--spectrum-colorwheel-min-width:var(--system-color-wheel-min-width);--spectrum-colorwheel-height:var(--system-color-wheel-height);--spectrum-colorwheel-border-color:var(--system-color-wheel-border-color);--spectrum-colorwheel-border-width:var(--system-color-wheel-border-width);--spectrum-colorwheel-fill-color-disabled:var(--system-color-wheel-fill-color-disabled);--spectrum-colorwheel-track-width:var(--system-color-wheel-track-width);--spectrum-colorwheel-colorarea-margin:var(--system-color-wheel-colorarea-margin);--spectrum-colorwheel-colorhandle-position:var(--system-color-wheel-colorhandle-position)}
|
|
5
|
+
`;
|
|
6
|
+
export default styles;
|
|
7
|
+
//# sourceMappingURL=color-wheel-overrides.css.dev.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["color-wheel-overrides.css.ts"],
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2024 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(--system-color-wheel-width);--spectrum-colorwheel-min-width:var(--system-color-wheel-min-width);--spectrum-colorwheel-height:var(--system-color-wheel-height);--spectrum-colorwheel-border-color:var(--system-color-wheel-border-color);--spectrum-colorwheel-border-width:var(--system-color-wheel-border-width);--spectrum-colorwheel-fill-color-disabled:var(--system-color-wheel-fill-color-disabled);--spectrum-colorwheel-track-width:var(--system-color-wheel-track-width);--spectrum-colorwheel-colorarea-margin:var(--system-color-wheel-colorarea-margin);--spectrum-colorwheel-colorhandle-position:var(--system-color-wheel-colorhandle-position)}\n`;\nexport default styles;"],
|
|
5
|
+
"mappings": ";AAWA,SAAS,WAAW;AACpB,MAAM,SAAS;AAAA;AAAA;AAGf,eAAe;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
"use strict";import{css as e}from"@spectrum-web-components/base";const o=e`
|
|
2
|
+
:host{--spectrum-colorwheel-width:var(--system-color-wheel-width);--spectrum-colorwheel-min-width:var(--system-color-wheel-min-width);--spectrum-colorwheel-height:var(--system-color-wheel-height);--spectrum-colorwheel-border-color:var(--system-color-wheel-border-color);--spectrum-colorwheel-border-width:var(--system-color-wheel-border-width);--spectrum-colorwheel-fill-color-disabled:var(--system-color-wheel-fill-color-disabled);--spectrum-colorwheel-track-width:var(--system-color-wheel-track-width);--spectrum-colorwheel-colorarea-margin:var(--system-color-wheel-colorarea-margin);--spectrum-colorwheel-colorhandle-position:var(--system-color-wheel-colorhandle-position)}
|
|
3
|
+
`;export default o;
|
|
4
|
+
//# sourceMappingURL=color-wheel-overrides.css.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["color-wheel-overrides.css.ts"],
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2024 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(--system-color-wheel-width);--spectrum-colorwheel-min-width:var(--system-color-wheel-min-width);--spectrum-colorwheel-height:var(--system-color-wheel-height);--spectrum-colorwheel-border-color:var(--system-color-wheel-border-color);--spectrum-colorwheel-border-width:var(--system-color-wheel-border-width);--spectrum-colorwheel-fill-color-disabled:var(--system-color-wheel-fill-color-disabled);--spectrum-colorwheel-track-width:var(--system-color-wheel-track-width);--spectrum-colorwheel-colorarea-margin:var(--system-color-wheel-colorarea-margin);--spectrum-colorwheel-colorhandle-position:var(--system-color-wheel-colorhandle-position)}\n`;\nexport default styles;"],
|
|
5
|
+
"mappings": "aAWA,OAAS,OAAAA,MAAW,gCACpB,MAAMC,EAASD;AAAA;AAAA,EAGf,eAAeC",
|
|
6
|
+
"names": ["css", "styles"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import { css } from "@spectrum-web-components/base";
|
|
3
|
+
const styles = css`
|
|
4
|
+
@media (forced-colors:active){:host{--highcontrast-colorwheel-border-color-disabled:GrayText;--highcontrast-colorwheel-fill-color-disabled:Canvas;forced-color-adjust:none}}:host{--_track-width:var(--mod-colorwheel-track-width,var(--spectrum-colorwheel-track-width));--_border-width:var(--mod-colorwheel-border-width,var(--spectrum-colorwheel-border-width));min-inline-size:var(--mod-colorwheel-min-width,var(--spectrum-colorwheel-min-width));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));-webkit-user-select:none;user-select:none;cursor:default;display:block;position:relative}:host([focused]){z-index:1}:host([disabled]){pointer-events:none}:host([dragged]){z-index:1}.inner{inline-size:var(--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size));block-size:var(--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size));margin:auto;display:flex;position:absolute;inset-block:0;inset-inline:0}.colorarea-container{block-size:auto;inline-size:100%;margin:var(--mod-colorwheel-colorarea-margin,var(--spectrum-colorwheel-colorarea-margin));justify-content:center;align-items:center;display:flex}.slider{opacity:0;inline-size:100%;block-size:100%;z-index:0;pointer-events:none;margin:0;position:absolute;inset-block-start:0;inset-inline-start:0}.handle{transform:translate(var(--spectrum-colorwheel-colorhandle-position));inset-block-start:50%;inset-inline:50%}.border{background-color:var(--mod-colorwheel-border-color,var(--spectrum-colorwheel-border-color));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));clip-path:path(evenodd,var(--mod-colorwheel-path-borders,var(--spectrum-colorwheel-path-borders)));position:relative}:host([disabled]) .border{background-color:var(--highcontrast-colorwheel-border-color-disabled,var(--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)))}.wheel{inset-block:var(--spectrum-colorwheel-border-width);inset-inline:var(--spectrum-colorwheel-border-width);clip-path:path(evenodd,var(--mod-colorwheel-path,var(--spectrum-colorwheel-path)));background:conic-gradient(from 90deg,red,#ff8000,#ff0,#80ff00,#0f0,#00ff80,#0ff,#0080ff,#00f,#8000ff,#f0f,#ff0080,red);position:absolute}:host([disabled]) .wheel{pointer-events:none;background:var(--highcontrast-colorwheel-fill-color-disabled,var(--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)))}:host{--spectrum-colorwheel-width:var(--system-color-wheel-width);--spectrum-colorwheel-min-width:var(--system-color-wheel-min-width);--spectrum-colorwheel-height:var(--system-color-wheel-height);--spectrum-colorwheel-border-color:var(--system-color-wheel-border-color);--spectrum-colorwheel-border-width:var(--system-color-wheel-border-width);--spectrum-colorwheel-fill-color-disabled:var(--system-color-wheel-fill-color-disabled);--spectrum-colorwheel-track-width:var(--system-color-wheel-track-width);--spectrum-colorwheel-colorarea-margin:var(--system-color-wheel-colorarea-margin);--spectrum-colorwheel-colorhandle-position:var(--system-color-wheel-colorhandle-position)}:host{touch-action:none}:host(:focus){outline:none}::slotted([slot=gradient]){border-color:var(--mod-colorwheel-border-color,var(--spectrum-colorwheel-border-color));border-style:solid;border-width:var(--_border-width);box-sizing:border-box;block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));z-index:0;border-radius:100%;position:relative}:host([dir=rtl]) .wheel,:host([dir=rtl]) ::slotted([slot=gradient]){transform:scaleX(-1)}
|
|
5
|
+
`;
|
|
6
|
+
export default styles;
|
|
7
|
+
//# sourceMappingURL=color-wheel.css.dev.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["color-wheel.css.ts"],
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2024 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 @media (forced-colors:active){:host{--highcontrast-colorwheel-border-color-disabled:GrayText;--highcontrast-colorwheel-fill-color-disabled:Canvas;forced-color-adjust:none}}:host{--_track-width:var(--mod-colorwheel-track-width,var(--spectrum-colorwheel-track-width));--_border-width:var(--mod-colorwheel-border-width,var(--spectrum-colorwheel-border-width));min-inline-size:var(--mod-colorwheel-min-width,var(--spectrum-colorwheel-min-width));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));-webkit-user-select:none;user-select:none;cursor:default;display:block;position:relative}:host([focused]){z-index:1}:host([disabled]){pointer-events:none}:host([dragged]){z-index:1}.inner{inline-size:var(--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size));block-size:var(--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size));margin:auto;display:flex;position:absolute;inset-block:0;inset-inline:0}.colorarea-container{block-size:auto;inline-size:100%;margin:var(--mod-colorwheel-colorarea-margin,var(--spectrum-colorwheel-colorarea-margin));justify-content:center;align-items:center;display:flex}.slider{opacity:0;inline-size:100%;block-size:100%;z-index:0;pointer-events:none;margin:0;position:absolute;inset-block-start:0;inset-inline-start:0}.handle{transform:translate(var(--spectrum-colorwheel-colorhandle-position));inset-block-start:50%;inset-inline:50%}.border{background-color:var(--mod-colorwheel-border-color,var(--spectrum-colorwheel-border-color));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));clip-path:path(evenodd,var(--mod-colorwheel-path-borders,var(--spectrum-colorwheel-path-borders)));position:relative}:host([disabled]) .border{background-color:var(--highcontrast-colorwheel-border-color-disabled,var(--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)))}.wheel{inset-block:var(--spectrum-colorwheel-border-width);inset-inline:var(--spectrum-colorwheel-border-width);clip-path:path(evenodd,var(--mod-colorwheel-path,var(--spectrum-colorwheel-path)));background:conic-gradient(from 90deg,red,#ff8000,#ff0,#80ff00,#0f0,#00ff80,#0ff,#0080ff,#00f,#8000ff,#f0f,#ff0080,red);position:absolute}:host([disabled]) .wheel{pointer-events:none;background:var(--highcontrast-colorwheel-fill-color-disabled,var(--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)))}:host{--spectrum-colorwheel-width:var(--system-color-wheel-width);--spectrum-colorwheel-min-width:var(--system-color-wheel-min-width);--spectrum-colorwheel-height:var(--system-color-wheel-height);--spectrum-colorwheel-border-color:var(--system-color-wheel-border-color);--spectrum-colorwheel-border-width:var(--system-color-wheel-border-width);--spectrum-colorwheel-fill-color-disabled:var(--system-color-wheel-fill-color-disabled);--spectrum-colorwheel-track-width:var(--system-color-wheel-track-width);--spectrum-colorwheel-colorarea-margin:var(--system-color-wheel-colorarea-margin);--spectrum-colorwheel-colorhandle-position:var(--system-color-wheel-colorhandle-position)}:host{touch-action:none}:host(:focus){outline:none}::slotted([slot=gradient]){border-color:var(--mod-colorwheel-border-color,var(--spectrum-colorwheel-border-color));border-style:solid;border-width:var(--_border-width);box-sizing:border-box;block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));z-index:0;border-radius:100%;position:relative}:host([dir=rtl]) .wheel,:host([dir=rtl]) ::slotted([slot=gradient]){transform:scaleX(-1)}\n`;\nexport default styles;"],
|
|
5
|
+
"mappings": ";AAWA,SAAS,WAAW;AACpB,MAAM,SAAS;AAAA;AAAA;AAGf,eAAe;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
"use strict";import{css as e}from"@spectrum-web-components/base";const o=e`
|
|
2
|
+
@media (forced-colors:active){:host{--highcontrast-colorwheel-border-color-disabled:GrayText;--highcontrast-colorwheel-fill-color-disabled:Canvas;forced-color-adjust:none}}:host{--_track-width:var(--mod-colorwheel-track-width,var(--spectrum-colorwheel-track-width));--_border-width:var(--mod-colorwheel-border-width,var(--spectrum-colorwheel-border-width));min-inline-size:var(--mod-colorwheel-min-width,var(--spectrum-colorwheel-min-width));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));-webkit-user-select:none;user-select:none;cursor:default;display:block;position:relative}:host([focused]){z-index:1}:host([disabled]){pointer-events:none}:host([dragged]){z-index:1}.inner{inline-size:var(--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size));block-size:var(--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size));margin:auto;display:flex;position:absolute;inset-block:0;inset-inline:0}.colorarea-container{block-size:auto;inline-size:100%;margin:var(--mod-colorwheel-colorarea-margin,var(--spectrum-colorwheel-colorarea-margin));justify-content:center;align-items:center;display:flex}.slider{opacity:0;inline-size:100%;block-size:100%;z-index:0;pointer-events:none;margin:0;position:absolute;inset-block-start:0;inset-inline-start:0}.handle{transform:translate(var(--spectrum-colorwheel-colorhandle-position));inset-block-start:50%;inset-inline:50%}.border{background-color:var(--mod-colorwheel-border-color,var(--spectrum-colorwheel-border-color));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));clip-path:path(evenodd,var(--mod-colorwheel-path-borders,var(--spectrum-colorwheel-path-borders)));position:relative}:host([disabled]) .border{background-color:var(--highcontrast-colorwheel-border-color-disabled,var(--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)))}.wheel{inset-block:var(--spectrum-colorwheel-border-width);inset-inline:var(--spectrum-colorwheel-border-width);clip-path:path(evenodd,var(--mod-colorwheel-path,var(--spectrum-colorwheel-path)));background:conic-gradient(from 90deg,red,#ff8000,#ff0,#80ff00,#0f0,#00ff80,#0ff,#0080ff,#00f,#8000ff,#f0f,#ff0080,red);position:absolute}:host([disabled]) .wheel{pointer-events:none;background:var(--highcontrast-colorwheel-fill-color-disabled,var(--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)))}:host{--spectrum-colorwheel-width:var(--system-color-wheel-width);--spectrum-colorwheel-min-width:var(--system-color-wheel-min-width);--spectrum-colorwheel-height:var(--system-color-wheel-height);--spectrum-colorwheel-border-color:var(--system-color-wheel-border-color);--spectrum-colorwheel-border-width:var(--system-color-wheel-border-width);--spectrum-colorwheel-fill-color-disabled:var(--system-color-wheel-fill-color-disabled);--spectrum-colorwheel-track-width:var(--system-color-wheel-track-width);--spectrum-colorwheel-colorarea-margin:var(--system-color-wheel-colorarea-margin);--spectrum-colorwheel-colorhandle-position:var(--system-color-wheel-colorhandle-position)}:host{touch-action:none}:host(:focus){outline:none}::slotted([slot=gradient]){border-color:var(--mod-colorwheel-border-color,var(--spectrum-colorwheel-border-color));border-style:solid;border-width:var(--_border-width);box-sizing:border-box;block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));z-index:0;border-radius:100%;position:relative}:host([dir=rtl]) .wheel,:host([dir=rtl]) ::slotted([slot=gradient]){transform:scaleX(-1)}
|
|
3
|
+
`;export default o;
|
|
4
|
+
//# sourceMappingURL=color-wheel.css.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["color-wheel.css.ts"],
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2024 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 @media (forced-colors:active){:host{--highcontrast-colorwheel-border-color-disabled:GrayText;--highcontrast-colorwheel-fill-color-disabled:Canvas;forced-color-adjust:none}}:host{--_track-width:var(--mod-colorwheel-track-width,var(--spectrum-colorwheel-track-width));--_border-width:var(--mod-colorwheel-border-width,var(--spectrum-colorwheel-border-width));min-inline-size:var(--mod-colorwheel-min-width,var(--spectrum-colorwheel-min-width));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));-webkit-user-select:none;user-select:none;cursor:default;display:block;position:relative}:host([focused]){z-index:1}:host([disabled]){pointer-events:none}:host([dragged]){z-index:1}.inner{inline-size:var(--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size));block-size:var(--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size));margin:auto;display:flex;position:absolute;inset-block:0;inset-inline:0}.colorarea-container{block-size:auto;inline-size:100%;margin:var(--mod-colorwheel-colorarea-margin,var(--spectrum-colorwheel-colorarea-margin));justify-content:center;align-items:center;display:flex}.slider{opacity:0;inline-size:100%;block-size:100%;z-index:0;pointer-events:none;margin:0;position:absolute;inset-block-start:0;inset-inline-start:0}.handle{transform:translate(var(--spectrum-colorwheel-colorhandle-position));inset-block-start:50%;inset-inline:50%}.border{background-color:var(--mod-colorwheel-border-color,var(--spectrum-colorwheel-border-color));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));clip-path:path(evenodd,var(--mod-colorwheel-path-borders,var(--spectrum-colorwheel-path-borders)));position:relative}:host([disabled]) .border{background-color:var(--highcontrast-colorwheel-border-color-disabled,var(--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)))}.wheel{inset-block:var(--spectrum-colorwheel-border-width);inset-inline:var(--spectrum-colorwheel-border-width);clip-path:path(evenodd,var(--mod-colorwheel-path,var(--spectrum-colorwheel-path)));background:conic-gradient(from 90deg,red,#ff8000,#ff0,#80ff00,#0f0,#00ff80,#0ff,#0080ff,#00f,#8000ff,#f0f,#ff0080,red);position:absolute}:host([disabled]) .wheel{pointer-events:none;background:var(--highcontrast-colorwheel-fill-color-disabled,var(--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)))}:host{--spectrum-colorwheel-width:var(--system-color-wheel-width);--spectrum-colorwheel-min-width:var(--system-color-wheel-min-width);--spectrum-colorwheel-height:var(--system-color-wheel-height);--spectrum-colorwheel-border-color:var(--system-color-wheel-border-color);--spectrum-colorwheel-border-width:var(--system-color-wheel-border-width);--spectrum-colorwheel-fill-color-disabled:var(--system-color-wheel-fill-color-disabled);--spectrum-colorwheel-track-width:var(--system-color-wheel-track-width);--spectrum-colorwheel-colorarea-margin:var(--system-color-wheel-colorarea-margin);--spectrum-colorwheel-colorhandle-position:var(--system-color-wheel-colorhandle-position)}:host{touch-action:none}:host(:focus){outline:none}::slotted([slot=gradient]){border-color:var(--mod-colorwheel-border-color,var(--spectrum-colorwheel-border-color));border-style:solid;border-width:var(--_border-width);box-sizing:border-box;block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));z-index:0;border-radius:100%;position:relative}:host([dir=rtl]) .wheel,:host([dir=rtl]) ::slotted([slot=gradient]){transform:scaleX(-1)}\n`;\nexport default styles;"],
|
|
5
|
+
"mappings": "aAWA,OAAS,OAAAA,MAAW,gCACpB,MAAMC,EAASD;AAAA;AAAA,EAGf,eAAeC",
|
|
6
|
+
"names": ["css", "styles"]
|
|
7
|
+
}
|
package/src/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './ColorWheel.js';
|
package/src/index.dev.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["index.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\nexport * from './ColorWheel.dev.js'\n"],
|
|
5
|
+
"mappings": ";AAYA,cAAc;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/src/index.js
ADDED
package/src/index.js.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["index.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\nexport * from './ColorWheel.js';\n"],
|
|
5
|
+
"mappings": "aAYA,WAAc",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import { css } from "@spectrum-web-components/base";
|
|
3
|
+
const styles = css`
|
|
4
|
+
@media (forced-colors:active){:host{--highcontrast-colorwheel-border-color-disabled:GrayText;--highcontrast-colorwheel-fill-color-disabled:Canvas;forced-color-adjust:none}}:host{--_track-width:var(--mod-colorwheel-track-width,var(--spectrum-colorwheel-track-width));--_border-width:var(--mod-colorwheel-border-width,var(--spectrum-colorwheel-border-width));min-inline-size:var(--mod-colorwheel-min-width,var(--spectrum-colorwheel-min-width));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));-webkit-user-select:none;user-select:none;cursor:default;display:block;position:relative}:host([focused]){z-index:1}:host([disabled]){pointer-events:none}:host([dragged]){z-index:1}.inner{inline-size:var(--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size));block-size:var(--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size));margin:auto;display:flex;position:absolute;inset-block:0;inset-inline:0}.colorarea-container{block-size:auto;inline-size:100%;margin:var(--mod-colorwheel-colorarea-margin,var(--spectrum-colorwheel-colorarea-margin));justify-content:center;align-items:center;display:flex}.slider{opacity:0;inline-size:100%;block-size:100%;z-index:0;pointer-events:none;margin:0;position:absolute;inset-block-start:0;inset-inline-start:0}.handle{transform:translate(var(--spectrum-colorwheel-colorhandle-position));inset-block-start:50%;inset-inline:50%}.border{background-color:var(--mod-colorwheel-border-color,var(--spectrum-colorwheel-border-color));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));clip-path:path(evenodd,var(--mod-colorwheel-path-borders,var(--spectrum-colorwheel-path-borders)));position:relative}:host([disabled]) .border{background-color:var(--highcontrast-colorwheel-border-color-disabled,var(--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)))}.wheel{inset-block:var(--spectrum-colorwheel-border-width);inset-inline:var(--spectrum-colorwheel-border-width);clip-path:path(evenodd,var(--mod-colorwheel-path,var(--spectrum-colorwheel-path)));background:conic-gradient(from 90deg,red,#ff8000,#ff0,#80ff00,#0f0,#00ff80,#0ff,#0080ff,#00f,#8000ff,#f0f,#ff0080,red);position:absolute}:host([disabled]) .wheel{pointer-events:none;background:var(--highcontrast-colorwheel-fill-color-disabled,var(--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)))}
|
|
5
|
+
`;
|
|
6
|
+
export default styles;
|
|
7
|
+
//# sourceMappingURL=spectrum-color-wheel.css.dev.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["spectrum-color-wheel.css.ts"],
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2024 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 @media (forced-colors:active){:host{--highcontrast-colorwheel-border-color-disabled:GrayText;--highcontrast-colorwheel-fill-color-disabled:Canvas;forced-color-adjust:none}}:host{--_track-width:var(--mod-colorwheel-track-width,var(--spectrum-colorwheel-track-width));--_border-width:var(--mod-colorwheel-border-width,var(--spectrum-colorwheel-border-width));min-inline-size:var(--mod-colorwheel-min-width,var(--spectrum-colorwheel-min-width));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));-webkit-user-select:none;user-select:none;cursor:default;display:block;position:relative}:host([focused]){z-index:1}:host([disabled]){pointer-events:none}:host([dragged]){z-index:1}.inner{inline-size:var(--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size));block-size:var(--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size));margin:auto;display:flex;position:absolute;inset-block:0;inset-inline:0}.colorarea-container{block-size:auto;inline-size:100%;margin:var(--mod-colorwheel-colorarea-margin,var(--spectrum-colorwheel-colorarea-margin));justify-content:center;align-items:center;display:flex}.slider{opacity:0;inline-size:100%;block-size:100%;z-index:0;pointer-events:none;margin:0;position:absolute;inset-block-start:0;inset-inline-start:0}.handle{transform:translate(var(--spectrum-colorwheel-colorhandle-position));inset-block-start:50%;inset-inline:50%}.border{background-color:var(--mod-colorwheel-border-color,var(--spectrum-colorwheel-border-color));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));clip-path:path(evenodd,var(--mod-colorwheel-path-borders,var(--spectrum-colorwheel-path-borders)));position:relative}:host([disabled]) .border{background-color:var(--highcontrast-colorwheel-border-color-disabled,var(--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)))}.wheel{inset-block:var(--spectrum-colorwheel-border-width);inset-inline:var(--spectrum-colorwheel-border-width);clip-path:path(evenodd,var(--mod-colorwheel-path,var(--spectrum-colorwheel-path)));background:conic-gradient(from 90deg,red,#ff8000,#ff0,#80ff00,#0f0,#00ff80,#0ff,#0080ff,#00f,#8000ff,#f0f,#ff0080,red);position:absolute}:host([disabled]) .wheel{pointer-events:none;background:var(--highcontrast-colorwheel-fill-color-disabled,var(--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)))}\n`;\nexport default styles;"],
|
|
5
|
+
"mappings": ";AAWA,SAAS,WAAW;AACpB,MAAM,SAAS;AAAA;AAAA;AAGf,eAAe;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
"use strict";import{css as e}from"@spectrum-web-components/base";const o=e`
|
|
2
|
+
@media (forced-colors:active){:host{--highcontrast-colorwheel-border-color-disabled:GrayText;--highcontrast-colorwheel-fill-color-disabled:Canvas;forced-color-adjust:none}}:host{--_track-width:var(--mod-colorwheel-track-width,var(--spectrum-colorwheel-track-width));--_border-width:var(--mod-colorwheel-border-width,var(--spectrum-colorwheel-border-width));min-inline-size:var(--mod-colorwheel-min-width,var(--spectrum-colorwheel-min-width));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));-webkit-user-select:none;user-select:none;cursor:default;display:block;position:relative}:host([focused]){z-index:1}:host([disabled]){pointer-events:none}:host([dragged]){z-index:1}.inner{inline-size:var(--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size));block-size:var(--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size));margin:auto;display:flex;position:absolute;inset-block:0;inset-inline:0}.colorarea-container{block-size:auto;inline-size:100%;margin:var(--mod-colorwheel-colorarea-margin,var(--spectrum-colorwheel-colorarea-margin));justify-content:center;align-items:center;display:flex}.slider{opacity:0;inline-size:100%;block-size:100%;z-index:0;pointer-events:none;margin:0;position:absolute;inset-block-start:0;inset-inline-start:0}.handle{transform:translate(var(--spectrum-colorwheel-colorhandle-position));inset-block-start:50%;inset-inline:50%}.border{background-color:var(--mod-colorwheel-border-color,var(--spectrum-colorwheel-border-color));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));clip-path:path(evenodd,var(--mod-colorwheel-path-borders,var(--spectrum-colorwheel-path-borders)));position:relative}:host([disabled]) .border{background-color:var(--highcontrast-colorwheel-border-color-disabled,var(--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)))}.wheel{inset-block:var(--spectrum-colorwheel-border-width);inset-inline:var(--spectrum-colorwheel-border-width);clip-path:path(evenodd,var(--mod-colorwheel-path,var(--spectrum-colorwheel-path)));background:conic-gradient(from 90deg,red,#ff8000,#ff0,#80ff00,#0f0,#00ff80,#0ff,#0080ff,#00f,#8000ff,#f0f,#ff0080,red);position:absolute}:host([disabled]) .wheel{pointer-events:none;background:var(--highcontrast-colorwheel-fill-color-disabled,var(--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)))}
|
|
3
|
+
`;export default o;
|
|
4
|
+
//# sourceMappingURL=spectrum-color-wheel.css.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["spectrum-color-wheel.css.ts"],
|
|
4
|
+
"sourcesContent": ["/*\nCopyright 2024 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 @media (forced-colors:active){:host{--highcontrast-colorwheel-border-color-disabled:GrayText;--highcontrast-colorwheel-fill-color-disabled:Canvas;forced-color-adjust:none}}:host{--_track-width:var(--mod-colorwheel-track-width,var(--spectrum-colorwheel-track-width));--_border-width:var(--mod-colorwheel-border-width,var(--spectrum-colorwheel-border-width));min-inline-size:var(--mod-colorwheel-min-width,var(--spectrum-colorwheel-min-width));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));-webkit-user-select:none;user-select:none;cursor:default;display:block;position:relative}:host([focused]){z-index:1}:host([disabled]){pointer-events:none}:host([dragged]){z-index:1}.inner{inline-size:var(--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size));block-size:var(--mod-colorwheel-colorarea-container-size,var(--spectrum-colorwheel-colorarea-container-size));margin:auto;display:flex;position:absolute;inset-block:0;inset-inline:0}.colorarea-container{block-size:auto;inline-size:100%;margin:var(--mod-colorwheel-colorarea-margin,var(--spectrum-colorwheel-colorarea-margin));justify-content:center;align-items:center;display:flex}.slider{opacity:0;inline-size:100%;block-size:100%;z-index:0;pointer-events:none;margin:0;position:absolute;inset-block-start:0;inset-inline-start:0}.handle{transform:translate(var(--spectrum-colorwheel-colorhandle-position));inset-block-start:50%;inset-inline:50%}.border{background-color:var(--mod-colorwheel-border-color,var(--spectrum-colorwheel-border-color));inline-size:var(--mod-colorwheel-width,var(--spectrum-colorwheel-width));block-size:var(--mod-colorwheel-height,var(--spectrum-colorwheel-height));clip-path:path(evenodd,var(--mod-colorwheel-path-borders,var(--spectrum-colorwheel-path-borders)));position:relative}:host([disabled]) .border{background-color:var(--highcontrast-colorwheel-border-color-disabled,var(--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)))}.wheel{inset-block:var(--spectrum-colorwheel-border-width);inset-inline:var(--spectrum-colorwheel-border-width);clip-path:path(evenodd,var(--mod-colorwheel-path,var(--spectrum-colorwheel-path)));background:conic-gradient(from 90deg,red,#ff8000,#ff0,#80ff00,#0f0,#00ff80,#0ff,#0080ff,#00f,#8000ff,#f0f,#ff0080,red);position:absolute}:host([disabled]) .wheel{pointer-events:none;background:var(--highcontrast-colorwheel-fill-color-disabled,var(--mod-colorwheel-fill-color-disabled,var(--spectrum-colorwheel-fill-color-disabled)))}\n`;\nexport default styles;"],
|
|
5
|
+
"mappings": "aAWA,OAAS,OAAAA,MAAW,gCACpB,MAAMC,EAASD;AAAA;AAAA,EAGf,eAAeC",
|
|
6
|
+
"names": ["css", "styles"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
/*
|
|
3
|
+
Copyright 2023 Adobe. All rights reserved.
|
|
4
|
+
This file is licensed to you under the Apache License, Version 2.0 (the 'License');
|
|
5
|
+
you may not use this file except in compliance with the License. You may obtain a copy
|
|
6
|
+
of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
+
|
|
8
|
+
Unless required by applicable law or agreed to in writing, software distributed under
|
|
9
|
+
the License is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
10
|
+
OF ANY KIND, either express or implied. See the License for the specific language
|
|
11
|
+
governing permissions and limitations under the License.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import {
|
|
15
|
+
builder,
|
|
16
|
+
converterFor,
|
|
17
|
+
} from '../../../tasks/process-spectrum-utils.js';
|
|
18
|
+
|
|
19
|
+
const converter = converterFor('spectrum-ColorWheel');
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @type { import('../../../tasks/spectrum-css-converter').SpectrumCSSConverter }
|
|
23
|
+
*/
|
|
24
|
+
const config = {
|
|
25
|
+
conversions: [
|
|
26
|
+
{
|
|
27
|
+
inPackage: '@spectrum-css/colorwheel',
|
|
28
|
+
outPackage: 'color-wheel',
|
|
29
|
+
fileName: 'color-wheel',
|
|
30
|
+
excludeByComponents: [
|
|
31
|
+
builder.class('🤫'),
|
|
32
|
+
builder.class('spectrum-ColorWheel-ColorArea-handle'),
|
|
33
|
+
],
|
|
34
|
+
components: [
|
|
35
|
+
converter.classToHost(),
|
|
36
|
+
converter.classToAttribute('is-focused', 'focused'),
|
|
37
|
+
converter.classToAttribute('is-disabled', 'disabled'),
|
|
38
|
+
converter.classToAttribute('is-dragged', 'dragged'),
|
|
39
|
+
converter.classToClass('spectrum-ColorWheel-handle'),
|
|
40
|
+
converter.classToClass('spectrum-ColorWheel-slider'),
|
|
41
|
+
converter.classToClass('spectrum-ColorWheel-wheel'),
|
|
42
|
+
converter.classToClass('spectrum-ColorWheel-innerCircle'),
|
|
43
|
+
converter.classToClass('spectrum-ColorWheel-outerCircle'),
|
|
44
|
+
converter.classToClass('spectrum-ColorWheel-segment'),
|
|
45
|
+
converter.classToClass('spectrum-ColorWheel-border'),
|
|
46
|
+
converter.classToClass(
|
|
47
|
+
'spectrum-ColorWheel-colorarea-container'
|
|
48
|
+
),
|
|
49
|
+
converter.classToClass('spectrum-ColorWheel-inner'),
|
|
50
|
+
converter.classToSlotted(
|
|
51
|
+
'spectrum-ColorWheel-gradient',
|
|
52
|
+
'gradient'
|
|
53
|
+
),
|
|
54
|
+
],
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export default config;
|
package/src/types.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface SWCResizeObserverEntry {
|
|
2
|
+
contentRect: DOMRectReadOnly;
|
|
3
|
+
}
|
|
4
|
+
export interface SWCResizeObserver {
|
|
5
|
+
new (callback: SWCResizeObserverCallback): SWCResizeObserver;
|
|
6
|
+
disconnect(): void;
|
|
7
|
+
observe(target: Element): void;
|
|
8
|
+
unobserve(target: Element): void;
|
|
9
|
+
}
|
|
10
|
+
export interface WithSWCResizeObserver {
|
|
11
|
+
ResizeObserver: SWCResizeObserver;
|
|
12
|
+
}
|
|
13
|
+
export type SWCResizeObserverCallback = (entries: SWCResizeObserverEntry[], observer: SWCResizeObserver) => void;
|
package/src/types.dev.js
ADDED
package/src/types.js
ADDED