/*
 * 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";

/** Path data for the 16px grid; matches {@link generate-icon-paths.mjs} / `<Icon />` from core. */
const PATHS_16 = ["M10.643 6.595c.22.418.344.894.344 1.399 0 .439-.094.855-.263 1.231l3.265 3.462-.002-1.75a.97.97 0 0 1 .314-.68.99.99 0 0 1 1.388.048c.186.2.316.46.3.715l-.009 4.03a.96.96 0 0 1-.3.68.97.97 0 0 1-.698.266l-4.053.002a.97.97 0 0 1-.679-.314 1.03 1.03 0 0 1 .05-1.42.97.97 0 0 1 .698-.266l1.7-.001-3.305-3.35a2.998 2.998 0 0 1-4.228-1.653H.999a1 1 0 0 1 0-2h4.166a3 3 0 0 1 4.06-1.735l3.449-3.268-1.745.002a.979.979 0 0 1-.631-1.692c.199-.186.459-.316.713-.3l4.025.009c.247.008.493.1.679.3s.274.451.265.7l.002 4.046a.97.97 0 0 1-.313.68 1.03 1.03 0 0 1-1.42-.05.97.97 0 0 1-.266-.7V3.295z"] as readonly string[];

/** Path data for the 20px grid; matches {@link generate-icon-paths.mjs} / `<Icon />` from core. */
const PATHS_20 = ["M14.425 7.953a4 4 0 0 1 .562 2.045 4 4 0 0 1-.583 2.08L18 15.671V12.98c0-.248.097-.496.29-.689a1.035 1.035 0 0 1 1.426 0 .94.94 0 0 1 .283.696l-.001 5.049a.96.96 0 0 1-.276.69.96.96 0 0 1-.69.273h-5.059a.97.97 0 0 1-.689-.289 1.026 1.026 0 0 1 0-1.417.97.97 0 0 1 .69-.29h2.702l-3.634-3.573a3.998 3.998 0 0 1-5.924-2.431H1a1 1 0 0 1 0-2h6.12a3.998 3.998 0 0 1 5.96-2.409L16.665 3l-2.694-.001a.97.97 0 0 1-.689-.29 1.035 1.035 0 0 1 0-1.425.94.94 0 0 1 .696-.283l5.05.001a.96.96 0 0 1 .69.276.95.95 0 0 1 .272.69l.001 5.052a.97.97 0 0 1-.29.689 1.03 1.03 0 0 1-1.419 0 .97.97 0 0 1-.29-.69V4.323z"] as readonly string[];

export const FlowBranch: React.FC<SVGIconProps> = React.forwardRef<any, SVGIconProps>((props, ref) => {
    const isLarge = (props.size ?? IconSize.STANDARD) >= IconSize.LARGE;
    const paths = isLarge ? PATHS_20 : PATHS_16;
    return (
        <SVGIconContainer iconName="flow-branch" ref={ref} {...props}>
            {paths.map((d, i) => (
                <path key={i} d={d} fillRule="evenodd" />
            ))}
        </SVGIconContainer>
    );
});
FlowBranch.displayName = `Blueprint6.Icon.FlowBranch`;
export default FlowBranch;
