@mozaic-ds/chart
Version:
<p align="center"> <img alt="ADEO Design system - Chart library" src="./.storybook/assets/adeo-design-system-chart-banner.svg" /> </p>
95 lines (85 loc) • 2.54 kB
text/typescript
export default function PatternSquares(
hover: boolean,
color: string = '#A274FF',
disableAccessibility: boolean = false
): CanvasPattern {
const patternCanvas: HTMLCanvasElement = document.createElement('canvas');
const ctx: CanvasRenderingContext2D | null = patternCanvas.getContext('2d');
if (!ctx) {
return new CanvasPattern();
}
const patternSize = 50;
const squareSize = patternSize * 0.15;
patternCanvas.width = patternSize;
patternCanvas.height = patternSize;
if (disableAccessibility === true) {
ctx.beginPath();
ctx.fillStyle = color;
ctx.rect(0.0, 0.0, patternSize, patternSize);
ctx.fill();
} else {
// background
ctx.beginPath();
ctx.fillStyle = '#FFFFFF';
ctx.lineWidth = 0.005 * patternSize;
ctx.rect(0.0, 0.0, patternSize, patternSize);
ctx.fill();
ctx.beginPath();
ctx.globalAlpha = 0.1;
ctx.fillStyle = color;
ctx.lineWidth = 0.005 * patternSize;
ctx.rect(0.0, 0.0, patternSize, patternSize);
ctx.fill();
// #rect4
ctx.beginPath();
ctx.globalAlpha = 0.7;
ctx.fillStyle = color;
ctx.lineWidth = 0.006 * patternSize;
ctx.rect(0.5 * patternSize, 0.0, squareSize, squareSize);
ctx.fill();
// #rect54
ctx.beginPath();
ctx.globalAlpha = 0.7;
ctx.fillStyle = color;
ctx.lineWidth = 0.006 * patternSize;
ctx.rect(0.75 * patternSize, patternSize / 2, squareSize, squareSize);
ctx.fill();
// #rect104
ctx.beginPath();
ctx.globalAlpha = 0.3;
ctx.fillStyle = color;
ctx.lineWidth = 0.006 * patternSize;
ctx.rect(0.0, 0.0, squareSize, squareSize);
ctx.fill();
// #rect154
ctx.beginPath();
ctx.globalAlpha = 0.3;
ctx.fillStyle = color;
ctx.lineWidth = 0.006 * patternSize;
ctx.rect(0.25 * patternSize, patternSize / 2, squareSize, squareSize);
ctx.fill();
}
// Hover Style
if (hover) {
ctx.beginPath();
ctx.globalAlpha = 0.5;
ctx.fillStyle = '#FFFFFF';
ctx.lineWidth = 0.006 * patternSize;
ctx.rect(0.0, 0.0, patternSize, patternSize);
ctx.fill();
}
// Create our primary canvas and fill it with the pattern
const canvas: HTMLCanvasElement = document.createElement('canvas');
const context: CanvasRenderingContext2D | null = canvas.getContext('2d');
if (!context) {
return new CanvasPattern();
}
const pattern: CanvasPattern | null = context.createPattern(
patternCanvas,
'repeat'
);
if (!pattern) {
return new CanvasPattern();
}
return pattern;
}