/* @flow */
/** @jsx node */

import {
  node,
  type ElementNode,
  type ComponentNode,
} from "@krakenjs/jsx-pragmatic/src";
import { CARD } from "@paypal/sdk-constants/src";

import {
  getLogoCDNUrl,
  SVGCardLogo,
  type SVGCardLogoProps,
} from "../../../lib";

export const getMaestroSVG = (): ElementNode => {
  return (
    <svg
      width="29"
      height="25"
      viewBox="0 0 29 25"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
    >
      <g clip-path="url(#clip0_31637_10342)">
        <path
          d="M9.95517 21.1178V19.9151C9.96208 19.8142 9.94771 19.713 9.91303 19.6182C9.87835 19.5234 9.82416 19.4371 9.75405 19.3653C9.68394 19.2934 9.59954 19.2375 9.50646 19.2013C9.41338 19.1651 9.31377 19.1494 9.21426 19.1554C9.08368 19.1467 8.95318 19.1737 8.83641 19.2337C8.71964 19.2936 8.62087 19.3843 8.55042 19.4961C8.48619 19.3876 8.39429 19.2987 8.28441 19.2387C8.17453 19.1787 8.05074 19.1499 7.92608 19.1554C7.81742 19.1498 7.7092 19.1731 7.61217 19.2231C7.51513 19.273 7.43264 19.3478 7.37287 19.44V19.2035H6.96191V21.1178H7.37682V20.0574C7.36763 19.9918 7.37292 19.925 7.39232 19.8617C7.41172 19.7984 7.44474 19.7403 7.48898 19.6916C7.53323 19.6429 7.5876 19.6047 7.64816 19.5799C7.70872 19.5552 7.77396 19.5443 7.83915 19.5483C8.1118 19.5483 8.2501 19.7287 8.2501 20.0534V21.1178H8.66501V20.0574C8.65654 19.9919 8.66235 19.9254 8.68202 19.8624C8.70168 19.7995 8.73473 19.7417 8.77882 19.6931C8.82292 19.6446 8.87699 19.6064 8.93721 19.5814C8.99743 19.5564 9.06233 19.5451 9.12733 19.5483C9.40789 19.5483 9.54224 19.7287 9.54224 20.0534V21.1178H9.95517ZM12.2668 20.1616V19.2055H11.8519V19.438C11.7822 19.3468 11.6921 19.2737 11.589 19.2249C11.4859 19.1761 11.3728 19.153 11.2592 19.1574C10.9972 19.1574 10.7459 19.263 10.5606 19.4509C10.3754 19.6389 10.2713 19.8938 10.2713 20.1596C10.2713 20.4254 10.3754 20.6804 10.5606 20.8683C10.7459 21.0563 10.9972 21.1619 11.2592 21.1619C11.3728 21.1663 11.4859 21.1431 11.589 21.0943C11.6921 21.0455 11.7822 20.9725 11.8519 20.8812V21.1137H12.2628L12.2668 20.1616ZM10.7395 20.1616C10.7461 20.0488 10.785 19.9404 10.8515 19.8498C10.918 19.7592 11.0092 19.6902 11.1138 19.6515C11.2185 19.6128 11.332 19.6059 11.4404 19.6318C11.5488 19.6577 11.6474 19.7152 11.724 19.7972C11.8006 19.8792 11.8519 19.9822 11.8716 20.0934C11.8912 20.2046 11.8784 20.3193 11.8347 20.4232C11.7909 20.5271 11.7182 20.6158 11.6254 20.6783C11.5327 20.7408 11.4239 20.7744 11.3125 20.775C11.2339 20.7769 11.1557 20.7621 11.083 20.7315C11.0104 20.701 10.9448 20.6554 10.8905 20.5976C10.8361 20.5399 10.7943 20.4713 10.7677 20.3962C10.741 20.3211 10.7301 20.2412 10.7356 20.1616H10.7395ZM21.047 19.1594C21.1823 19.159 21.3164 19.1849 21.4422 19.2356C21.5622 19.2843 21.6716 19.3565 21.7642 19.448C21.8556 19.5387 21.9282 19.6471 21.9776 19.7667C22.0808 20.0237 22.0808 20.3115 21.9776 20.5685C21.9282 20.6882 21.8557 20.7966 21.7642 20.8872C21.6716 20.9788 21.5622 21.051 21.4422 21.0997C21.1816 21.2024 20.8926 21.2024 20.6321 21.0997C20.5126 21.051 20.4039 20.9788 20.312 20.8872C20.2215 20.7962 20.1496 20.6879 20.1006 20.5685C19.9976 20.3115 19.9976 20.0238 20.1006 19.7667C20.1496 19.6474 20.2215 19.539 20.312 19.448C20.4039 19.3565 20.5126 19.2843 20.6321 19.2356C20.7624 19.1808 20.9021 19.1528 21.0431 19.1534L21.047 19.1594ZM21.047 19.5603C20.9665 19.5592 20.8866 19.5742 20.8119 19.6044C20.7415 19.633 20.6776 19.676 20.6242 19.7307C20.5697 19.7882 20.5274 19.8564 20.4997 19.9311C20.4394 20.0912 20.4394 20.2682 20.4997 20.4282C20.5273 20.5029 20.5697 20.5712 20.6242 20.6287C20.6776 20.6834 20.7415 20.7264 20.8119 20.7549C20.9624 20.8147 21.1296 20.8147 21.2801 20.7549C21.3539 20.7273 21.4212 20.6843 21.4777 20.6287C21.5323 20.5712 21.5747 20.503 21.6022 20.4282C21.6625 20.2682 21.6625 20.0912 21.6022 19.9311C21.5747 19.8563 21.5323 19.7881 21.4777 19.7307C21.4212 19.6751 21.3539 19.6321 21.2801 19.6044C21.2056 19.5698 21.125 19.5507 21.0431 19.5483L21.047 19.5603ZM14.4994 20.1616C14.4994 19.5603 14.1319 19.1594 13.6044 19.1594C13.3424 19.1631 13.0926 19.2723 12.9099 19.4629C12.7272 19.6534 12.6267 19.9098 12.6303 20.1757C12.634 20.4415 12.7416 20.6949 12.9294 20.8802C13.1173 21.0656 13.37 21.1676 13.632 21.1639C13.9133 21.1736 14.1883 21.078 14.4045 20.8953L14.207 20.5866C14.051 20.7135 13.8577 20.784 13.6577 20.787C13.5219 20.7989 13.3868 20.7565 13.2813 20.6689C13.1758 20.5813 13.1081 20.4554 13.0927 20.318H14.4935C14.4994 20.2679 14.4994 20.2178 14.4994 20.1616ZM13.0946 19.9933C13.1023 19.866 13.1582 19.7467 13.2506 19.6604C13.3431 19.574 13.4649 19.5274 13.5905 19.5302C13.652 19.5289 13.7132 19.5399 13.7705 19.5625C13.8278 19.5852 13.8802 19.6191 13.9246 19.6622C13.969 19.7054 14.0045 19.7571 14.0293 19.8142C14.054 19.8713 14.0674 19.9329 14.0687 19.9953L13.0946 19.9933ZM16.2282 19.6926C16.0477 19.5872 15.8436 19.5306 15.6354 19.5282C15.4102 19.5282 15.2758 19.6124 15.2758 19.7527C15.2758 19.893 15.4181 19.9171 15.5959 19.9411L15.7935 19.9692C16.2044 20.0293 16.4534 20.2057 16.4534 20.5425C16.4534 20.8792 16.1373 21.1679 15.5939 21.1679C15.3027 21.1757 15.0167 21.0886 14.778 20.9193L14.9755 20.5946C15.1569 20.7311 15.3782 20.8017 15.6038 20.795C15.8844 20.795 16.0345 20.7109 16.0345 20.5625C16.0345 20.4543 15.9278 20.3941 15.7026 20.3621L15.505 20.334C15.0822 20.2739 14.853 20.0814 14.853 19.7688C14.853 19.3879 15.1613 19.1554 15.6433 19.1554C15.9132 19.1462 16.1799 19.2158 16.4119 19.3558L16.2282 19.6926ZM18.2039 19.5843H17.5341V20.4483C17.5341 20.6487 17.6013 20.769 17.8068 20.769C17.935 20.7647 18.0601 20.7274 18.1703 20.6607L18.2889 21.0175C18.1348 21.1151 17.9567 21.1665 17.7752 21.1659C17.2891 21.1659 17.1192 20.9013 17.1192 20.4563V19.5843H16.7359V19.2035H17.1192V18.6222H17.5341V19.2035H18.2039V19.5843ZM19.6245 19.1554C19.7241 19.1558 19.823 19.1734 19.9169 19.2075L19.7904 19.6084C19.7088 19.5754 19.6215 19.559 19.5336 19.5603C19.2649 19.5603 19.1384 19.7367 19.1384 20.0534V21.1258H18.7275V19.2115H19.1345V19.444C19.1849 19.3561 19.2578 19.2837 19.3454 19.2343C19.433 19.1849 19.5322 19.1604 19.6324 19.1634L19.6245 19.1554ZM22.4656 20.8391C22.4913 20.8388 22.5168 20.8436 22.5407 20.8532C22.5634 20.8626 22.5841 20.8762 22.6019 20.8933C22.6193 20.9105 22.6333 20.9309 22.6434 20.9534C22.6534 20.9768 22.6586 21.002 22.6586 21.0276C22.6586 21.0531 22.6534 21.0783 22.6434 21.1017C22.6333 21.1242 22.6193 21.1446 22.6019 21.1619C22.5841 21.179 22.5634 21.1926 22.5407 21.2019C22.517 21.2125 22.4914 21.218 22.4656 21.218C22.4281 21.2177 22.3915 21.2066 22.3601 21.186C22.3286 21.1654 22.3035 21.1362 22.2878 21.1017C22.2779 21.0783 22.2728 21.0531 22.2728 21.0276C22.2728 21.0021 22.2779 20.9768 22.2878 20.9534C22.2978 20.9309 22.3119 20.9105 22.3293 20.8933C22.3471 20.8762 22.3678 20.8626 22.3905 20.8532C22.4113 20.8448 22.4333 20.84 22.4557 20.8391H22.4656ZM22.4656 21.1779C22.4853 21.178 22.5048 21.1739 22.5229 21.1659C22.5399 21.1582 22.5553 21.1473 22.5683 21.1338C22.5851 21.1167 22.5975 21.0957 22.6044 21.0726C22.6114 21.0495 22.6126 21.0251 22.6082 21.0014C22.6037 20.9777 22.5936 20.9554 22.5787 20.9366C22.5639 20.9178 22.5447 20.9029 22.5229 20.8933C22.5048 20.8853 22.4853 20.8812 22.4656 20.8812C22.4459 20.8813 22.4264 20.8854 22.4083 20.8933C22.3905 20.9006 22.3744 20.9115 22.3609 20.9253C22.3362 20.9527 22.3225 20.9884 22.3225 21.0256C22.3225 21.0627 22.3362 21.0984 22.3609 21.1258C22.3746 21.1398 22.3909 21.151 22.4088 21.1585C22.4268 21.1661 22.4461 21.17 22.4656 21.1699V21.1779ZM22.4774 20.9394C22.4959 20.9385 22.5141 20.9441 22.5288 20.9554C22.5349 20.9605 22.5396 20.9669 22.5427 20.9743C22.5458 20.9816 22.5471 20.9895 22.5466 20.9975C22.5469 21.0041 22.5458 21.0108 22.5434 21.017C22.541 21.0232 22.5374 21.0289 22.5328 21.0336C22.5213 21.0441 22.5067 21.0505 22.4913 21.0516L22.5486 21.1178H22.5031L22.4498 21.0516H22.432V21.1178H22.3945V20.9333L22.4774 20.9394ZM22.434 20.9734V21.0215H22.4774C22.4852 21.0239 22.4934 21.0239 22.5012 21.0215C22.5025 21.0187 22.5033 21.0157 22.5033 21.0125C22.5033 21.0094 22.5025 21.0063 22.5012 21.0035C22.5025 21.0007 22.5033 20.9976 22.5033 20.9945C22.5033 20.9913 22.5025 20.9883 22.5012 20.9855C22.4934 20.9831 22.4852 20.9831 22.4774 20.9855L22.434 20.9734Z"
          fill="black"
        />
        <path
          d="M17.6113 4.59891H11.3877V15.9462H17.6113V4.59891Z"
          fill="#7673C0"
        />
        <path
          d="M11.7832 10.2747C11.7821 9.1817 12.0261 8.10278 12.4967 7.11963C12.9674 6.13647 13.6524 5.27486 14.4999 4.60003C13.4506 3.76341 12.1904 3.24316 10.8635 3.09875C9.53655 2.95434 8.19633 3.19159 6.99601 3.78339C5.79568 4.37519 4.78368 5.29766 4.07567 6.44537C3.36766 7.59308 2.99219 8.91972 2.99219 10.2737C2.99219 11.6276 3.36766 12.9543 4.07567 14.102C4.78368 15.2497 5.79568 16.1722 6.99601 16.764C8.19633 17.3558 9.53655 17.593 10.8635 17.4486C12.1904 17.3042 13.4506 16.784 14.4999 15.9473C13.6527 15.2727 12.9678 14.4114 12.4972 13.4286C12.0265 12.4459 11.7824 11.3673 11.7832 10.2747Z"
          fill="#EB001B"
        />
        <path
          d="M25.3288 14.7435V14.519H25.4216V14.4709H25.1865V14.519H25.2794V14.7515L25.3288 14.7435ZM25.7852 14.7435V14.4629H25.7141L25.6311 14.6633L25.5481 14.4629H25.475V14.7435H25.5264V14.533L25.6034 14.7155H25.6568L25.7338 14.533V14.7455L25.7852 14.7435Z"
          fill="#00A1DF"
        />
        <path
          d="M26.0067 10.2736C26.0064 11.6273 25.6308 12.9536 24.9227 14.101C24.2147 15.2484 23.2028 16.1706 22.0027 16.7622C20.8026 17.3539 19.4626 17.5911 18.1359 17.4468C16.8092 17.3025 15.5492 16.7825 14.5 15.9462C15.3469 15.271 16.0315 14.4095 16.5023 13.4266C16.9731 12.4438 17.2177 11.3653 17.2177 10.2726C17.2177 9.17981 16.9731 8.10133 16.5023 7.11849C16.0315 6.13566 15.3469 5.27413 14.5 4.59891C15.5492 3.76203 16.8094 3.24153 18.1364 3.09691C19.4634 2.95229 20.8038 3.1894 22.0042 3.78111C23.2047 4.37282 24.2169 5.29527 24.925 6.44302C25.6331 7.59077 26.0087 8.9175 26.0087 10.2716L26.0067 10.2736Z"
          fill="#00A1DF"
        />
      </g>
      <defs>
        <clipPath id="clip0_31637_10342">
          <rect
            width="29"
            height="24.1819"
            fill="white"
            transform="translate(0 0.0227356)"
          />
        </clipPath>
      </defs>
    </svg>
  );
};

export function MaestroLogoExternalImage({
  ...props
}: {} = {}): ComponentNode<SVGCardLogoProps> {
  const cdnUrl = getLogoCDNUrl(CARD.MAESTRO);

  return <SVGCardLogo {...props} name={CARD.MAESTRO} cdnUrl={cdnUrl} />;
}

export function MaestroLogoInlineSVG({
  ...props
}: {} = {}): ComponentNode<SVGCardLogoProps> {
  const svg = getMaestroSVG();

  return (
    <SVGCardLogo
      {...props}
      name={CARD.MAESTRO}
      render={() => {
        return svg;
      }}
    />
  );
}

export const MaestroLogo = MaestroLogoInlineSVG;
