1.0.0 • Published 2 years ago
css-gradient v1.0.0
css-gradient
css gradient encapsulation
https://developer.mozilla.org/en-US/docs/Web/CSS/gradient/repeating-linear-gradient
https://developer.mozilla.org/en-US/docs/Web/CSS/gradient/repeating-conic-gradient
https://developer.mozilla.org/en-US/docs/Web/CSS/gradient/repeating-radial-gradient
export from gradient.ts
method parse() is to convert css function string to syntax object. method toString() is to output function string for css.
type RepeatingLinearGradient = {
	methodName: 'repeating-linear-gradient';
	syntax: LinearGradientSyntax;
	parse: (expression: `repeating-linear-gradient(${string})`) => RepeatingLinearGradient;
	toString: () => string;
}
type RepeatingConicGradient = {
	methodName: 'repeating-conic-gradient';
	syntax: ConicGradientSyntax;
	parse: (expression: `repeating-conic-gradient(${string})`) => RepeatingConicGradient;
	toString: () => string;
}
type RepeatingRadialGradient = {
	methodName: 'repeating-radial-gradient';
	syntax: RadialGradientSyntax;
	parse: (expression: `repeating-radial-gradient(${string})`) => RepeatingRadialGradient;
	toString: () => string;
}
... ...
export type { RepeatingLinearGradient, LinearGradientSyntax, RepeatingConicGradient, ConicGradientSyntax, RepeatingRadialGradient, RadialGradientSyntax, MixGradientSyntax, ColorStop, ColorHint };
export { RepeatingLinearGradientImpl, RepeatingConicGradientImpl, RepeatingRadialGradientImpl, isColor };use case
const mixGradientSyntax: MixGradientSyntax = reactive({
	angle: undefined,
	to: undefined,
	from: undefined,
	at: undefined,
	shape: undefined,
	size: undefined,
	colorStopList: [['#ff0000', '10%', '20%'], ['50%'], ['#00ff00', '30%'], ['transparent'], ['#0000ff']]
});
watch([curGradient, mixGradientSyntax], async(newVal, oldVal) => {
	//console.log(newVal, oldVal);
	switch(curGradient.value) {
		case 'repeating-conic-gradient':
			const conic = new RepeatingConicGradientImpl();
			conic.syntax = mixGradientSyntax;
			gradientEffect.backgroundImage = conic.toString();
			//console.log('conic......', conic.toString());
			break;
		case 'repeating-linear-gradient':
			const linear = new RepeatingLinearGradientImpl();
			linear.syntax = mixGradientSyntax;
			gradientEffect.backgroundImage = linear.toString();
			//console.log('linear......', linear.toString());
			break;
		case 'repeating-radial-gradient':
			const radial = new RepeatingRadialGradientImpl();
			radial.syntax = mixGradientSyntax;
			gradientEffect.backgroundImage = radial.toString();
			//console.log('radial......', radial.toString());
			break;
	}
}, { deep: true });1.0.0
2 years ago