@wordpress/components
Version:
UI components for WordPress.
8 lines (7 loc) • 5.71 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../src/custom-gradient-picker/utils.ts"],
"sourcesContent": ["/**\n * External dependencies\n */\nimport gradientParser from 'gradient-parser';\nimport { colord, extend } from 'colord';\nimport namesPlugin from 'colord/plugins/names';\n\n/**\n * Internal dependencies\n */\nimport { DEFAULT_GRADIENT, HORIZONTAL_GRADIENT_ORIENTATION, DIRECTIONAL_ORIENTATION_ANGLE_MAP } from './constants';\nimport { serializeGradient } from './serializer';\nextend([namesPlugin]);\nexport function getLinearGradientRepresentation(gradientAST) {\n return serializeGradient({\n type: 'linear-gradient',\n orientation: HORIZONTAL_GRADIENT_ORIENTATION,\n colorStops: gradientAST.colorStops\n });\n}\nfunction hasUnsupportedLength(item) {\n return item.length === undefined || item.length.type !== '%';\n}\nexport function getGradientAstWithDefault(value) {\n // gradientAST will contain the gradient AST as parsed by gradient-parser npm module.\n // More information of its structure available at https://www.npmjs.com/package/gradient-parser#ast.\n let gradientAST;\n let hasGradient = !!value;\n const valueToParse = value ?? DEFAULT_GRADIENT;\n try {\n gradientAST = gradientParser.parse(valueToParse)[0];\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn('wp.components.CustomGradientPicker failed to parse the gradient with error', error);\n gradientAST = gradientParser.parse(DEFAULT_GRADIENT)[0];\n hasGradient = false;\n }\n if (!Array.isArray(gradientAST.orientation) && gradientAST.orientation?.type === 'directional') {\n gradientAST.orientation = {\n type: 'angular',\n value: DIRECTIONAL_ORIENTATION_ANGLE_MAP[gradientAST.orientation.value].toString()\n };\n }\n if (gradientAST.colorStops.some(hasUnsupportedLength)) {\n const {\n colorStops\n } = gradientAST;\n const step = 100 / (colorStops.length - 1);\n colorStops.forEach((stop, index) => {\n stop.length = {\n value: `${step * index}`,\n type: '%'\n };\n });\n }\n return {\n gradientAST,\n hasGradient\n };\n}\nexport function getGradientAstWithControlPoints(gradientAST, newControlPoints) {\n return {\n ...gradientAST,\n colorStops: newControlPoints.map(({\n position,\n color\n }) => {\n const {\n r,\n g,\n b,\n a\n } = colord(color).toRgb();\n return {\n length: {\n type: '%',\n value: position?.toString()\n },\n type: a < 1 ? 'rgba' : 'rgb',\n value: a < 1 ? [`${r}`, `${g}`, `${b}`, `${a}`] : [`${r}`, `${g}`, `${b}`]\n };\n })\n };\n}\nexport function getStopCssColor(colorStop) {\n switch (colorStop.type) {\n case 'hex':\n return `#${colorStop.value}`;\n case 'literal':\n return colorStop.value;\n case 'var':\n return `${colorStop.type}(${colorStop.value})`;\n case 'rgb':\n case 'rgba':\n return `${colorStop.type}(${colorStop.value.join(',')})`;\n case 'hsl':\n {\n const [hue, saturation, lightness] = colorStop.value;\n return `hsl(${hue},${saturation}%,${lightness}%)`;\n }\n case 'hsla':\n {\n const [hue, saturation, lightness, alpha] = colorStop.value;\n return `hsla(${hue},${saturation}%,${lightness}%,${alpha})`;\n }\n default:\n // Should be unreachable if passing an AST from gradient-parser.\n // See https://github.com/rafaelcaricio/gradient-parser#ast.\n return 'transparent';\n }\n}"],
"mappings": "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",
"names": ["namesPlugin", "gradientParser"]
}