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.
Files changed (61) hide show
  1. package/es/back-top/index.js +2 -2
  2. package/es/button/index.d.ts +7 -3
  3. package/es/button/index.js +191 -61
  4. package/es/capture-screen/index.d.ts +3 -0
  5. package/es/capture-screen/index.js +3 -3
  6. package/es/color-palette/color.d.ts +83 -0
  7. package/es/color-palette/color.js +1 -0
  8. package/es/color-palette/gen-hsva.d.ts +23 -0
  9. package/es/color-palette/gen-hsva.js +1 -0
  10. package/es/color-palette/index.d.ts +10 -6
  11. package/es/color-palette/index.js +163 -114
  12. package/es/color-picker/index.d.ts +1 -0
  13. package/es/color-picker/index.js +7 -6
  14. package/es/color-scheme/index.d.ts +9 -0
  15. package/es/color-scheme/index.js +1 -0
  16. package/es/index.d.ts +1 -1
  17. package/es/index.js +1 -1
  18. package/es/input/index.d.ts +1 -1
  19. package/es/input/index.js +7 -7
  20. package/es/markdown/index.css +67 -34
  21. package/es/markdown/index.d.ts +1 -1
  22. package/es/prism/prism.css +13 -17
  23. package/es/skeleton/index.js +1 -1
  24. package/es/tooltip/index.js +3 -3
  25. package/lib/back-top/index.js +1 -1
  26. package/lib/button/index.d.ts +7 -3
  27. package/lib/button/index.js +1 -1
  28. package/lib/capture-screen/index.d.ts +3 -0
  29. package/lib/capture-screen/index.js +1 -1
  30. package/lib/color-palette/color.d.ts +83 -0
  31. package/lib/color-palette/color.js +1 -0
  32. package/lib/color-palette/gen-hsva.d.ts +23 -0
  33. package/lib/color-palette/gen-hsva.js +1 -0
  34. package/lib/color-palette/index.d.ts +10 -6
  35. package/lib/color-palette/index.js +1 -1
  36. package/lib/color-picker/index.d.ts +1 -0
  37. package/lib/color-picker/index.js +1 -1
  38. package/lib/color-scheme/index.d.ts +9 -0
  39. package/lib/color-scheme/index.js +1 -0
  40. package/lib/index.d.ts +1 -1
  41. package/lib/index.js +1 -1
  42. package/lib/input/index.d.ts +1 -1
  43. package/lib/input/index.js +1 -1
  44. package/lib/markdown/index.css +67 -34
  45. package/lib/markdown/index.d.ts +1 -1
  46. package/lib/prism/prism.css +13 -17
  47. package/lib/skeleton/index.js +1 -1
  48. package/lib/tooltip/index.js +1 -1
  49. package/package.json +66 -57
  50. package/es/color-palette/alpha-slider.d.ts +0 -7
  51. package/es/color-palette/alpha-slider.js +0 -1
  52. package/es/color-palette/hue-slider.d.ts +0 -15
  53. package/es/color-palette/hue-slider.js +0 -1
  54. package/es/use-theme/index.d.ts +0 -10
  55. package/es/use-theme/index.js +0 -1
  56. package/lib/color-palette/alpha-slider.d.ts +0 -7
  57. package/lib/color-palette/alpha-slider.js +0 -1
  58. package/lib/color-palette/hue-slider.d.ts +0 -15
  59. package/lib/color-palette/hue-slider.js +0 -1
  60. package/lib/use-theme/index.d.ts +0 -10
  61. package/lib/use-theme/index.js +0 -1
@@ -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-color-secondary);
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'] {
@@ -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<HTMLDivElement> {
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
- float?: boolean;
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;
@@ -1,81 +1,211 @@
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,{useCallback,useRef,useState}from"react";import{css,keyframes}from"@emotion/css";import{classNames,isFunction}from"@moneko/common";const waveEffect=keyframes`0% {
2
- opacity: 1;
3
- box-shadow: 0 0 0 var(--wave-shadow-color);
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
- 25% {
7
- opacity: 1;
8
- box-shadow: 0 0 0 4px var(--wave-shadow-color);
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
- 100% {
12
- opacity: 0;
13
- box-shadow: 0 0 0 6px var(--wave-shadow-color);
14
- }
15
- `;const btnTextCss=css`
16
- display: block;
17
- overflow: hidden;
18
- text-overflow: ellipsis;
19
- white-space: nowrap;
20
- `;const getAnimationCss=(animating,link,infinite)=>{let animation=css``;if((animating||infinite)&&!link){animation=css`
21
- &::before {
22
- animation: ${waveEffect} 0.3s cubic-bezier(1, 1, 1, ${infinite?.99:1})
23
- ${infinite?"infinite":""} forwards;
24
- content: '';
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
- `}return animation};const getStatusCss=(type,fill,float,ghost,link,circle,dashed,disabled)=>{let bg="var(--component-background, rgba(255,255,255,0.8))";let hoverBg=bg;let activeBg=bg;let borderColor="var(--border-color-base)";let borderHover=`var(--primary-color-hover, #80b3ff)`;let borderActive=`var(--primary-color-active, #3f72d9)`;let color=`var(--text-color)`;let colorHover=`var(--primary-color-hover, #80b3ff)`;let colorActive=`var(--primary-color-active, #3f72d9)`;if(type!=="default"){bg=`var(--${type}-color${fill?"":"-bg"})`;borderColor=`var(--${type}-color${fill?"":"-border"})`;borderHover=`var(--${type}-color-hover)`;borderActive=`var(--${type}-color-active)`;color=fill?"white":`var(--${type}-color)`;colorHover=fill?"white":`var(--${type}-color-hover)`;colorActive=fill?"white":`var(--${type}-color-active)`;hoverBg=`var(--${type}-color-${fill?"hover":"bg"})`;activeBg=`var(--${type}-color-${fill?"active":"bg"})`}if(ghost||link){bg="transparent";hoverBg="transparent";activeBg="transparent"}if(float||link){borderColor="transparent";borderHover="transparent";borderActive="transparent"}return css`
27
- border-style: ${dashed?"dashed":"solid"};
28
- border-color: ${borderColor};
29
- border-radius: ${circle?"50%":"var(--border-radius-base)"};
30
- padding: ${circle?0:"8px 16px"};
31
- min-width: ${circle?"32px":"22px"};
32
- max-width: ${circle?"32px":"unset"};
33
- min-height: ${circle?"32px":"22px"};
34
- max-height: ${circle?"32px":"unset"};
35
- color: ${color};
36
- background-color: ${bg};
37
- line-height: ${circle?"32px":1};
38
- cursor: ${disabled?"not-allowed":"pointer"};
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
- &:hover {
42
- border-color: ${borderHover};
43
- color: ${colorHover};
44
- background-color: ${hoverBg};
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
- &:active {
48
- transform: scale(${disabled?1:.95});
49
- border-color: ${borderActive};
50
- color: ${colorActive};
51
- background-color: ${activeBg};
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
- `};const Button=_param=>{var{infinite,ghost,fill,circle,dashed,float,link,children,disabled,block,onClick,type="default",className}=_param,props=_objectWithoutProperties(_param,["infinite","ghost","fill","circle","dashed","float","link","children","disabled","block","onClick","type","className"]);const ref=useRef(null);const[animating,setAnimating]=useState(false);const getBaseStyle=()=>{return css`
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(--wave-shadow-color);
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
- &:last-of-type {
79
- margin-right: 0;
80
- }
81
- `};const handleClick=useCallback(e=>{if(disabled)return;setAnimating(true);if(isFunction(onClick)){onClick(e)}},[disabled,onClick]);const handleAnimationEnd=useCallback(()=>{setAnimating(false)},[]);return React.createElement("div",_extends({},props,{ref:ref,onClick:handleClick,onAnimationEnd:handleAnimationEnd,className:classNames(getBaseStyle(),getStatusCss(type,fill,float,ghost,link,circle,dashed,disabled),getAnimationCss(animating,link,infinite),className),style:{"--wave-shadow-color":`var(--${type==="default"?"primary":type}-color-outline)`}}),React.createElement("span",{className:btnTextCss},children))};export default Button;
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: 1px solid var(--border-color-base);
10
- border-radius: var(--border-radius-base);
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-base);
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
- alphaSlider: "n-color-palette-alpha-slider";
4
- sliderPicker: "n-color-palette-alpha-picker";
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>;