react-iro-gradient-picker 1.1.7 → 1.2.1
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 +61 -1
- package/dist/components/core/Colorpicker/IroGradient/index.d.ts +2 -2
- package/dist/components/core/Colorpicker/IroSolid/index.d.ts +2 -2
- package/dist/components/core/Colorpicker/helper.d.ts +2 -1
- package/dist/index.es.js +135 -25
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +138 -24
- package/dist/index.js.map +1 -1
- package/dist/lib/types/types.d.ts +44 -1
- package/dist/utils/gradient/gradientConverter.d.ts +17 -0
- package/dist/utils/gradient/index.d.ts +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
@@ -6582,6 +6582,94 @@ var parseGradient = (function (str) {
|
|
6582
6582
|
}
|
6583
6583
|
});
|
6584
6584
|
|
6585
|
+
/**
|
6586
|
+
* Convert gradient object to CSS gradient string
|
6587
|
+
*/
|
6588
|
+
function gradientObjectToCss(gradientData) {
|
6589
|
+
var type = gradientData.type, _a = gradientData.angle, angle = _a === void 0 ? 90 : _a, stops = gradientData.stops;
|
6590
|
+
// Convert stops to CSS format
|
6591
|
+
var cssStops = stops
|
6592
|
+
.sort(function (a, b) { return a.position - b.position; }) // Ensure stops are in order
|
6593
|
+
.map(function (stop) {
|
6594
|
+
var color = tinycolor(stop.color);
|
6595
|
+
return "".concat(color.toRgbString(), " ").concat(stop.position, "%");
|
6596
|
+
})
|
6597
|
+
.join(', ');
|
6598
|
+
if (type === 'linear') {
|
6599
|
+
return "linear-gradient(".concat(angle, "deg, ").concat(cssStops, ")");
|
6600
|
+
}
|
6601
|
+
else {
|
6602
|
+
return "radial-gradient(circle, ".concat(cssStops, ")");
|
6603
|
+
}
|
6604
|
+
}
|
6605
|
+
/**
|
6606
|
+
* Convert CSS gradient string to gradient object
|
6607
|
+
*/
|
6608
|
+
function cssToGradientObject(cssGradient) {
|
6609
|
+
try {
|
6610
|
+
var parsed = parseGradient(cssGradient);
|
6611
|
+
if (!parsed) {
|
6612
|
+
return null;
|
6613
|
+
}
|
6614
|
+
var type = parsed.type, modifier = parsed.modifier, stops = parsed.stops;
|
6615
|
+
// Convert stops to object format
|
6616
|
+
var gradientStops = stops.map(function (stop) { return ({
|
6617
|
+
color: String(stop[0]), // Ensure it's a string
|
6618
|
+
position: Math.round(stop[1] * 100) // Convert to percentage
|
6619
|
+
}); });
|
6620
|
+
// Extract angle from modifier (for linear gradients)
|
6621
|
+
var angle = 90; // Default angle
|
6622
|
+
if (type === 'linear' && modifier && typeof modifier === 'string') {
|
6623
|
+
var angleMatch = modifier.match(/(\d+)deg/);
|
6624
|
+
if (angleMatch) {
|
6625
|
+
angle = parseInt(angleMatch[1], 10);
|
6626
|
+
}
|
6627
|
+
}
|
6628
|
+
return {
|
6629
|
+
type: type,
|
6630
|
+
angle: type === 'linear' ? angle : undefined,
|
6631
|
+
stops: gradientStops,
|
6632
|
+
defaultActiveTab: 'gradient'
|
6633
|
+
};
|
6634
|
+
}
|
6635
|
+
catch (error) {
|
6636
|
+
console.warn('Failed to parse CSS gradient:', error);
|
6637
|
+
return null;
|
6638
|
+
}
|
6639
|
+
}
|
6640
|
+
/**
|
6641
|
+
* Check if a value is a gradient object
|
6642
|
+
*/
|
6643
|
+
function isGradientObject(value) {
|
6644
|
+
return (value &&
|
6645
|
+
typeof value === 'object' &&
|
6646
|
+
'type' in value &&
|
6647
|
+
'stops' in value &&
|
6648
|
+
Array.isArray(value.stops) &&
|
6649
|
+
value.stops.length > 0 &&
|
6650
|
+
value.stops.every(function (stop) {
|
6651
|
+
return stop &&
|
6652
|
+
typeof stop === 'object' &&
|
6653
|
+
'color' in stop &&
|
6654
|
+
'position' in stop &&
|
6655
|
+
typeof stop.position === 'number';
|
6656
|
+
}));
|
6657
|
+
}
|
6658
|
+
/**
|
6659
|
+
* Normalize value to always return a CSS gradient string
|
6660
|
+
*/
|
6661
|
+
function normalizeGradientValue(value) {
|
6662
|
+
if (typeof value === 'string') {
|
6663
|
+
return value;
|
6664
|
+
}
|
6665
|
+
if (isGradientObject(value)) {
|
6666
|
+
return gradientObjectToCss(value);
|
6667
|
+
}
|
6668
|
+
// Fallback
|
6669
|
+
return 'linear-gradient(90deg, #ffffff 0%, #000000 100%)';
|
6670
|
+
}
|
6671
|
+
// End of file
|
6672
|
+
|
6585
6673
|
var getAlphaValue = function (value) {
|
6586
6674
|
value.replace(/%/i, '');
|
6587
6675
|
if (value[0] === '0' && value.length > 1) {
|
@@ -6988,28 +7076,35 @@ IroColorPicker.displayName = 'IroColorPicker';
|
|
6988
7076
|
|
6989
7077
|
var getIndexActiveTag = function (value) {
|
6990
7078
|
var tab = 'solid';
|
6991
|
-
|
6992
|
-
if (value) {
|
6993
|
-
|
6994
|
-
|
6995
|
-
|
6996
|
-
|
6997
|
-
|
6998
|
-
|
6999
|
-
|
7000
|
-
tab = 'solid';
|
7001
|
-
return tab;
|
7002
|
-
}
|
7003
|
-
var rgba = rgbaToArray(value);
|
7004
|
-
if (rgba) {
|
7005
|
-
if (isValidRgba([rgba[0], rgba[1], rgba[2]])) {
|
7079
|
+
// Handle gradient object
|
7080
|
+
if (isGradientObject(value)) {
|
7081
|
+
return 'gradient';
|
7082
|
+
}
|
7083
|
+
// Handle string value
|
7084
|
+
if (typeof value === 'string') {
|
7085
|
+
var validValue = tinycolor(value).isValid();
|
7086
|
+
if (value) {
|
7087
|
+
if (value === 'transparent') {
|
7006
7088
|
tab = 'solid';
|
7007
7089
|
return tab;
|
7008
7090
|
}
|
7009
|
-
|
7010
|
-
|
7011
|
-
|
7012
|
-
|
7091
|
+
if (validValue &&
|
7092
|
+
!value.trim().startsWith('radial-gradient') &&
|
7093
|
+
!value.trim().startsWith('linear-gradient')) {
|
7094
|
+
tab = 'solid';
|
7095
|
+
return tab;
|
7096
|
+
}
|
7097
|
+
var rgba = rgbaToArray(value);
|
7098
|
+
if (rgba) {
|
7099
|
+
if (isValidRgba([rgba[0], rgba[1], rgba[2]])) {
|
7100
|
+
tab = 'solid';
|
7101
|
+
return tab;
|
7102
|
+
}
|
7103
|
+
}
|
7104
|
+
else {
|
7105
|
+
tab = 'gradient';
|
7106
|
+
return tab;
|
7107
|
+
}
|
7013
7108
|
}
|
7014
7109
|
}
|
7015
7110
|
return tab;
|
@@ -8334,7 +8429,22 @@ var PopupTabsBodyItem = function (_a) {
|
|
8334
8429
|
|
8335
8430
|
var ColorPicker = function (_a) {
|
8336
8431
|
var _b = _a.value, value = _b === void 0 ? '#ffffff' : _b, _c = _a.format, format = _c === void 0 ? 'rgb' : _c, _d = _a.gradient, gradient = _d === void 0 ? false : _d, _e = _a.solid, solid = _e === void 0 ? true : _e, _f = _a.debounceMS, debounceMS = _f === void 0 ? 300 : _f, _g = _a.debounce, debounce = _g === void 0 ? true : _g, _h = _a.showAlpha, showAlpha = _h === void 0 ? true : _h, _j = _a.showInputs, showInputs = _j === void 0 ? true : _j, _k = _a.showGradientResult, showGradientResult = _k === void 0 ? true : _k, _l = _a.showGradientStops, showGradientStops = _l === void 0 ? true : _l, _m = _a.showGradientMode, showGradientMode = _m === void 0 ? true : _m, _o = _a.showGradientAngle, showGradientAngle = _o === void 0 ? true : _o, _p = _a.showGradientPosition, showGradientPosition = _p === void 0 ? true : _p, _q = _a.allowAddGradientStops, allowAddGradientStops = _q === void 0 ? true : _q, _r = _a.popupWidth, popupWidth = _r === void 0 ? 267 : _r, _s = _a.colorBoardHeight, colorBoardHeight = _s === void 0 ? 120 : _s, _t = _a.defaultColors, defaultColors = _t === void 0 ? DEFAULT_COLORS : _t, defaultActiveTab = _a.defaultActiveTab, onChangeTabs = _a.onChangeTabs, _u = _a.onChange, onChange = _u === void 0 ? function () { return ({}); } : _u, _v = _a.showReset, showReset = _v === void 0 ? false : _v, onReset = _a.onReset;
|
8337
|
-
|
8432
|
+
// Convert object value to CSS string for internal use
|
8433
|
+
var cssValue = normalizeGradientValue(value);
|
8434
|
+
// Auto-switch to gradient tab if receiving gradient object
|
8435
|
+
var initialTab = isGradientObject(value)
|
8436
|
+
? 'gradient'
|
8437
|
+
: defaultActiveTab || getIndexActiveTag(value);
|
8438
|
+
var _w = __read(React.useState(initialTab), 2), activeTab = _w[0], setActiveTab = _w[1];
|
8439
|
+
// Auto-switch tab when value changes from object to string or vice versa
|
8440
|
+
React__default["default"].useEffect(function () {
|
8441
|
+
if (isGradientObject(value) && activeTab !== 'gradient') {
|
8442
|
+
setActiveTab('gradient');
|
8443
|
+
if (typeof onChangeTabs === 'function') {
|
8444
|
+
onChangeTabs('gradient');
|
8445
|
+
}
|
8446
|
+
}
|
8447
|
+
}, [value, activeTab, onChangeTabs]);
|
8338
8448
|
var onChangeSolid = function (value) {
|
8339
8449
|
onChange(value);
|
8340
8450
|
};
|
@@ -8357,17 +8467,17 @@ var ColorPicker = function (_a) {
|
|
8357
8467
|
React__default["default"].createElement(PopupTabsHeaderLabel, { tabName: 'gradient', onClick: function () { return onChangeTab('gradient'); } }, "Gradient")),
|
8358
8468
|
React__default["default"].createElement(PopupTabsBody, null,
|
8359
8469
|
React__default["default"].createElement(PopupTabsBodyItem, { tabName: 'solid' },
|
8360
|
-
React__default["default"].createElement(IroSolidColorPicker, { onChange: onChangeSolid, value:
|
8470
|
+
React__default["default"].createElement(IroSolidColorPicker, { onChange: onChangeSolid, value: cssValue, format: format, defaultColors: defaultColors, debounceMS: debounceMS, debounce: debounce, showAlpha: showAlpha, showInputs: showInputs, colorBoardHeight: colorBoardHeight, showReset: showReset, onReset: onReset })),
|
8361
8471
|
React__default["default"].createElement(PopupTabsBodyItem, { tabName: 'gradient' },
|
8362
|
-
React__default["default"].createElement(IroGradient, { onChange: onChangeGradient, value:
|
8472
|
+
React__default["default"].createElement(IroGradient, { onChange: onChangeGradient, value: cssValue, format: format, defaultColors: defaultColors, debounceMS: debounceMS, debounce: debounce, showAlpha: showAlpha, showInputs: showInputs, showGradientResult: showGradientResult, showGradientStops: showGradientStops, showGradientMode: showGradientMode, showGradientAngle: showGradientAngle, showGradientPosition: showGradientPosition, allowAddGradientStops: allowAddGradientStops, colorBoardHeight: colorBoardHeight, showReset: showReset, onReset: onReset })))))));
|
8363
8473
|
}
|
8364
8474
|
return (React__default["default"].createElement(ThemeProvider, null,
|
8365
8475
|
React__default["default"].createElement("div", { className: 'relative dark iro-gradient-picker', "data-color-picker-theme": true },
|
8366
8476
|
React__default["default"].createElement(ThemeToggle, null),
|
8367
8477
|
solid || gradient ? (React__default["default"].createElement(PopupTabs, { popupWidth: popupWidth },
|
8368
8478
|
React__default["default"].createElement(PopupTabsBody, null,
|
8369
|
-
solid ? (React__default["default"].createElement(IroSolidColorPicker, { onChange: onChangeSolid, value:
|
8370
|
-
gradient ? (React__default["default"].createElement(IroGradient, { onChange: onChangeGradient, value:
|
8479
|
+
solid ? (React__default["default"].createElement(IroSolidColorPicker, { onChange: onChangeSolid, value: cssValue, format: format, defaultColors: defaultColors, debounceMS: debounceMS, debounce: debounce, showAlpha: showAlpha, showInputs: showInputs, colorBoardHeight: colorBoardHeight, showReset: showReset, onReset: onReset })) : (React__default["default"].createElement(React.Fragment, null)),
|
8480
|
+
gradient ? (React__default["default"].createElement(IroGradient, { onChange: onChangeGradient, value: cssValue, format: format, defaultColors: defaultColors, debounceMS: debounceMS, debounce: debounce, showAlpha: showAlpha, showInputs: showInputs, showGradientResult: showGradientResult, showGradientStops: showGradientStops, showGradientMode: showGradientMode, showGradientAngle: showGradientAngle, showGradientPosition: showGradientPosition, allowAddGradientStops: allowAddGradientStops, colorBoardHeight: colorBoardHeight, showReset: showReset, onReset: onReset })) : (React__default["default"].createElement(React.Fragment, null))))) : null)));
|
8371
8481
|
};
|
8372
8482
|
|
8373
8483
|
exports.ColorPicker = ColorPicker;
|
@@ -8384,12 +8494,16 @@ exports.ThemeToggle = ThemeToggle;
|
|
8384
8494
|
exports.TinyColor = TinyColor;
|
8385
8495
|
exports.checkFormat = checkFormat;
|
8386
8496
|
exports.cn = cn;
|
8497
|
+
exports.cssToGradientObject = cssToGradientObject;
|
8387
8498
|
exports["default"] = ColorPicker;
|
8388
8499
|
exports.getGradient = getGradient;
|
8389
8500
|
exports.getHexAlpha = getHexAlpha;
|
8501
|
+
exports.gradientObjectToCss = gradientObjectToCss;
|
8390
8502
|
exports.hexToRgba = hexToRgba;
|
8503
|
+
exports.isGradientObject = isGradientObject;
|
8391
8504
|
exports.isValidHex = isValidHex;
|
8392
8505
|
exports.isValidRgba = isValidRgba;
|
8506
|
+
exports.normalizeGradientValue = normalizeGradientValue;
|
8393
8507
|
exports.parseGradient = parseGradient;
|
8394
8508
|
exports.rgbaToArray = rgbaToArray;
|
8395
8509
|
exports.rgbaToHex = rgbaToHex;
|