vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
1 lines • 6.83 kB
Source Map (JSON)
{"version":3,"file":"hollow-paths.cjs","sources":["../../../components/captcha/hollow-paths.ts"],"sourcesContent":["export interface CaptchaHollowOptions {\n ctx: CanvasRenderingContext2D,\n /**\n * The x coordinate of slide target center\n */\n x: number,\n /**\n * The y coordinate of slide target center\n */\n y: number,\n /**\n * Current canvas width\n */\n width: number,\n /**\n * Current canvas height\n */\n height: number\n}\n\n/**\n * Specify the react of the hollow's shape\n */\nexport type CaptchaHollowResult = [x: number, y: number, width: number, height: number]\nexport type CaptchaHollowProcess = (options: CaptchaHollowOptions) => CaptchaHollowResult\n\nexport type CaptchaHollowType = 'square' | 'puzzle' | 'shield' | 'heart'\n\nexport const squarePath: CaptchaHollowProcess = ({ ctx, x, y, width, height }) => {\n const side = Math.min(width, height) * 0.25\n const halfSide = side * 0.5\n\n ctx.moveTo(x - halfSide, y - halfSide)\n ctx.lineTo(x + halfSide, y - halfSide)\n ctx.lineTo(x + halfSide, y + halfSide)\n ctx.lineTo(x - halfSide, y + halfSide)\n ctx.closePath()\n\n return [x - halfSide - 2, y - halfSide - 2, side + 4, side + 4]\n}\n\nexport const puzzlePath: CaptchaHollowProcess = ({ ctx, x, y, width, height }) => {\n const side = Math.min(width, height) * 0.2\n const halfSide = side * 0.5\n const left = x - halfSide\n const top = y - halfSide\n const radius = side * 0.2\n\n ctx.moveTo(left, top)\n ctx.arc(left + halfSide, top - radius + 2, radius, 0.72 * Math.PI, 2.26 * Math.PI)\n ctx.lineTo(left + side, top)\n ctx.arc(left + side + radius - 2, top + halfSide, radius, 1.21 * Math.PI, 2.78 * Math.PI)\n ctx.lineTo(left + side, top + side)\n ctx.lineTo(left, top + side)\n ctx.arc(left + radius - 2, top + halfSide, radius + 0.4, 2.76 * Math.PI, 1.24 * Math.PI, true)\n ctx.lineTo(left, top)\n\n return [x - halfSide - 2, y - side * 0.9 - 2, side * 1.4 + 4, side * 1.4 + 4]\n}\n\nexport const shieldPath: CaptchaHollowProcess = ({ ctx, x, y, width, height }) => {\n const side = Math.min(width, height) * 0.25\n const halfSide = side * 0.5\n\n ctx.moveTo(x, y - halfSide)\n ctx.bezierCurveTo(\n x,\n y - halfSide + side * 0.05,\n x - halfSide + side * 0.3,\n y - halfSide * 0.5 + side * 0.1,\n x - halfSide,\n y - halfSide * 0.7,\n )\n ctx.bezierCurveTo(x - halfSide, y + side * 0.3, x - side * 0.1, y + halfSide, x, y + halfSide)\n ctx.bezierCurveTo(\n x + side * 0.1,\n y + halfSide,\n x + halfSide,\n y + side * 0.3,\n x + halfSide,\n y - halfSide * 0.7,\n )\n ctx.bezierCurveTo(\n x + halfSide - side * 0.3,\n y - halfSide * 0.5 + side * 0.1,\n x,\n y - halfSide + side * 0.05,\n x,\n y - halfSide,\n )\n\n return [x - halfSide - 2, y - halfSide - 2, side + 4, side + 4]\n}\n\nexport const heartPath: CaptchaHollowProcess = ({ ctx, x, y, width, height }) => {\n const side = Math.min(width, height) * 0.25\n const halfSide = side * 0.5\n\n ctx.moveTo(x, y - side * 0.25)\n ctx.bezierCurveTo(\n x,\n y - side * 0.4,\n x - side * 0.1,\n y - halfSide,\n x - halfSide * 0.5,\n y - halfSide,\n )\n ctx.bezierCurveTo(\n x - halfSide * 0.5 - side * 0.1,\n y - halfSide,\n x - halfSide,\n y - side * 0.4,\n x - halfSide,\n y - side * 0.2,\n )\n ctx.bezierCurveTo(\n x - halfSide,\n y + side * 0.2,\n x - side * 0.05,\n y + halfSide * 0.8,\n x,\n y + halfSide * 0.8,\n )\n ctx.bezierCurveTo(\n x + side * 0.05,\n y + halfSide * 0.8,\n x + halfSide,\n y + side * 0.2,\n x + halfSide,\n y - side * 0.2,\n )\n ctx.bezierCurveTo(\n x + halfSide,\n y - side * 0.4,\n x + halfSide * 0.5 + side * 0.1,\n y - halfSide,\n x + halfSide * 0.5,\n y - halfSide,\n )\n ctx.bezierCurveTo(x + side * 0.1, y - halfSide, x, y - side * 0.4, x, y - side * 0.25)\n\n return [x - halfSide - 2, y - halfSide - 2, side + 4, side * 0.9 + 4]\n}\n"],"names":["squarePath","ctx","x","y","width","height","side","halfSide","puzzlePath","left","top","radius","shieldPath","heartPath"],"mappings":"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"}