UNPKG

romaine-components

Version:
1 lines 39.3 kB
{"version":3,"file":"index.jsx","sources":["../src/components/FolderSelection.tsx","../src/components/icons/IconWrapper.tsx","../src/components/icons/CropperIcon.tsx","../src/components/icons/FullReset.tsx","../src/components/icons/PerspectiveIcon.tsx","../src/components/icons/RotateLeft.tsx","../src/components/icons/RotateRight.tsx","../src/components/icons/UndoIcon.tsx","../src/components/icons/FlipHorizontal.tsx","../src/components/icons/FlipVertical.tsx"],"sourcesContent":["import React, { useEffect, useReducer, useState } from \"react\";\n\ninterface Props\n extends React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n > {\n handleDrop?: (\n File: FileList | null,\n ev: React.DragEvent<HTMLDivElement>\n ) => void;\n getFiles?: (File: FileList | string | null) => void;\n children?: React.ReactNode;\n image: File | string | null;\n menu?: boolean;\n outline?: boolean;\n}\n\nexport const FolderSelection = ({\n handleDrop,\n getFiles,\n children,\n image,\n outline = true,\n menu = false,\n ...props\n}: Props) => {\n const initialInputStyles: React.CSSProperties = {\n display: \"none\",\n };\n const initialLabelStyles: React.CSSProperties = {\n position: \"relative\",\n display: \"grid\",\n placeItems: \"center\",\n width: \"100%\",\n height: \"100%\",\n outline: outline ? \"thin solid black\" : undefined,\n };\n const initialDivStyles: React.CSSProperties = {\n position: \"absolute\",\n inset: 0,\n zIndex: 2000,\n backgroundColor: \"white\",\n };\n const hoverInputStyles: React.CSSProperties = {\n position: \"absolute\",\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n display: \"block\",\n visibility: \"hidden\",\n };\n const hoverLabelStyles: React.CSSProperties = {\n position: \"relative\",\n display: \"grid\",\n placeItems: \"center\",\n width: \"100%\",\n height: \"100%\",\n outline: outline ? \"thin solid black\" : undefined,\n backgroundColor: \"lightblue\",\n };\n const hoverDivStyles: React.CSSProperties = {\n position: \"absolute\",\n inset: 0,\n backgroundColor: \"white\",\n zIndex: 2000,\n };\n const finalInputStyles: React.CSSProperties = {\n position: \"absolute\",\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n display: \"block\",\n visibility: \"hidden\",\n };\n const finalLabelStyles: React.CSSProperties = {\n position: \"relative\",\n display: \"grid\",\n placeItems: \"center\",\n width: \"100%\",\n height: \"100%\",\n outline: outline ? \"thin solid black\" : undefined,\n cursor: \"pointer\",\n };\n const finalDivStyles: React.CSSProperties = {\n display: menu ? \"hidden\" : \"flex\",\n position: \"absolute\",\n right: 0,\n bottom: 0,\n zIndex: 300,\n width: \"240px\",\n };\n\n const initialState = {\n inputStyles: initialInputStyles,\n labelStyles: initialLabelStyles,\n divStyles: initialDivStyles,\n };\n\n type Reducer<S, A> = (prevState: S, action: A) => S;\n const reducer: Reducer<typeof initialState, \"initial\" | \"hover\" | \"final\"> = (\n state,\n action\n ) => {\n if (action === \"initial\")\n return {\n inputStyles: initialInputStyles,\n labelStyles: initialLabelStyles,\n divStyles: initialDivStyles,\n };\n if (action === \"hover\")\n return {\n inputStyles: hoverInputStyles,\n labelStyles: hoverLabelStyles,\n divStyles: hoverDivStyles,\n };\n if (action === \"final\")\n return {\n inputStyles: finalInputStyles,\n labelStyles: finalLabelStyles,\n divStyles: finalDivStyles,\n };\n\n return { ...state };\n };\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n useEffect(() => {\n if (image) dispatch(\"final\");\n const preventDefault = (event: DragEvent) => {\n event.preventDefault();\n };\n const preventDefaultDrop = (event: DragEvent) => {\n dispatch(\"final\");\n event.preventDefault();\n };\n const dragEnter = () => {\n dispatch(\"hover\");\n };\n const dragExit = () => {\n dispatch(image ? \"final\" : \"initial\");\n };\n\n window.addEventListener(\"dragover\", preventDefault);\n window.addEventListener(\"drop\", preventDefaultDrop);\n window.addEventListener(\"dragenter\", dragEnter);\n window.addEventListener(\"dragexit\", dragExit);\n return () => {\n window.removeEventListener(\"dragover\", preventDefault);\n window.removeEventListener(\"drop\", preventDefault);\n window.removeEventListener(\"dragenter\", dragEnter);\n window.removeEventListener(\"dragexit\", dragExit);\n };\n // @eslint-disable-next-line react-hooks/exhaustive-deps\n }, [image]);\n //https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/File_drag_and_drop\n function dropHandler(ev: React.DragEvent<HTMLDivElement>) {\n ev.preventDefault();\n const files = ev.dataTransfer ? ev.dataTransfer.files : null;\n handleDrop && handleDrop(files, ev);\n getFiles && getFiles(files);\n dispatch(\"initial\");\n }\n const [inputValue, setInputValue] =\n useState<React.InputHTMLAttributes<HTMLInputElement>[\"value\"]>();\n\n return (\n <div onDrop={dropHandler} style={state.divStyles}>\n <label\n id=\"drop_zone\"\n htmlFor=\"romaine-folder-input\"\n style={state.labelStyles}\n >\n <input\n type=\"file\"\n value={inputValue}\n {...props}\n style={{ ...state.inputStyles, ...props.style }}\n id=\"romaine-folder-input\"\n onChange={(e) => {\n props.onChange && props.onChange(e);\n setInputValue(e.target.value);\n getFiles && getFiles(e.target.files);\n dispatch(\"final\");\n }}\n />\n {children}\n </label>\n </div>\n );\n};\n","import React, { useState } from \"react\";\nimport type { DetailedHTMLProps, HTMLAttributes } from \"react\";\nimport { RomaineModes, useRomaine } from \"romaine\";\n\nexport type IconProps = DetailedHTMLProps<\n HTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n> & {\n selected?: boolean | RomaineModes;\n tooltip?: string;\n disabled?: boolean;\n};\n\nexport const IconWrapper = ({\n selected,\n children,\n tooltip,\n disabled = false,\n ...props\n}: IconProps) => {\n const {\n romaine: { mode },\n } = useRomaine();\n const [hover, sethover] = useState<boolean>(false);\n return (\n <abbr\n style={{\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n display: \"block\",\n width: \"100%\",\n height: \"100%\",\n }}\n title={tooltip}\n aria-label={tooltip}\n >\n <button\n onMouseEnter={() => sethover(true)}\n onMouseLeave={() => sethover(false)}\n {...props}\n style={{\n border:\n selected === true || selected === mode || hover\n ? \"thin solid black\"\n : \"thin solid transparent\",\n borderRadius: \"4px\",\n backgroundColor: hover\n ? \"#888\"\n : selected === true || selected === mode\n ? \"#555\"\n : \"#fff0\",\n display: \"grid\",\n placeItems: \"center\",\n height: \"100%\",\n width: \"100%\",\n pointerEvents: disabled ? \"none\" : \"all\",\n ...props.style,\n }}\n >\n {children}\n </button>\n </abbr>\n );\n};\n","import React, { useEffect } from \"react\";\nimport { IconWrapper } from \"./IconWrapper\";\nimport { useRomaine } from \"romaine\";\n\nexport const CropperIcon = (\n props: React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >\n) => {\n const { setMode } = useRomaine();\n useEffect(() => {\n // using keydown because it already requires another key to be pressed\n const eventListenerCropper = (e: KeyboardEvent) => {\n if (!e.ctrlKey && e.shiftKey && e.key === \"C\") {\n e.preventDefault();\n setMode?.(\"crop\");\n }\n };\n window.removeEventListener(\"keydown\", eventListenerCropper);\n window.addEventListener(\"keydown\", eventListenerCropper);\n return () => {\n window.removeEventListener(\"keydown\", eventListenerCropper);\n };\n }, [setMode]);\n return (\n <IconWrapper\n {...props}\n onClick={() => setMode && setMode(\"crop\")}\n selected=\"crop\"\n tooltip=\"Crop Tool (Shift + C)\"\n >\n <svg\n stroke=\"currentColor\"\n fill=\"none\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n height={props.style?.height || \"25px\"}\n width={props.style?.width || \"25px\"}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M6.13 1L6 16a2 2 0 0 0 2 2h15\"></path>\n <path d=\"M1 6.13L16 6a2 2 0 0 1 2 2v15\"></path>\n </svg>\n </IconWrapper>\n );\n};\n","import React, { useCallback, useEffect } from \"react\";\nimport { IconWrapper } from \"./IconWrapper\";\nimport { useRomaine } from \"romaine\";\n\n/**\n * @copyright The SVG comes from: Remix Icons https://remixicon.com/\n * @license `Apache 2.0`\n */\nexport const FullReset = (\n props: React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >\n) => {\n const {\n setMode,\n romaine: {\n history: {\n pointer,\n commands: { length },\n },\n },\n } = useRomaine();\n // using keydown because it already requires another key to be pressed\n const eventListenerCropper = useCallback(\n (e: KeyboardEvent) => {\n if (e.ctrlKey && e.shiftKey && e.key === \"Z\") {\n e.preventDefault();\n pointer &&\n window.confirm(\n \"Are you sure you want to reset this image? All current cropping progress will be lost.\"\n ) &&\n setMode?.(\"full-reset\");\n }\n },\n [pointer, setMode]\n );\n useEffect(() => {\n window.removeEventListener(\"keydown\", eventListenerCropper);\n window.addEventListener(\"keydown\", eventListenerCropper);\n return () => {\n window.removeEventListener(\"keydown\", eventListenerCropper);\n };\n }, [eventListenerCropper]);\n return (\n <IconWrapper\n {...props}\n onClick={() =>\n window.confirm(\n \"Are you sure you want to reset this image? All current cropping progress will be lost.\"\n ) &&\n setMode &&\n setMode(\"full-reset\")\n }\n selected=\"full-reset\"\n tooltip={\"Reinitialize Image (Ctrl + Shift + Z)\"}\n disabled={!length}\n >\n <svg\n stroke=\"currentColor\"\n fill=\"currentColor\"\n strokeWidth=\"0\"\n viewBox=\"0 0 24 24\"\n height={props.style?.height || \"25px\"}\n width={props.style?.width || \"25px\"}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g>\n <path fill=\"none\" d=\"M0 0h24v24H0z\"></path>\n <path d=\"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm4.82-4.924A7 7 0 0 0 9.032 5.658l.975 1.755A5 5 0 0 1 17 12h-3l2.82 5.076zm-1.852 1.266l-.975-1.755A5 5 0 0 1 7 12h3L7.18 6.924a7 7 0 0 0 7.788 11.418z\"></path>\n </g>\n </svg>\n </IconWrapper>\n );\n};\n","import React, { useEffect } from \"react\";\nimport { IconWrapper } from \"./IconWrapper\";\nimport { useRomaine } from \"romaine\";\n\nexport const PerspectiveIcon = (\n props: React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >\n) => {\n const { setMode } = useRomaine();\n useEffect(() => {\n // using keydown because it already requires another key to be pressed\n const eventListenerPerspective = (e: KeyboardEvent) => {\n if (e.ctrlKey && e.shiftKey && e.key === \"C\") {\n e.preventDefault();\n setMode && setMode(\"perspective-crop\");\n }\n };\n window.removeEventListener(\"keydown\", eventListenerPerspective);\n window.addEventListener(\"keydown\", eventListenerPerspective);\n return () => {\n window.removeEventListener(\"keydown\", eventListenerPerspective);\n };\n }, [setMode]);\n return (\n <IconWrapper\n {...props}\n onClick={() => setMode && setMode(\"perspective-crop\")}\n selected=\"perspective-crop\"\n tooltip={\"Perspective Cropper (Ctrl + Shift + C)\"}\n >\n <svg\n stroke=\"currentColor\"\n fill=\"currentColor\"\n strokeWidth=\"0\"\n viewBox=\"0 0 512 512\"\n height={props.style?.height || \"25px\"}\n width={props.style?.width || \"25px\"}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M208 151c-28 0-60.378 17.102-90.992 37.512-30.615 20.41-58.84 44.594-75.37 61.125L35.27 256l6.367 6.363c16.53 16.53 44.756 40.716 75.37 61.125C147.623 343.898 180 361 208 361h3.73l2.633-2.637c8.644-8.643 15.787-18.62 21.49-29.47-20.47-1.078-36.916-10.11-47.767-23.13C176.512 291.872 171 273.874 171 256c0-17.875 5.512-35.873 17.086-49.762 10.85-13.02 27.297-22.053 47.768-23.13-5.704-10.85-12.847-20.828-21.49-29.47L211.728 151H208zm32 50c-17.6 0-29.66 6.65-38.086 16.762C193.488 227.872 189 241.875 189 256s4.488 28.127 12.914 38.238C210.34 304.348 222.4 311 240 311h3.7c1.89-5.276 3.485-10.685 4.796-16.182-2.5 1.36-5.324 2.182-8.496 2.182-9.282 0-15.65-6.92-19.363-14.348-3.715-7.428-5.637-16.6-5.637-26.652 0-10.053 1.922-19.224 5.637-26.652C224.35 221.918 230.717 215 240 215c3.172 0 5.995.822 8.496 2.182-1.31-5.497-2.905-10.906-4.797-16.182H240zm176 7v32h-96v32h96v32l48-48-48-48zm-168 16a8 16 0 0 0-8 16 8 16 0 0 0 8 16 8 16 0 0 0 8-16 8 16 0 0 0-8-16z\"></path>\n </svg>\n </IconWrapper>\n );\n};\n","import React from \"react\";\nimport { IconWrapper } from \"./IconWrapper\";\nimport { useRomaine } from \"romaine\";\n\n/**\n * @todo\n * 1) Need the ability to change angle for rotation\n * 1) Need to add angle of rotation to the Romaine context and create a reducer helper to change value\n *\n *\n * This needs to be done in romaine not romaine-components (here)\n * 2) Need to dynamically add an input that can change the angle of rotation\n * @copyright The SVG comes from: Ant Design Icons https://github.com/ant-design/ant-design-icons\n * @license MIT\n */\nexport const RotateLeft = (\n props: React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >\n) => {\n const { setMode } = useRomaine();\n return (\n <IconWrapper\n {...props}\n onClick={() => setMode && setMode(\"rotate-left\")}\n selected=\"rotate-left\"\n >\n <svg\n stroke=\"currentColor\"\n fill=\"currentColor\"\n strokeWidth=\"0\"\n viewBox=\"0 0 1024 1024\"\n version=\"1.1\"\n height={props.style?.height || \"25px\"}\n width={props.style?.width || \"25px\"}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <defs></defs>\n <path d=\"M672 418H144c-17.7 0-32 14.3-32 32v414c0 17.7 14.3 32 32 32h528c17.7 0 32-14.3 32-32V450c0-17.7-14.3-32-32-32z m-44 402H188V494h440v326z\"></path>\n <path d=\"M819.3 328.5c-78.8-100.7-196-153.6-314.6-154.2l-0.2-64c0-6.5-7.6-10.1-12.6-6.1l-128 101c-4 3.1-3.9 9.1 0 12.3L492 318.6c5.1 4 12.7 0.4 12.6-6.1v-63.9c12.9 0.1 25.9 0.9 38.8 2.5 42.1 5.2 82.1 18.2 119 38.7 38.1 21.2 71.2 49.7 98.4 84.3 27.1 34.7 46.7 73.7 58.1 115.8 11 40.7 14 82.7 8.9 124.8-0.7 5.4-1.4 10.8-2.4 16.1h74.9c14.8-103.6-11.3-213-81-302.3z\"></path>\n </svg>\n </IconWrapper>\n );\n};\n","import React from \"react\";\nimport { IconWrapper } from \"./IconWrapper\";\nimport { useRomaine } from \"romaine\";\n\n/**\n * @copyright Ant Design Icons https://github.com/ant-design/ant-design-icons\n * @license MIT\n */\nexport const RotateRight = (\n props: React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >\n) => {\n const { setMode } = useRomaine();\n return (\n <IconWrapper\n selected=\"rotate-right\"\n {...props}\n onClick={() => setMode && setMode(\"rotate-right\")}\n >\n <svg\n stroke=\"currentColor\"\n fill=\"currentColor\"\n strokeWidth=\"0\"\n viewBox=\"0 0 1024 1024\"\n version=\"1.1\"\n height={props.style?.height || \"25px\"}\n width={props.style?.width || \"25px\"}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <defs></defs>\n <path d=\"M480.5 251.2c13-1.6 25.9-2.4 38.8-2.5v63.9c0 6.5 7.5 10.1 12.6 6.1L660 217.6c4-3.2 4-9.2 0-12.3l-128-101c-5.1-4-12.6-0.4-12.6 6.1l-0.2 64c-118.6 0.5-235.8 53.4-314.6 154.2-69.6 89.2-95.7 198.6-81.1 302.4h74.9c-0.9-5.3-1.7-10.7-2.4-16.1-5.1-42.1-2.1-84.1 8.9-124.8 11.4-42.2 31-81.1 58.1-115.8 27.2-34.7 60.3-63.2 98.4-84.3 37-20.6 76.9-33.6 119.1-38.8z\"></path>\n <path d=\"M880 418H352c-17.7 0-32 14.3-32 32v414c0 17.7 14.3 32 32 32h528c17.7 0 32-14.3 32-32V450c0-17.7-14.3-32-32-32z m-44 402H396V494h440v326z\"></path>\n </svg>\n </IconWrapper>\n );\n};\n","import React, { useCallback, useEffect } from \"react\";\nimport { IconWrapper } from \"./IconWrapper\";\nimport { useRomaine } from \"romaine\";\n\nexport const UndoIcon = (\n props: React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >\n) => {\n const {\n setMode,\n romaine: {\n history: { pointer },\n },\n } = useRomaine();\n // using keydown because it already requires another key to be pressed\n const eventListenerCropper = useCallback(\n (e: KeyboardEvent) => {\n if (e.ctrlKey && /z/i.test(e.key)) {\n e.preventDefault();\n pointer && setMode?.(\"undo\");\n }\n },\n [pointer, setMode]\n );\n useEffect(() => {\n window.removeEventListener(\"keydown\", eventListenerCropper);\n window.addEventListener(\"keydown\", eventListenerCropper);\n return () => {\n window.removeEventListener(\"keydown\", eventListenerCropper);\n };\n }, [eventListenerCropper]);\n return (\n <IconWrapper\n {...props}\n onClick={() => setMode?.(\"undo\")}\n selected=\"undo\"\n tooltip=\"Undo (Ctrl + Z)\"\n disabled={!pointer}\n >\n <svg\n stroke=\"currentColor\"\n fill=\"currentColor\"\n strokeWidth=\"0\"\n viewBox=\"0 0 1024 1024\"\n height={props.style?.height || \"25px\"}\n width={props.style?.width || \"25px\"}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M511.4 124C290.5 124.3 112 303 112 523.9c0 128 60.2 242 153.8 315.2l-37.5 48c-4.1 5.3-.3 13 6.3 12.9l167-.8c5.2 0 9-4.9 7.7-9.9L369.8 727a8 8 0 0 0-14.1-3L315 776.1c-10.2-8-20-16.7-29.3-26a318.64 318.64 0 0 1-68.6-101.7C200.4 609 192 567.1 192 523.9s8.4-85.1 25.1-124.5c16.1-38.1 39.2-72.3 68.6-101.7 29.4-29.4 63.6-52.5 101.7-68.6C426.9 212.4 468.8 204 512 204s85.1 8.4 124.5 25.1c38.1 16.1 72.3 39.2 101.7 68.6 29.4 29.4 52.5 63.6 68.6 101.7 16.7 39.4 25.1 81.3 25.1 124.5s-8.4 85.1-25.1 124.5a318.64 318.64 0 0 1-68.6 101.7c-7.5 7.5-15.3 14.5-23.4 21.2a7.93 7.93 0 0 0-1.2 11.1l39.4 50.5c2.8 3.5 7.9 4.1 11.4 1.3C854.5 760.8 912 649.1 912 523.9c0-221.1-179.4-400.2-400.6-399.9z\"></path>\n </svg>\n </IconWrapper>\n );\n};\n","import React, { useEffect } from \"react\";\nimport { IconWrapper } from \"./IconWrapper\";\nimport { useRomaine } from \"romaine\";\n\nexport const FlipHorizontalIcon = (\n props: React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >\n) => {\n const { setMode } = useRomaine();\n useEffect(() => {\n // using keydown because it already requires another key to be pressed\n const eventListenerFlipHorizontal = (e: KeyboardEvent) => {\n if (e.ctrlKey && e.shiftKey && e.key === \"_\") {\n e.preventDefault();\n setMode?.(\"flip-horizontal\");\n }\n };\n window.removeEventListener(\"keydown\", eventListenerFlipHorizontal);\n window.addEventListener(\"keydown\", eventListenerFlipHorizontal);\n return () => {\n window.removeEventListener(\"keydown\", eventListenerFlipHorizontal);\n };\n }, [setMode]);\n return (\n <IconWrapper\n {...props}\n onClick={() => setMode?.(\"flip-horizontal\")}\n selected=\"flip-horizontal\"\n tooltip=\"Flip Horizontal (Ctrl + Shift + _)\"\n >\n <svg\n stroke=\"currentColor\"\n fill=\"none\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n height={props.style?.height || \"25px\"}\n width={props.style?.width || \"25px\"}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"></path>\n <path d=\"M3 12l18 0\"></path>\n <path d=\"M7 16l10 0l-10 5l0 -5\"></path>\n <path d=\"M7 8l10 0l-10 -5l0 5\"></path>\n </svg>\n </IconWrapper>\n );\n};\n","import React, { useEffect } from \"react\";\nimport { IconWrapper } from \"./IconWrapper\";\nimport { useRomaine } from \"romaine\";\n\nexport const FlipVerticalIcon = (\n props: React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >\n) => {\n const { setMode } = useRomaine();\n useEffect(() => {\n // using keydown because it already requires another key to be pressed\n const eventListenerFlipVertical = (e: KeyboardEvent) => {\n if (e.ctrlKey && e.shiftKey && e.key === \"|\") {\n e.preventDefault();\n setMode?.(\"flip-vertical\");\n }\n };\n window.removeEventListener(\"keydown\", eventListenerFlipVertical);\n window.addEventListener(\"keydown\", eventListenerFlipVertical);\n return () => {\n window.removeEventListener(\"keydown\", eventListenerFlipVertical);\n };\n }, [setMode]);\n return (\n <IconWrapper\n {...props}\n onClick={() => setMode?.(\"flip-vertical\")}\n selected=\"flip-vertical\"\n tooltip=\"Flip Vertical (Ctrl + Shift + |)\"\n >\n <svg\n stroke=\"currentColor\"\n fill=\"none\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n height={props.style?.height || \"25px\"}\n width={props.style?.width || \"25px\"}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"></path>\n <path d=\"M12 3l0 18\"></path>\n <path d=\"M16 7l0 10l5 0l-5 -10\"></path>\n <path d=\"M8 7l0 10l-5 0l5 -10\"></path>\n </svg>\n </IconWrapper>\n );\n};\n"],"names":[],"mappings":"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"}