react-iro-gradient-picker 1.1.7 → 1.2.3

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/dist/index.js CHANGED
@@ -6394,111 +6394,139 @@ var isValidRgba = (function (rgba) {
6394
6394
  return !!rgbaToHex(rgba);
6395
6395
  });
6396
6396
 
6397
- var combineRegExp = function (regexpList, flags) {
6398
- return new RegExp(regexpList.reduce(function (result, item) {
6399
- return result + (typeof item === 'string' ? item : item.source);
6400
- }, ''), flags);
6401
- };
6402
- var generateRegExp = function () {
6403
- var searchFlags = 'gi';
6404
- var rAngle = /(?:[+-]?\d*\.?\d+)(?:deg|grad|rad|turn)/;
6405
- var rSideCornerCapture = /to\s+((?:(?:left|right)(?:\s+(?:top|bottom))?))/;
6406
- var rRadial = /circle at\s+((?:(?:left|right|center|top|bottom)(?:\s+(?:left|right|center|top|bottom))?))/;
6407
- var rComma = /\s*,\s*/;
6408
- var rColorHex = /\#(?:[a-f0-9]{6,8}|[a-f0-9]{3})/;
6409
- var rDigits3 = /\(\s*(?:\d{1,3}%?\s*,\s*){2}%?\d{1,3}%?\s*\)/;
6410
- var rDigits4 = /\(\s*(?:\d{1,3}%?\s*,\s*){2}%?\d{1,3}%?\s*,\s*\d*\.?\d+\)/;
6411
- var rValue = /(?:[+-]?\d*\.?\d+)(?:%|[a-z]+)?/;
6412
- var rKeyword = /[_a-z-][_a-z0-9-]*/;
6413
- var rColor = combineRegExp([
6414
- '(?:',
6415
- rColorHex,
6416
- '|',
6417
- '(?:rgb|hsl)',
6418
- rDigits3,
6419
- '|',
6420
- '(?:rgba|hsla)',
6421
- rDigits4,
6422
- '|',
6423
- rKeyword,
6424
- ')'
6425
- ], '');
6426
- var rColorStop = combineRegExp([rColor, '(?:\\s+', rValue, '(?:\\s+', rValue, ')?)?'], '');
6427
- var rColorStopList = combineRegExp(['(?:', rColorStop, rComma, ')*', rColorStop], '');
6428
- var rLineCapture = combineRegExp(['(?:(', rAngle, ')|', rSideCornerCapture, '|', rRadial, ')'], '');
6429
- var rGradientSearch = combineRegExp(['(?:(', rLineCapture, ')', rComma, ')?(', rColorStopList, ')'], searchFlags);
6430
- var rColorStopSearch = combineRegExp([
6431
- '\\s*(',
6432
- rColor,
6433
- ')',
6434
- '(?:\\s+',
6435
- '(',
6436
- rValue,
6437
- '))?',
6438
- '(?:',
6439
- rComma,
6440
- '\\s*)?'
6441
- ], searchFlags);
6442
- return {
6443
- gradientSearch: rGradientSearch,
6444
- colorStopSearch: rColorStopSearch
6445
- };
6446
- };
6447
- var parseGradient$1 = function (regExpLib, input) {
6448
- var result = {
6449
- stops: [],
6450
- angle: '',
6451
- line: '',
6452
- original: ''
6453
- };
6454
- var matchGradient, matchColorStop, stopResult;
6455
- regExpLib.gradientSearch.lastIndex = 0;
6456
- matchGradient = regExpLib.gradientSearch.exec(input);
6457
- if (matchGradient !== null) {
6458
- result = __assign(__assign({}, result), { original: matchGradient[0] });
6459
- if (matchGradient[1]) {
6460
- result.line = matchGradient[1];
6397
+ var validGradient = (function (input) {
6398
+ try {
6399
+ // Clean input
6400
+ var cleanInput = input
6401
+ .trim()
6402
+ .replace(/;$/, '')
6403
+ .replace(/^background-image:\s*/, '');
6404
+ // Extract gradient type and content
6405
+ var gradientMatch = cleanInput.match(/^(linear|radial)-gradient\s*\(\s*(.*)\s*\)$/i);
6406
+ if (!gradientMatch) {
6407
+ return 'Failed to find gradient';
6461
6408
  }
6462
- if (matchGradient[2]) {
6463
- result.angle = matchGradient[2];
6409
+ var _a = __read(gradientMatch, 3), type = _a[1], content = _a[2];
6410
+ var parts = [];
6411
+ var currentPart = '';
6412
+ var parenDepth = 0;
6413
+ var inQuotes = false;
6414
+ // Parse content by splitting on commas, but respect parentheses and quotes
6415
+ for (var i = 0; i < content.length; i++) {
6416
+ var char = content[i];
6417
+ if (char === '"' || char === "'") {
6418
+ inQuotes = !inQuotes;
6419
+ }
6420
+ else if (!inQuotes) {
6421
+ if (char === '(')
6422
+ parenDepth++;
6423
+ else if (char === ')')
6424
+ parenDepth--;
6425
+ else if (char === ',' && parenDepth === 0) {
6426
+ parts.push(currentPart.trim());
6427
+ currentPart = '';
6428
+ continue;
6429
+ }
6430
+ }
6431
+ currentPart += char;
6464
6432
  }
6465
- if (matchGradient[3]) {
6466
- result.sideCorner = matchGradient[3];
6433
+ if (currentPart.trim()) {
6434
+ parts.push(currentPart.trim());
6467
6435
  }
6468
- regExpLib.colorStopSearch.lastIndex = 0;
6469
- matchColorStop = regExpLib.colorStopSearch.exec(matchGradient[5]);
6470
- while (matchColorStop !== null) {
6471
- var tinyColor = tinycolor(matchColorStop[1]);
6472
- stopResult = {
6473
- color: tinyColor.toRgbString()
6474
- };
6475
- if (matchColorStop[2]) {
6476
- stopResult.position = Number((parseInt(matchColorStop[2], 10) / 100).toFixed(2));
6436
+ var angle = '';
6437
+ var line = '';
6438
+ var colorStops = [];
6439
+ // Determine if first part is direction/angle or color stop
6440
+ var firstPart = parts[0];
6441
+ var isDirection = /^\d+deg$/i.test(firstPart) ||
6442
+ /^to\s+/.test(firstPart) ||
6443
+ /^(?:circle|ellipse)/.test(firstPart) ||
6444
+ /at\s+/.test(firstPart);
6445
+ if (isDirection) {
6446
+ if (type === 'linear') {
6447
+ if (/^\d+deg$/i.test(firstPart)) {
6448
+ angle = firstPart.replace(/deg$/i, '');
6449
+ }
6450
+ else if (/^to\s+/.test(firstPart)) {
6451
+ line = firstPart;
6452
+ // Convert named directions to angles
6453
+ var directionMap = {
6454
+ 'to top': '0',
6455
+ 'to top right': '45',
6456
+ 'to right': '90',
6457
+ 'to bottom right': '135',
6458
+ 'to bottom': '180',
6459
+ 'to bottom left': '225',
6460
+ 'to left': '270',
6461
+ 'to top left': '315'
6462
+ };
6463
+ angle = directionMap[firstPart] || '0';
6464
+ }
6465
+ }
6466
+ else {
6467
+ line = firstPart;
6477
6468
  }
6478
- result.stops.push(stopResult);
6479
- matchColorStop = regExpLib.colorStopSearch.exec(matchGradient[5]);
6469
+ colorStops = parts.slice(1);
6480
6470
  }
6481
- }
6482
- return result;
6483
- };
6484
- var validGradient = (function (input) {
6485
- var regExpLib = generateRegExp();
6486
- var result;
6487
- var rGradientEnclosedInBrackets = /.*gradient\s*\(((?:\([^\)]*\)|[^\)\(]*)*)\)/;
6488
- var match = rGradientEnclosedInBrackets.exec(input);
6489
- if (match !== null) {
6490
- result = parseGradient$1(regExpLib, match[1]);
6491
- if (result.original.trim() !== match[1].trim()) {
6492
- result.parseWarning = true;
6471
+ else {
6472
+ // No explicit direction, use defaults
6473
+ angle = type === 'linear' ? '180' : '';
6474
+ line = type === 'radial' ? 'circle at center' : '';
6475
+ colorStops = parts;
6493
6476
  }
6494
- if (result.stops.every(function (item) { return item.hasOwnProperty('position'); }) === false) {
6495
- result = 'Not correct position';
6477
+ // Parse color stops
6478
+ var stops_1 = [];
6479
+ for (var i = 0; i < colorStops.length; i++) {
6480
+ var stopString = colorStops[i].trim();
6481
+ // Try to extract color and position
6482
+ var stopMatch = stopString.match(/^(.+?)(?:\s+(\d+(?:\.\d+)?)(%)?)?$/);
6483
+ if (stopMatch) {
6484
+ var _b = __read(stopMatch, 4), colorStr = _b[1], positionStr = _b[2], isPercent = _b[3];
6485
+ var tinyColorInstance = tinycolor(colorStr.trim());
6486
+ if (tinyColorInstance.isValid()) {
6487
+ var stop_1 = {
6488
+ color: tinyColorInstance.toRgbString()
6489
+ };
6490
+ if (positionStr) {
6491
+ var position = parseFloat(positionStr);
6492
+ // Assume percentage if no unit specified
6493
+ if (isPercent || !isPercent) {
6494
+ position = position / 100;
6495
+ }
6496
+ stop_1.position = Math.max(0, Math.min(1, position));
6497
+ }
6498
+ stops_1.push(stop_1);
6499
+ }
6500
+ }
6501
+ }
6502
+ // Auto-assign positions if missing
6503
+ stops_1.forEach(function (stop, index) {
6504
+ if (!stop.hasOwnProperty('position')) {
6505
+ stop.position = stops_1.length > 1 ? index / (stops_1.length - 1) : 0;
6506
+ }
6507
+ });
6508
+ // Ensure we have at least 2 stops
6509
+ if (stops_1.length === 0) {
6510
+ return 'No valid color stops found';
6496
6511
  }
6512
+ else if (stops_1.length === 1) {
6513
+ // Duplicate the single stop to create a valid gradient
6514
+ stops_1.push({
6515
+ color: stops_1[0].color,
6516
+ position: 1
6517
+ });
6518
+ }
6519
+ return {
6520
+ stops: stops_1,
6521
+ angle: angle,
6522
+ line: line,
6523
+ original: cleanInput
6524
+ };
6497
6525
  }
6498
- else {
6499
- result = 'Failed to find gradient';
6526
+ catch (error) {
6527
+ console.warn('Error parsing gradient:', error);
6528
+ return 'Failed to parse gradient';
6500
6529
  }
6501
- return result;
6502
6530
  });
6503
6531
 
6504
6532
  var LINEAR_POS = [
@@ -6582,6 +6610,94 @@ var parseGradient = (function (str) {
6582
6610
  }
6583
6611
  });
6584
6612
 
6613
+ /**
6614
+ * Convert gradient object to CSS gradient string
6615
+ */
6616
+ function gradientObjectToCss(gradientData) {
6617
+ var type = gradientData.type, _a = gradientData.angle, angle = _a === void 0 ? 90 : _a, stops = gradientData.stops;
6618
+ // Convert stops to CSS format
6619
+ var cssStops = stops
6620
+ .sort(function (a, b) { return a.position - b.position; }) // Ensure stops are in order
6621
+ .map(function (stop) {
6622
+ var color = tinycolor(stop.color);
6623
+ return "".concat(color.toRgbString(), " ").concat(stop.position, "%");
6624
+ })
6625
+ .join(', ');
6626
+ if (type === 'linear') {
6627
+ return "linear-gradient(".concat(angle, "deg, ").concat(cssStops, ")");
6628
+ }
6629
+ else {
6630
+ return "radial-gradient(circle, ".concat(cssStops, ")");
6631
+ }
6632
+ }
6633
+ /**
6634
+ * Convert CSS gradient string to gradient object
6635
+ */
6636
+ function cssToGradientObject(cssGradient) {
6637
+ try {
6638
+ var parsed = parseGradient(cssGradient);
6639
+ if (!parsed) {
6640
+ return null;
6641
+ }
6642
+ var type = parsed.type, modifier = parsed.modifier, stops = parsed.stops;
6643
+ // Convert stops to object format
6644
+ var gradientStops = stops.map(function (stop) { return ({
6645
+ color: String(stop[0]), // Ensure it's a string
6646
+ position: Math.round(stop[1] * 100) // Convert to percentage
6647
+ }); });
6648
+ // Extract angle from modifier (for linear gradients)
6649
+ var angle = 90; // Default angle
6650
+ if (type === 'linear' && modifier && typeof modifier === 'string') {
6651
+ var angleMatch = modifier.match(/(\d+)deg/);
6652
+ if (angleMatch) {
6653
+ angle = parseInt(angleMatch[1], 10);
6654
+ }
6655
+ }
6656
+ return {
6657
+ type: type,
6658
+ angle: type === 'linear' ? angle : undefined,
6659
+ stops: gradientStops,
6660
+ defaultActiveTab: 'gradient'
6661
+ };
6662
+ }
6663
+ catch (error) {
6664
+ console.warn('Failed to parse CSS gradient:', error);
6665
+ return null;
6666
+ }
6667
+ }
6668
+ /**
6669
+ * Check if a value is a gradient object
6670
+ */
6671
+ function isGradientObject(value) {
6672
+ return (value &&
6673
+ typeof value === 'object' &&
6674
+ 'type' in value &&
6675
+ 'stops' in value &&
6676
+ Array.isArray(value.stops) &&
6677
+ value.stops.length > 0 &&
6678
+ value.stops.every(function (stop) {
6679
+ return stop &&
6680
+ typeof stop === 'object' &&
6681
+ 'color' in stop &&
6682
+ 'position' in stop &&
6683
+ typeof stop.position === 'number';
6684
+ }));
6685
+ }
6686
+ /**
6687
+ * Normalize value to always return a CSS gradient string
6688
+ */
6689
+ function normalizeGradientValue(value) {
6690
+ if (typeof value === 'string') {
6691
+ return value;
6692
+ }
6693
+ if (isGradientObject(value)) {
6694
+ return gradientObjectToCss(value);
6695
+ }
6696
+ // Fallback
6697
+ return 'linear-gradient(90deg, #ffffff 0%, #000000 100%)';
6698
+ }
6699
+ // End of file
6700
+
6585
6701
  var getAlphaValue = function (value) {
6586
6702
  value.replace(/%/i, '');
6587
6703
  if (value[0] === '0' && value.length > 1) {
@@ -6988,28 +7104,35 @@ IroColorPicker.displayName = 'IroColorPicker';
6988
7104
 
6989
7105
  var getIndexActiveTag = function (value) {
6990
7106
  var tab = 'solid';
6991
- var validValue = tinycolor(value).isValid();
6992
- if (value) {
6993
- if (value === 'transparent') {
6994
- tab = 'solid';
6995
- return tab;
6996
- }
6997
- if (validValue &&
6998
- !value.trim().startsWith('radial-gradient') &&
6999
- !value.trim().startsWith('linear-gradient')) {
7000
- tab = 'solid';
7001
- return tab;
7002
- }
7003
- var rgba = rgbaToArray(value);
7004
- if (rgba) {
7005
- if (isValidRgba([rgba[0], rgba[1], rgba[2]])) {
7107
+ // Handle gradient object
7108
+ if (isGradientObject(value)) {
7109
+ return 'gradient';
7110
+ }
7111
+ // Handle string value
7112
+ if (typeof value === 'string') {
7113
+ var validValue = tinycolor(value).isValid();
7114
+ if (value) {
7115
+ if (value === 'transparent') {
7006
7116
  tab = 'solid';
7007
7117
  return tab;
7008
7118
  }
7009
- }
7010
- else {
7011
- tab = 'gradient';
7012
- return tab;
7119
+ if (validValue &&
7120
+ !value.trim().startsWith('radial-gradient') &&
7121
+ !value.trim().startsWith('linear-gradient')) {
7122
+ tab = 'solid';
7123
+ return tab;
7124
+ }
7125
+ var rgba = rgbaToArray(value);
7126
+ if (rgba) {
7127
+ if (isValidRgba([rgba[0], rgba[1], rgba[2]])) {
7128
+ tab = 'solid';
7129
+ return tab;
7130
+ }
7131
+ }
7132
+ else {
7133
+ tab = 'gradient';
7134
+ return tab;
7135
+ }
7013
7136
  }
7014
7137
  }
7015
7138
  return tab;
@@ -7644,7 +7767,19 @@ var IroGradient = function (_a) {
7644
7767
  // Store the initial value for reset functionality
7645
7768
  var initialValue = React.useRef(value);
7646
7769
  var parsedColors = React.useCallback(function () {
7647
- return parseGradient(value);
7770
+ try {
7771
+ var parsed = parseGradient(value);
7772
+ // If parsing failed, return fallback gradient
7773
+ if (typeof parsed === 'string') {
7774
+ console.warn('Gradient parsing failed, using fallback:', parsed);
7775
+ return parseGradient('linear-gradient(90deg, #ffffff 0%, #000000 100%)');
7776
+ }
7777
+ return parsed;
7778
+ }
7779
+ catch (error) {
7780
+ console.warn('Error parsing gradient, using fallback:', error);
7781
+ return parseGradient('linear-gradient(90deg, #ffffff 0%, #000000 100%)');
7782
+ }
7648
7783
  // eslint-disable-next-line react-hooks/exhaustive-deps
7649
7784
  }, [value]);
7650
7785
  var _s = parsedColors(), stops = _s.stops, type = _s.type, modifier = _s.modifier;
@@ -8334,7 +8469,22 @@ var PopupTabsBodyItem = function (_a) {
8334
8469
 
8335
8470
  var ColorPicker = function (_a) {
8336
8471
  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
- var _w = __read(React.useState(defaultActiveTab || getIndexActiveTag(value)), 2), activeTab = _w[0], setActiveTab = _w[1];
8472
+ // Convert object value to CSS string for internal use
8473
+ var cssValue = normalizeGradientValue(value);
8474
+ // Auto-switch to gradient tab if receiving gradient object
8475
+ var initialTab = isGradientObject(value)
8476
+ ? 'gradient'
8477
+ : defaultActiveTab || getIndexActiveTag(value);
8478
+ var _w = __read(React.useState(initialTab), 2), activeTab = _w[0], setActiveTab = _w[1];
8479
+ // Auto-switch tab when value changes from object to string or vice versa
8480
+ React__default["default"].useEffect(function () {
8481
+ if (isGradientObject(value) && activeTab !== 'gradient') {
8482
+ setActiveTab('gradient');
8483
+ if (typeof onChangeTabs === 'function') {
8484
+ onChangeTabs('gradient');
8485
+ }
8486
+ }
8487
+ }, [value, activeTab, onChangeTabs]);
8338
8488
  var onChangeSolid = function (value) {
8339
8489
  onChange(value);
8340
8490
  };
@@ -8357,17 +8507,17 @@ var ColorPicker = function (_a) {
8357
8507
  React__default["default"].createElement(PopupTabsHeaderLabel, { tabName: 'gradient', onClick: function () { return onChangeTab('gradient'); } }, "Gradient")),
8358
8508
  React__default["default"].createElement(PopupTabsBody, null,
8359
8509
  React__default["default"].createElement(PopupTabsBodyItem, { tabName: 'solid' },
8360
- React__default["default"].createElement(IroSolidColorPicker, { onChange: onChangeSolid, value: value, format: format, defaultColors: defaultColors, debounceMS: debounceMS, debounce: debounce, showAlpha: showAlpha, showInputs: showInputs, colorBoardHeight: colorBoardHeight, showReset: showReset, onReset: onReset })),
8510
+ 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
8511
  React__default["default"].createElement(PopupTabsBodyItem, { tabName: 'gradient' },
8362
- React__default["default"].createElement(IroGradient, { onChange: onChangeGradient, value: value, 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 })))))));
8512
+ 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
8513
  }
8364
8514
  return (React__default["default"].createElement(ThemeProvider, null,
8365
8515
  React__default["default"].createElement("div", { className: 'relative dark iro-gradient-picker', "data-color-picker-theme": true },
8366
8516
  React__default["default"].createElement(ThemeToggle, null),
8367
8517
  solid || gradient ? (React__default["default"].createElement(PopupTabs, { popupWidth: popupWidth },
8368
8518
  React__default["default"].createElement(PopupTabsBody, null,
8369
- solid ? (React__default["default"].createElement(IroSolidColorPicker, { onChange: onChangeSolid, value: value, 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)),
8370
- gradient ? (React__default["default"].createElement(IroGradient, { onChange: onChangeGradient, value: value, 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)));
8519
+ 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)),
8520
+ 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
8521
  };
8372
8522
 
8373
8523
  exports.ColorPicker = ColorPicker;
@@ -8384,12 +8534,16 @@ exports.ThemeToggle = ThemeToggle;
8384
8534
  exports.TinyColor = TinyColor;
8385
8535
  exports.checkFormat = checkFormat;
8386
8536
  exports.cn = cn;
8537
+ exports.cssToGradientObject = cssToGradientObject;
8387
8538
  exports["default"] = ColorPicker;
8388
8539
  exports.getGradient = getGradient;
8389
8540
  exports.getHexAlpha = getHexAlpha;
8541
+ exports.gradientObjectToCss = gradientObjectToCss;
8390
8542
  exports.hexToRgba = hexToRgba;
8543
+ exports.isGradientObject = isGradientObject;
8391
8544
  exports.isValidHex = isValidHex;
8392
8545
  exports.isValidRgba = isValidRgba;
8546
+ exports.normalizeGradientValue = normalizeGradientValue;
8393
8547
  exports.parseGradient = parseGradient;
8394
8548
  exports.rgbaToArray = rgbaToArray;
8395
8549
  exports.rgbaToHex = rgbaToHex;