/*
 * 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 = ["M12 4c-.03 0-.07 0-.1.01A5 5 0 0 0 2 5c0 .11.01.22.02.33A3.51 3.51 0 0 0 0 8.5C0 10.43 1.57 12 3.5 12H7V9c0-.71.551-1.1.806-1.25.32-.19.719-.326 1.123-.427C9.753 7.117 10.839 7 12 7s2.247.117 3.071.323c.32.08.636.182.913.315A4 4 0 0 0 12 4m0 6.5c1.133 0 2.176-.114 2.95-.308.383-.096.728-.218.99-.372l.06-.037V12c0 .552-1.79 1-4 1s-4-.448-4-1V9.783l.06.037c.262.154.607.276.99.372.774.194 1.817.308 2.95.308m3.94 2.32.06-.037V15c0 .552-1.79 1-4 1s-4-.448-4-1v-2.217l.06.037c.262.154.607.276.99.372.774.194 1.817.308 2.95.308s2.176-.114 2.95-.308c.383-.096.728-.218.99-.372M8 9c0 .552 1.79 1 4 1s4-.448 4-1-1.79-1-4-1-4 .448-4 1"] as readonly string[];

/** Path data for the 20px grid; matches {@link generate-icon-paths.mjs} / `<Icon />` from core. */
const PATHS_20 = ["M19 11c0 .552-2.239 1-5 1s-5-.448-5-1 2.239-1 5-1 5 .448 5 1m-.776.535-.003.001c-.887.279-2.446.464-4.221.464s-3.334-.185-4.221-.464h-.003C9.285 11.38 9 11.196 9 11s.285-.38.776-.535l.002-.001C10.666 10.185 12.225 10 14 10s3.334.185 4.221.464h.003c.491.155.776.339.776.536s-.285.38-.776.535m-.492 1.153c.47-.094.913-.216 1.268-.379V15c0 .197-.285.38-.776.535l-.003.001c-.887.279-2.446.464-4.221.464s-3.334-.185-4.221-.464h-.003C9.285 15.38 9 15.196 9 15v-2.69c.355.162.799.284 1.268.378.987.197 2.306.312 3.732.312s2.745-.115 3.732-.312M9 16.31V19c0 .552 2.239 1 5 1s5-.448 5-1v-2.69c-.355.162-.799.284-1.268.378-.987.197-2.306.312-3.732.312s-2.745-.115-3.732-.312c-.47-.094-.913-.216-1.268-.379m5.784-12.287q.108-.02.216-.022a5.002 5.002 0 0 1 4.814 6.354 1.4 1.4 0 0 0-.217-.27 2 2 0 0 0-.562-.377c-.36-.17-.818-.298-1.303-.395C16.745 9.115 15.426 9 14 9s-2.745.115-3.732.312c-.485.097-.942.224-1.303.395a2 2 0 0 0-.562.376A1.28 1.28 0 0 0 8 11v3H4c-2.21 0-4-1.79-4-4a3.98 3.98 0 0 1 3.01-3.86q0-.037-.005-.07L3 6c0-3.31 2.69-6 6-6 2.62 0 4.83 1.69 5.64 4.04q.072-.007.144-.018"] as readonly string[];

export const DataCloud: 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="data-cloud" ref={ref} {...props}>
            {paths.map((d, i) => (
                <path key={i} d={d} fillRule="evenodd" />
            ))}
        </SVGIconContainer>
    );
});
DataCloud.displayName = `Blueprint6.Icon.DataCloud`;
export default DataCloud;
