/*
 * Copyright 2024 Palantir Technologies, Inc. All rights reserved.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import * as React from "react";
import type { SVGIconProps } from "../../svgIconProps";
import { IconSize } from "../../iconTypes";
import { SVGIconContainer } from "../../svgIconContainer";

export const DataSync: React.FC<SVGIconProps> = React.forwardRef<any, SVGIconProps>((props, ref) => {
    const isLarge = (props.size ?? IconSize.STANDARD) >= IconSize.LARGE;
    const pixelGridSize = isLarge ? IconSize.LARGE : IconSize.STANDARD;
    const translation = `${-1 * pixelGridSize / 0.05 / 2}`;
    const style = { transformOrigin: "center" };
    return (
        <SVGIconContainer iconName="data-sync" ref={ref} {...props}>
            <path
                d={isLarge ? "M20 318V210C20 184.14 82.9 162.84 163.58 160.26L171.66 168.34A40 40 0 0 0 200 180C210.96 180 221.04 175.66 228.34 168.34L233.78 162.9Q236.98 163.24 240.14 163.66C240.88 172.9 244.5 181.78 251.34 188.66C259.12 196.4 269.4600000000001 200 280 200A99.2 99.2 0 0 0 325.36 189.08C334.76 195.44 340 202.5200000000001 340 210V318C310.2 295.4 249.8 280 180 280C110.4 280 50 295.4 20 318M20 178C44.8 159.32 90.32 145.56 144.66 141.36L131.66 128.36A40.06 40.06 0 0 1 162 60.04C165 45.24 171.3 31.64 180.08 19.98H180C91.6 19.98 20 42.38 20 69.98zM180 300C268.4 300 340 322.4 340 350S268.4 400 180 400S20 377.6 20 350S91.8 300 180 300M280 180C324 180 360 144 360 100V88.2L365.8 94C369.4 97.8 374.4 100 380 100A20.06 20.06 0 0 0 394.2000000000001 65.8L354.2000000000001 25.8C350.6 22.2 345.6 20 340 20S329.4 22.2 325.8 25.8L285.8 65.8A20.06 20.06 0 0 0 314.2 94.2L320 88.2V100C320 122 302 140 280 140C268 140 260 148 260 160S268 180 280 180M160 80C165.6 80 170.6 82.2 174.1999999999999 85.8L180 91.8V80C180 36 216 0 260 0C272 0 280 8 280 20S272 40 260 40C238 40 220 58 220 80V91.8L225.7999999999999 86C229.3999999999999 82.2000000000001 234.3999999999999 80 240 80A20.06 20.06 0 0 1 254.2 114.2000000000001L214.1999999999999 154.2A20 20 0 0 1 200 160C194.4 160 189.4 157.8 185.8 154.2L145.8 114.2000000000001A20.06 20.06 0 0 1 160 80" : "M140 240C206.2 240 260 258 260 280S206.2 320 140 320C73.6 320 20 302 20 280S73.6 240 140 240M20 249.6V160C20 149 33.4 139.02 55.1 131.78L91.66 168.34A40 40 0 0 0 120 180C130.96 180 141.04 175.64 148.34 168.34L160.14 156.54A40 40 0 0 0 160 160C160 170.54 163.6 180.88 171.36 188.64S189.46 200 200 200A99.4 99.4 0 0 0 260 179.9V249.6C235.6 232 191.2 220 140 220S44.4 232 20 249.6M20 129.6C26.54 124.88 34.5 120.58 43.64 116.8A40.06 40.06 0 0 1 82 60.06A100.4 100.4 0 0 1 119.34 0.6C62.96 3.88 20 20.34 20 40zM280 100C280 144 244 180 200 180C188 180 180 172 180 160S188 140 200 140C222 140 240 122 240 100V88.2L234.2 94.2A20.06 20.06 0 0 1 205.8 65.8L245.8 25.8C249.4 22.2 254.4 20.0000000000001 260 20.0000000000001S270.6 22.2 274.2000000000001 25.8L314.2000000000001 65.8A20.06 20.06 0 0 1 300 100C294.4000000000001 100 289.4000000000001 97.8 285.8 94L280 88.2zM94.2 85.8A20.06 20.06 0 0 0 65.8 114.2L105.8 154.2C109.4 157.8 114.4 160 120 160S130.6 157.8 134.2 154.2L174.2 114.2A20.06 20.06 0 0 0 160 80C154.4 80 149.4 82.2 145.8 86L140 91.8V80C140 58 158 40 180 40C192 40 200 32 200 20S192 0 180 0C136 0 100 36 100 80V91.8z"}
                fillRule="evenodd"
                transform={`scale(0.05, -0.05) translate(${translation}, ${translation})`}
                style={style}
            />
        </SVGIconContainer>
   );
});
DataSync.displayName = `Blueprint6.Icon.DataSync`;
export default DataSync;
