/*
 * 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 ArrayObject: 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="array-object" ref={ref} {...props}>
            <path
                d={isLarge ? "M380 400A20 20 0 0 0 399.86 382.34L400 380V20A20 20 0 0 0 382.3400000000001 0.14L380 0H300A20 20 0 0 0 297.66 39.86L300 40H360V360H300A20 20 0 0 0 280.14 377.6600000000001L280 380A20 20 0 0 0 297.66 399.86L300 400zM100 400A20 20 0 0 0 102.34 360.14L100 360H40V40H100A20 20 0 0 0 119.86 22.34L120 20A20 20 0 0 0 102.34 0.14L100 0H20A20 20 0 0 0 0.14 17.66L0 20V380A20 20 0 0 0 17.66 399.86L20 400zM162.06 320A31.26 31.26 0 0 1 130.8 288.74V239.28C130.8 231.68 126.92 224.6 120.52 220.48L106.16 211.28A13.4 13.4 0 0 1 106.16 188.74L120.52 179.54C126.92 175.42 130.8 168.34 130.8 160.74V111.26C130.8 94 144.8 80 162.06 80H168.94A13.4 13.4 0 0 1 168.94 106.8H162.04A4.46 4.46 0 0 0 157.56 111.26V160.72A49.2 49.2 0 0 1 137.96 200.0200000000001A49.2 49.2 0 0 1 157.56 239.2800000000001V288.74A4.46 4.46 0 0 0 162.04 293.2200000000001H168.92A13.4 13.4 0 0 1 168.92 320zM234.2 320C251.48 320 265.4600000000001 306 265.4600000000001 288.74V239.28C265.4600000000001 231.68 269.36 224.6 275.7600000000001 220.48L290.1 211.28A13.4 13.4 0 0 0 290.1 188.74L275.7400000000001 179.54A22.4 22.4 0 0 1 265.4800000000001 160.74V111.26A31.26 31.26 0 0 0 234.22 80H227.3400000000001A13.4 13.4 0 0 0 227.3400000000001 106.8H234.22A4.46 4.46 0 0 1 238.7 111.26V160.72C238.7 176.26 246.02 190.7600000000001 258.3 200.0200000000001A49.2 49.2 0 0 0 238.7 239.2800000000001V288.74A4.48 4.48 0 0 1 234.22 293.2200000000001H227.3400000000001A13.4 13.4 0 0 0 227.3400000000001 320z" : "M80 320A20 20 0 0 0 82.34 280.14L80 280H40V40H80A20 20 0 0 0 99.86 22.34L100 20A20 20 0 0 0 82.34 0.14L80 0H20A20 20 0 0 0 0.14 17.66L0 20V300A20 20 0 0 0 17.66 319.86L20 320zM300 320A20 20 0 0 0 319.86 302.34L320 300V20A20 20 0 0 0 302.3400000000001 0.14L300 0H240A20 20 0 0 0 237.66 39.86L240 40H280V280H240A20 20 0 0 0 220.14 297.6600000000001L220 300A20 20 0 0 0 237.66 319.86L240 320zM130 260C117.08 260 106.98 255.9 101.68 245.5C99.34 240.9 98.48 235.96 98.16 231.66A100 100 0 0 1 98.14 219.22C98.48 210.8 98.7 183.06 97.34 178.74A10 10 0 0 0 94.82 174.46A16 16 0 0 0 87.58 170.78C83.12 169.54 80 165.1 80 160S83.12 150.46 87.58 149.22A16 16 0 0 0 94.82 145.54A10 10 0 0 0 97.34 141.26C98.7 136.94 98.48 109.2 98.14 100.78A100 100 0 0 1 98.14 88.34C98.48 84.04 99.34 79.12 101.68 74.5C106.98 64.1 117.08 60.0000000000001 130 60.0000000000001C135.52 60.0000000000001 140 64.9800000000001 140 71.12C140 77.24 135.52 82.22 130 82.22C120.66 82.22 119.34 84.92 119.12 85.4L119.1 85.42A14 14 0 0 0 118.08 90.22A80 80 0 0 0 118.18 101.38C118.48 108.18 118.9 139.98 116.24 148.54A32 32 0 0 1 110.1 160C113.02 163.48 114.98 167.42 116.24 171.46C118.9 180 118.48 211.8 118.18 218.62L118.12 220.22A80 80 0 0 0 118.08 229.7800000000001A14 14 0 0 0 119.08 234.58L119.12 234.6C119.34 235.0800000000001 120.66 237.7800000000001 130 237.7800000000001C135.52 237.7800000000001 140 242.76 140 248.88S135.52 260 130 260M190 260C202.92 260 213.04 255.9 218.32 245.5C220.66 240.9 221.52 235.96 221.84 231.66C222.18 227.4 222.02 222.98 221.86 219.22C221.52 210.8 221.32 183.06 222.66 178.74C223.2 176.94 224 175.6 225.18 174.46C226.44 173.26 228.58 171.86 232.42 170.78C236.88 169.54 240 165.1 240 160S236.88 150.46 232.42 149.22A16 16 0 0 1 225.18 145.54A10 10 0 0 1 222.66 141.26C221.32 136.94 221.52 109.2 221.86 100.78C222.02 97.02 222.18 92.6 221.86 88.34C221.52 84.04 220.66 79.12 218.32 74.5C213.04 64.1 202.92 60.0000000000001 190 60.0000000000001C184.48 60.0000000000001 180 64.9800000000001 180 71.12C180 77.24 184.48 82.22 190 82.22C199.34 82.22 200.66 84.92 200.88 85.4L200.9 85.42A14 14 0 0 1 201.92 90.22C202.12 92.86 202.04 95.9 201.88 99.78L201.82 101.38C201.52 108.18 201.1 139.98 203.76 148.54A32 32 0 0 0 209.9 160A32 32 0 0 0 203.76 171.46C201.1 180 201.52 211.8 201.82 218.62L201.88 220.22C202.04 224.1 202.12 227.14 201.92 229.7800000000001A14 14 0 0 1 200.92 234.58L200.88 234.6C200.66 235.0800000000001 199.34 237.7800000000001 190 237.7800000000001C184.48 237.7800000000001 180 242.76 180 248.88S184.48 260 190 260"}
                fillRule="evenodd"
                transform={`scale(0.05, -0.05) translate(${translation}, ${translation})`}
                style={style}
            />
        </SVGIconContainer>
   );
});
ArrayObject.displayName = `Blueprint6.Icon.ArrayObject`;
export default ArrayObject;
