{"version":3,"file":"Drawer.cjs","names":["_styled","_interopRequireDefault","require","_Button","_styles","_Typography","_react","_Button2","_FullScreenOverlay","_i18n","_index","_OdysseyDesignTokensContext","_Typography2","_useStackedBackdropProps","_jsxRuntime","e","__esModule","default","variantValues","exports","DrawerHeader","styled","shouldForwardProp","prop","odysseyDesignTokens","Spacing4","Spacing5","HueNeutral900","HueNeutralWhite","hasDividers","HueNeutral200","typographyClasses","root","buttonClasses","DrawerContentWrapper","display","gridTemplateAreas","gridTemplateRows","overflow","DrawerContent","DrawerFooter","Spacing2","Drawer","ariaLabel","children","hasDividersProp","isOpen","onClose","primaryCallToActionComponent","secondaryCallToActionComponent","showDividers","tertiaryCallToActionComponent","testId","title","translate","variant","isContentScrollable","setIsContentScrollable","useState","drawerContentRef","useRef","useOdysseyDesignTokens","i18n","t","useTranslation","anchorDirection","dir","useEffect","frameId","handleContentScroll","drawerContentElement","current","cancelAnimationFrame","scrollHeight","clientHeight","requestAnimationFrame","dividersVisible","useMemo","hasFooter","handleCloseButtonClick","useCallback","event","muiTheme","useTheme","stackedBackdropProps","useStackedBackdropProps","Boolean","layer","zIndex","drawer","slotProps","backdrop","muiDrawerComponent","jsx","_Drawer2","anchor","open","sx","transition","jsxs","Heading5","Button","onClick","size","startIcon","CloseIcon","tabIndex","ref","FullScreenOverlay","MemoizedDrawer","memo","displayName"],"sources":["../../src/Drawer.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport styled from \"@emotion/styled\";\nimport {\n  Drawer as MuiDrawer,\n  DrawerProps as MuiDrawerProps,\n} from \"@mui/material\";\nimport { buttonClasses } from \"@mui/material/Button\";\nimport { useTheme } from \"@mui/material/styles\";\nimport { typographyClasses } from \"@mui/material/Typography\";\nimport {\n  memo,\n  ReactElement,\n  ReactNode,\n  useCallback,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from \"react\";\n\nimport type { HtmlProps } from \"./HtmlProps.js\";\n\nimport { Button, ButtonProps } from \"./Buttons/Button.js\";\nimport { FullScreenOverlay } from \"./FullScreenOverlay.js\";\nimport { useTranslation } from \"./i18n.generated/i18n.js\";\nimport { CloseIcon } from \"./icons.generated/index.js\";\nimport {\n  DesignTokens,\n  useOdysseyDesignTokens,\n} from \"./OdysseyDesignTokensContext.js\";\nimport { Heading5 } from \"./Typography.js\";\nimport { useStackedBackdropProps } from \"./useStackedBackdropProps.js\";\n\ntype MuiOnCloseEvent = Parameters<Required<MuiDrawerProps>[\"onClose\"]>[0];\ntype MuiOnCloseReason = Parameters<Required<MuiDrawerProps>[\"onClose\"]>[1];\nexport type DrawerOnCloseReason = MuiOnCloseReason | \"closeButtonClick\";\n\nexport const variantValues = [\"temporary\", \"persistent\"] as const;\n\nexport type DrawerProps = {\n  /**\n   * The content of the Drawer. May be a `string` or any other `ReactNode` or array of `ReactNode`s.\n   */\n  children?: ReactNode;\n  /**\n   * If `true`, the drawer is visible.\n   */\n  isOpen?: boolean;\n  /**\n   * Called when the drawer is dismissed. Receives the event and the reason for closing.\n   */\n  onClose: (event: MuiOnCloseEvent, reason: DrawerOnCloseReason) => void;\n  /**\n   * An optional Button object to be situated in the Drawer footer. Should almost always be of variant `primary`.\n   */\n  primaryCallToActionComponent?: ReactElement<typeof Button>;\n  /**\n   * An optional Button object to be situated in the Drawer footer, alongside the `callToActionPrimaryComponent`.\n   */\n  secondaryCallToActionComponent?: ReactElement<typeof Button>;\n  /**\n   * An optional Button object to be situated in the Drawer footer, alongside the other two `callToAction` components.\n   */\n  tertiaryCallToActionComponent?: ReactElement<typeof Button>;\n  /**\n   * Heading text displayed at the top of the drawer.\n   */\n  title?: string;\n  /**\n   * Controls how the Drawer positions relative to page content.\n   * - If `'temporary'`, overlays content and dismisses when the user clicks the backdrop.\n   * - If `'persistent'`, pushes the page layout to the side and stays open until explicitly closed.\n   *\n   * A `'temporary'` Drawer spans the full viewport width at 400 pixels and below. A `'persistent'` Drawer keeps its width of about 360 pixels at every viewport size.\n   * @default \"temporary\"\n   */\n  variant?: (typeof variantValues)[number];\n} & Pick<HtmlProps, \"ariaLabel\" | \"testId\" | \"translate\"> &\n  (\n    | {\n        /**\n         * If `true`, renders divider lines separating the header, content, and footer sections.\n         * @default false\n         */\n        hasDividers?: never;\n        /**\n         * @deprecated use `hasDividers` instead.\n         *\n         * If `true`, shows divider lines separating header, content, and footer. Use `hasDividers` instead.\n         * @default false\n         */\n        showDividers: boolean;\n      }\n    | {\n        /**\n         * If `true`, renders divider lines separating the header, content, and footer sections.\n         * @default false\n         */\n        hasDividers: boolean;\n        /**\n         * @deprecated use `hasDividers` instead.\n         *\n         * If `true`, shows divider lines separating header, content, and footer. Use `hasDividers` instead.\n         * @default false\n         */\n        showDividers?: never;\n      }\n  );\n\ntype DrawerStyleProps = {\n  hasDividers: boolean;\n  odysseyDesignTokens: DesignTokens;\n};\n\nconst DrawerHeader = styled(\"div\", {\n  shouldForwardProp: (prop) =>\n    prop !== \"odysseyDesignTokens\" && prop !== \"hasDividers\",\n})<DrawerStyleProps>`\n  grid-area: header;\n  position: sticky;\n  top: 0;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  margin: 0;\n  padding: ${({ odysseyDesignTokens }) => odysseyDesignTokens.Spacing4}\n    ${({ odysseyDesignTokens }) => odysseyDesignTokens.Spacing5};\n  color: ${({ odysseyDesignTokens }) => odysseyDesignTokens.HueNeutral900};\n  background-color: ${({ odysseyDesignTokens }) =>\n    odysseyDesignTokens.HueNeutralWhite};\n  border-bottom: ${({ hasDividers, odysseyDesignTokens }) =>\n    hasDividers ? `1px solid ${odysseyDesignTokens.HueNeutral200}` : \"none\"};\n  /* Target the MUI classes, not the tag. Odyssey Typography and Button accept\n     no className, so these styles cannot move onto the components themselves,\n     and a tag selector stops applying after a change of heading level. */\n  & > .${typographyClasses.root} {\n    margin-bottom: 0;\n    min-width: 0;\n  }\n  & > .${buttonClasses.root} {\n    flex-shrink: 0;\n  }\n`;\n\nconst DrawerContentWrapper = styled(\"div\", {\n  shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{\n  odysseyDesignTokens: DesignTokens;\n}>({\n  display: \"grid\",\n  gridTemplateAreas: `\n    \"header\"\n    \"content\"\n    \"footer\"\n  `,\n  gridTemplateRows: \"auto 1fr auto\",\n  overflow: \"hidden\",\n});\n\nconst DrawerContent = styled(\"div\", {\n  shouldForwardProp: (prop) =>\n    prop !== \"odysseyDesignTokens\" && prop !== \"hasDividers\",\n})<DrawerStyleProps>`\n  grid-area: content;\n  overflow-y: auto;\n  padding: ${({ hasDividers, odysseyDesignTokens }) =>\n    hasDividers\n      ? `${odysseyDesignTokens.Spacing5}`\n      : `0 ${odysseyDesignTokens.Spacing5}`};\n`;\n\nconst DrawerFooter = styled(\"div\", {\n  shouldForwardProp: (prop) =>\n    prop !== \"odysseyDesignTokens\" && prop !== \"hasDividers\",\n})<DrawerStyleProps>`\n  grid-area: footer;\n  position: sticky;\n  bottom: 0;\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: flex-end;\n  align-items: center;\n  align-content: center;\n  row-gap: ${({ odysseyDesignTokens }) => odysseyDesignTokens.Spacing2};\n  padding: ${({ odysseyDesignTokens }) => odysseyDesignTokens.Spacing4};\n  border-top: ${({ hasDividers, odysseyDesignTokens }) =>\n    hasDividers ? `1px solid ${odysseyDesignTokens.HueNeutral200}` : \"none\"};\n  background-color: ${({ odysseyDesignTokens }) =>\n    odysseyDesignTokens.HueNeutralWhite};\n`;\n\n/**\n * A panel that slides in from the edge of the screen to display supplementary content or actions without navigating away from the current page.\n */\nconst Drawer = ({\n  ariaLabel,\n  children,\n  hasDividers: hasDividersProp = false,\n  isOpen,\n  onClose,\n  primaryCallToActionComponent,\n  secondaryCallToActionComponent,\n  showDividers = false,\n  tertiaryCallToActionComponent,\n  testId,\n  title,\n  translate,\n  variant = \"temporary\",\n}: DrawerProps) => {\n  const [isContentScrollable, setIsContentScrollable] = useState(false);\n  const drawerContentRef = useRef<HTMLDivElement>(null);\n  const odysseyDesignTokens = useOdysseyDesignTokens();\n\n  const hasDividers = hasDividersProp || showDividers;\n\n  //If RTL is set in the theme, align the drawer on the left side of the screen, uses right by default.\n  const { i18n, t } = useTranslation();\n  const anchorDirection = i18n.dir() === \"rtl\" ? \"left\" : \"right\";\n\n  useEffect(() => {\n    let frameId: number;\n\n    const handleContentScroll = () => {\n      const drawerContentElement = drawerContentRef.current;\n      if (drawerContentElement) {\n        cancelAnimationFrame(frameId);\n        setIsContentScrollable(\n          drawerContentElement.scrollHeight > drawerContentElement.clientHeight,\n        );\n      }\n      frameId = requestAnimationFrame(handleContentScroll);\n    };\n\n    if (isOpen) {\n      frameId = requestAnimationFrame(handleContentScroll);\n    }\n\n    return () => {\n      cancelAnimationFrame(frameId);\n    };\n  }, [isOpen]);\n\n  const dividersVisible = useMemo(() => {\n    return hasDividers || isContentScrollable;\n  }, [hasDividers, isContentScrollable]);\n\n  const hasFooter = useMemo(\n    () =>\n      primaryCallToActionComponent ||\n      secondaryCallToActionComponent ||\n      tertiaryCallToActionComponent,\n    [\n      primaryCallToActionComponent,\n      secondaryCallToActionComponent,\n      tertiaryCallToActionComponent,\n    ],\n  );\n\n  const handleCloseButtonClick = useCallback<\n    NonNullable<ButtonProps[\"onClick\"]>\n  >((event) => onClose(event, \"closeButtonClick\"), [onClose]);\n\n  const muiTheme = useTheme();\n\n  const stackedBackdropProps = useStackedBackdropProps({\n    isOpen: Boolean(isOpen) && variant === \"temporary\",\n    layer: muiTheme.zIndex.drawer,\n  });\n\n  const slotProps = useMemo<MuiDrawerProps[\"slotProps\"]>(\n    () => ({ backdrop: stackedBackdropProps }),\n    [stackedBackdropProps],\n  );\n\n  const muiDrawerComponent = useMemo(\n    () => (\n      <MuiDrawer\n        anchor={anchorDirection}\n        data-se={testId}\n        onClose={onClose}\n        open={isOpen}\n        slotProps={slotProps}\n        sx={{\n          //Overrides default MUI inline style\n          ...(variant === \"persistent\" && {\n            \"& .MuiDrawer-paper\": {\n              transition: \"none\",\n            },\n          }),\n        }}\n        variant={variant}\n      >\n        <DrawerContentWrapper odysseyDesignTokens={odysseyDesignTokens}>\n          <DrawerHeader\n            hasDividers={dividersVisible}\n            odysseyDesignTokens={odysseyDesignTokens}\n            translate={translate}\n          >\n            <Heading5>{title}</Heading5>\n            <Button\n              ariaLabel={ariaLabel || t(\"close.text\")}\n              onClick={handleCloseButtonClick}\n              size=\"small\"\n              startIcon={<CloseIcon />}\n              variant=\"floating\"\n            />\n          </DrawerHeader>\n          <DrawerContent\n            {...(isContentScrollable && {\n              //Sets tabIndex on content element if scrollable so content is easier to navigate with the keyboard\n              tabIndex: 0,\n            })}\n            hasDividers={dividersVisible}\n            odysseyDesignTokens={odysseyDesignTokens}\n            ref={drawerContentRef}\n          >\n            {children}\n          </DrawerContent>\n          {hasFooter && (\n            <DrawerFooter\n              hasDividers={dividersVisible}\n              odysseyDesignTokens={odysseyDesignTokens}\n            >\n              {tertiaryCallToActionComponent}\n              {secondaryCallToActionComponent}\n              {primaryCallToActionComponent}\n            </DrawerFooter>\n          )}\n        </DrawerContentWrapper>\n      </MuiDrawer>\n    ),\n    [\n      anchorDirection,\n      ariaLabel,\n      children,\n      dividersVisible,\n      handleCloseButtonClick,\n      hasFooter,\n      isContentScrollable,\n      isOpen,\n      odysseyDesignTokens,\n      onClose,\n      primaryCallToActionComponent,\n      secondaryCallToActionComponent,\n      slotProps,\n      t,\n      tertiaryCallToActionComponent,\n      testId,\n      title,\n      translate,\n      variant,\n    ],\n  );\n\n  return variant === \"temporary\" ? (\n    <FullScreenOverlay>{muiDrawerComponent}</FullScreenOverlay>\n  ) : (\n    muiDrawerComponent\n  );\n};\n\nconst MemoizedDrawer = memo(Drawer);\nMemoizedDrawer.displayName = \"Drawer\";\n\nexport { MemoizedDrawer as Drawer };\n"],"mappings":";;;;;;;AAYA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AAaA,IAAAK,QAAA,GAAAL,OAAA;AACA,IAAAM,kBAAA,GAAAN,OAAA;AACA,IAAAO,KAAA,GAAAP,OAAA;AACA,IAAAQ,MAAA,GAAAR,OAAA;AACA,IAAAS,2BAAA,GAAAT,OAAA;AAIA,IAAAU,YAAA,GAAAV,OAAA;AACA,IAAAW,wBAAA,GAAAX,OAAA;AAAuE,IAAAY,WAAA,GAAAZ,OAAA;AAAA,SAAAD,uBAAAc,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AA1CvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAsCO,MAAMG,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAG,CAAC,WAAW,EAAE,YAAY,CAAU;AA6EjE,MAAME,YAAY,GAAG,IAAAC,eAAM,EAAC,KAAK,EAAE;EACjCC,iBAAiB,EAAGC,IAAI,IACtBA,IAAI,KAAK,qBAAqB,IAAIA,IAAI,KAAK;AAC/C,CAAC,CAAmB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC;EAAEC;AAAoB,CAAC,KAAKA,mBAAmB,CAACC,QAAQ;AACtE,MAAM,CAAC;EAAED;AAAoB,CAAC,KAAKA,mBAAmB,CAACE,QAAQ;AAC/D,WAAW,CAAC;EAAEF;AAAoB,CAAC,KAAKA,mBAAmB,CAACG,aAAa;AACzE,sBAAsB,CAAC;EAAEH;AAAoB,CAAC,KAC1CA,mBAAmB,CAACI,eAAe;AACvC,mBAAmB,CAAC;EAAEC,WAAW;EAAEL;AAAoB,CAAC,KACpDK,WAAW,GAAG,aAAaL,mBAAmB,CAACM,aAAa,EAAE,GAAG,MAAM;AAC3E;AACA;AACA;AACA,SAASC,6BAAiB,CAACC,IAAI;AAC/B;AACA;AACA;AACA,SAASC,qBAAa,CAACD,IAAI;AAC3B;AACA;AACA,CAAC;AAED,MAAME,oBAAoB,GAAG,IAAAb,eAAM,EAAC,KAAK,EAAE;EACzCC,iBAAiB,EAAGC,IAAI,IAAKA,IAAI,KAAK;AACxC,CAAC,CAAC,CAEC;EACDY,OAAO,EAAE,MAAM;EACfC,iBAAiB,EAAE;AACrB;AACA;AACA;AACA,GAAG;EACDC,gBAAgB,EAAE,eAAe;EACjCC,QAAQ,EAAE;AACZ,CAAC,CAAC;AAEF,MAAMC,aAAa,GAAG,IAAAlB,eAAM,EAAC,KAAK,EAAE;EAClCC,iBAAiB,EAAGC,IAAI,IACtBA,IAAI,KAAK,qBAAqB,IAAIA,IAAI,KAAK;AAC/C,CAAC,CAAmB;AACpB;AACA;AACA,aAAa,CAAC;EAAEM,WAAW;EAAEL;AAAoB,CAAC,KAC9CK,WAAW,GACP,GAAGL,mBAAmB,CAACE,QAAQ,EAAE,GACjC,KAAKF,mBAAmB,CAACE,QAAQ,EAAE;AAC3C,CAAC;AAED,MAAMc,YAAY,GAAG,IAAAnB,eAAM,EAAC,KAAK,EAAE;EACjCC,iBAAiB,EAAGC,IAAI,IACtBA,IAAI,KAAK,qBAAqB,IAAIA,IAAI,KAAK;AAC/C,CAAC,CAAmB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC;EAAEC;AAAoB,CAAC,KAAKA,mBAAmB,CAACiB,QAAQ;AACtE,aAAa,CAAC;EAAEjB;AAAoB,CAAC,KAAKA,mBAAmB,CAACC,QAAQ;AACtE,gBAAgB,CAAC;EAAEI,WAAW;EAAEL;AAAoB,CAAC,KACjDK,WAAW,GAAG,aAAaL,mBAAmB,CAACM,aAAa,EAAE,GAAG,MAAM;AAC3E,sBAAsB,CAAC;EAAEN;AAAoB,CAAC,KAC1CA,mBAAmB,CAACI,eAAe;AACvC,CAAC;AAKD,MAAMc,MAAM,GAAGA,CAAC;EACdC,SAAS;EACTC,QAAQ;EACRf,WAAW,EAAEgB,eAAe,GAAG,KAAK;EACpCC,MAAM;EACNC,OAAO;EACPC,4BAA4B;EAC5BC,8BAA8B;EAC9BC,YAAY,GAAG,KAAK;EACpBC,6BAA6B;EAC7BC,MAAM;EACNC,KAAK;EACLC,SAAS;EACTC,OAAO,GAAG;AACC,CAAC,KAAK;EACjB,MAAM,CAACC,mBAAmB,EAAEC,sBAAsB,CAAC,GAAG,IAAAC,eAAQ,EAAC,KAAK,CAAC;EACrE,MAAMC,gBAAgB,GAAG,IAAAC,aAAM,EAAiB,IAAI,CAAC;EACrD,MAAMpC,mBAAmB,GAAG,IAAAqC,kDAAsB,EAAC,CAAC;EAEpD,MAAMhC,WAAW,GAAGgB,eAAe,IAAIK,YAAY;EAGnD,MAAM;IAAEY,IAAI;IAAEC;EAAE,CAAC,GAAG,IAAAC,oBAAc,EAAC,CAAC;EACpC,MAAMC,eAAe,GAAGH,IAAI,CAACI,GAAG,CAAC,CAAC,KAAK,KAAK,GAAG,MAAM,GAAG,OAAO;EAE/D,IAAAC,gBAAS,EAAC,MAAM;IACd,IAAIC,OAAe;IAEnB,MAAMC,mBAAmB,GAAGA,CAAA,KAAM;MAChC,MAAMC,oBAAoB,GAAGX,gBAAgB,CAACY,OAAO;MACrD,IAAID,oBAAoB,EAAE;QACxBE,oBAAoB,CAACJ,OAAO,CAAC;QAC7BX,sBAAsB,CACpBa,oBAAoB,CAACG,YAAY,GAAGH,oBAAoB,CAACI,YAC3D,CAAC;MACH;MACAN,OAAO,GAAGO,qBAAqB,CAACN,mBAAmB,CAAC;IACtD,CAAC;IAED,IAAIvB,MAAM,EAAE;MACVsB,OAAO,GAAGO,qBAAqB,CAACN,mBAAmB,CAAC;IACtD;IAEA,OAAO,MAAM;MACXG,oBAAoB,CAACJ,OAAO,CAAC;IAC/B,CAAC;EACH,CAAC,EAAE,CAACtB,MAAM,CAAC,CAAC;EAEZ,MAAM8B,eAAe,GAAG,IAAAC,cAAO,EAAC,MAAM;IACpC,OAAOhD,WAAW,IAAI2B,mBAAmB;EAC3C,CAAC,EAAE,CAAC3B,WAAW,EAAE2B,mBAAmB,CAAC,CAAC;EAEtC,MAAMsB,SAAS,GAAG,IAAAD,cAAO,EACvB,MACE7B,4BAA4B,IAC5BC,8BAA8B,IAC9BE,6BAA6B,EAC/B,CACEH,4BAA4B,EAC5BC,8BAA8B,EAC9BE,6BAA6B,CAEjC,CAAC;EAED,MAAM4B,sBAAsB,GAAG,IAAAC,kBAAW,EAEvCC,KAAK,IAAKlC,OAAO,CAACkC,KAAK,EAAE,kBAAkB,CAAC,EAAE,CAAClC,OAAO,CAAC,CAAC;EAE3D,MAAMmC,QAAQ,GAAG,IAAAC,gBAAQ,EAAC,CAAC;EAE3B,MAAMC,oBAAoB,GAAG,IAAAC,gDAAuB,EAAC;IACnDvC,MAAM,EAAEwC,OAAO,CAACxC,MAAM,CAAC,IAAIS,OAAO,KAAK,WAAW;IAClDgC,KAAK,EAAEL,QAAQ,CAACM,MAAM,CAACC;EACzB,CAAC,CAAC;EAEF,MAAMC,SAAS,GAAG,IAAAb,cAAO,EACvB,OAAO;IAAEc,QAAQ,EAAEP;EAAqB,CAAC,CAAC,EAC1C,CAACA,oBAAoB,CACvB,CAAC;EAED,MAAMQ,kBAAkB,GAAG,IAAAf,cAAO,EAChC,MACE,IAAA/D,WAAA,CAAA+E,GAAA,EAAAC,QAAA,CAAA7E,OAAA;IACE8E,MAAM,EAAE9B,eAAgB;IACxB,WAASb,MAAO;IAChBL,OAAO,EAAEA,OAAQ;IACjBiD,IAAI,EAAElD,MAAO;IACb4C,SAAS,EAAEA,SAAU;IACrBO,EAAE,EAAE;MAEF,IAAI1C,OAAO,KAAK,YAAY,IAAI;QAC9B,oBAAoB,EAAE;UACpB2C,UAAU,EAAE;QACd;MACF,CAAC;IACH,CAAE;IACF3C,OAAO,EAAEA,OAAQ;IAAAX,QAAA,EAEjB,IAAA9B,WAAA,CAAAqF,IAAA,EAACjE,oBAAoB;MAACV,mBAAmB,EAAEA,mBAAoB;MAAAoB,QAAA,GAC7D,IAAA9B,WAAA,CAAAqF,IAAA,EAAC/E,YAAY;QACXS,WAAW,EAAE+C,eAAgB;QAC7BpD,mBAAmB,EAAEA,mBAAoB;QACzC8B,SAAS,EAAEA,SAAU;QAAAV,QAAA,GAErB,IAAA9B,WAAA,CAAA+E,GAAA,EAACjF,YAAA,CAAAwF,QAAQ;UAAAxD,QAAA,EAAES;QAAK,CAAW,CAAC,EAC5B,IAAAvC,WAAA,CAAA+E,GAAA,EAACtF,QAAA,CAAA8F,MAAM;UACL1D,SAAS,EAAEA,SAAS,IAAIoB,CAAC,CAAC,YAAY,CAAE;UACxCuC,OAAO,EAAEvB,sBAAuB;UAChCwB,IAAI,EAAC,OAAO;UACZC,SAAS,EAAE,IAAA1F,WAAA,CAAA+E,GAAA,EAACnF,MAAA,CAAA+F,SAAS,IAAE,CAAE;UACzBlD,OAAO,EAAC;QAAU,CACnB,CAAC;MAAA,CACU,CAAC,EACf,IAAAzC,WAAA,CAAA+E,GAAA,EAACtD,aAAa;QAAA,IACPiB,mBAAmB,IAAI;UAE1BkD,QAAQ,EAAE;QACZ,CAAC;QACD7E,WAAW,EAAE+C,eAAgB;QAC7BpD,mBAAmB,EAAEA,mBAAoB;QACzCmF,GAAG,EAAEhD,gBAAiB;QAAAf,QAAA,EAErBA;MAAQ,CACI,CAAC,EACfkC,SAAS,IACR,IAAAhE,WAAA,CAAAqF,IAAA,EAAC3D,YAAY;QACXX,WAAW,EAAE+C,eAAgB;QAC7BpD,mBAAmB,EAAEA,mBAAoB;QAAAoB,QAAA,GAExCO,6BAA6B,EAC7BF,8BAA8B,EAC9BD,4BAA4B;MAAA,CACjB,CACf;IAAA,CACmB;EAAC,CACd,CACZ,EACD,CACEiB,eAAe,EACftB,SAAS,EACTC,QAAQ,EACRgC,eAAe,EACfG,sBAAsB,EACtBD,SAAS,EACTtB,mBAAmB,EACnBV,MAAM,EACNtB,mBAAmB,EACnBuB,OAAO,EACPC,4BAA4B,EAC5BC,8BAA8B,EAC9ByC,SAAS,EACT3B,CAAC,EACDZ,6BAA6B,EAC7BC,MAAM,EACNC,KAAK,EACLC,SAAS,EACTC,OAAO,CAEX,CAAC;EAED,OAAOA,OAAO,KAAK,WAAW,GAC5B,IAAAzC,WAAA,CAAA+E,GAAA,EAACrF,kBAAA,CAAAoG,iBAAiB;IAAAhE,QAAA,EAAEgD;EAAkB,CAAoB,CAAC,GAE3DA,kBACD;AACH,CAAC;AAED,MAAMiB,cAAc,GAAA1F,OAAA,CAAAuB,MAAA,GAAG,IAAAoE,WAAI,EAACpE,MAAM,CAAC;AACnCmE,cAAc,CAACE,WAAW,wCAAW","ignoreList":[]}