neko-ui 1.0.35 → 1.0.37
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/es/back-top/index.js +2 -2
- package/es/button/index.d.ts +7 -3
- package/es/button/index.js +191 -61
- package/es/capture-screen/index.d.ts +3 -0
- package/es/capture-screen/index.js +3 -3
- package/es/color-palette/color.d.ts +83 -0
- package/es/color-palette/color.js +1 -0
- package/es/color-palette/gen-hsva.d.ts +23 -0
- package/es/color-palette/gen-hsva.js +1 -0
- package/es/color-palette/index.d.ts +10 -6
- package/es/color-palette/index.js +163 -114
- package/es/color-picker/index.d.ts +1 -0
- package/es/color-picker/index.js +7 -6
- package/es/color-scheme/index.d.ts +9 -0
- package/es/color-scheme/index.js +1 -0
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/input/index.d.ts +1 -1
- package/es/input/index.js +7 -7
- package/es/markdown/index.css +67 -34
- package/es/markdown/index.d.ts +1 -1
- package/es/prism/prism.css +13 -17
- package/es/skeleton/index.js +1 -1
- package/es/tooltip/index.js +3 -3
- package/lib/back-top/index.js +1 -1
- package/lib/button/index.d.ts +7 -3
- package/lib/button/index.js +1 -1
- package/lib/capture-screen/index.d.ts +3 -0
- package/lib/capture-screen/index.js +1 -1
- package/lib/color-palette/color.d.ts +83 -0
- package/lib/color-palette/color.js +1 -0
- package/lib/color-palette/gen-hsva.d.ts +23 -0
- package/lib/color-palette/gen-hsva.js +1 -0
- package/lib/color-palette/index.d.ts +10 -6
- package/lib/color-palette/index.js +1 -1
- package/lib/color-picker/index.d.ts +1 -0
- package/lib/color-picker/index.js +1 -1
- package/lib/color-scheme/index.d.ts +9 -0
- package/lib/color-scheme/index.js +1 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/input/index.d.ts +1 -1
- package/lib/input/index.js +1 -1
- package/lib/markdown/index.css +67 -34
- package/lib/markdown/index.d.ts +1 -1
- package/lib/prism/prism.css +13 -17
- package/lib/skeleton/index.js +1 -1
- package/lib/tooltip/index.js +1 -1
- package/package.json +66 -57
- package/es/color-palette/alpha-slider.d.ts +0 -7
- package/es/color-palette/alpha-slider.js +0 -1
- package/es/color-palette/hue-slider.d.ts +0 -15
- package/es/color-palette/hue-slider.js +0 -1
- package/es/use-theme/index.d.ts +0 -10
- package/es/use-theme/index.js +0 -1
- package/lib/color-palette/alpha-slider.d.ts +0 -7
- package/lib/color-palette/alpha-slider.js +0 -1
- package/lib/color-palette/hue-slider.d.ts +0 -15
- package/lib/color-palette/hue-slider.js +0 -1
- package/lib/use-theme/index.d.ts +0 -10
- package/lib/use-theme/index.js +0 -1
package/es/back-top/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target};return _extends.apply(this,arguments)}function _objectWithoutProperties(source,excluded){if(source==null)return{};var target=_objectWithoutPropertiesLoose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key]}}return target}function _objectWithoutPropertiesLoose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key]}return target}import React,{memo,useCallback,useEffect,useRef,useState}from"react";import{css,injectGlobal}from"@emotion/css";import{classNames,getMaxZindex,getScrollTop,isEqual,isFunction}from"@moneko/common";import{createPortal}from"react-dom";import prefixCls from"../prefix-cls";const cls={backtop:prefixCls("back-top"),out:prefixCls("back-top-out")};const backTopCss=css`
|
|
2
2
|
:root {
|
|
3
3
|
--back-top-color: #fff;
|
|
4
|
-
--back-top-bg: var(--text-
|
|
5
|
-
--back-top-hover-bg: var(--text-color);
|
|
4
|
+
--back-top-bg: var(--text-secondary, #4e4e4e);
|
|
5
|
+
--back-top-hover-bg: var(--text-color, rgb(0 0 0 / 65%));
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
[data-theme='dark'] {
|
package/es/button/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type FC, type HTMLAttributes } from 'react';
|
|
2
|
+
import type { ComponentSize } from '../';
|
|
2
3
|
export type ButtonType = 'success' | 'error' | 'primary' | 'warning' | 'default';
|
|
3
|
-
export interface ButtonProps extends HTMLAttributes<
|
|
4
|
+
export interface ButtonProps extends HTMLAttributes<HTMLButtonElement> {
|
|
4
5
|
/** 按钮类型 */
|
|
5
6
|
type?: ButtonType;
|
|
6
7
|
/** 无限动画 */
|
|
@@ -13,14 +14,17 @@ export interface ButtonProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
13
14
|
circle?: boolean;
|
|
14
15
|
/** 虚线按钮 */
|
|
15
16
|
dashed?: boolean;
|
|
16
|
-
/**
|
|
17
|
-
|
|
17
|
+
/** 扁平按钮 */
|
|
18
|
+
flat?: boolean;
|
|
18
19
|
/** 禁用按钮 */
|
|
19
20
|
disabled?: boolean;
|
|
20
21
|
/** 块按钮 */
|
|
21
22
|
block?: boolean;
|
|
22
23
|
/** 链接按钮 */
|
|
23
24
|
link?: boolean;
|
|
25
|
+
/** 危险按钮 */
|
|
26
|
+
danger?: boolean;
|
|
27
|
+
size?: ComponentSize;
|
|
24
28
|
}
|
|
25
29
|
declare const Button: FC<ButtonProps>;
|
|
26
30
|
export default Button;
|
package/es/button/index.js
CHANGED
|
@@ -1,81 +1,211 @@
|
|
|
1
|
-
function
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_defineProperty(target,key,source[key])})}return target}function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly){symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable})}keys.push.apply(keys,symbols)}return keys}function _objectSpreadProps(target,source){source=source!=null?source:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source))}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}return target}function _objectWithoutProperties(source,excluded){if(source==null)return{};var target=_objectWithoutPropertiesLoose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key]}}return target}function _objectWithoutPropertiesLoose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key]}return target}import{useCallback,useRef,useState,useMemo,createElement}from"react";import{css,injectGlobal}from"@emotion/css";import{classNames,isFunction}from"@moneko/common";import prefixCls from"../prefix-cls";const cls={btn:prefixCls("btn"),label:prefixCls("btn-label"),primary:prefixCls("btn-primary"),warning:prefixCls("btn-warning"),error:prefixCls("btn-error"),danger:prefixCls("btn-danger"),success:prefixCls("btn-success"),infinite:prefixCls("btn-infinite"),block:prefixCls("btn-block"),dashed:prefixCls("btn-dashed"),fill:prefixCls("btn-fill"),circle:prefixCls("btn-circle"),ghost:prefixCls("btn-ghost"),link:prefixCls("btn-link"),flat:prefixCls("btn-flat"),disabled:prefixCls("btn-disabled"),without:prefixCls("btn-without"),default:prefixCls("btn-default"),large:prefixCls("btn-large"),small:prefixCls("btn-small"),normal:prefixCls("btn-normal")};function btnColor(type){let _cls=`.${cls[type]}`,fillCls=`.${cls[type]}.${cls.fill}`;if(type==="error"){_cls=`.${cls[type]},.${cls.danger}`;fillCls=`.${cls[type]}.${cls.fill},.${cls.danger}.${cls.fill}`}return`
|
|
2
|
+
${_cls}:not([disabled]) {
|
|
3
|
+
.${cls.label} {
|
|
4
|
+
--btn-color: var(--${type}-color);
|
|
5
|
+
}
|
|
6
|
+
--btn-border: var(--${type}-color-border);
|
|
7
|
+
--btn-bg: var(--${type}-color-bg);
|
|
8
|
+
--btn-hover-color: var(--${type}-color-hover);
|
|
9
|
+
--btn-active-color: var(--${type}-color-active);
|
|
10
|
+
--btn-outline-color: var(--${type}-color-outline);
|
|
11
|
+
}
|
|
12
|
+
${fillCls} {
|
|
13
|
+
--btn-bg: var(--${type}-color);
|
|
14
|
+
--btn-border: var(--${type}-color);
|
|
15
|
+
--btn-hover-bg: var(--${type}-color-hover);
|
|
16
|
+
--btn-active-bg: var(--${type}-color-active);
|
|
17
|
+
}
|
|
18
|
+
`}const btnCss=css`
|
|
19
|
+
:root {
|
|
20
|
+
--disable-color: rgb(0 0 0 / 25%);
|
|
21
|
+
--disable-bg: rgb(0 0 0 / 4%);
|
|
22
|
+
--disable-border: #d9d9d9;
|
|
4
23
|
}
|
|
5
24
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
25
|
+
[data-theme='dark'] {
|
|
26
|
+
--disable-color: rgb(255 255 255 / 25%);
|
|
27
|
+
--disable-bg: rgb(255 255 255 / 8%);
|
|
28
|
+
--disable-border: #424242;
|
|
9
29
|
}
|
|
30
|
+
.${cls.label} {
|
|
31
|
+
display: block;
|
|
32
|
+
overflow: hidden;
|
|
33
|
+
text-align: center;
|
|
34
|
+
text-overflow: ellipsis;
|
|
35
|
+
white-space: nowrap;
|
|
36
|
+
color: var(--btn-color);
|
|
37
|
+
transition-property: color;
|
|
38
|
+
}
|
|
39
|
+
.${cls.btn},.${cls.label} {
|
|
40
|
+
transition-timing-function: var(--transition-timing-function);
|
|
41
|
+
transition-duration: var(--transition-duration);
|
|
42
|
+
}
|
|
43
|
+
.${cls.btn} {
|
|
44
|
+
display: inline-flex;
|
|
45
|
+
justify-content: center;
|
|
46
|
+
align-items: center;
|
|
47
|
+
border: 1px solid var(--btn-border);
|
|
48
|
+
border-radius: var(--border-radius);
|
|
49
|
+
padding: 4px 16px;
|
|
50
|
+
width: fit-content;
|
|
51
|
+
min-width: var(--btn-size);
|
|
52
|
+
height: fit-content;
|
|
53
|
+
min-height: var(--btn-size);
|
|
54
|
+
font-size: var(--font-size, 14px);
|
|
55
|
+
color: var(--btn-color);
|
|
56
|
+
background-color: var(--btn-bg);
|
|
57
|
+
outline-offset: 4px;
|
|
58
|
+
line-height: 1;
|
|
59
|
+
cursor: pointer;
|
|
60
|
+
transition-property: color, background-color, border-color, width, height, transform;
|
|
61
|
+
user-select: none;
|
|
62
|
+
touch-action: manipulation;
|
|
63
|
+
box-sizing: border-box;
|
|
10
64
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
65
|
+
&:hover:not([disabled]) {
|
|
66
|
+
border-color: var(--btn-hover-color);
|
|
67
|
+
background-color: var(--btn-bg);
|
|
68
|
+
.${cls.label} {
|
|
69
|
+
color: var(--btn-hover-color);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
&:active:not([disabled]) {
|
|
74
|
+
border-color: var(--btn-active-color);
|
|
75
|
+
background-color: var(--btn-bg);
|
|
76
|
+
transform: scale(0.98);
|
|
77
|
+
.${cls.label} {
|
|
78
|
+
color: var(--btn-active-color);
|
|
25
79
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
opacity: ${disabled?.7:1};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
.${cls.normal} {
|
|
83
|
+
--btn-size: 2rem;
|
|
84
|
+
}
|
|
85
|
+
.${cls.small} {
|
|
86
|
+
--btn-size: 1.5rem;
|
|
87
|
+
|
|
88
|
+
padding: 0 7px;
|
|
89
|
+
font-size: var(--font-size-xs, 10px);
|
|
90
|
+
}
|
|
91
|
+
.${cls.large} {
|
|
92
|
+
--btn-size: 2.5rem;
|
|
40
93
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
94
|
+
font-size: var(--font-size-lg, 16px);
|
|
95
|
+
}
|
|
96
|
+
.${cls.link} {
|
|
97
|
+
.${cls.label} {
|
|
98
|
+
--btn-color: var(--primary-color);
|
|
45
99
|
}
|
|
100
|
+
}
|
|
101
|
+
.${cls.default} {
|
|
102
|
+
--btn-outline-color: var(--primary-color-outline);
|
|
103
|
+
--btn-color: var(--text-color);
|
|
104
|
+
--btn-bg: var(--component-background, #fff);
|
|
105
|
+
--btn-border: var(--border-color);
|
|
106
|
+
--btn-hover-color: var(--primary-color-hover);
|
|
107
|
+
--btn-active-color: var(--primary-color-active);
|
|
108
|
+
}
|
|
109
|
+
${btnColor("primary")}
|
|
110
|
+
${btnColor("error")}
|
|
111
|
+
${btnColor("success")}
|
|
112
|
+
${btnColor("warning")}
|
|
113
|
+
.${cls.fill} {
|
|
114
|
+
&:not([disabled]):not(.${cls.default}) {
|
|
115
|
+
.${cls.label} {
|
|
116
|
+
color: #fff !important;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
&:hover {
|
|
120
|
+
--btn-bg: var(--btn-hover-color) !important;
|
|
121
|
+
}
|
|
46
122
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
123
|
+
&:active {
|
|
124
|
+
--btn-bg: var(--btn-active-color) !important;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
.${cls.fill}.${cls.danger}.${cls.default} {
|
|
129
|
+
.${cls.label} {
|
|
130
|
+
color: #fff !important;
|
|
52
131
|
}
|
|
53
|
-
|
|
132
|
+
}
|
|
133
|
+
.${cls.dashed} {
|
|
134
|
+
border-style: dashed;
|
|
135
|
+
}
|
|
136
|
+
.${cls.flat}, .${cls.link} {
|
|
137
|
+
border-color: transparent !important;
|
|
138
|
+
background-color: transparent;
|
|
139
|
+
}
|
|
140
|
+
.${cls.ghost}, .${cls.link} {
|
|
141
|
+
background-color: transparent !important;
|
|
142
|
+
}
|
|
143
|
+
.${cls.btn}.${cls.link} {
|
|
144
|
+
&::after {
|
|
145
|
+
content: none;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
.${cls.circle} {
|
|
149
|
+
border-radius: 50% !important;
|
|
150
|
+
padding: 0;
|
|
151
|
+
min-width: var(--btn-size);
|
|
152
|
+
max-width: var(--btn-size);
|
|
153
|
+
min-height: var(--btn-size);
|
|
154
|
+
max-height: var(--btn-size);
|
|
155
|
+
text-align: center;
|
|
156
|
+
line-height: var(--btn-size);
|
|
157
|
+
}
|
|
158
|
+
.${cls.disabled}[disabled] {
|
|
159
|
+
--btn-color: var(--disable-color);
|
|
160
|
+
--btn-bg: var(--disable-bg);
|
|
161
|
+
--btn-border: var(--disable-border);
|
|
162
|
+
|
|
163
|
+
cursor: not-allowed;
|
|
164
|
+
}
|
|
165
|
+
.${cls.block} {
|
|
166
|
+
width: 100%;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
.${cls.without}, .${cls.infinite} {
|
|
170
|
+
&:not(.${cls.link}):not(.${cls.flat}) {
|
|
54
171
|
position: relative;
|
|
55
|
-
display: inline-block;
|
|
56
|
-
border-width: 1px;
|
|
57
|
-
width: ${block?"100%":"fit-content"};
|
|
58
|
-
height: fit-content;
|
|
59
|
-
text-align: center;
|
|
60
|
-
outline-offset: 4px;
|
|
61
|
-
transition-timing-function: var(--transition-timing-function);
|
|
62
|
-
transition-duration: var(--transition-duration);
|
|
63
|
-
transition-property: color, background-color, border-color, width, height, transform;
|
|
64
|
-
user-select: none;
|
|
65
|
-
touch-action: manipulation;
|
|
66
|
-
box-sizing: border-box;
|
|
67
172
|
|
|
68
173
|
&::before {
|
|
69
174
|
position: absolute;
|
|
70
175
|
display: block;
|
|
71
176
|
border-radius: inherit;
|
|
72
177
|
opacity: 0.2;
|
|
73
|
-
box-shadow: 0 0 0 0 var(--
|
|
178
|
+
box-shadow: 0 0 0 0 var(--btn-outline-color);
|
|
74
179
|
inset: 0;
|
|
180
|
+
animation: btn-wave-effect 0.3s cubic-bezier(1, 1, 1, 1);
|
|
181
|
+
animation-fill-mode: forwards;
|
|
182
|
+
content: '';
|
|
75
183
|
pointer-events: none;
|
|
76
184
|
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
77
187
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
188
|
+
.${cls.infinite} {
|
|
189
|
+
&:not(.${cls.link}):not(.${cls.flat})::before {
|
|
190
|
+
opacity: 0.2;
|
|
191
|
+
animation: btn-wave-effect 0.3s cubic-bezier(1, 1, 1, 0.99) infinite;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
@keyframes btn-wave-effect {
|
|
196
|
+
0% {
|
|
197
|
+
opacity: 1;
|
|
198
|
+
box-shadow: 0 0 0 var(--btn-outline-color);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
25% {
|
|
202
|
+
opacity: 1;
|
|
203
|
+
box-shadow: 0 0 0 0.25rem var(--btn-outline-color);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
100% {
|
|
207
|
+
opacity: 0;
|
|
208
|
+
box-shadow: 0 0 0 0.375rem var(--btn-outline-color);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
`;injectGlobal([btnCss]);const Button=_param=>{var{infinite,ghost,fill,circle,dashed,flat,link,danger,children,disabled,block,onClick,size="normal",type="default",className}=_param,props=_objectWithoutProperties(_param,["infinite","ghost","fill","circle","dashed","flat","link","danger","children","disabled","block","onClick","size","type","className"]);const ref=useRef(null);const[animating,setAnimating]=useState(false);const handleClick=useCallback(e=>{if(disabled)return;setAnimating(true);if(isFunction(onClick)){onClick(e)}},[disabled,onClick]);const handleAnimationEnd=useCallback(()=>{setAnimating(false)},[]);const btnCls=useMemo(()=>classNames(cls.btn,cls[type],cls[size],danger&&cls.danger,block&&cls.block,fill&&cls.fill,circle&&cls.circle,flat&&cls.flat,dashed&&cls.dashed,ghost&&cls.ghost,infinite&&cls.infinite,link&&cls.link,disabled&&cls.disabled,animating&&cls.without,className),[animating,block,circle,className,danger,dashed,disabled,fill,flat,ghost,infinite,link,size,type]);const tag=useMemo(()=>link?"a":"button",[link]);return createElement(tag,_objectSpreadProps(_objectSpread({},props),{ref,onClick:handleClick,onAnimationEnd:handleAnimationEnd,className:btnCls,disabled:disabled}),createElement("span",{className:cls.label},children))};export default Button;
|
|
@@ -3,6 +3,9 @@ export interface RecorderOptions {
|
|
|
3
3
|
/** 录制文件名称 */
|
|
4
4
|
filename?: string;
|
|
5
5
|
}
|
|
6
|
+
declare interface MediaRecorderDataAvailableEvent extends Event {
|
|
7
|
+
data: any;
|
|
8
|
+
}
|
|
6
9
|
export interface CaptureScreenProp extends HTMLAttributes<HTMLDivElement> {
|
|
7
10
|
options?: MediaStreamConstraints;
|
|
8
11
|
/** 是否预览 */
|
|
@@ -6,8 +6,8 @@ function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var inf
|
|
|
6
6
|
position: relative;
|
|
7
7
|
}
|
|
8
8
|
.${cls.view} video {
|
|
9
|
-
border:
|
|
10
|
-
border-radius: var(--border-radius
|
|
9
|
+
border: var(--border-base);
|
|
10
|
+
border-radius: var(--border-radius, 8px);
|
|
11
11
|
width: 100%;
|
|
12
12
|
transition: border-color var(--transition-duration) var(--transition-timing-function);
|
|
13
13
|
}
|
|
@@ -39,7 +39,7 @@ function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var inf
|
|
|
39
39
|
|
|
40
40
|
&::before {
|
|
41
41
|
display: block;
|
|
42
|
-
border-left: 1px solid var(--border-color
|
|
42
|
+
border-left: 1px solid var(--border-color, #d9d9d9);
|
|
43
43
|
height: 100%;
|
|
44
44
|
transition: border-color var(--transition-duration) var(--transition-timing-function);
|
|
45
45
|
transform: translateX(-16px);
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 将 HSV 光谱转换为 RGB
|
|
3
|
+
* @param {number} h 色调
|
|
4
|
+
* @param {number} s 饱和度
|
|
5
|
+
* @param {number} v 亮度
|
|
6
|
+
* @returns {number[]} RGB
|
|
7
|
+
*/
|
|
8
|
+
export declare function hsvToRgb(h: number, s: number, v: number): number[];
|
|
9
|
+
/**
|
|
10
|
+
* 将 HSV 光谱转换为十六进制
|
|
11
|
+
* @param {number} h 色调
|
|
12
|
+
* @param {number} s 饱和度
|
|
13
|
+
* @param {number} v 亮度
|
|
14
|
+
* @returns {string[]} Hex values
|
|
15
|
+
*/
|
|
16
|
+
export declare function hsvToHex(h: number, s: number, v: number): string[];
|
|
17
|
+
/**
|
|
18
|
+
* 将 HSV 光谱转换为 CMYK
|
|
19
|
+
* @param {number} h 色调
|
|
20
|
+
* @param {number} s 饱和度
|
|
21
|
+
* @param {number} v 亮度
|
|
22
|
+
* @returns {number[]} CMYK values
|
|
23
|
+
*/
|
|
24
|
+
export declare function hsvToCmyk(h: number, s: number, v: number): number[];
|
|
25
|
+
/**
|
|
26
|
+
* 将 HSV 光谱转换为 HSL
|
|
27
|
+
* @param {number} h 色调
|
|
28
|
+
* @param {number} s 饱和度
|
|
29
|
+
* @param {number} v 亮度
|
|
30
|
+
* @returns {number[]} HSL values
|
|
31
|
+
*/
|
|
32
|
+
export declare function hsvToHsl(h: number, s: number, v: number): number[];
|
|
33
|
+
/**
|
|
34
|
+
* 将 RGB 转换为 HSV
|
|
35
|
+
* @param {number} r Red
|
|
36
|
+
* @param {number} g Green
|
|
37
|
+
* @param {number} b Blue
|
|
38
|
+
* @return {number[]} HSV values.
|
|
39
|
+
*/
|
|
40
|
+
export declare function rgbToHsv(r: number, g: number, b: number): number[];
|
|
41
|
+
/**
|
|
42
|
+
* 将 CMYK 转换为 HSV
|
|
43
|
+
* @param {number} c Cyan
|
|
44
|
+
* @param {number} m Magenta
|
|
45
|
+
* @param {number} y Yellow
|
|
46
|
+
* @param {number} k Key (Black)
|
|
47
|
+
* @return {number[]} HSV values.
|
|
48
|
+
*/
|
|
49
|
+
export declare function cmykToHsv(c: number, m: number, y: number, k: number): number[];
|
|
50
|
+
/**
|
|
51
|
+
* 将 HSL 转换为 HSV
|
|
52
|
+
* @param {number} h Hue
|
|
53
|
+
* @param {number} s Saturation
|
|
54
|
+
* @param {number} l Lightness
|
|
55
|
+
* @return {number[]} HSV values.
|
|
56
|
+
*/
|
|
57
|
+
export declare function hslToHsv(h: number, s: number, l: number): number[];
|
|
58
|
+
/**
|
|
59
|
+
* 将 HEX 转换为 HSV
|
|
60
|
+
* @param {number} hex RGB 颜色的十六进制字符串,长度可以是 3 或 6
|
|
61
|
+
* @return {number[]} HSV values.
|
|
62
|
+
*/
|
|
63
|
+
export declare function hexToHsv(hex: string): number[];
|
|
64
|
+
declare const colorRegex: {
|
|
65
|
+
cmyk: RegExp;
|
|
66
|
+
rgba: RegExp;
|
|
67
|
+
hsla: RegExp;
|
|
68
|
+
hsva: RegExp;
|
|
69
|
+
hexa: RegExp;
|
|
70
|
+
};
|
|
71
|
+
export type ColorType = keyof typeof colorRegex;
|
|
72
|
+
/**
|
|
73
|
+
* 尝试将表示颜色的字符串解析为 HSV 数组
|
|
74
|
+
* 当前支持的类型是 cmyk、rgba、hsla 和十六进制
|
|
75
|
+
* @param {string} str color
|
|
76
|
+
* @return {*} HSVA
|
|
77
|
+
*/
|
|
78
|
+
export declare function parseToHSVA(str: string): {
|
|
79
|
+
values: number[];
|
|
80
|
+
type: ColorType;
|
|
81
|
+
a: number;
|
|
82
|
+
};
|
|
83
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const{min,max,floor,round}=Math;function standardizeColor(name){if(name.toLowerCase()==="black"){return"#000000"}const ctx=document.createElement("canvas").getContext("2d");ctx.fillStyle=name;return ctx.fillStyle==="#000000"?null:ctx.fillStyle}export function hsvToRgb(h,s,v){const _h=h/360*6;const _s=s/100;const _v=v/100;const i=floor(_h);const f=_h-i;const p=_v*(1-_s);const q=_v*(1-f*_s);const t=_v*(1-(1-f)*_s);const mod=i%6;const r=[_v,q,p,p,t,_v][mod];const g=[t,_v,_v,q,p,p][mod];const b=[p,p,t,_v,_v,q][mod];return[r*255,g*255,b*255]}export function hsvToHex(h,s,v){return hsvToRgb(h,s,v).map(e=>round(e).toString(16).padStart(2,"0"))}export function hsvToCmyk(h,s,v){const rgb=hsvToRgb(h,s,v);const r=rgb[0]/255;const g=rgb[1]/255;const b=rgb[2]/255;const k=min(1-r,1-g,1-b);const c=k===1?0:(1-r-k)/(1-k);const m=k===1?0:(1-g-k)/(1-k);const y=k===1?0:(1-b-k)/(1-k);return[c*100,m*100,y*100,k*100]}export function hsvToHsl(h,s,v){let _s=s/100;const _v=v/100;const l=(2-_s)*_v/2;if(l!==0){if(l===1){_s=0}else if(l<.5){_s=_s*_v/(l*2)}else{_s=_s*_v/(2-l*2)}}return[h,_s*100,l*100]}export function rgbToHsv(r,g,b){const _r=r/255,_g=g/255,_b=b/255;let h=0,s;const minVal=min(_r,_g,_b);const maxVal=max(_r,_g,_b);const delta=maxVal-minVal;const v=maxVal;if(delta===0){h=s=0}else{s=delta/maxVal;const dr=((maxVal-_r)/6+delta/2)/delta;const dg=((maxVal-_g)/6+delta/2)/delta;const db=((maxVal-_b)/6+delta/2)/delta;if(_r===maxVal){h=db-dg}else if(_g===maxVal){h=1/3+dr-db}else if(_b===maxVal){h=2/3+dg-dr}if(h<0){h+=1}else if(h>1){h-=1}}return[h*360,s*100,v*100]}export function cmykToHsv(c,m,y,k){const _c=c/100,_m=m/100,_y=y/100,_k=k/100;const r=(1-min(1,_c*(1-_k)+_k))*255;const g=(1-min(1,_m*(1-_k)+_k))*255;const b=(1-min(1,_y*(1-_k)+_k))*255;return[...rgbToHsv(r,g,b)]}export function hslToHsv(h,s,l){const _l=l/100;let _s=s/100;_s*=_l<.5?_l:1-_l;const ns=_l+_s?2*_s/(_l+_s)*100:0;const v=(_l+_s)*100;return[h,ns,v]}export function hexToHsv(hex){var _hex_match;const[r,g,b]=((_hex_match=hex.match(/.{2}/g))===null||_hex_match===void 0?void 0:_hex_match.map(v=>parseInt(v,16)))||[];return rgbToHsv(r,g,b)}const colorRegex={cmyk:/^cmyk[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)/i,rgba:/^((rgba)|rgb)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i,hsla:/^((hsla)|hsl)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i,hsva:/^((hsva)|hsv)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i,hexa:/^#?(([\dA-Fa-f]{3,4})|([\dA-Fa-f]{6})|([\dA-Fa-f]{8}))$/i};export function parseToHSVA(str){const _str=str.match(/^[a-zA-Z]+$/)?standardizeColor(str):str;const numarize=array=>array.map(v=>/^(|\d+)\.\d+|\d+$/.test(v)?Number(v):undefined);let match;for(const key in colorRegex){if(Object.prototype.hasOwnProperty.call(colorRegex,key)){const type=key;if(!(match=colorRegex[type].exec(_str))){continue}switch(type){case"cmyk":{const[,c=0,m=0,y=0,k=0]=numarize(match);if(c>100||m>100||y>100||k>100)break;return{values:cmykToHsv(c,m,y,k),type,a:1}}case"rgba":{const[,,,r=0,g=0,b=0,a=1]=numarize(match);if(r>255||g>255||b>255||a<0||a>1)break;return{values:[...rgbToHsv(r,g,b),a],a,type}}case"hexa":{let[,hex]=match;if(hex.length===4||hex.length===3){hex=hex.split("").map(v=>v+v).join("")}const raw=hex.substring(0,6),_a=hex.substring(6),a=_a?parseInt(_a,16)/255:1;return{values:[...hexToHsv(raw),a],a,type}}case"hsla":{const[,,,h=0,s=0,l=0,a=1]=numarize(match);if(h>360||s>100||l>100||a<0||a>1)break;return{values:[...hslToHsv(h,s,l),a],a,type}}case"hsva":{const[,,,h=0,s=0,v=0,a=1]=numarize(match);if(h>360||s>100||v>100||a<0||a>1)break;return{values:[h,s,v,a],a,type}}default:{return{values:[0,0,0,1],type:"hsva",a:1}}}}}return{values:[0,0,0,1],type:"hsva",a:1}}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
interface HSVA {
|
|
2
|
+
h: number;
|
|
3
|
+
s: number;
|
|
4
|
+
v: number;
|
|
5
|
+
a: number;
|
|
6
|
+
toHSVA(): number[];
|
|
7
|
+
toHSLA(): number[];
|
|
8
|
+
toRGBA(): number[];
|
|
9
|
+
toCMYK(): number[];
|
|
10
|
+
toHEXA(): string[];
|
|
11
|
+
clone: () => HSVA;
|
|
12
|
+
}
|
|
13
|
+
export type HSVAVoidName = 'toHSVA' | 'toHSLA' | 'toRGBA' | 'toCMYK' | 'toHEXA';
|
|
14
|
+
/**
|
|
15
|
+
* 保存颜色表示模型 hsla(色调、饱和度、亮度、alpha)属性的简单类
|
|
16
|
+
* @param {number} h 色调
|
|
17
|
+
* @param {number} s 饱和度
|
|
18
|
+
* @param {number} v 亮度
|
|
19
|
+
* @param {number} a 透明度
|
|
20
|
+
* @returns {HSVA} HSVA
|
|
21
|
+
*/
|
|
22
|
+
export declare function genHSVA(h?: number, s?: number, v?: number, a?: number): HSVA;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{hsvToHsl,hsvToRgb,hsvToCmyk,hsvToHex}from"./color";export function genHSVA(h=0,s=0,v=0,a=1){const mapper=(original,next)=>{return (precision=0)=>{return next(~precision?original.map(o=>Number(o.toFixed(precision))):original)}};return{h,s,v,a,toHSVA(){const _hsva=[h,s,v,a];_hsva.toString=mapper(_hsva,arr=>`hsva(${arr[0]}, ${arr[1]}%, ${arr[2]}%, ${a})`);return _hsva},toHSLA(){const hsla=[...hsvToHsl(h,s,v),a];hsla.toString=mapper(hsla,arr=>`hsla(${arr[0]}, ${arr[1]}%, ${arr[2]}%, ${a})`);return hsla},toRGBA(){const rgba=[...hsvToRgb(h,s,v),a];rgba.toString=mapper(rgba,arr=>`rgba(${arr[0]}, ${arr[1]}, ${arr[2]}, ${a})`);return rgba},toCMYK(){const cmyk=hsvToCmyk(h,s,v);cmyk.toString=mapper(cmyk,arr=>`cmyk(${arr[0]}%, ${arr[1]}%, ${arr[2]}%, ${arr[3]}%)`);return cmyk},toHEXA(){const hex=hsvToHex(h,s,v);let alpha="";if(a<1){alpha=Number((a*255).toFixed(0)).toString(16).toUpperCase().padStart(2,"0")}if(alpha){hex.push(alpha)}hex.toString=()=>`#${hex.join("").toUpperCase()}`;return hex},clone:()=>genHSVA(h,s,v,a)}}
|
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
import { type FC, type HTMLAttributes } from 'react';
|
|
2
2
|
export declare const cls: {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
palette: "n-color-palette-palette";
|
|
6
|
-
svpanel: "n-color-palette-svpanel";
|
|
7
|
-
setting: "n-color-palette-setting";
|
|
8
|
-
strip: "n-color-palette-strip";
|
|
3
|
+
palette: "n-color-palette";
|
|
4
|
+
picker: "n-color-palette-picker";
|
|
9
5
|
preview: "n-color-palette-preview";
|
|
10
6
|
form: "n-color-palette-form";
|
|
11
7
|
input: "n-color-palette-input";
|
|
8
|
+
switch: "n-color-palette-switch";
|
|
9
|
+
chooser: "n-color-chooser";
|
|
10
|
+
range: "n-color-range";
|
|
11
|
+
hue: "n-color-hue";
|
|
12
|
+
opacity: "n-color-opacity";
|
|
13
|
+
color: "n-color-color";
|
|
14
|
+
slider: "n-color-slider";
|
|
12
15
|
};
|
|
13
16
|
export interface ColorPaletteProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
|
|
14
17
|
value?: string;
|
|
18
|
+
defaultValue?: string;
|
|
15
19
|
onChange?: (color: string) => void;
|
|
16
20
|
}
|
|
17
21
|
declare const ColorPalette: FC<ColorPaletteProps>;
|