{"version":3,"sources":["../src/index.ts","../src/sharePnL/sharePnL.script.tsx","../src/sharePnL/sharePnL.ui.tsx","../src/sharePnL/desktop/content.tsx","../src/sharePnL/utils/utils.tsx","../src/sharePnL/poster/poster.tsx","../src/sharePnL/desktop/carousel.tsx","../src/sharePnL/desktop/buttons.tsx","../src/sharePnL/desktop/pnlFormat.tsx","../src/sharePnL/desktop/options.tsx","../src/sharePnL/desktop/checkbox.tsx","../src/sharePnL/desktop/message.tsx","../src/sharePnL/desktop/bottomBtns.tsx","../src/sharePnL/mobile/content.tsx","../src/sharePnL/carousel/carousel.tsx","../src/sharePnL/carousel/index.tsx","../src/sharePnL/sharePnL.widget.tsx"],"names":["registerSimpleDialog","registerSimpleSheet","useMemo","useReferralInfo","useSymbolsInfo","useSharePnLScript","props","pnl","hide","entity","symbolInfo","getFirstRefCode","referralInfo","code","base_dp","quote_dp","useEffect","useState","useRef","Decimal","getPnLPosterData","position","leverage","message","domain","pnlType","options","baseDp","quoteDp","referral","symbol","currency","processSymbol","positionData","informations","key","formatFixed","formatOpenTime","data","formatShareTime","tokens","symbol1","symbol2","symbol3","input","date","formattedParts","year","part","month","day","hour","minute","value","dp","savePnlInfo","format","bgIndex","getPnlInfo","str","Divider","Flex","toast","Text","Box","usePoster","forwardRef","useImperativeHandle","jsx","Poster","parentRef","width","height","className","style","ref","download","toDataURL","copy","toBlob","useEmblaCarousel","useCallback","jsxs","PrevButton","children","restProps","NextButton","cn","CarouselBackgroundImage","backgroundImages","selectedSnap","setSelectedSnap","emblaRef","emblaApi","onPrevButtonClick","onNextButtonClick","onSelect","e","index","PnlFormatView","type","curType","setPnlFormat","text","isSelected","clsName","RadioButton","SelIcon","UnselIcon","Checkbox","size","ShareOption","setShareOption","updateSet","checked","CloseCircleFillIcon","Input","Message","setMessage","check","setCheck","focus","setFocus","inputRef","Button","BottomButtons","onClickDownload","onClickCopy","DownloadIcon","CopyIcon","DesktopSharePnLContent","shareOptions","localPnlConfig","formats","pnlFormat","shareOption","resetOptions","setDomain","posterRef","currentDomain","curBgImg","posterData","onCopy","onDownload","item","ScrollArea","React","CarouselContext","useCarousel","context","Carousel","orientation","opts","setApi","plugins","carouselRef","api","canScrollPrev","setCanScrollPrev","canScrollNext","setCanScrollNext","selectedIndex","setSelectedIndex","scrollSnaps","setScrollSnaps","scrollPrev","scrollNext","handleKeyDown","event","CarouselContent","CarouselItem","CarouselPrevious","variant","CarouselNext","CarouselIdentifier","_","Dot","active","onClick","activeClassName","MobileSharePnLContent","selectIndex","setSelectIndex","posterRefs","aspectRatio","scale","setScale","carouselHeight","setCarouselHeight","divWidth","divHeight","onSharePnL","blob","dataURItoBlob","MyIdentifier","ChoicesFillIcon","dataURI","byteString","mimeString","ab","ia","i","Fragment","DesktopSharePnL","viewportHeight","setViewportHeight","handleResize","MobileSharePnL","SharePnLBottomSheetWidget","state","SharePnLDialogWidget","SharePnLDialogId","SharePnLBottomSheetId"],"mappings":"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","sourcesContent":["import { registerSimpleDialog, registerSimpleSheet } from \"@orderly.network/ui\";\nimport {\n  SharePnLDialogWidget,\n  SharePnLBottomSheetWidget,\n} from \"./sharePnL/sharePnL.widget\";\n\nconst SharePnLDialogId = \"sharePnLDialog\";\nconst SharePnLBottomSheetId = \"sharePnLBottomSheet\";\n\nregisterSimpleDialog(SharePnLDialogId, SharePnLDialogWidget, {\n  classNames: {\n    content: \"!oui-max-w-[624px] oui-p-0\",\n  },\n});\n\nregisterSimpleSheet(SharePnLBottomSheetId, SharePnLBottomSheetWidget, {\n  title: \"Share PnL\",\n  classNames: {\n    body: \"oui-pb-4 oui-pt-0\",\n  },\n});\n\nexport * from \"./sharePnL\";\nexport { SharePnLDialogId, SharePnLBottomSheetId };\nexport type {\n  SharePnLConfig,\n  SharePnLOptions,\n  SharePnLParams,\n} from \"./types/types\";\n","import { useMemo } from \"react\";\nimport { useReferralInfo, useSymbolsInfo } from \"@orderly.network/hooks\";\nimport { ReferralType, SharePnLOptions, SharePnLParams } from \"../types/types\";\n\nexport const useSharePnLScript = (props: {\n  pnl?: (SharePnLOptions & SharePnLParams) | undefined;\n  hide?: () => void;\n}) => {\n  const { pnl, hide } = props;\n  const entity = pnl?.entity;\n  const symbolInfo = useSymbolsInfo();\n  const { getFirstRefCode } = useReferralInfo();\n  const referralInfo = useMemo((): ReferralType | undefined => {\n    const code = getFirstRefCode()?.code;\n    const info = {\n      code: pnl?.refCode ?? code,\n      slogan: pnl?.refSlogan,\n      link: pnl?.refLink,\n    };\n    return info;\n  }, [getFirstRefCode, pnl]);\n\n  // print warning if entity is null\n  if (!entity) {\n    console.warn(\"Entity is null, the share pnl will not be displayed\");\n  }\n\n  // convert base_dp and quote_dp useMemo\n  const base_dp = useMemo(() => {\n    if (!entity) return undefined;\n    return symbolInfo[entity?.symbol](\"base_dp\");\n  }, [entity, symbolInfo]);\n  const quote_dp = useMemo(() => {\n    if (!entity) return undefined;\n    return symbolInfo[entity?.symbol](\"quote_dp\");\n  }, [entity, symbolInfo]);\n\n  return {\n    entity,\n    leverage: pnl?.leverage,\n    baseDp: base_dp,\n    quoteDp: quote_dp,\n    referralInfo,\n    shareOptions: pnl as SharePnLOptions | undefined,\n    hide,\n  };\n};\n\nexport type SharePnLState = ReturnType<typeof useSharePnLScript>;\n","import { FC, PropsWithChildren, useEffect, useState } from \"react\";\nimport { Box } from \"@orderly.network/ui\";\nimport { SharePnLState } from \"./sharePnL.script\";\nimport { DesktopSharePnLContent } from \"./desktop/content\";\nimport { MobileSharePnLContent } from \"./mobile/content\";\n\nexport const DesktopSharePnL: FC<SharePnLState> = (props) => {\n  const {\n    leverage,\n    entity,\n    baseDp,\n    quoteDp,\n    referralInfo,\n    shareOptions,\n    hide,\n  } = props;\n\n  const [viewportHeight, setViewportHeight] = useState(\n    window.innerHeight < 900 ? 660 : 807\n  );\n\n  useEffect(() => {\n    const handleResize = () => {\n      setViewportHeight(window.innerHeight < 900 ? 660 : 807);\n    };\n\n    window.addEventListener(\"resize\", handleResize);\n\n    return () => {\n      window.removeEventListener(\"resize\", handleResize);\n    };\n  }, []);\n\n  if (shareOptions == null || entity == null) return <></>;\n  return (\n    <DesktopSharePnLContent\n      entity={entity}\n      leverage={leverage}\n      hide={hide}\n      baseDp={baseDp}\n      quoteDp={quoteDp}\n      referral={referralInfo}\n      shareOptions={shareOptions}\n    />\n  );\n};\n\nexport const MobileSharePnL: FC<SharePnLState> = (props) => {\n  const {\n    leverage,\n    entity,\n    baseDp,\n    quoteDp,\n    referralInfo,\n    shareOptions,\n    hide,\n  } = props;\n  if (shareOptions == null || entity == null) return <></>;\n  return (\n    <MobileSharePnLContent\n      entity={entity}\n      leverage={leverage}\n      hide={hide}\n      baseDp={baseDp}\n      quoteDp={quoteDp}\n      referral={referralInfo}\n      shareOptions={shareOptions}\n    />\n  );\n};\n","import { FC, useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n  PnLDisplayFormat,\n  ReferralType,\n  ShareEntity,\n  ShareOptions,\n  SharePnLOptions,\n} from \"../../types/types\";\nimport { getPnlInfo, getPnLPosterData, savePnlInfo } from \"../utils/utils\";\nimport {\n  CloseIcon,\n  Divider,\n  Flex,\n  toast,\n  Text,\n  Box,\n} from \"@orderly.network/ui\";\nimport { Poster } from \"../poster\";\nimport { CarouselBackgroundImage } from \"./carousel\";\nimport { PnlFormatView } from \"./pnlFormat\";\nimport { ShareOption } from \"./options\";\nimport { Message } from \"./message\";\nimport { BottomButtons } from \"./bottomBtns\";\nimport { PosterRef } from \"../poster/poster\";\n\nexport const DesktopSharePnLContent: FC<{\n  entity: ShareEntity;\n  leverage?: number | string;\n  hide: any;\n  baseDp?: number;\n  quoteDp?: number;\n  referral?: ReferralType;\n  shareOptions: SharePnLOptions;\n}> = (props) => {\n  const { shareOptions } = props;\n  const localPnlConfig = getPnlInfo();\n\n  const hasRoiAndPnl = props.entity.roi != null && props.entity.pnl != null;\n  const formats: PnLDisplayFormat[] = hasRoiAndPnl\n    ? [\"roi_pnl\", \"roi\", \"pnl\"]\n    : props.entity.roi != null\n    ? [\"roi\"]\n    : props.entity.pnl != null\n    ? [\"pnl\"]\n    : [];\n\n  const [pnlFormat, setPnlFormat] = useState<PnLDisplayFormat>(\n    formats.length == 1 ? formats[0] : localPnlConfig.pnlFormat\n  );\n  const [shareOption, setShareOption] = useState<Set<ShareOptions>>(\n    new Set(localPnlConfig.options)\n  );\n  const [selectedSnap, setSelectedSnap] = useState(localPnlConfig.bgIndex);\n  const [message, setMessage] = useState(localPnlConfig.message);\n  const [check, setCheck] = useState(false);\n  // const { shareOptions } = useTradingPageContext();\n  const { backgroundImages, ...resetOptions } = shareOptions ?? {\n    backgroundImages: [],\n  };\n\n  const [domain, setDomain] = useState(\"\");\n\n  const posterRef = useRef<PosterRef | null>(null);\n\n  useEffect(() => {\n    const currentDomain = window.location.hostname;\n    setDomain(currentDomain);\n  }, []);\n\n  const curBgImg = useMemo(() => {\n    return shareOptions?.backgroundImages?.[selectedSnap];\n  }, [shareOptions?.backgroundImages, selectedSnap]);\n\n  const posterData = getPnLPosterData(\n    props.entity,\n    props.leverage!,\n    check ? message : \"\",\n    domain,\n    pnlFormat,\n    shareOption,\n    props.baseDp,\n    props.quoteDp,\n    props.referral\n  );\n\n  const onCopy = () => {\n    posterRef.current\n      ?.copy()\n      .then(() => {\n        props.hide?.();\n        toast.success(\"Image copied\");\n      })\n      .catch((e: any) => {\n        toast.error(() => {\n          return (\n            <div>\n              <div>Copy failed</div>\n              <div className=\"oui-text-2xs oui-max-w-[396px] oui-mt-2 oui-text-base-contrast-54\">\n                Browser version outdated, please update in order to copy image\n                to clipboard.\n              </div>\n            </div>\n          );\n        });\n      });\n  };\n  const onDownload = () => {\n    posterRef.current?.download(\"Poster.png\");\n    props.hide?.();\n  };\n\n  // check if the entity has the option, like formats\n  const options: ShareOptions[] = [\n    ...(props.entity.openPrice ? ([\"openPrice\"] as ShareOptions[]) : []),\n    ...(props.entity.closePrice ? ([\"closePrice\"] as ShareOptions[]) : []),\n    ...(props.entity.markPrice ? ([\"markPrice\"] as ShareOptions[]) : []),\n    ...(props.entity.openTime ? ([\"openTime\"] as ShareOptions[]) : []),\n    ...(props.entity.closeTime ? ([\"closeTime\"] as ShareOptions[]) : []),\n    ...(props.leverage ? ([\"leverage\"] as ShareOptions[]) : []),\n    ...(props.entity.quantity ? ([\"quantity\"] as ShareOptions[]) : []),\n  ];\n\n  savePnlInfo(pnlFormat, shareOption, selectedSnap, message);\n\n  return (\n    <div className=\"oui-h-full oui-flex oui-flex-col oui-relative oui-w-full\">\n      <div className=\"oui-flex-1 oui-h-full oui-overflow-y-auto\">\n        <Box mt={9} height={422}>\n          <Flex itemAlign={\"center\"} justify={\"center\"}>\n            <Poster\n              // className=\"oui-mx-11\"\n              width={552}\n              height={310}\n              data={{\n                backgroundImg: curBgImg,\n                ...resetOptions,\n                data: posterData,\n              }}\n              ratio={3}\n              ref={posterRef}\n            />\n          </Flex>\n          <CarouselBackgroundImage\n            backgroundImages={shareOptions?.backgroundImages ?? []}\n            selectedSnap={selectedSnap}\n            setSelectedSnap={setSelectedSnap}\n          />\n        </Box>\n\n        <Flex\n          direction={\"column\"}\n          px={10}\n          mt={6}\n          justify={\"start\"}\n          itemAlign={\"start\"}\n          width={\"100%\"}\n        >\n          <Text size=\"sm\" intensity={80}>\n            PnL display format\n          </Text>\n          <Flex pt={3} gap={3} itemAlign={\"center\"}>\n            {formats.map((e, index) => (\n              <PnlFormatView\n                key={index}\n                setPnlFormat={setPnlFormat}\n                type={e}\n                curType={pnlFormat}\n              />\n            ))}\n          </Flex>\n\n          <Divider className=\"oui-w-full oui-pt-6 oui-border-white/10\" />\n\n          <Flex\n            mt={6}\n            direction={\"column\"}\n            justify={\"start\"}\n            itemAlign={\"start\"}\n          >\n            <Text size=\"sm\" intensity={80}>\n              Optional information to share\n            </Text>\n            <Flex mt={3} gap={4} className=\"oui-flex-wrap\">\n              {options.map((item, index) => (\n                <ShareOption\n                  key={index}\n                  setShareOption={setShareOption}\n                  type={item}\n                  curType={shareOption}\n                />\n              ))}\n            </Flex>\n          </Flex>\n\n          <Message\n            message={message}\n            setMessage={setMessage}\n            check={check}\n            setCheck={setCheck}\n          />\n        </Flex>\n      </div>\n\n      <BottomButtons onClickCopy={onCopy} onClickDownload={onDownload} />\n\n      {/* <button\n        onClick={() => {\n          props.hide();\n        }}\n        className=\"oui-absolute oui-top-0 oui-right-0 oui-w-[40px] oui-h-[40px] oui-flex oui-justify-center oui-items-center\"\n      >\n        <CloseIcon size={12} className=\"oui-fill-base-contrast-54\" />\n      </button> */}\n    </div>\n  );\n};\n","/*\n{\n      message: \"I am the Orderly KING.\",\n      domain: \"ordely.network\",\n      updateTime: \"2022-JAN-01 23:23\",\n      position: {\n        symbol: \"BTC-PERP\",\n        currency: \"USDC\",\n        side: \"LONG\",\n        leverage: 20,\n        pnl: 10432.23,\n        ROI: 20.25,\n        informations: [\n          { title: \"Open Price\", value: 0.12313 },\n          { title: \"Opened at\", value: \"Jan-01 23:23\" },\n          { title: \"Mark price\", value: \"0.12341\" },\n          { title: \"Quantity\", value: \"0.123\" },\n        ],\n      },\n      referral: {\n        code: \"WRECKED\",\n        link: \"https://orderly.network\",\n        slogan: \"Try Orderly now with:\",\n      }\n    }\n*/\n\nimport { Decimal } from \"@orderly.network/utils\";\nimport { PnLDisplayFormat, ShareEntity, ShareOptions } from \"../../types/types\";\n// import { PnLDisplayFormat, ShareOptions } from \"./type\";\n\nexport type ReferralType = {\n  code?: string;\n  link?: string;\n  slogan?: string;\n};\n\nexport function getPnLPosterData(\n  position: ShareEntity,\n  leverage: number | string,\n  message: string,\n  domain: string,\n  pnlType: PnLDisplayFormat,\n  options: Set<ShareOptions>,\n  baseDp?: number,\n  quoteDp?: number,\n  referral?: ReferralType\n) {\n  const { symbol, currency } = processSymbol(position.symbol);\n  const positionData: any = {\n    symbol,\n    currency,\n    side: position.side,\n  };\n\n  switch (pnlType) {\n    case \"pnl\": {\n      if (position.pnl != null) {\n        positionData[\"pnl\"] = new Decimal(position.pnl).toFixed(\n          2,\n          Decimal.ROUND_DOWN\n        );\n      }\n      break;\n    }\n    case \"roi\": {\n      if (position.roi != null) {\n        positionData[\"ROI\"] = new Decimal(position.roi).toFixed(\n          2,\n          Decimal.ROUND_DOWN\n        );\n      }\n      break;\n    }\n    case \"roi_pnl\": {\n      if (position.pnl != null) {\n        positionData[\"pnl\"] = new Decimal(position.pnl).toFixed(\n          2,\n          Decimal.ROUND_DOWN\n        );\n      }\n      if (position.roi != null) {\n        positionData[\"ROI\"] = new Decimal(position.roi).toFixed(\n          2,\n          Decimal.ROUND_DOWN\n        );\n      }\n      break;\n    }\n  }\n\n  const informations: { title: string; value: any }[] = [];\n\n  if (options.has(\"leverage\")) {\n    positionData[\"leverage\"] = leverage;\n  }\n  const array: ShareOptions[] = [\n    \"openPrice\",\n    \"closePrice\",\n    \"openTime\",\n    \"closeTime\",\n    \"markPrice\",\n    \"quantity\",\n  ];\n  array.forEach((key) => {\n    if (options.has(key)) {\n      switch (key) {\n        case \"leverage\": {\n          break;\n        }\n        case \"openPrice\": {\n          if (position.openPrice != null) {\n            informations.push({\n              title: \"Open price\",\n              value: formatFixed(position.openPrice, quoteDp || 2),\n            });\n          }\n          break;\n        }\n        case \"closePrice\": {\n          if (position.closePrice != null) {\n            informations.push({\n              title: \"Close price\",\n              value: formatFixed(position.closePrice, quoteDp || 2),\n            });\n          }\n          break;\n        }\n        case \"openTime\": {\n          if (position.openTime != null) {\n            informations.push({\n              title: \"Opened at\",\n              value: formatOpenTime(position.openTime),\n            });\n          }\n          break;\n        }\n        case \"closeTime\": {\n          if (position.closeTime != null) {\n            informations.push({\n              title: \"Closed at\",\n              value: formatOpenTime(position.closeTime),\n            });\n          }\n          break;\n        }\n        case \"markPrice\": {\n          if (position.markPrice != null) {\n            informations.push({\n              title: \"Mark price\",\n              value: formatFixed(position.markPrice, quoteDp || 2),\n            });\n          }\n          break;\n        }\n        case \"quantity\": {\n          if (position.quantity != null) {\n            informations.push({\n              title: \"Quantity\",\n              value: formatFixed(position.quantity, baseDp || 2),\n            });\n          }\n        }\n        default:\n          break;\n      }\n    }\n  });\n\n  positionData[\"informations\"] = informations;\n\n  const data: any = {\n    position: positionData,\n    updateTime: formatShareTime(new Date()),\n    domain,\n  };\n  if (message.length > 0) {\n    data[\"message\"] = message;\n  }\n\n  if (typeof referral !== \"undefined\" && referral[\"code\"] !== undefined) {\n    data[\"referral\"] = referral;\n  }\n\n  return data;\n}\n\ninterface SymbolResult {\n  symbol: string;\n  currency: string;\n}\n\nfunction processSymbol(symbol: string): SymbolResult {\n  const tokens = symbol.split(\"_\");\n  if (tokens.length !== 3) {\n    return {\n      symbol: symbol,\n      currency: \"USDC\",\n    };\n  }\n\n  const [symbol1, symbol2, symbol3] = tokens;\n  const formattedString = `${symbol2}-${symbol1}`;\n\n  return {\n    symbol: formattedString,\n    currency: symbol3 || \"USDC\",\n  };\n}\n\nfunction formatShareTime(input: number): string;\nfunction formatShareTime(input: Date): string;\nfunction formatShareTime(input: number | Date): string {\n  const date = input instanceof Date ? input : new Date(input);\n  const options: Intl.DateTimeFormatOptions = {\n    year: \"numeric\",\n    month: \"2-digit\",\n    day: \"2-digit\",\n    hour: \"2-digit\",\n    minute: \"2-digit\",\n    hourCycle: \"h23\",\n  };\n\n  const formatter = new Intl.DateTimeFormat(\"en-US\", options);\n  const formattedParts = formatter.formatToParts(date);\n\n  // console.log(\"formattedParts\", formattedParts);\n\n  const year = formattedParts.find((part) =>\n    part.type === \"year\" ? part.value : \"\"\n  )?.value;\n  const month = formattedParts.find((part) =>\n    part.type === \"month\" ? part.value : \"\"\n  )?.value;\n  const day = formattedParts.find((part) =>\n    part.type === \"day\" ? part.value : \"\"\n  )?.value;\n  const hour = formattedParts.find((part) =>\n    part.type === \"hour\" ? part.value : \"\"\n  )?.value;\n  const minute = formattedParts.find((part) =>\n    part.type === \"minute\" ? part.value : \"\"\n  )?.value;\n\n  return `${year}-${month}-${day} ${hour}:${minute}`;\n}\n\nfunction formatOpenTime(input: number | Date): string {\n  const date = input instanceof Date ? input : new Date(input);\n  const options: Intl.DateTimeFormatOptions = {\n    year: \"numeric\",\n    month: \"short\",\n    day: \"2-digit\",\n    hour: \"2-digit\",\n    minute: \"2-digit\",\n    hourCycle: \"h23\",\n  };\n\n  const formatter = new Intl.DateTimeFormat(\"en-US\", options);\n  const formattedParts = formatter.formatToParts(date);\n\n  // console.log(\"formattedParts\", formattedParts);\n\n  const month = formattedParts.find((part) =>\n    part.type === \"month\" ? part.value : \"\"\n  )?.value;\n  const day = formattedParts.find((part) =>\n    part.type === \"day\" ? part.value : \"\"\n  )?.value;\n  const hour = formattedParts.find((part) =>\n    part.type === \"hour\" ? part.value : \"\"\n  )?.value;\n  const minute = formattedParts.find((part) =>\n    part.type === \"minute\" ? part.value : \"\"\n  )?.value;\n\n  return `${month}-${day} ${hour}:${minute}`;\n}\n\nfunction formatFixed(value: number, dp: number) {\n  return new Decimal(value).toFixed(dp, Decimal.ROUND_DOWN);\n}\n\nexport function savePnlInfo(\n  format: PnLDisplayFormat,\n  options: Set<ShareOptions>,\n  bgIndex: number,\n  message: string\n) {\n  localStorage.setItem(\n    \"pnl_config_key\",\n    JSON.stringify({\n      bgIndex: bgIndex,\n      pnlFormat: format,\n      options: Array.from(options),\n      message: message,\n    })\n  );\n}\n\nexport function getPnlInfo(): {\n  bgIndex: number;\n  pnlFormat: PnLDisplayFormat;\n  options: ShareOptions[];\n  message: \"\";\n} {\n  const str = localStorage.getItem(\"pnl_config_key\");\n\n  if (str && str.length > 0) {\n    try {\n      const json = JSON.parse(str);\n\n      return json;\n    } catch (e) {}\n  }\n  return {\n    bgIndex: 0,\n    pnlFormat: \"roi_pnl\",\n    options: [\n      \"openPrice\",\n      \"closePrice\",\n      \"openTime\",\n      \"closeTime\",\n      \"markPrice\",\n      \"quantity\",\n      \"leverage\",\n    ],\n    message: \"\",\n  };\n}\n","import { type DrawOptions, usePoster } from \"@orderly.network/hooks\";\nimport { FC, forwardRef, useImperativeHandle } from \"react\";\n\nexport type PosterProps = {\n  width: number;\n  height: number;\n  className?: string;\n  ratio?: number;\n  data: DrawOptions;\n  style?: React.CSSProperties;\n};\n\nexport type PosterRef = {\n  download: (filename: string, type?: string, encoderOptions?: number) => void;\n  toDataURL: (type?: string, encoderOptions?: number) => string;\n  toBlob: (type?: string, encoderOptions?: number) => Promise<Blob | null>;\n  copy: () => Promise<void>;\n};\n\nexport const Poster = forwardRef<PosterRef, PosterProps>((props, parentRef) => {\n  const { width, height, className, data, style } = props;\n\n  const { ref, download, toDataURL, copy, toBlob } = usePoster(data, {\n    ratio: props.ratio,\n  });\n\n  useImperativeHandle(parentRef, () => ({\n    download,\n    toDataURL,\n    toBlob,\n    copy,\n  }));\n\n  return (\n    <canvas\n      ref={ref}\n      width={width}\n      height={height}\n      className={className}\n      style={style}\n    />\n  );\n});\n","import useEmblaCarousel from \"embla-carousel-react\";\nimport { FC, useCallback, useEffect } from \"react\";\nimport { NextButton, PrevButton } from \"./buttons\";\nimport { Box, cn, Flex } from \"@orderly.network/ui\";\n\nexport const CarouselBackgroundImage: FC<{\n  backgroundImages: string[];\n  selectedSnap: number;\n  setSelectedSnap: any;\n}> = (props) => {\n  const { backgroundImages, selectedSnap, setSelectedSnap } = props;\n\n  const [emblaRef, emblaApi] = useEmblaCarousel({\n    // loop: true,\n    containScroll: \"keepSnaps\",\n    dragFree: true,\n  });\n\n  const onPrevButtonClick = useCallback(() => {\n    if (!emblaApi) return;\n    if (emblaApi?.canScrollPrev()) {\n      emblaApi.scrollPrev();\n    } else if (selectedSnap - 1 >= 0) {\n      setSelectedSnap(selectedSnap - 1);\n    }\n  }, [emblaApi, selectedSnap]);\n\n  const onNextButtonClick = useCallback(() => {\n    if (!emblaApi) return;\n    if (emblaApi?.canScrollNext()) {\n      emblaApi.scrollNext();\n    } else if (selectedSnap + 1 < backgroundImages.length) {\n      setSelectedSnap(selectedSnap + 1);\n    }\n  }, [emblaApi, selectedSnap]);\n\n  const onSelect = useCallback((emblaApi: any) => {\n    // setPrevBtnDisabled(!emblaApi.canScrollPrev());\n    // setNextBtnDisabled(!emblaApi.canScrollNext());\n    setSelectedSnap(emblaApi.selectedScrollSnap());\n  }, []);\n\n  useEffect(() => {\n    if (!emblaApi) return;\n\n    onSelect(emblaApi);\n    emblaApi.on(\"reInit\", onSelect);\n    emblaApi.on(\"select\", onSelect);\n    emblaApi?.scrollTo(selectedSnap);\n  }, [emblaApi, onSelect]);\n\n  return (\n    <Flex mt={4} px={2}>\n      <PrevButton onClick={onPrevButtonClick} />\n      <div\n        ref={emblaRef}\n        className=\"oui-w-full oui-overflow oui-overflow-x-auto oui-scrollbar-hidden oui-hide-scrollbar oui-mx-0\"\n      >\n        <Flex>\n          {backgroundImages.map((e, index) => (\n            <Box\n              key={e}\n              onClick={() => {\n                if (emblaApi?.canScrollPrev() || emblaApi?.canScrollNext()) {\n                  emblaApi?.scrollTo(index);\n                } else {\n                  setSelectedSnap(index);\n                }\n              }}\n              mx={2}\n              my={1}\n              mr={6}\n              r=\"base\"\n              className={cn(\n                \"oui-shrink-0 oui-w-[162px]\",\n                selectedSnap === index &&\n                  \"oui-outline oui-outline-1 oui-outline-primary-darken\"\n              )}\n            >\n              <img src={e} className=\"oui-rounded-sm\" />\n            </Box>\n          ))}\n        </Flex>\n      </div>\n      <NextButton onClick={onNextButtonClick} />\n    </Flex>\n  );\n};\n","import { FC, PropsWithChildren } from \"react\";\n\ntype PropType = PropsWithChildren<\n  React.DetailedHTMLProps<\n    React.ButtonHTMLAttributes<HTMLButtonElement>,\n    HTMLButtonElement\n  >\n>;\n\nexport const PrevButton: FC<PropType> = (props) => {\n  const { children, ...restProps } = props;\n\n  return (\n    <button {...restProps}>\n      <svg\n        width=\"20\"\n        height=\"20\"\n        viewBox=\"0 0 20 20\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <rect width=\"20\" height=\"20\" rx=\"10\" fill=\"#333948\" />\n        <path\n          d=\"M11.186 5.348a.67.67 0 0 0-.436.27l-2.657 4a.69.69 0 0 0 0 .75l2.657 4a.68.68 0 0 0 .934.188.685.685 0 0 0 .187-.937L9.463 9.993 11.87 6.37a.685.685 0 0 0-.187-.938.65.65 0 0 0-.498-.083\"\n          fill=\"#fff\"\n          fillOpacity=\".54\"\n        />\n      </svg>\n    </button>\n  );\n};\n\nexport const NextButton: FC<PropType> = (props) => {\n  const { children, ...restProps } = props;\n\n  return (\n    <button {...restProps}>\n      <svg\n        width=\"20\"\n        height=\"20\"\n        viewBox=\"0 0 20 20\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <rect width=\"20\" height=\"20\" rx=\"10\" fill=\"#333948\" />\n        <path\n          d=\"M8.777 5.348a.65.65 0 0 0-.498.083.685.685 0 0 0-.187.938L10.5 9.993 8.092 13.62a.685.685 0 0 0 .187.937.68.68 0 0 0 .934-.187l2.657-4a.69.69 0 0 0 0-.75l-2.657-4a.67.67 0 0 0-.436-.271\"\n          fill=\"#fff\"\n          fillOpacity=\".54\"\n        />\n      </svg>\n    </button>\n  );\n};\n","import { FC, useMemo } from \"react\";\nimport { PnLDisplayFormat } from \"../../types/types\";\nimport { Text, cn } from \"@orderly.network/ui\";\n\nexport const PnlFormatView: FC<{\n  type: PnLDisplayFormat;\n  curType?: PnLDisplayFormat;\n  setPnlFormat: any;\n}> = (props) => {\n  const { type, curType, setPnlFormat } = props;\n\n  const text = useMemo(() => {\n    switch (type) {\n      case \"roi_pnl\":\n        return \"ROI & PnL\";\n      case \"roi\":\n        return \"ROI\";\n      case \"pnl\":\n        return \"PnL\";\n    }\n  }, [type]);\n\n  const isSelected = type === curType;\n\n  let clsName = \"oui-flex oui-items-center oui-gap-1 oui-cursor-pointer\";\n  if (isSelected) {\n    clsName += \" oui-text-base-contrast\";\n  } else {\n    clsName += \"\";\n  }\n\n  return (\n    <div\n      className={clsName}\n      onClick={() => {\n        setPnlFormat(type);\n      }}\n    >\n      <RadioButton sel={isSelected} />\n      <Text\n        size=\"xs\"\n        intensity={54}\n        className={cn(\n          \"oui-ml-2 \",\n          // isSelected && \"oui-text-base-contrast\"\n        )}\n      >\n        {text}\n      </Text>\n    </div>\n  );\n};\n\nconst RadioButton = (props: {\n  sel?: boolean;\n  // onChange?: (sel: boolean) => void;\n}) => {\n  return (\n    <button\n      type=\"button\"\n      // onClick={(e) => {\n      //   e.stopPropagation();\n      // }}\n    >\n      {props.sel === true ? <SelIcon /> : <UnselIcon />}\n    </button>\n  );\n};\n\nconst SelIcon = () => {\n  return (\n    <svg\n      width=\"16\"\n      height=\"16\"\n      viewBox=\"0 0 16 16\"\n      fill=\"currentColor\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className=\"oui-fill-primary-darken\"\n    >\n      <path\n        d=\"M8.01 1.333a6.667 6.667 0 1 0 0 13.333 6.667 6.667 0 0 0 0-13.333m0 1.333a5.334 5.334 0 1 1-.001 10.667 5.334 5.334 0 0 1 0-10.667\"\n        fill=\"#fff\"\n        fillOpacity=\".36\"\n      />\n      <circle cx=\"8\" cy=\"8\" r=\"3.333\" />\n    </svg>\n  );\n};\n\nconst UnselIcon = () => {\n  return (\n    <svg\n      width=\"16\"\n      height=\"16\"\n      viewBox=\"0 0 16 16\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        d=\"M8.01 1.333a6.667 6.667 0 1 0 0 13.333 6.667 6.667 0 0 0 0-13.333m0 1.333a5.334 5.334 0 1 1-.001 10.667 5.334 5.334 0 0 1 0-10.667\"\n        fill=\"#fff\"\n        fillOpacity=\".54\"\n      />\n    </svg>\n  );\n};\n","import { FC, useMemo } from \"react\";\nimport { ShareOptions } from \"../../types/types\";\nimport { Flex, Text, cn } from \"@orderly.network/ui\";\nimport { Checkbox } from \"./checkbox\";\n\nexport const ShareOption: FC<{\n  type: ShareOptions;\n  curType: Set<ShareOptions>;\n  setShareOption: any;\n}> = (props) => {\n  const { type, curType, setShareOption } = props;\n\n  const text = useMemo(() => {\n    switch (type) {\n      case \"openPrice\":\n        return \"Open price\";\n      case \"closePrice\":\n        return \"Close price\";\n      case \"openTime\":\n        return \"Opened at\";\n      case \"closeTime\":\n        return \"Closed at\";\n      case \"markPrice\":\n        return \"Mark price\";\n      case \"quantity\":\n        return \"Quantity\";\n      case \"leverage\":\n        return \"Leverage\";\n    }\n  }, [type]);\n\n  const isSelected = curType.has(type);\n\n  return (\n    <Flex\n      itemAlign={\"center\"}\n      gap={1}\n      className={cn(\"hover:oui-cursor-pointer\")}\n      onClick={() => {\n        // setPnlFormat(type);\n        setShareOption((value: Set<ShareOptions>) => {\n          const updateSet = new Set(value);\n          if (isSelected) {\n            updateSet.delete(type);\n          } else {\n            updateSet.add(type);\n          }\n          return updateSet;\n        });\n      }}\n    >\n      <Checkbox\n        size={16}\n        checked={isSelected}\n        className=\"oui-pt-[2px]\"\n        onCheckedChange={(checked: boolean) => {\n          setShareOption((value: Set<ShareOptions>) => {\n            const updateSet = new Set(value);\n            if (isSelected) {\n              updateSet.delete(type);\n            } else {\n              updateSet.add(type);\n            }\n            return updateSet;\n          });\n        }}\n      />\n\n      <Text size=\"xs\" intensity={54}>\n        {text}\n      </Text>\n    </Flex>\n  );\n};\n","export const Checkbox = (props: {\n  size?: number;\n  className?: string;\n  checked: boolean;\n  onCheckedChange: (checked: boolean) => void;\n}) => {\n  const { size = 16, className } = props;\n  return (\n    <button\n      type=\"button\"\n      onClick={(e) => {\n        props.onCheckedChange(!props.checked);\n      }}\n      className={className}\n    >\n      {props.checked ? (\n        <svg\n          width={size}\n          height={size}\n          viewBox=\"0 0 16 16\"\n          fill=\"none\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path\n            fillRule=\"evenodd\"\n            clipRule=\"evenodd\"\n            d=\"M4.66 1.953A2.667 2.667 0 0 0 1.995 4.62v6.667a2.667 2.667 0 0 0 2.667 2.666h6.666a2.667 2.667 0 0 0 2.667-2.666V4.62a2.667 2.667 0 0 0-2.667-2.667zm6.664 2.922a.8.8 0 0 1 .557-.208c.2 0 .406.063.558.208a.734.734 0 0 1 0 1.063l-5.434 5.179a.826.826 0 0 1-1.115 0l-2.33-2.22a.736.736 0 0 1 0-1.063.827.827 0 0 1 1.117 0l1.77 1.687z\"\n            fill=\"#fff\"\n            fillOpacity=\".8\"\n          />\n        </svg>\n      ) : (\n        <svg\n          width={size}\n          height={size}\n          viewBox=\"0 0 16 16\"\n          fill=\"none\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path\n            d=\"M4.66 1.953A2.667 2.667 0 0 0 1.995 4.62v6.667a2.667 2.667 0 0 0 2.667 2.666h6.666a2.667 2.667 0 0 0 2.667-2.666V4.62a2.667 2.667 0 0 0-2.667-2.667zm0 1.334h6.667c.737 0 1.334.596 1.334 1.333v6.667c0 .736-.597 1.333-1.334 1.333H4.661a1.333 1.333 0 0 1-1.334-1.333V4.62c0-.737.597-1.333 1.334-1.333\"\n            fill=\"#fff\"\n            fillOpacity=\".8\"\n          />\n        </svg>\n      )}\n    </button>\n  );\n};\n","import {\n  CloseCircleFillIcon,\n  Input,\n  toast,\n} from \"@orderly.network/ui\";\nimport { FC, useRef, useState } from \"react\";\nimport { Checkbox } from \"./checkbox\";\n\nexport const Message: FC<{\n  message: string;\n  setMessage: any;\n  check: boolean;\n  setCheck: any;\n}> = (props) => {\n  const { message, setMessage, check, setCheck } = props;\n  const [focus, setFocus] = useState(false);\n  const inputRef = useRef<HTMLInputElement | null>(null);\n  return (\n    <div className=\"oui-mt-3 oui-mb-6 oui-flex oui-items-center\">\n      <Checkbox\n      className=\"oui-mt-[2px]\"\n        checked={check}\n        onCheckedChange={(e: boolean) => {\n          setCheck(e);\n        }}\n      />\n      <div\n        className=\"oui-text-xs oui-text-base-contrast-54 oui-ml-1 hover:oui-cursor-pointer\"\n        onClick={() => {\n          setCheck(!props.check);\n        }}\n      >\n        Your message\n      </div>\n      <div className=\"oui-bg-base-900 oui-mx-2 oui-rounded-sm\">\n        <Input\n          ref={inputRef}\n          placeholder=\"Max 25 characters\"\n          classNames={{\n            root: \"oui-w-[320px]\"\n          }}\n          size=\"sm\"\n          value={message}\n          autoFocus={false}\n          suffix={\n            focus && (\n              <button\n                className=\"oui-mr-3 oui-cursor-pointer\"\n                onMouseDown={(e) => {\n                  console.log(\"set message to empty\");\n\n                  setMessage(\"\");\n                  setTimeout(() => {\n                    inputRef.current?.focus();\n                  }, 50);\n                  e.stopPropagation();\n                }}\n              >\n                <CloseCircleFillIcon size={18} color=\"white\" />\n              </button>\n            )\n          }\n          onFocus={() => setFocus(true)}\n          onBlur={() => setFocus(false)}\n          onChange={(e) => {\n            if (e.target.value.length > 25) {\n              toast.error(\"Maximum support of 25 characters\");\n              return;\n            }\n            setCheck(e.target.value.length > 0);\n            setMessage(e.target.value);\n          }}\n        />\n      </div>\n    </div>\n  );\n};\n","import { FC } from \"react\";\nimport { Button, Flex } from \"@orderly.network/ui\";\n\nexport const BottomButtons: FC<{\n  onClickDownload: any;\n  onClickCopy: any;\n}> = (props) => {\n  const { onClickDownload, onClickCopy } = props;\n\n  return (\n    <Flex px={8} gap={3} mt={3} itemAlign={\"center\"} >\n      <Button\n        color={\"secondary\"}\n        className=\"oui-flex-1 oui-flex oui-gap-1\"\n        onClick={onClickDownload}\n      >\n        <span>\n          <DownloadIcon />\n        </span>\n        Download\n      </Button>\n\n      <Button\n        className=\"oui-flex-1 oui-flex oui-gap-1\"\n        onClick={onClickCopy}\n      >\n        <span>\n          <CopyIcon />\n        </span>\n        Copy\n      </Button>\n    </Flex>\n  );\n};\n\nconst DownloadIcon = () => {\n  return (\n    <svg\n      width=\"16\"\n      height=\"16\"\n      viewBox=\"0 0 16 16\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        d=\"M4.66 1.994A2.667 2.667 0 0 0 1.995 4.66v6.666a2.667 2.667 0 0 0 2.667 2.667h6.666a2.667 2.667 0 0 0 2.667-2.667V4.661a2.667 2.667 0 0 0-2.667-2.667zM7.995 4.66c.368 0 .667.298.667.666V8.66h2l-2.667 2.666L5.328 8.66h2V5.327c0-.368.299-.667.667-.667\"\n        fill=\"#fff\"\n        fillOpacity=\".98\"\n      />\n    </svg>\n  );\n};\n\nconst CopyIcon = () => {\n  return (\n    <svg\n      width=\"17\"\n      height=\"16\"\n      viewBox=\"0 0 17 16\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        d=\"M5.166 1.994A2.667 2.667 0 0 0 2.499 4.66v4a2.667 2.667 0 0 0 2.667 2.667 2.667 2.667 0 0 0 2.666 2.667h4a2.667 2.667 0 0 0 2.667-2.667v-4a2.667 2.667 0 0 0-2.667-2.667 2.667 2.667 0 0 0-2.666-2.666zm6.666 4c.737 0 1.334.596 1.334 1.333v4c0 .737-.597 1.334-1.334 1.334h-4A1.333 1.333 0 0 1 6.5 11.327h2.667a2.667 2.667 0 0 0 2.666-2.667z\"\n        fill=\"#fff\"\n        fillOpacity=\".98\"\n      />\n    </svg>\n  );\n};\n","import { FC, useEffect, useMemo, useRef, useState } from \"react\";\nimport { Poster } from \"../poster\";\nimport { PosterRef } from \"../poster/poster\";\nimport {\n  PnLDisplayFormat,\n  ReferralType,\n  ShareEntity,\n  ShareOptions,\n  SharePnLOptions,\n} from \"../../types/types\";\nimport { getPnlInfo, getPnLPosterData, savePnlInfo } from \"../utils/utils\";\nimport {\n  Box,\n  Button,\n  CloseCircleFillIcon,\n  cn,\n  Input,\n  ScrollArea,\n  toast,\n} from \"@orderly.network/ui\";\nimport { Carousel } from \"../carousel\";\nimport {\n  CarouselContent,\n  CarouselItem,\n  Dot,\n  useCarousel,\n} from \"../carousel/carousel\";\n\nexport const MobileSharePnLContent: FC<{\n  entity: ShareEntity;\n  leverage: any;\n  hide: any;\n  baseDp?: number;\n  quoteDp?: number;\n  referral?: ReferralType;\n  shareOptions: SharePnLOptions;\n}> = (props) => {\n  const { shareOptions } = props;\n  const localPnlConfig = getPnlInfo();\n\n  const hasRoiAndPnl = props.entity.roi != null && props.entity.pnl != null;\n  const formats: PnLDisplayFormat[] = hasRoiAndPnl\n    ? [\"roi_pnl\", \"roi\", \"pnl\"]\n    : props.entity.roi != null\n    ? [\"roi\"]\n    : props.entity.pnl != null\n    ? [\"pnl\"]\n    : [];\n\n  const [pnlFormat, setPnlFormat] = useState<PnLDisplayFormat>(\n    formats.length == 1 ? formats[0] : localPnlConfig.pnlFormat\n  );\n  const [shareOption, setShareOption] = useState<Set<ShareOptions>>(\n    new Set(localPnlConfig.options)\n  );\n  const [message, setMessage] = useState<string>(localPnlConfig.message);\n  const [selectIndex, setSelectIndex] = useState(localPnlConfig.bgIndex);\n  // const { shareOptions } = useTradingPageContext();\n  const { backgroundImages, ...resetOptions } = shareOptions ?? {\n    backgroundImages: [],\n  };\n\n  const [domain, setDomain] = useState(\"\");\n\n  const posterRefs = shareOptions?.backgroundImages?.map(() =>\n    useRef<PosterRef | null>(null)\n  );\n\n  useEffect(() => {\n    const currentDomain = window.location.hostname;\n    setDomain(currentDomain);\n  }, []);\n\n  const posterData = getPnLPosterData(\n    props.entity,\n    props.leverage,\n    message,\n    domain,\n    pnlFormat,\n    shareOption,\n    props.baseDp,\n    props.quoteDp,\n    props.referral\n  );\n  // console.log(\"pster data\", posterData, props.entity);\n\n  const carouselRef = useRef<any>();\n  const aspectRatio = 552 / 310;\n  const [scale, setScale] = useState(1);\n  const [carouselHeight, setCarouselHeight] = useState(0);\n\n  const [focus, setFocus] = useState(false);\n  const inputRef = useRef<HTMLInputElement | null>(null);\n\n  useEffect(() => {\n    if (carouselRef.current) {\n      const divWidth = carouselRef.current.offsetWidth;\n      const divHeight = divWidth / aspectRatio;\n      setCarouselHeight(divHeight);\n      setScale(divWidth / 552);\n    }\n  }, [carouselRef, domain]);\n\n  const onSharePnL = async (\n    posterRef: React.MutableRefObject<PosterRef | null>\n  ) => {\n    if (!posterRef.current) return;\n    const data = posterRef.current?.toDataURL();\n    const blob = dataURItoBlob(data);\n    try {\n      // Check if the browser supports the share feature\n      if (navigator.share) {\n        await navigator.share({\n          // title: \"Share PnL\",\n          text: message,\n          // url: imageUrl,\n          files: [new File([blob], \"image.png\", { type: \"image/png\" })],\n        });\n        console.log(\"Image shared successfully!\");\n      } else {\n        console.log(\"Share API is not supported in this browser.\");\n      }\n      props.hide?.();\n    } catch (error) {\n      console.error(\"Error sharing image:\", error);\n    }\n  };\n\n  savePnlInfo(pnlFormat, shareOption, selectIndex, message);\n\n  return (\n    <div className=\"oui-w-full\">\n      {/* <div>{`leverage: ${props.leverage}x`}</div> */}\n      <div\n        ref={carouselRef}\n        className=\"oui-w-full oui-mt-4 oui-overflow-hidden\"\n        style={{ height: `${carouselHeight + 20}px` }}\n      >\n        <Carousel\n          className=\"oui-w-full oui-overflow-hidden\"\n          opts={{ align: \"start\" }}\n          initIndex={selectIndex}\n        >\n          <CarouselContent style={{ height: `${carouselHeight}px` }}>\n            {shareOptions?.backgroundImages?.map((item, index) => (\n              <CarouselItem key={index}>\n                <Poster\n                  className=\"oui-transform oui-origin-top-left\"\n                  style={{ scale: `${scale}` }}\n                  width={552}\n                  height={310}\n                  data={{\n                    backgroundImg: item,\n                    ...resetOptions,\n                    data: posterData,\n                  }}\n                  ratio={3}\n                  ref={posterRefs?.[index]}\n                />\n              </CarouselItem>\n            ))}\n          </CarouselContent>\n          <div className=\"oui-mt-2 oui-mb-1 oui-flex oui-justify-center\">\n            <MyIdentifier\n              dotClassName=\"oui-w-[16px] oui-h-[4px] oui-bg-base-300\"\n              dotActiveClassName=\"!oui-bg-primary-darken oui-w-[20px]\"\n              setSelectIndex={setSelectIndex}\n            />\n          </div>\n        </Carousel>\n      </div>\n\n      {/* @ts-ignore */}\n      <ScrollArea className=\"oui-max-h-[200px] oui-overflow-y-auto oui-custom-scrollbar\">\n        <div className=\"oui-mt-4\">\n          <div className=\"oui-text-3xs oui-text-base-contrast-54\">\n            PnL display format\n          </div>\n          <div className=\"oui-pt-3 oui-px-1 oui-justify-between oui-gap-3 oui-grid oui-grid-cols-3 oui-row-span-1\">\n            {formats.map((item) => (\n              <PnlFormatView\n                setPnlFormat={setPnlFormat}\n                type={item}\n                curType={pnlFormat}\n              />\n            ))}\n          </div>\n        </div>\n\n        <div className=\"oui-mt-3\">\n          <div className=\"oui-text-3xs oui-text-base-contrast-54 oui-h-[18px]\">\n            Optional information to share\n          </div>\n          <div className=\"oui-flex oui-flex-wrap oui-gap-3 oui-mt-3\">\n            {props.entity.openPrice && (\n              <ShareOption\n                setShareOption={setShareOption}\n                type=\"openPrice\"\n                curType={shareOption}\n              />\n            )}\n            {props.entity.closePrice && (\n              <ShareOption\n                setShareOption={setShareOption}\n                type=\"closePrice\"\n                curType={shareOption}\n              />\n            )}\n            {props.entity.openTime && (\n              <ShareOption\n                setShareOption={setShareOption}\n                type=\"openTime\"\n                curType={shareOption}\n              />\n            )}\n            {props.entity.closeTime && (\n              <ShareOption\n                setShareOption={setShareOption}\n                type=\"closeTime\"\n                curType={shareOption}\n              />\n            )}\n            {props.leverage && (\n              <ShareOption\n                setShareOption={setShareOption}\n                type=\"leverage\"\n                curType={shareOption}\n              />\n            )}\n            {props.entity.markPrice && (\n              <ShareOption\n                setShareOption={setShareOption}\n                type=\"markPrice\"\n                curType={shareOption}\n              />\n            )}\n            {props.entity.quantity && (\n              <ShareOption\n                setShareOption={setShareOption}\n                type=\"quantity\"\n                curType={shareOption}\n              />\n            )}\n          </div>\n        </div>\n\n        <div className=\"oui-mt-3 oui-mb-8\">\n          <div className=\"oui-text-3xs oui-text-base-contrast-54 oui-h-[18px]\">\n            Your message\n          </div>\n          <div className=\"oui-mt-3 oui-h-[48px] oui-bg-base-600 oui-mx-1\">\n            <Input\n              placeholder=\"Max 25 characters\"\n              containerClassName=\"oui-bg-transparent oui-h-[48px]\"\n              value={message}\n              autoFocus={false}\n              onChange={(e) => {\n                if (e.target.value.length > 25) {\n                  toast.error(\"Maximum support of 25 characters\");\n                  return;\n                }\n                setMessage(e.target.value);\n              }}\n              ref={inputRef}\n              onFocus={() => setFocus(true)}\n              onBlur={() => setFocus(false)}\n              suffix={\n                focus && (\n                  <button\n                    className=\"oui-mr-3 oui-cursor-pointer\"\n                    onMouseDown={(e) => {\n                      console.log(\"set message to empty\");\n\n                      setMessage(\"\");\n                      setTimeout(() => {\n                        inputRef.current?.focus();\n                      }, 50);\n                      e.stopPropagation();\n                    }}\n                  >\n                    <CloseCircleFillIcon size={18} color=\"white\" />\n                  </button>\n                )\n              }\n            />\n          </div>\n        </div>\n      </ScrollArea>\n\n      <div className=\"oui-pt-2\">\n        <Button\n          fullWidth\n          className=\"oui-h-[40px] oui-text-[16px]\"\n          onClick={() => {\n            const ref = posterRefs?.[selectIndex];\n            if (ref) {\n              onSharePnL(ref);\n            }\n          }}\n        >\n          Share\n        </Button>\n      </div>\n    </div>\n  );\n};\n\nconst PnlFormatView: FC<{\n  type: PnLDisplayFormat;\n  curType?: PnLDisplayFormat;\n  setPnlFormat: any;\n}> = (props) => {\n  const { type, curType, setPnlFormat } = props;\n\n  const text = useMemo(() => {\n    switch (type) {\n      case \"roi_pnl\":\n        return \"ROI & PnL\";\n      case \"roi\":\n        return \"ROI\";\n      case \"pnl\":\n        return \"PnL\";\n    }\n  }, [type]);\n\n  console.log(\"pnl format\", type, curType);\n\n  const isSelected = type === curType;\n\n  return (\n    <div\n      className={cn(\n        \"oui-shadow-lg oui-rounded-lg oui-h-[46px] oui-flex-1 oui-bg-base-4 hover:oui-cursor-pointer oui-flex oui-items-center oui-px-3 oui-referral-shadow\",\n        isSelected && \"oui-bg-primary-darken oui-dot-sel\"\n      )}\n      onClick={() => {\n        setPnlFormat(type);\n      }}\n    >\n      <div className=\"oui-text-sm oui-text-base-contrast\">{text}</div>\n      {/* {isSelected && <RadioIcon size={20} />} */}\n    </div>\n  );\n};\n\nconst ShareOption: FC<{\n  type: ShareOptions;\n  curType: Set<ShareOptions>;\n  setShareOption: any;\n}> = (props) => {\n  const { type, curType, setShareOption } = props;\n\n  const text = useMemo(() => {\n    switch (type) {\n      case \"openPrice\":\n        return \"Open price\";\n      case \"closePrice\":\n        return \"Close price\";\n      case \"openTime\":\n        return \"Opened at\";\n      case \"closeTime\":\n        return \"Closed at\";\n      case \"markPrice\":\n        return \"Mark price\";\n      case \"quantity\":\n        return \"Quantity\";\n      case \"leverage\":\n        return \"Leverage\";\n    }\n  }, [type]);\n\n  const isSelected = curType.has(type);\n\n  return (\n    <div\n      className={cn(\n        \"oui-shadow-lg oui-rounded-lg oui-h-[46px] oui-mt-0 oui-w-[calc(50%-6px)] oui-bg-base-4 hover:oui-cursor-pointer oui-items-center oui-flex oui-p-3 oui-referral-shadow\"\n      )}\n      onClick={() => {\n        // setPnlFormat(type);\n        setShareOption((value: Set<ShareOptions>) => {\n          const updateSet = new Set(value);\n          if (isSelected) {\n            updateSet.delete(type);\n          } else {\n            updateSet.add(type);\n          }\n          return updateSet;\n        });\n      }}\n    >\n      <div className=\"oui-text-sm oui-flex-1 oui-text-base-contrast\">\n        {text}\n      </div>\n      {isSelected && <ChoicesFillIcon />}\n    </div>\n  );\n};\nfunction dataURItoBlob(dataURI: string) {\n  const byteString = atob(dataURI.split(\",\")[1]);\n  const mimeString = dataURI.split(\",\")[0].split(\":\")[1].split(\";\")[0];\n  const ab = new ArrayBuffer(byteString.length);\n  const ia = new Uint8Array(ab);\n  for (let i = 0; i < byteString.length; i++) {\n    ia[i] = byteString.charCodeAt(i);\n  }\n  return new Blob([ab], { type: mimeString });\n}\n\nconst MyIdentifier: FC<{\n  setSelectIndex: any;\n  className?: string;\n  dotClassName?: string;\n  dotActiveClassName?: string;\n  onClick?: (index: number) => void;\n}> = (props) => {\n  const { scrollSnaps, selectedIndex } = useCarousel();\n  useEffect(() => {\n    props.setSelectIndex(selectedIndex);\n  }, [selectedIndex]);\n\n  console.log(\"setSelectIndex is\", selectedIndex);\n\n  return (\n    <div className={cn(\"oui-flex oui-gap-1\")}>\n      {scrollSnaps.map((_: any, index: number) => {\n        return (\n          <Dot\n            key={index}\n            index={index}\n            active={index === selectedIndex}\n            onClick={props.onClick}\n            className={props.dotClassName}\n            activeClassName={props.dotActiveClassName}\n          />\n        );\n      })}\n    </div>\n  );\n};\n\nconst ChoicesFillIcon = () => {\n  return (\n    <svg\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M2.01416 11.9989C2.01416 6.47589 6.49136 1.9989 12.0142 1.9989C17.5372 1.9989 22.0142 6.47589 22.0142 11.9989C22.0142 17.5219 17.5372 21.9989 12.0142 21.9989C6.49136 21.9989 2.01416 17.5219 2.01416 11.9989ZM16.9853 7.31211C17.2125 7.09537 17.5236 7 17.8218 7C18.1201 7 18.4312 7.09537 18.6583 7.31211C19.1139 7.74546 19.1139 8.47384 18.6583 8.9072L10.5077 16.675C10.0534 17.1083 9.28909 17.1083 8.83472 16.675L5.34077 13.3459C4.88641 12.9126 4.88641 12.1841 5.34077 11.7508C5.79631 11.3175 6.56057 11.3175 7.01493 11.7508L9.67122 14.2822L16.9853 7.31211Z\"\n        fill=\"white\"\n        fillOpacity=\"1\"\n      />\n    </svg>\n  );\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport useEmblaCarousel, {\n  type UseEmblaCarouselType,\n} from \"embla-carousel-react\";\nimport { Button, cn } from \"@orderly.network/ui\";\n\n\n\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\ntype CarouselProps = {\n  opts?: CarouselOptions;\n  plugins?: CarouselPlugin;\n  orientation?: \"horizontal\" | \"vertical\";\n  setApi?: (api: CarouselApi) => void;\n  initIndex?: number,\n};\n\ntype CarouselContextProps = {\n  carouselRef: ReturnType<typeof useEmblaCarousel>[0];\n  api: ReturnType<typeof useEmblaCarousel>[1];\n  scrollPrev: () => void;\n  scrollNext: () => void;\n  canScrollPrev: boolean;\n  canScrollNext: boolean;\n  selectedIndex: number;\n  scrollSnaps: number[];\n} & CarouselProps;\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\nexport function useCarousel() {\n  const context = React.useContext(CarouselContext);\n\n  if (!context) {\n    throw new Error(\"useCarousel must be used within a <Carousel />\");\n  }\n\n  return context;\n}\n\nconst Carousel = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement> & CarouselProps\n>(\n  (\n    {\n      orientation = \"horizontal\",\n      opts,\n      setApi,\n      plugins,\n      className,\n      children,\n      ...props\n    },\n    ref\n  ) => {\n    const [carouselRef, api] = useEmblaCarousel(\n      {\n        ...opts,\n        axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n      },\n      plugins\n    );\n    const [canScrollPrev, setCanScrollPrev] = React.useState(false);\n    const [canScrollNext, setCanScrollNext] = React.useState(false);\n    const [selectedIndex, setSelectedIndex] = React.useState(props.initIndex ||0);\n    const [scrollSnaps, setScrollSnaps] = React.useState<number[]>([]);\n\n    const onSelect = React.useCallback(\n      (api: CarouselApi) => {\n        if (!api) {\n          return;\n        }\n\n        // console.log(\"selected\", api.scrollSnapList());\n\n        if (scrollSnaps.length === 0) {\n          setScrollSnaps(api.scrollSnapList());\n        }\n\n        setSelectedIndex(api.selectedScrollSnap());\n\n        setCanScrollPrev(api.canScrollPrev());\n        setCanScrollNext(api.canScrollNext());\n      },\n      [scrollSnaps]\n    );\n\n    const scrollPrev = React.useCallback(() => {\n      api?.scrollPrev();\n    }, [api]);\n\n    const scrollNext = React.useCallback(() => {\n      api?.scrollNext();\n    }, [api]);\n\n    const handleKeyDown = React.useCallback(\n      (event: React.KeyboardEvent<HTMLDivElement>) => {\n        if (event.key === \"ArrowLeft\") {\n          event.preventDefault();\n          scrollPrev();\n        } else if (event.key === \"ArrowRight\") {\n          event.preventDefault();\n          scrollNext();\n        }\n      },\n      [scrollPrev, scrollNext]\n    );\n\n    React.useEffect(() => {\n      if (!api || !setApi) {\n        return;\n      }\n\n      setApi(api);\n    }, [api, setApi]);\n\n    React.useEffect(() => {\n      if (!api) {\n        return;\n      }\n\n      onSelect(api);\n      api.on(\"reInit\", onSelect);\n      api.on(\"select\", onSelect);\n\n      if (props.initIndex) {\n        api.scrollTo(props.initIndex);\n      }\n      return () => {\n        api?.off(\"select\", onSelect);\n      };\n    }, [api, onSelect]);\n\n    return (\n      <CarouselContext.Provider\n        value={{\n          carouselRef,\n          api: api,\n          opts,\n          orientation:\n            orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n          scrollPrev,\n          scrollNext,\n          canScrollPrev,\n          canScrollNext,\n          selectedIndex,\n          scrollSnaps,\n        }}\n      >\n        <div\n          ref={ref}\n          onKeyDownCapture={handleKeyDown}\n          className={cn(\"oui-relative\", className)}\n          role=\"region\"\n          aria-roledescription=\"carousel\"\n          {...props}\n        >\n          {children}\n        </div>\n      </CarouselContext.Provider>\n    );\n  }\n);\nCarousel.displayName = \"Carousel\";\n\nconst CarouselContent = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n  const { carouselRef, orientation } = useCarousel();\n\n  \n\n  return (\n    <div ref={carouselRef} className=\"oui-overflow-hidden\">\n      <div\n        ref={ref}\n        className={cn(\n          \"oui-flex\",\n          orientation === \"horizontal\"\n            ? \"oui--ml-4\"\n            : \"oui--mt-4 oui-flex-col\",\n          className\n        )}\n        {...props}\n      />\n    </div>\n  );\n});\nCarouselContent.displayName = \"CarouselContent\";\n\nconst CarouselItem = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n  const { orientation } = useCarousel();\n\n  return (\n    <div\n      ref={ref}\n      role=\"group\"\n      aria-roledescription=\"slide\"\n      className={cn(\n        \"oui-min-w-0 oui-shrink-0 oui-grow-0 oui-basis-full\",\n        orientation === \"horizontal\" ? \"oui-pl-4\" : \"oui-pt-4\",\n        className\n      )}\n      {...props}\n    />\n  );\n});\nCarouselItem.displayName = \"CarouselItem\";\n\nconst CarouselPrevious = React.forwardRef<\n  HTMLButtonElement,\n  React.ComponentProps<typeof Button>\n>(({ className, variant = \"contained\", size = \"icon\", ...props }, ref) => {\n  const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n  return (\n    <Button\n      // @ts-ignore\n      ref={ref}\n      variant={variant}\n      // size={size}\n      className={cn(\n        \"oui-absolute  oui-h-8 oui-w-8 oui-rounded-full\",\n        orientation === \"horizontal\"\n          ? \"oui--left-12 oui-top-1/2 oui--translate-y-1/2\"\n          : \"oui--top-12 oui-left-1/2 oui--translate-x-1/2 oui-rotate-90\",\n        className\n      )}\n      disabled={!canScrollPrev}\n      onClick={scrollPrev}\n      {...props}\n    >\n      {/* @ts-ignore */}\n      <ChevronLeft size={20} />\n      <span className=\"oui-sr-only\">Previous slide</span>\n    </Button>\n  );\n});\nCarouselPrevious.displayName = \"CarouselPrevious\";\n\nconst CarouselNext = React.forwardRef<\n  HTMLButtonElement,\n  React.ComponentProps<typeof Button>\n>(({ className, variant = \"contained\", size = \"icon\", ...props }, ref) => {\n  const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n  return (\n    <Button\n      // @ts-ignore\n      ref={ref}\n      variant={variant}\n      // size={size}\n      className={cn(\n        \"oui-absolute oui-h-8 oui-w-8 oui-rounded-full\",\n        orientation === \"horizontal\"\n          ? \"oui--right-12 oui-top-1/2 oui--translate-y-1/2\"\n          : \"oui--bottom-12 oui-left-1/2 oui--translate-x-1/2 oui-rotate-90\",\n        className\n      )}\n      disabled={!canScrollNext}\n      onClick={scrollNext}\n      {...props}\n    >\n      {/* @ts-ignore */}\n      <ChevronRight size={20} />\n      <span className=\"oui-sr-only\">Next slide</span>\n    </Button>\n  );\n});\nCarouselNext.displayName = \"CarouselNext\";\n\nexport type CarouselIdentifierProps = {\n  className?: string;\n  dotClassName?: string;\n  dotActiveClassName?: string;\n  onClick?: (index: number) => void;\n  // asChild?: boolean;\n};\nconst CarouselIdentifier: React.FC<CarouselIdentifierProps> = (props) => {\n  const { scrollSnaps, selectedIndex } = useCarousel();\n\n  return (\n    <div className={cn(\"oui-flex oui-gap-1\", props.className)}>\n      {scrollSnaps.map((_, index) => {\n        return (\n          <Dot\n            key={index}\n            index={index}\n            active={index === selectedIndex}\n            onClick={props.onClick}\n            className={props.dotClassName}\n            activeClassName={props.dotActiveClassName}\n          />\n        );\n      })}\n    </div>\n  );\n};\n\nCarouselIdentifier.displayName = \"CarouselIdentifier\";\n\nexport const Dot: React.FC<{\n  index: number;\n  active: boolean;\n  onClick?: (index: number) => void;\n  className?: string;\n  activeClassName?: string;\n}> = ({ index, active, onClick, className, activeClassName }) => {\n  const activedClassName = activeClassName || \"oui-bg-primary-darken\";\n  console.log(\"activedClassName is\", activedClassName);\n  \n  return (\n    <button\n      onClick={() => onClick?.(index)}\n      className={cn(\n        \"oui-w-2 oui-h-2 oui-rounded-full oui-bg-white/30\",\n        className,\n        active && `active ${activedClassName}`\n      )}\n    />\n  );\n};\n\nexport {\n  type CarouselApi,\n  Carousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselPrevious,\n  CarouselNext,\n  CarouselIdentifier,\n};\n","import {\n  Carousel as OriginCarousel,\n  CarouselContent,\n  CarouselItem,\n  CarouselNext,\n  CarouselPrevious,\n  CarouselIdentifier,\n} from \"./carousel\";\n\nexport type Carousel = typeof OriginCarousel & {\n  Content: typeof CarouselContent;\n  Item: typeof CarouselItem;\n  Next: typeof CarouselNext;\n  Previous: typeof CarouselPrevious;\n  indentify: typeof CarouselIdentifier;\n};\n\nconst Carousel = OriginCarousel as Carousel;\n\nCarousel.Content = CarouselContent;\nCarousel.Item = CarouselItem;\nCarousel.Next = CarouselNext;\nCarousel.Previous = CarouselPrevious;\nCarousel.indentify = CarouselIdentifier;\n\nexport { Carousel };\n","import { SharePnLOptions, SharePnLParams } from \"../types/types\";\nimport { useSharePnLScript } from \"./sharePnL.script\";\nimport { DesktopSharePnL, MobileSharePnL } from \"./sharePnL.ui\";\n\nexport const SharePnLBottomSheetWidget = (props: {\n  hide?: () => void;\n  pnl?: SharePnLOptions & SharePnLParams;\n}) => {\n  const state = useSharePnLScript({\n    hide: props.hide,\n    pnl: props.pnl,\n  });\n  return <MobileSharePnL {...state} />;\n};\n\nexport const SharePnLDialogWidget = (props: {\n  hide?: () => void;\n  pnl?: SharePnLOptions & SharePnLParams;\n}) => {\n  const state = useSharePnLScript({\n    hide: props.hide,\n    pnl: props.pnl,\n  });\n  return <DesktopSharePnL {...state} />;\n};\n"]}