$ChooseShapeStyle = () => {
	const $chooser = $Choose(
		[
			{ stroke: true, fill: false },
			{ stroke: true, fill: true },
			{ stroke: false, fill: true },
		],
		({ stroke, fill }, is_chosen, reuse_canvas) => {
			const ss_canvas = reuse_canvas(39, 21);
			const ss_ctx = ss_canvas.ctx;

			// border px inwards amount
			let b = 5;

			const style = getComputedStyle(ss_canvas);
			ss_ctx.fillStyle = is_chosen ? style.getPropertyValue("--HilightText") : style.getPropertyValue("--WindowText");

			if (stroke) {
				// just using a solid rectangle for the stroke
				// so as not to have to deal with the pixel grid with strokes
				ss_ctx.fillRect(b, b, ss_canvas.width - b * 2, ss_canvas.height - b * 2);
			}

			// go inward a pixel for the fill
			b += 1;
			ss_ctx.fillStyle = style.getPropertyValue("--ButtonShadow");

			if (fill) {
				ss_ctx.fillRect(b, b, ss_canvas.width - b * 2, ss_canvas.height - b * 2);
			} else {
				ss_ctx.clearRect(b, b, ss_canvas.width - b * 2, ss_canvas.height - b * 2);
			}

			return ss_canvas;
		},
		({ stroke, fill }) => {
			$chooser.stroke = stroke;
			$chooser.fill = fill;
		},
		({ stroke, fill }) => $chooser.stroke === stroke && $chooser.fill === fill
	).addClass("choose-shape-style");

	$chooser.fill = false;
	$chooser.stroke = true;

	return $chooser;
}
@returns {JQuery<HTMLCanvasElement> & { stroke: boolean, fill: boolean }}