@hitachivantara/uikit-react-core 5.0.0-next.19 → 5.0.0-next.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/dist/cjs/components/AppSwitcher/Action/Action.cjs +9 -3
  2. package/dist/cjs/components/AppSwitcher/Action/Action.cjs.map +1 -1
  3. package/dist/cjs/components/AppSwitcher/AppSwitcher.cjs +1 -1
  4. package/dist/cjs/components/AppSwitcher/AppSwitcher.cjs.map +1 -1
  5. package/dist/cjs/components/Avatar/avatarClasses.cjs +1 -1
  6. package/dist/cjs/components/Avatar/avatarClasses.cjs.map +1 -1
  7. package/dist/cjs/components/BreadCrumb/BreadCrumb.cjs +1 -1
  8. package/dist/cjs/components/BreadCrumb/BreadCrumb.cjs.map +1 -1
  9. package/dist/cjs/components/BreadCrumb/Page/Page.cjs +1 -1
  10. package/dist/cjs/components/BreadCrumb/Page/Page.cjs.map +1 -1
  11. package/dist/cjs/components/BreadCrumb/PathElement/PathElement.cjs +1 -1
  12. package/dist/cjs/components/BreadCrumb/PathElement/PathElement.cjs.map +1 -1
  13. package/dist/cjs/components/Button/Button.cjs.map +1 -1
  14. package/dist/cjs/components/Button/Button.styles.cjs +5 -4
  15. package/dist/cjs/components/Button/Button.styles.cjs.map +1 -1
  16. package/dist/cjs/components/Card/Content/Content.cjs +2 -2
  17. package/dist/cjs/components/Card/Content/Content.cjs.map +1 -1
  18. package/dist/cjs/components/Card/Header/Header.cjs +2 -2
  19. package/dist/cjs/components/Card/Header/Header.cjs.map +1 -1
  20. package/dist/cjs/components/Card/Media/Media.cjs +2 -2
  21. package/dist/cjs/components/Card/Media/Media.cjs.map +1 -1
  22. package/dist/cjs/components/Dialog/Actions/Actions.cjs +2 -2
  23. package/dist/cjs/components/Dialog/Actions/Actions.cjs.map +1 -1
  24. package/dist/cjs/components/Dialog/Content/Content.cjs +2 -2
  25. package/dist/cjs/components/Dialog/Content/Content.cjs.map +1 -1
  26. package/dist/cjs/components/Dialog/Title/Title.cjs +2 -2
  27. package/dist/cjs/components/Dialog/Title/Title.cjs.map +1 -1
  28. package/dist/cjs/components/Focus/Focus.cjs +1 -1
  29. package/dist/cjs/components/Focus/Focus.cjs.map +1 -1
  30. package/dist/cjs/components/Header/Actions/Actions.cjs +2 -2
  31. package/dist/cjs/components/Header/Actions/Actions.cjs.map +1 -1
  32. package/dist/cjs/components/Header/Brand/Brand.cjs +2 -2
  33. package/dist/cjs/components/Header/Brand/Brand.cjs.map +1 -1
  34. package/dist/cjs/components/Header/Navigation/Navigation.cjs +2 -2
  35. package/dist/cjs/components/Header/Navigation/Navigation.cjs.map +1 -1
  36. package/dist/cjs/components/Kpi/Kpi.cjs.map +1 -1
  37. package/dist/cjs/components/Snackbar/Snackbar.cjs +7 -7
  38. package/dist/cjs/components/Snackbar/Snackbar.cjs.map +1 -1
  39. package/dist/cjs/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.cjs +4 -4
  40. package/dist/cjs/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.cjs.map +1 -1
  41. package/dist/cjs/components/Snackbar/SnackbarContentWrapper/snackbarContentWrapperClasses.cjs +3 -3
  42. package/dist/cjs/components/Snackbar/SnackbarContentWrapper/snackbarContentWrapperClasses.cjs.map +1 -1
  43. package/dist/cjs/components/Snackbar/SnackbarProvider/SnackbarProvider.cjs +2 -2
  44. package/dist/cjs/components/Snackbar/SnackbarProvider/SnackbarProvider.cjs.map +1 -1
  45. package/dist/cjs/components/Snackbar/snackbarClasses.cjs +3 -2
  46. package/dist/cjs/components/Snackbar/snackbarClasses.cjs.map +1 -1
  47. package/dist/cjs/components/Stack/Stack.cjs.map +1 -1
  48. package/dist/cjs/components/Table/TableCell/TableCell.cjs +2 -1
  49. package/dist/cjs/components/Table/TableCell/TableCell.cjs.map +1 -1
  50. package/dist/cjs/components/Typography/Typography.cjs +13 -1
  51. package/dist/cjs/components/Typography/Typography.cjs.map +1 -1
  52. package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.cjs.map +1 -1
  53. package/dist/cjs/components/VerticalNavigation/VerticalNavigation.cjs.map +1 -1
  54. package/dist/cjs/index.cjs +26 -24
  55. package/dist/cjs/index.cjs.map +1 -1
  56. package/dist/esm/components/AppSwitcher/Action/Action.js +9 -3
  57. package/dist/esm/components/AppSwitcher/Action/Action.js.map +1 -1
  58. package/dist/esm/components/AppSwitcher/AppSwitcher.js +2 -2
  59. package/dist/esm/components/AppSwitcher/AppSwitcher.js.map +1 -1
  60. package/dist/esm/components/Avatar/avatarClasses.js +1 -1
  61. package/dist/esm/components/Avatar/avatarClasses.js.map +1 -1
  62. package/dist/esm/components/BreadCrumb/BreadCrumb.js +1 -1
  63. package/dist/esm/components/BreadCrumb/BreadCrumb.js.map +1 -1
  64. package/dist/esm/components/BreadCrumb/Page/Page.js +1 -1
  65. package/dist/esm/components/BreadCrumb/Page/Page.js.map +1 -1
  66. package/dist/esm/components/BreadCrumb/PathElement/PathElement.js +1 -1
  67. package/dist/esm/components/BreadCrumb/PathElement/PathElement.js.map +1 -1
  68. package/dist/esm/components/Button/Button.js.map +1 -1
  69. package/dist/esm/components/Button/Button.styles.js +5 -4
  70. package/dist/esm/components/Button/Button.styles.js.map +1 -1
  71. package/dist/esm/components/Card/Content/Content.js +2 -2
  72. package/dist/esm/components/Card/Content/Content.js.map +1 -1
  73. package/dist/esm/components/Card/Header/Header.js +2 -2
  74. package/dist/esm/components/Card/Header/Header.js.map +1 -1
  75. package/dist/esm/components/Card/Media/Media.js +2 -2
  76. package/dist/esm/components/Card/Media/Media.js.map +1 -1
  77. package/dist/esm/components/Dialog/Actions/Actions.js +2 -2
  78. package/dist/esm/components/Dialog/Actions/Actions.js.map +1 -1
  79. package/dist/esm/components/Dialog/Content/Content.js +2 -2
  80. package/dist/esm/components/Dialog/Content/Content.js.map +1 -1
  81. package/dist/esm/components/Dialog/Title/Title.js +2 -2
  82. package/dist/esm/components/Dialog/Title/Title.js.map +1 -1
  83. package/dist/esm/components/Focus/Focus.js +1 -1
  84. package/dist/esm/components/Focus/Focus.js.map +1 -1
  85. package/dist/esm/components/Header/Actions/Actions.js +2 -2
  86. package/dist/esm/components/Header/Actions/Actions.js.map +1 -1
  87. package/dist/esm/components/Header/Brand/Brand.js +2 -2
  88. package/dist/esm/components/Header/Brand/Brand.js.map +1 -1
  89. package/dist/esm/components/Header/Navigation/Navigation.js +2 -2
  90. package/dist/esm/components/Header/Navigation/Navigation.js.map +1 -1
  91. package/dist/esm/components/Kpi/Kpi.js.map +1 -1
  92. package/dist/esm/components/Snackbar/Snackbar.js +3 -3
  93. package/dist/esm/components/Snackbar/Snackbar.js.map +1 -1
  94. package/dist/esm/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.js +11 -11
  95. package/dist/esm/components/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.js.map +1 -1
  96. package/dist/esm/components/Snackbar/SnackbarContentWrapper/snackbarContentWrapperClasses.js +3 -3
  97. package/dist/esm/components/Snackbar/SnackbarContentWrapper/snackbarContentWrapperClasses.js.map +1 -1
  98. package/dist/esm/components/Snackbar/SnackbarProvider/SnackbarProvider.js +4 -4
  99. package/dist/esm/components/Snackbar/SnackbarProvider/SnackbarProvider.js.map +1 -1
  100. package/dist/esm/components/Snackbar/snackbarClasses.js +2 -1
  101. package/dist/esm/components/Snackbar/snackbarClasses.js.map +1 -1
  102. package/dist/esm/components/Stack/Stack.js.map +1 -1
  103. package/dist/esm/components/Table/TableCell/TableCell.js +2 -1
  104. package/dist/esm/components/Table/TableCell/TableCell.js.map +1 -1
  105. package/dist/esm/components/Typography/Typography.js +13 -1
  106. package/dist/esm/components/Typography/Typography.js.map +1 -1
  107. package/dist/esm/components/VerticalNavigation/Navigation/Navigation.js.map +1 -1
  108. package/dist/esm/components/VerticalNavigation/VerticalNavigation.js.map +1 -1
  109. package/dist/esm/index.js +74 -72
  110. package/dist/esm/index.js.map +1 -1
  111. package/dist/types/index.d.ts +137 -64
  112. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"Media.js","sources":["../../../../../src/components/Card/Media/Media.tsx"],"sourcesContent":["import MuiCardMedia, {\n CardMediaProps as MuiCardMediaProps,\n} from \"@mui/material/CardMedia\";\nimport { styles } from \"./Media.styles\";\nimport { HvBaseProps } from \"../../../types\";\nimport cardMediaClasses, { HvCardMediaClasses } from \"./mediaClasses\";\nimport clsx from \"clsx\";\nimport { ImgHTMLAttributes } from \"react\";\n\nexport type HvMediaProps = Omit<MuiCardMediaProps, \"classes\"> &\n ImgHTMLAttributes<HTMLImageElement> &\n HvBaseProps<HTMLDivElement, { onClick; title }> & {\n /** Id to be applied to the root node. */\n id?: string;\n /** The title of the media. */\n title?: string;\n /** The function that will be executed when this section is clicked. */\n onClick?: React.MouseEventHandler<HTMLDivElement> | undefined;\n /** The component used for the root node. Either a string to use a HTML element or a component. */\n component?: React.ElementType;\n /** The image to display. */\n image?: string;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvCardMediaClasses;\n };\n\nexport const HvMedia = ({\n id,\n classes,\n className,\n children,\n title,\n onClick,\n ...others\n}: HvMediaProps) => {\n return (\n <MuiCardMedia\n id={id}\n classes={{\n root: clsx(styles.root, cardMediaClasses.root, classes?.root),\n media: clsx(cardMediaClasses.media, classes?.media),\n }}\n className={className}\n role=\"img\"\n title={title}\n onClick={onClick}\n {...others}\n >\n {children}\n </MuiCardMedia>\n );\n};\n"],"names":["HvMedia","id","classes","className","children","title","onClick","others","MuiCardMedia","root","clsx","styles","cardMediaClasses","media","role"],"mappings":";;;;;AA0BO,MAAMA,UAAUA,CAAC;AAAA,EACtBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AACS,MAAM;AAClB,6BACGC,cAAY;AAAA,IACXP;AAAAA,IACAC,SAAS;AAAA,MACPO,MAAMC,KAAKC,OAAOF,MAAMG,iBAAiBH,MAAMP,mCAASO,IAAI;AAAA,MAC5DI,OAAOH,KAAKE,iBAAiBC,OAAOX,mCAASW,KAAK;AAAA,IACpD;AAAA,IACAV;AAAAA,IACAW,MAAK;AAAA,IACLT;AAAAA,IACAC;AAAAA,IAAiB,GACbC;AAAAA,IAAMH;AAAAA,EAAAA,CAGG;AAEnB;"}
1
+ {"version":3,"file":"Media.js","sources":["../../../../../src/components/Card/Media/Media.tsx"],"sourcesContent":["import MuiCardMedia, {\n CardMediaProps as MuiCardMediaProps,\n} from \"@mui/material/CardMedia\";\nimport { styles } from \"./Media.styles\";\nimport { HvBaseProps } from \"../../../types\";\nimport cardMediaClasses, { HvCardMediaClasses } from \"./mediaClasses\";\nimport clsx from \"clsx\";\nimport { ImgHTMLAttributes } from \"react\";\n\nexport type HvCardMediaProps = Omit<MuiCardMediaProps, \"classes\"> &\n ImgHTMLAttributes<HTMLImageElement> &\n HvBaseProps<HTMLDivElement, { onClick; title }> & {\n /** Id to be applied to the root node. */\n id?: string;\n /** The title of the media. */\n title?: string;\n /** The function that will be executed when this section is clicked. */\n onClick?: React.MouseEventHandler<HTMLDivElement> | undefined;\n /** The component used for the root node. Either a string to use a HTML element or a component. */\n component?: React.ElementType;\n /** The image to display. */\n image?: string;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvCardMediaClasses;\n };\n\nexport const HvCardMedia = ({\n id,\n classes,\n className,\n children,\n title,\n onClick,\n ...others\n}: HvCardMediaProps) => {\n return (\n <MuiCardMedia\n id={id}\n classes={{\n root: clsx(styles.root, cardMediaClasses.root, classes?.root),\n media: clsx(cardMediaClasses.media, classes?.media),\n }}\n className={className}\n role=\"img\"\n title={title}\n onClick={onClick}\n {...others}\n >\n {children}\n </MuiCardMedia>\n );\n};\n"],"names":["HvCardMedia","id","classes","className","children","title","onClick","others","MuiCardMedia","root","clsx","styles","cardMediaClasses","media","role"],"mappings":";;;;;AA0BO,MAAMA,cAAcA,CAAC;AAAA,EAC1BC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AACa,MAAM;AACtB,6BACGC,cAAY;AAAA,IACXP;AAAAA,IACAC,SAAS;AAAA,MACPO,MAAMC,KAAKC,OAAOF,MAAMG,iBAAiBH,MAAMP,mCAASO,IAAI;AAAA,MAC5DI,OAAOH,KAAKE,iBAAiBC,OAAOX,mCAASW,KAAK;AAAA,IACpD;AAAA,IACAV;AAAAA,IACAW,MAAK;AAAA,IACLT;AAAAA,IACAC;AAAAA,IAAiB,GACbC;AAAAA,IAAMH;AAAAA,EAAAA,CAGG;AAEnB;"}
@@ -2,7 +2,7 @@ import clsx from "clsx";
2
2
  import { StyledActions } from "./Actions.styles.js";
3
3
  import dialogActionClasses from "./actionsClasses.js";
4
4
  import { jsx } from "@emotion/react/jsx-runtime";
5
- const HvActions = ({
5
+ const HvDialogActions = ({
6
6
  classes,
7
7
  className,
8
8
  children,
@@ -21,6 +21,6 @@ const HvActions = ({
21
21
  });
22
22
  };
23
23
  export {
24
- HvActions
24
+ HvDialogActions
25
25
  };
26
26
  //# sourceMappingURL=Actions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Actions.js","sources":["../../../../../src/components/Dialog/Actions/Actions.tsx"],"sourcesContent":["import { DialogActionsProps as MuiDialogActionsProps } from \"@mui/material/DialogActions\";\nimport clsx from \"clsx\";\nimport { HvBaseProps } from \"../../../types\";\nimport { StyledActions } from \"./Actions.styles\";\nimport dialogActionClasses, { HvDialogActionClasses } from \"./actionsClasses\";\n\nexport type HvActionsProps = Omit<MuiDialogActionsProps, \"classes\"> &\n HvBaseProps & {\n /** Set the dialog to fullscreen mode. */\n fullscreen?: boolean;\n classes?: HvDialogActionClasses;\n };\n\nexport const HvActions = ({\n classes,\n className,\n children,\n fullscreen = false,\n ...others\n}: HvActionsProps) => {\n return (\n <StyledActions\n className={className}\n classes={{\n root: clsx(\n dialogActionClasses.root,\n classes?.root,\n fullscreen &&\n clsx(dialogActionClasses.fullscreen, classes?.fullscreen)\n ),\n spacing: clsx(dialogActionClasses.spacing, classes?.spacing),\n }}\n $fullscreen={fullscreen}\n {...others}\n >\n {children}\n </StyledActions>\n );\n};\n"],"names":["HvActions","classes","className","children","fullscreen","others","StyledActions","root","clsx","dialogActionClasses","spacing","$fullscreen"],"mappings":";;;;AAaO,MAAMA,YAAYA,CAAC;AAAA,EACxBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,aAAa;AAAA,EACb,GAAGC;AACW,MAAM;AACpB,6BACGC,eAAa;AAAA,IACZJ;AAAAA,IACAD,SAAS;AAAA,MACPM,MAAMC,KACJC,oBAAoBF,MACpBN,mCAASM,MACTH,cACEI,KAAKC,oBAAoBL,YAAYH,mCAASG,UAAU,CAAC;AAAA,MAE7DM,SAASF,KAAKC,oBAAoBC,SAAST,mCAASS,OAAO;AAAA,IAC7D;AAAA,IACAC,aAAaP;AAAAA,IAAW,GACpBC;AAAAA,IAAMF;AAAAA,EAAAA,CAGI;AAEpB;"}
1
+ {"version":3,"file":"Actions.js","sources":["../../../../../src/components/Dialog/Actions/Actions.tsx"],"sourcesContent":["import { DialogActionsProps as MuiDialogActionsProps } from \"@mui/material/DialogActions\";\nimport clsx from \"clsx\";\nimport { HvBaseProps } from \"../../../types\";\nimport { StyledActions } from \"./Actions.styles\";\nimport dialogActionClasses, { HvDialogActionClasses } from \"./actionsClasses\";\n\nexport type HvDialogActionsProps = Omit<MuiDialogActionsProps, \"classes\"> &\n HvBaseProps & {\n /** Set the dialog to fullscreen mode. */\n fullscreen?: boolean;\n classes?: HvDialogActionClasses;\n };\n\nexport const HvDialogActions = ({\n classes,\n className,\n children,\n fullscreen = false,\n ...others\n}: HvDialogActionsProps) => {\n return (\n <StyledActions\n className={className}\n classes={{\n root: clsx(\n dialogActionClasses.root,\n classes?.root,\n fullscreen &&\n clsx(dialogActionClasses.fullscreen, classes?.fullscreen)\n ),\n spacing: clsx(dialogActionClasses.spacing, classes?.spacing),\n }}\n $fullscreen={fullscreen}\n {...others}\n >\n {children}\n </StyledActions>\n );\n};\n"],"names":["HvDialogActions","classes","className","children","fullscreen","others","StyledActions","root","clsx","dialogActionClasses","spacing","$fullscreen"],"mappings":";;;;AAaO,MAAMA,kBAAkBA,CAAC;AAAA,EAC9BC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,aAAa;AAAA,EACb,GAAGC;AACiB,MAAM;AAC1B,6BACGC,eAAa;AAAA,IACZJ;AAAAA,IACAD,SAAS;AAAA,MACPM,MAAMC,KACJC,oBAAoBF,MACpBN,mCAASM,MACTH,cACEI,KAAKC,oBAAoBL,YAAYH,mCAASG,UAAU,CAAC;AAAA,MAE7DM,SAASF,KAAKC,oBAAoBC,SAAST,mCAASS,OAAO;AAAA,IAC7D;AAAA,IACAC,aAAaP;AAAAA,IAAW,GACpBC;AAAAA,IAAMF;AAAAA,EAAAA,CAGI;AAEpB;"}
@@ -3,7 +3,7 @@ import clsx from "clsx";
3
3
  import { StyledTypography } from "./Content.styles.js";
4
4
  import dialogContentClasses from "./contentClasses.js";
5
5
  import { jsx } from "@emotion/react/jsx-runtime";
6
- const HvContent = ({
6
+ const HvDialogContent = ({
7
7
  classes,
8
8
  className,
9
9
  children,
@@ -17,6 +17,6 @@ const HvContent = ({
17
17
  });
18
18
  };
19
19
  export {
20
- HvContent
20
+ HvDialogContent
21
21
  };
22
22
  //# sourceMappingURL=Content.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Content.js","sources":["../../../../../src/components/Dialog/Content/Content.tsx"],"sourcesContent":["import MuiDialogContent, {\n DialogContentProps as MuiDialogContentProps,\n} from \"@mui/material/DialogContent\";\nimport clsx from \"clsx\";\nimport { HvBaseProps } from \"../../../types\";\nimport { StyledTypography } from \"./Content.styles\";\nimport dialogContentClasses, { HvDialogContentClasses } from \"./contentClasses\";\n\nexport type HvContentProps = Omit<MuiDialogContentProps, \"classes\"> &\n HvBaseProps & {\n /** Content should be indented in relationship to the Dialog title. */\n indentContent?: boolean;\n classes?: HvDialogContentClasses;\n };\n\nexport const HvContent = ({\n classes,\n className,\n children,\n indentContent = false,\n}: HvContentProps) => {\n return (\n <StyledTypography\n component={MuiDialogContent}\n className={clsx(\n className,\n dialogContentClasses.root,\n classes?.root,\n !!indentContent &&\n clsx(dialogContentClasses.textContent, classes?.textContent)\n )}\n $indentContent={indentContent}\n >\n {children}\n </StyledTypography>\n );\n};\n"],"names":["HvContent","classes","className","children","indentContent","StyledTypography","component","MuiDialogContent","clsx","dialogContentClasses","root","textContent","$indentContent"],"mappings":";;;;;AAeO,MAAMA,YAAYA,CAAC;AAAA,EACxBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,gBAAgB;AACF,MAAM;AACpB,6BACGC,kBAAgB;AAAA,IACfC,WAAWC;AAAAA,IACXL,WAAWM,KACTN,WACAO,qBAAqBC,MACrBT,mCAASS,MACT,CAAC,CAACN,iBACAI,KAAKC,qBAAqBE,aAAaV,mCAASU,WAAW,CAAC;AAAA,IAEhEC,gBAAgBR;AAAAA,IAAcD;AAAAA,EAAAA,CAGb;AAEvB;"}
1
+ {"version":3,"file":"Content.js","sources":["../../../../../src/components/Dialog/Content/Content.tsx"],"sourcesContent":["import MuiDialogContent, {\n DialogContentProps as MuiDialogContentProps,\n} from \"@mui/material/DialogContent\";\nimport clsx from \"clsx\";\nimport { HvBaseProps } from \"../../../types\";\nimport { StyledTypography } from \"./Content.styles\";\nimport dialogContentClasses, { HvDialogContentClasses } from \"./contentClasses\";\n\nexport type HvDialogContentProps = Omit<MuiDialogContentProps, \"classes\"> &\n HvBaseProps & {\n /** Content should be indented in relationship to the Dialog title. */\n indentContent?: boolean;\n classes?: HvDialogContentClasses;\n };\n\nexport const HvDialogContent = ({\n classes,\n className,\n children,\n indentContent = false,\n}: HvDialogContentProps) => {\n return (\n <StyledTypography\n component={MuiDialogContent}\n className={clsx(\n className,\n dialogContentClasses.root,\n classes?.root,\n !!indentContent &&\n clsx(dialogContentClasses.textContent, classes?.textContent)\n )}\n $indentContent={indentContent}\n >\n {children}\n </StyledTypography>\n );\n};\n"],"names":["HvDialogContent","classes","className","children","indentContent","StyledTypography","component","MuiDialogContent","clsx","dialogContentClasses","root","textContent","$indentContent"],"mappings":";;;;;AAeO,MAAMA,kBAAkBA,CAAC;AAAA,EAC9BC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,gBAAgB;AACI,MAAM;AAC1B,6BACGC,kBAAgB;AAAA,IACfC,WAAWC;AAAAA,IACXL,WAAWM,KACTN,WACAO,qBAAqBC,MACrBT,mCAASS,MACT,CAAC,CAACN,iBACAI,KAAKC,qBAAqBE,aAAaV,mCAASU,WAAW,CAAC;AAAA,IAEhEC,gBAAgBR;AAAAA,IAAcD;AAAAA,EAAAA,CAGb;AAEvB;"}
@@ -5,7 +5,7 @@ import { jsx, jsxs } from "@emotion/react/jsx-runtime";
5
5
  import iconVariant from "../../../utils/iconVariant.js";
6
6
  import { useTheme } from "../../../hooks/useTheme.js";
7
7
  import { HvTypography } from "../../Typography/Typography.js";
8
- const HvTitle = ({
8
+ const HvDialogTitle = ({
9
9
  classes,
10
10
  className,
11
11
  children,
@@ -41,6 +41,6 @@ const HvTitle = ({
41
41
  });
42
42
  };
43
43
  export {
44
- HvTitle
44
+ HvDialogTitle
45
45
  };
46
46
  //# sourceMappingURL=Title.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Title.js","sources":["../../../../../src/components/Dialog/Title/Title.tsx"],"sourcesContent":["import { DialogTitleProps as MuiDialogTitleProps } from \"@mui/material/DialogTitle\";\nimport clsx from \"clsx\";\nimport { HvTypography } from \"components\";\nimport { HvBaseProps } from \"../../../types\";\nimport { iconVariant } from \"utils\";\nimport {\n StyledTitle,\n StyledMessageContainer,\n StyledTextWithIcon,\n} from \"./Title.styles\";\nimport dialogTitleClasses, { HvDialogTitleClasses } from \"./titleClasses\";\nimport { useTheme } from \"hooks\";\n\nexport type HvDialogTitleVariant =\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"info\"\n | \"default\";\n\nexport type HvTitleProps = Omit<MuiDialogTitleProps, \"variant\" | \"classes\"> &\n HvBaseProps & {\n /** Variant of the Dialog. */\n variant?: HvDialogTitleVariant;\n /** Controls if the associated icon to the variant should be shown. */\n showIcon?: boolean;\n /** Custom icon to replace the variant default. */\n customIcon?: React.ReactNode;\n classes?: HvDialogTitleClasses;\n };\n\nexport const HvTitle = ({\n classes,\n className,\n children,\n variant = \"default\",\n showIcon = true,\n customIcon = null,\n ...others\n}: HvTitleProps) => {\n const { activeTheme } = useTheme();\n\n const isString = typeof children === \"string\";\n\n const { fullscreen } = others as any;\n delete (others as any).fullscreen;\n\n const icon = customIcon || (showIcon && iconVariant(variant, \"\", \"\"));\n\n return (\n <StyledTitle\n className={clsx(\n dialogTitleClasses.root,\n classes?.root,\n className,\n fullscreen && clsx(dialogTitleClasses.fullscreen, classes?.fullscreen)\n )}\n $fullscreen={fullscreen}\n {...others}\n >\n <StyledMessageContainer\n className={clsx(\n dialogTitleClasses.messageContainer,\n classes?.messageContainer\n )}\n >\n {icon}\n <StyledTextWithIcon\n className={\n !!icon\n ? clsx(dialogTitleClasses.textWithIcon, classes?.textWithIcon)\n : undefined\n }\n $hasIcon={!!icon}\n >\n {!isString && children}\n {isString && (\n <HvTypography variant={activeTheme?.dialog.titleVariant}>\n {children}\n </HvTypography>\n )}\n </StyledTextWithIcon>\n </StyledMessageContainer>\n </StyledTitle>\n );\n};\n"],"names":["HvTitle","classes","className","children","variant","showIcon","customIcon","others","activeTheme","useTheme","isString","fullscreen","icon","iconVariant","StyledTitle","clsx","dialogTitleClasses","root","$fullscreen","StyledMessageContainer","messageContainer","_jsxs","StyledTextWithIcon","textWithIcon","undefined","$hasIcon","HvTypography","dialog","titleVariant"],"mappings":";;;;;;;AA+BO,MAAMA,UAAUA,CAAC;AAAA,EACtBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,UAAU;AAAA,EACVC,WAAW;AAAA,EACXC,aAAa;AAAA,EACb,GAAGC;AACS,MAAM;AACZ,QAAA;AAAA,IAAEC;AAAAA,MAAgBC,SAAU;AAE5BC,QAAAA,WAAW,OAAOP,aAAa;AAE/B,QAAA;AAAA,IAAEQ;AAAAA,EAAeJ,IAAAA;AACvB,SAAQA,OAAeI;AAEvB,QAAMC,OAAON,cAAeD,YAAYQ,YAAYT,SAAS,IAAI,EAAE;AAEnE,6BACGU,aAAW;AAAA,IACVZ,WAAWa,KACTC,mBAAmBC,MACnBhB,mCAASgB,MACTf,WACAS,cAAcI,KAAKC,mBAAmBL,YAAYV,mCAASU,UAAU,CAAC;AAAA,IAExEO,aAAaP;AAAAA,IAAW,GACpBJ;AAAAA,IAAMJ,+BAETgB,wBAAsB;AAAA,MACrBjB,WAAWa,KACTC,mBAAmBI,kBACnBnB,mCAASmB,gBAAgB;AAAA,MACzBjB,UAEDS,CAAAA,MACDS,qBAACC,oBAAkB;AAAA,QACjBpB,WACE,CAAC,CAACU,OACEG,KAAKC,mBAAmBO,cAActB,mCAASsB,YAAY,IAC3DC;AAAAA,QAENC,UAAU,CAAC,CAACb;AAAAA,QAAKT,UAAA,CAEhB,CAACO,YAAYP,UACbO,gCACEgB,cAAY;AAAA,UAACtB,SAASI,2CAAamB,OAAOC;AAAAA,UAAazB;AAAAA,QAAAA,CAGzD,CAAA;AAAA,MAAA,CACkB,CAAA;AAAA,IAAA,CAAA;AAAA,EAAA,CAEX;AAElB;"}
1
+ {"version":3,"file":"Title.js","sources":["../../../../../src/components/Dialog/Title/Title.tsx"],"sourcesContent":["import { DialogTitleProps as MuiDialogTitleProps } from \"@mui/material/DialogTitle\";\nimport clsx from \"clsx\";\nimport { HvTypography } from \"components\";\nimport { HvBaseProps } from \"../../../types\";\nimport { iconVariant } from \"utils\";\nimport {\n StyledTitle,\n StyledMessageContainer,\n StyledTextWithIcon,\n} from \"./Title.styles\";\nimport dialogTitleClasses, { HvDialogTitleClasses } from \"./titleClasses\";\nimport { useTheme } from \"hooks\";\n\nexport type HvDialogTitleVariant =\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"info\"\n | \"default\";\n\nexport type HvDialogTitleProps = Omit<\n MuiDialogTitleProps,\n \"variant\" | \"classes\"\n> &\n HvBaseProps & {\n /** Variant of the Dialog. */\n variant?: HvDialogTitleVariant;\n /** Controls if the associated icon to the variant should be shown. */\n showIcon?: boolean;\n /** Custom icon to replace the variant default. */\n customIcon?: React.ReactNode;\n classes?: HvDialogTitleClasses;\n };\n\nexport const HvDialogTitle = ({\n classes,\n className,\n children,\n variant = \"default\",\n showIcon = true,\n customIcon = null,\n ...others\n}: HvDialogTitleProps) => {\n const { activeTheme } = useTheme();\n\n const isString = typeof children === \"string\";\n\n const { fullscreen } = others as any;\n delete (others as any).fullscreen;\n\n const icon = customIcon || (showIcon && iconVariant(variant, \"\", \"\"));\n\n return (\n <StyledTitle\n className={clsx(\n dialogTitleClasses.root,\n classes?.root,\n className,\n fullscreen && clsx(dialogTitleClasses.fullscreen, classes?.fullscreen)\n )}\n $fullscreen={fullscreen}\n {...others}\n >\n <StyledMessageContainer\n className={clsx(\n dialogTitleClasses.messageContainer,\n classes?.messageContainer\n )}\n >\n {icon}\n <StyledTextWithIcon\n className={\n !!icon\n ? clsx(dialogTitleClasses.textWithIcon, classes?.textWithIcon)\n : undefined\n }\n $hasIcon={!!icon}\n >\n {!isString && children}\n {isString && (\n <HvTypography variant={activeTheme?.dialog.titleVariant}>\n {children}\n </HvTypography>\n )}\n </StyledTextWithIcon>\n </StyledMessageContainer>\n </StyledTitle>\n );\n};\n"],"names":["HvDialogTitle","classes","className","children","variant","showIcon","customIcon","others","activeTheme","useTheme","isString","fullscreen","icon","iconVariant","StyledTitle","clsx","dialogTitleClasses","root","$fullscreen","StyledMessageContainer","messageContainer","_jsxs","StyledTextWithIcon","textWithIcon","undefined","$hasIcon","HvTypography","dialog","titleVariant"],"mappings":";;;;;;;AAkCO,MAAMA,gBAAgBA,CAAC;AAAA,EAC5BC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,UAAU;AAAA,EACVC,WAAW;AAAA,EACXC,aAAa;AAAA,EACb,GAAGC;AACe,MAAM;AAClB,QAAA;AAAA,IAAEC;AAAAA,MAAgBC,SAAU;AAE5BC,QAAAA,WAAW,OAAOP,aAAa;AAE/B,QAAA;AAAA,IAAEQ;AAAAA,EAAeJ,IAAAA;AACvB,SAAQA,OAAeI;AAEvB,QAAMC,OAAON,cAAeD,YAAYQ,YAAYT,SAAS,IAAI,EAAE;AAEnE,6BACGU,aAAW;AAAA,IACVZ,WAAWa,KACTC,mBAAmBC,MACnBhB,mCAASgB,MACTf,WACAS,cAAcI,KAAKC,mBAAmBL,YAAYV,mCAASU,UAAU,CAAC;AAAA,IAExEO,aAAaP;AAAAA,IAAW,GACpBJ;AAAAA,IAAMJ,+BAETgB,wBAAsB;AAAA,MACrBjB,WAAWa,KACTC,mBAAmBI,kBACnBnB,mCAASmB,gBAAgB;AAAA,MACzBjB,UAEDS,CAAAA,MACDS,qBAACC,oBAAkB;AAAA,QACjBpB,WACE,CAAC,CAACU,OACEG,KAAKC,mBAAmBO,cAActB,mCAASsB,YAAY,IAC3DC;AAAAA,QAENC,UAAU,CAAC,CAACb;AAAAA,QAAKT,UAAA,CAEhB,CAACO,YAAYP,UACbO,gCACEgB,cAAY;AAAA,UAACtB,SAASI,2CAAamB,OAAOC;AAAAA,UAAazB;AAAAA,QAAAA,CAGzD,CAAA;AAAA,MAAA,CACkB,CAAA;AAAA,IAAA,CAAA;AAAA,EAAA,CAEX;AAElB;"}
@@ -18,7 +18,7 @@ const focusStyles = process.env.NODE_ENV === "production" ? {
18
18
  } : {
19
19
  name: "1ahoc7i-focusStyles",
20
20
  styles: ".HvFocus-focused{outline-color:#52a8ec;outline-style:solid;outline-width:0px;outline-offset:-1px;box-shadow:0 0 0 1px #52a8ec,0 0 0 4px rgba(29, 155, 209, 0.3);@media (-webkit-min-device-pixel-ratio: 0){outline-color:#52a8ec;outline-style:solid;outline-width:0px;outline-offset:-1px;box-shadow:0 0 0 1px #52a8ec,0 0 0 4px rgba(29, 155, 209, 0.3);}}.HvFocus-focusDisabled{outline:none;box-shadow:none;}.HvFocus-focusDisabled *:focus{outline:none;box-shadow:none;}.HvFocus-focusDisabled *{outline:none!important;box-shadow:none!important;};label:focusStyles;",
21
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRm9jdXMvRm9jdXMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVd1QiIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay9odi11aWtpdC1yZWFjdC9odi11aWtpdC1yZWFjdC9wYWNrYWdlcy9jb3JlL3NyYy9jb21wb25lbnRzL0ZvY3VzL0ZvY3VzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjbHN4IGZyb20gXCJjbHN4XCI7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCBSZWFjdCwgeyBSZWZPYmplY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBIdkJhc2VQcm9wcyB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsga2V5Ym9hcmRDb2RlcywgaXNCcm93c2VyIH0gZnJvbSBcInV0aWxzXCI7XG5pbXBvcnQgQ29uZGl0aW9uYWxXcmFwcGVyIGZyb20gXCJ1dGlscy9Db25kaXRpb25hbFdyYXBwZXJcIjtcbmltcG9ydCB7IFN0eWxlZEZvY3VzV3JhcHBlciwgU3R5bGVkRmFsc2VGb2N1cyB9IGZyb20gXCIuL0ZvY3VzLnN0eWxlc1wiO1xuaW1wb3J0IHsgZ2V0Rm9jdXNhYmxlQ2hpbGRyZW4sIGlzS2V5LCBpc09uZU9mS2V5cywgc2V0Rm9jdXNUbyB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgZm9jdXNDbGFzc2VzLCB7IEh2Rm9jdXNDbGFzc2VzIH0gZnJvbSBcIi4vZm9jdXNDbGFzc2VzXCI7XG5pbXBvcnQgeyBjc3MsIEdsb2JhbCB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xuXG5jb25zdCBmb2N1c1N0eWxlcyA9IGNzc2BcbiAgLkh2Rm9jdXMtZm9jdXNlZCB7XG4gICAgb3V0bGluZS1jb2xvcjogIzUyYThlYztcbiAgICBvdXRsaW5lLXN0eWxlOiBzb2xpZDtcbiAgICBvdXRsaW5lLXdpZHRoOiAwcHg7XG4gICAgb3V0bGluZS1vZmZzZXQ6IC0xcHg7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICM1MmE4ZWMsIDAgMCAwIDRweCByZ2JhKDI5LCAxNTUsIDIwOSwgMC4zKTtcblxuICAgIEBtZWRpYSAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAwKSB7XG4gICAgICBvdXRsaW5lLWNvbG9yOiAjNTJhOGVjO1xuICAgICAgb3V0bGluZS1zdHlsZTogc29saWQ7XG4gICAgICBvdXRsaW5lLXdpZHRoOiAwcHg7XG4gICAgICBvdXRsaW5lLW9mZnNldDogLTFweDtcbiAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDFweCAjNTJhOGVjLCAwIDAgMCA0cHggcmdiYSgyOSwgMTU1LCAyMDksIDAuMyk7XG4gICAgfVxuICB9XG5cbiAgLkh2Rm9jdXMtZm9jdXNEaXNhYmxlZCB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG4gIC5IdkZvY3VzLWZvY3VzRGlzYWJsZWQgKjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG4gIC5IdkZvY3VzLWZvY3VzRGlzYWJsZWQgKiB7XG4gICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuYDtcblxuZXhwb3J0IHR5cGUgSHZGb2N1c1Byb3BzID0gSHZCYXNlUHJvcHM8SFRNTEVsZW1lbnQsIHsgY2hpbGRyZW4gfT4gJiB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdEVsZW1lbnQ7XG4gIC8qKiBFeHRyYSBjb25maWd1cmF0aW9uIGZvciB0aGUgY2hpbGQgZWxlbWVudC4gKi9cbiAgY29uZmlndXJhdGlvbj86IHtcbiAgICB0YWJJbmRleD86IG51bWJlcjtcbiAgfTtcbiAgLyoqIEluZGljYXRlcyB0aGF0IHRoZSBkaXNhYmxlZCBjbGFzcyBzaG91bGQgYmUgYXBwbGllZC4gKi9cbiAgZGlzYWJsZWRDbGFzcz86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRoZSBmb2N1cyBpcyBzZWxlY3RlZC4gKi9cbiAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgZm9jdXMgaXMgZGlzYWJsZWQuICovXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgLyoqIFRoZSByZWZlcmVuY2UgdG8gdGhlIHJvb3QgZWxlbWVudCB0byBob2xkIGFsbCBGb2N1cycgY29udGV4dC4gKi9cbiAgcm9vdFJlZj86IFJlZk9iamVjdDxIVE1MRWxlbWVudD47XG4gIC8qKiBTaG93IGZvY3VzIHdoZW4gY2xpY2sgZWxlbWVudC4gdiovXG4gIGZvY3VzT25DbGljaz86IGJvb2xlYW47XG4gIC8qKiBTaG93IGZvY3VzIHdoZW4gY2xpY2sgZWxlbWVudC4gdiovXG4gIGZvY3VzRGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKiogVXNlIHVwLyBkb3duIGtleWJvYXJkIGFycm93cyB0byBjb250cm9sIGZvY3VzLiAqL1xuICB1c2VBcnJvd3M/OiBib29sZWFuO1xuICAvKiogRm9jdXMgYW5kIG5hdmlnYXRpb24gc3RyYXRlZ3kgdG8gYmUgdXNlZC4gdiovXG4gIHN0cmF0ZWd5PzogXCJsaXN0Ym94XCIgfCBcIm1lbnVcIiB8IFwiY2FyZFwiIHwgXCJncmlkXCI7XG4gIC8qKiBVc2VzIGFuIGFic29sdXRlIHBvc2l0aW9uZWQgZGl2IGFzIGEgZm9jdXMuIHYqL1xuICB1c2VGYWxzZUZvY3VzPzogYm9vbGVhbjtcbiAgLyoqIE5hcnJvd3MgdGhlIHJlc3VsdHMgb2YgdGhlIGZvY3VzIHRvIG9ubHkgdGhlc2VzIGNsYXNzIHYqL1xuICBmaWx0ZXJDbGFzcz86IHN0cmluZztcbiAgLyoqIEhvdyBtdWNoIHRoZSBuYXZpZ2F0aW9uIHdpbGwgc2tpcCB3aGVuIHVzaW5nIHRoZSBhcnJvd3MuIHYqL1xuICBuYXZpZ2F0aW9uSnVtcD86IG51bWJlcjtcbiAgLyoqIEEgSnNzIE9iamVjdCB1c2VkIHRvIG92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC4gKi9cbiAgY2xhc3Nlcz86IEh2Rm9jdXNDbGFzc2VzO1xufTtcblxuZXhwb3J0IGNvbnN0IEh2Rm9jdXMgPSAoe1xuICBjbGFzc2VzLFxuICBjaGlsZHJlbixcbiAgY29uZmlndXJhdGlvbiA9IHt9LFxuICBkaXNhYmxlZENsYXNzID0gZmFsc2UsXG4gIHNlbGVjdGVkID0gZmFsc2UsXG4gIGRpc2FibGVkID0gZmFsc2UsXG4gIHJvb3RSZWYgPSB1bmRlZmluZWQsXG4gIGZvY3VzT25DbGljayA9IGZhbHNlLFxuICBmb2N1c0Rpc2FibGVkID0gdHJ1ZSxcbiAgc3RyYXRlZ3kgPSBcImxpc3Rib3hcIixcbiAgdXNlRmFsc2VGb2N1cyA9IGZhbHNlLFxuICBmaWx0ZXJDbGFzcyxcbiAgbmF2aWdhdGlvbkp1bXAgPSA0LFxufTogSHZGb2N1c1Byb3BzKSA9PiB7XG4gIGNvbnN0IFtzaG93Rm9jdXMsIHNldFNob3dGb2N1c10gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IFtjaGlsZEZvY3VzLCBzZXRDaGlsZEZvY3VzXSA9IHVzZVN0YXRlPGFueT4oKTtcbiAgY29uc3QgW2hhc1J1bkNvbmZpZywgc2V0SGFzUnVuQ29uZmlnXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBnZXRGb2N1c2VzID0gKCkgPT4ge1xuICAgIGNvbnN0IGZvY3VzZXMgPSByb290UmVmPy5jdXJyZW50XG4gICAgICA/IEFycmF5LmZyb20oXG4gICAgICAgICAgcm9vdFJlZi5jdXJyZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXG4gICAgICAgICAgICBmaWx0ZXJDbGFzcyB8fCBmb2N1c0NsYXNzZXMucm9vdCB8fCBjbGFzc2VzPy5yb290IHx8IFwicm9vdFwiXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICA6IFtdO1xuICAgIHJldHVybiBmb2N1c2VzO1xuICB9O1xuXG4gIGNvbnN0IHNldFRhYkluZGV4ID0gKGVsLCB0YWJJbmRleCA9IDApID0+IHtcbiAgICBjb25zdCBlbENoaWxkRm9jdXMgPSBnZXRGb2N1c2FibGVDaGlsZHJlbihlbClbMF07XG4gICAgaWYgKGVsQ2hpbGRGb2N1cykge1xuICAgICAgZWwudGFiSW5kZXggPSAtMTtcbiAgICAgIGVsQ2hpbGRGb2N1cy50YWJJbmRleCA9IHRhYkluZGV4O1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC50YWJJbmRleCA9IHRhYkluZGV4O1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBzZXRTZWxlY3RlZFRhYkluZGV4ID0gKCkgPT4ge1xuICAgIGNvbnN0IGZvY3VzZXMgPSBnZXRGb2N1c2VzKCk7XG4gICAgY29uc3QgZmlyc3RTZWxlY3RlZCA9IGZvY3VzZXMuZmluZCgoZm9jdXMpID0+XG4gICAgICBmb2N1cy5jbGFzc0xpc3QuY29udGFpbnMoXG4gICAgICAgIGZvY3VzQ2xhc3Nlcy5zZWxlY3RlZCB8fCBjbGFzc2VzPy5zZWxlY3RlZCB8fCBcInNlbGVjdGVkXCJcbiAgICAgIClcbiAgICApO1xuXG4gICAgaWYgKCFmaXJzdFNlbGVjdGVkKSByZXR1cm47XG4gICAgZm9jdXNlcy5mb3JFYWNoKChmb2N1cykgPT4gc2V0VGFiSW5kZXgoZm9jdXMsIC0xKSk7XG4gICAgc2V0VGFiSW5kZXgoZmlyc3RTZWxlY3RlZCwgMCk7XG4gIH07XG5cbiAgY29uc3QgY2xlYXJUYWJTaWJsaW5ncyA9IChlbCkgPT4ge1xuICAgIGdldEZvY3VzZXMoKS5mb3JFYWNoKChmb2N1cykgPT4gc2V0VGFiSW5kZXgoZm9jdXMsIC0xKSk7XG4gICAgc2V0VGFiSW5kZXgoZWwsIDApO1xuICB9O1xuXG4gIGNvbnN0IG9uRm9jdXNTdHJhdGVneSA9IChldnQpID0+IHtcbiAgICBpZiAoc3RyYXRlZ3kgPT09IFwibGlzdGJveFwiKSB7XG4gICAgICBjbGVhclRhYlNpYmxpbmdzKGV2dC5jdXJyZW50VGFyZ2V0KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgb25CbHVyU3RyYXRlZ3kgPSAoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgc3RyYXRlZ3kgPT09IFwibGlzdGJveFwiICYmXG4gICAgICByb290UmVmICYmXG4gICAgICByb290UmVmLmN1cnJlbnQgJiZcbiAgICAgICFyb290UmVmLmN1cnJlbnQuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudClcbiAgICApIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZXRTZWxlY3RlZFRhYkluZGV4KCk7XG4gICAgICB9LCAxMCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNvbmZpZyA9IChlbCkgPT4ge1xuICAgIGNvbnN0IHsgdGFiSW5kZXggfSA9IGNvbmZpZ3VyYXRpb247XG4gICAgaWYgKCFlbCB8fCBoYXNSdW5Db25maWcpIHJldHVybjtcbiAgICBpZiAoc3RyYXRlZ3kgPT09IFwiY2FyZFwiKSB7XG4gICAgICBzZXRDaGlsZEZvY3VzKGNoaWxkcmVuKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoc3RyYXRlZ3kgPT09IFwiZ3JpZFwiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZm9jdXNhYmxlQ2hpbGRyZW4gPSBnZXRGb2N1c2FibGVDaGlsZHJlbihlbCk7XG4gICAgaWYgKGZvY3VzYWJsZUNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgZm9jdXNhYmxlQ2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHNldFRhYkluZGV4KGNoaWxkLCAtMSkpO1xuICAgICAgc2V0Q2hpbGRGb2N1cyhmb2N1c2FibGVDaGlsZHJlblswXSk7XG4gICAgfVxuXG4gICAgaWYgKCFpc05pbCh0YWJJbmRleCkpIHNldFRhYkluZGV4KGVsLCB0YWJJbmRleCk7XG4gICAgc2V0SGFzUnVuQ29uZmlnKHRydWUpO1xuICB9O1xuXG4gIGNvbnN0IGFkZEZvY3VzQ2xhc3MgPSAoZXZ0KSA9PiB7XG4gICAgaWYgKCF1c2VGYWxzZUZvY3VzKSB7XG4gICAgICBldnQuY3VycmVudFRhcmdldC5jbGFzc0xpc3QuYWRkKGZvY3VzQ2xhc3Nlcy5mb2N1c2VkKTtcbiAgICAgIGlmIChjbGFzc2VzPy5mb2N1c2VkKSB7XG4gICAgICAgIGV2dC5jdXJyZW50VGFyZ2V0LmNsYXNzTGlzdC5hZGQoY2xhc3Nlcy5mb2N1c2VkKTtcbiAgICAgIH1cbiAgICAgIC8vIGFkZCBnbG9iYWwgY2xhc3MgSHZJc0ZvY3VzZWQgYXMgYSBtYXJrZXJcbiAgICAgIC8vIG5vdCB0byBiZSBzdHlsZWQgZGlyZWN0bHksIG9ubHkgYXMgaGVscGVyIGluIHNwZWNpZmljIGNzcyBxdWVyaWVzXG4gICAgICBldnQuY3VycmVudFRhcmdldC5jbGFzc0xpc3QuYWRkKFwiSHZJc0ZvY3VzZWRcIik7XG4gICAgICBjbGFzc2VzPy5mb2N1c1xuICAgICAgICA/LnNwbGl0KFwiIFwiKVxuICAgICAgICAuZm9yRWFjaCgoYykgPT4gZXZ0LmN1cnJlbnRUYXJnZXQuY2xhc3NMaXN0LmFkZChjKSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHJlbW92ZUZvY3VzQ2xhc3MgPSAoKSA9PiB7XG4gICAgaWYgKCF1c2VGYWxzZUZvY3VzKSB7XG4gICAgICBnZXRGb2N1c2VzKCkuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoZm9jdXNDbGFzc2VzLmZvY3VzZWQpIHtcbiAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoZm9jdXNDbGFzc2VzLmZvY3VzZWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjbGFzc2VzPy5mb2N1c2VkKSB7XG4gICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGNsYXNzZXMuZm9jdXNlZCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVtb3ZlIHRoZSBnbG9iYWwgY2xhc3MgSHZJc0ZvY3VzZWRcbiAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwiSHZJc0ZvY3VzZWRcIik7XG4gICAgICAgIGNsYXNzZXM/LmZvY3VzPy5zcGxpdChcIiBcIikuZm9yRWFjaCgoYykgPT4gZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGMpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBvbkZvY3VzID0gKGV2dCkgPT4ge1xuICAgIGFkZEZvY3VzQ2xhc3MoZXZ0KTtcbiAgICBzZXRTaG93Rm9jdXModHJ1ZSk7XG4gICAgLy8gZ2l2ZSBmb2N1cyB0byBjaGlsZCBlbGVtZW50IGlmIGFueSBmb2N1c2FibGVcblxuICAgIGlmIChjaGlsZEZvY3VzICYmIGNoaWxkRm9jdXMuZm9jdXMpIGNoaWxkRm9jdXMuZm9jdXMoKTtcbiAgICBvbkZvY3VzU3RyYXRlZ3koZXZ0KTtcbiAgfTtcblxuICBjb25zdCBvbkJsdXIgPSAoKSA9PiB7XG4gICAgc2V0U2hvd0ZvY3VzKGZhbHNlKTtcbiAgICByZW1vdmVGb2N1c0NsYXNzKCk7XG4gICAgb25CbHVyU3RyYXRlZ3koKTtcbiAgfTtcblxuICBjb25zdCBvbk1vdXNlRG93biA9IChldnQpID0+IHtcbiAgICBjb25zdCBoYXNDYXJkID0gISFldnQuY3VycmVudFRhcmdldD8ucXVlcnlTZWxlY3RvcihcIi5IdklzQ2FyZEdyaWRFbGVtZW50XCIpO1xuICAgIGlmIChzdHJhdGVneSA9PT0gXCJncmlkXCIgJiYgaGFzQ2FyZCkgcmV0dXJuO1xuXG4gICAgc2V0Rm9jdXNUbyhldnQuY3VycmVudFRhcmdldCk7XG4gICAgc2V0VGFiSW5kZXgoZXZ0LmN1cnJlbnRUYXJnZXQsIDApO1xuICAgIC8vIHJlbW92ZSBmb2N1cyBvdXRsaW5lIHVubGVzcyBleHBsaWNpdGx5IGVuYWJsZWRcbiAgICBpZiAoIWZvY3VzT25DbGljaykge1xuICAgICAgLy8gVE9ETyB0aGlzIHBpZWNlIG9mIGNvZGUgd29ya3Mgb25seSBiZWNhdXNlIG9uTW91c2VEb3duIGlzIGhhcHBlbmluZyBhZnRlciB0aGUgZm9jdXMgZXZlbnRcbiAgICAgIC8vIFRoZXJlIGlzIG5vdGhpbmcgaW4gaGVyZSB0aGF0IGd1YXJhbnRlZXMgdGhlIG9yZGVyIG9mIHRoZXNlIGV2ZW50cywgc28gaXQgbWF5IHByZXNlbnQgYSBwcm9ibGVtIGluIHRoZSBmdXR1cmVcbiAgICAgIHJlbW92ZUZvY3VzQ2xhc3MoKTtcbiAgICAgIHNldFNob3dGb2N1cyhmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGZvY3VzQW5kVXBkYXRlSW5kZXggPSAobmV4dEZvY3VzLCBwcmV2aW91c0ZvY3VzLCBmb2N1c2VzTGlzdCkgPT4ge1xuICAgIGlmIChmb2N1c2VzTGlzdD8uaW5jbHVkZXMocHJldmlvdXNGb2N1cykpIHtcbiAgICAgIHNldFRhYkluZGV4KHByZXZpb3VzRm9jdXMsIC0xKTtcbiAgICB9XG4gICAgc2V0VGFiSW5kZXgobmV4dEZvY3VzLCAwKTtcbiAgICBzZXRGb2N1c1RvKG5leHRGb2N1cyk7XG4gIH07XG5cbiAgY29uc3QgZ2V0RW5hYmxlZEtleXMgPSAoY3VycmVudEZvY3VzSW5kZXgsIGp1bXAsIGxpc3RTaXplKSA9PiAoe1xuICAgIHJpZ2h0OlxuICAgICAgKGN1cnJlbnRGb2N1c0luZGV4ICsgMSkgJSBqdW1wID09PSAwIHx8XG4gICAgICBjdXJyZW50Rm9jdXNJbmRleCArIDEgPiBsaXN0U2l6ZSAtIDEsXG4gICAgbGVmdDogY3VycmVudEZvY3VzSW5kZXggJSBqdW1wID09PSAwLFxuICAgIHVwOiBjdXJyZW50Rm9jdXNJbmRleCAtIGp1bXAgPCAwLFxuICAgIGRvd246XG4gICAgICBjdXJyZW50Rm9jdXNJbmRleCArIGp1bXAgPiBsaXN0U2l6ZSB8fFxuICAgICAgY3VycmVudEZvY3VzSW5kZXggKyBqdW1wID4gbGlzdFNpemUgLSAxLFxuICB9KTtcblxuICBjb25zdCBvbkdyaWRLZXlEb3duSGFuZGxlciA9IChcbiAgICBldnQsXG4gICAgZm9jdXNlcyxcbiAgICBmb2N1c2VzTGlzdCxcbiAgICBjdXJyZW50Rm9jdXNJbmRleCxcbiAgICBqdW1wXG4gICkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIEFycm93VXAsXG4gICAgICBBcnJvd0Rvd24sXG4gICAgICBIb21lLFxuICAgICAgRW5kLFxuICAgICAgQXJyb3dMZWZ0LFxuICAgICAgQXJyb3dSaWdodCxcbiAgICAgIEVudGVyLFxuICAgICAgU3BhY2VCYXIsXG4gICAgfSA9IGtleWJvYXJkQ29kZXM7XG5cbiAgICBjb25zdCBjaGlsZEZvY3VzSXNJbnB1dCA9IGNoaWxkRm9jdXMgJiYgY2hpbGRGb2N1cy5ub2RlTmFtZSA9PT0gXCJJTlBVVFwiO1xuXG4gICAgaWYgKFxuICAgICAgIWlzT25lT2ZLZXlzKGV2dCwgW1xuICAgICAgICBBcnJvd1VwLFxuICAgICAgICBBcnJvd0Rvd24sXG4gICAgICAgIEFycm93TGVmdCxcbiAgICAgICAgQXJyb3dSaWdodCxcbiAgICAgICAgSG9tZSxcbiAgICAgICAgRW5kLFxuICAgICAgICBTcGFjZUJhcixcbiAgICAgICAgRW50ZXIsXG4gICAgICBdKSB8fFxuICAgICAgKGNoaWxkRm9jdXNJc0lucHV0ICYmIGlzS2V5KGV2dCwgRW50ZXIpKVxuICAgICkge1xuICAgICAgLy8gbm90aGluZyB0byBkb1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHdlJ2xsIGRvIHNvbWV0aGluZyB3aXRoIHRoZSBrZXkgc28gcHJldmVudCBkZWZhdWx0IGFuZCBzdG9wIHByb3BhZ2F0aW9uXG4gICAgLy8gZXhjZXB0IGZvciBFbnRlciBhbmQgU3BhY2VCYXJcbiAgICBpZiAoIWlzT25lT2ZLZXlzKGV2dCwgW0VudGVyLCBTcGFjZUJhcl0pKSB7XG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBjb25zdCBibG9ja2VkS2V5cyA9IGdldEVuYWJsZWRLZXlzKFxuICAgICAgY3VycmVudEZvY3VzSW5kZXgsXG4gICAgICBqdW1wLFxuICAgICAgZm9jdXNlc0xpc3QubGVuZ3RoXG4gICAgKTtcblxuICAgIHN3aXRjaCAoZXZ0LmtleUNvZGUpIHtcbiAgICAgIGNhc2UgU3BhY2VCYXI6XG4gICAgICBjYXNlIEVudGVyOlxuICAgICAgICBpZiAoaXNCcm93c2VyKFwiZmlyZWZveFwiKSkge1xuICAgICAgICAgIGV2dC50YXJnZXQuY2xpY2soKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBldnQuY3VycmVudFRhcmdldC5jbGljaygpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBcnJvd1VwOlxuICAgICAgICBpZiAoIWJsb2NrZWRLZXlzLnVwKSB7XG4gICAgICAgICAgZm9jdXNBbmRVcGRhdGVJbmRleChcbiAgICAgICAgICAgIGZvY3VzZXMuanVtcCB8fCBmb2N1c2VzLmxhc3QsXG4gICAgICAgICAgICBldnQuY3VycmVudCxcbiAgICAgICAgICAgIGZvY3VzZXNMaXN0XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQXJyb3dEb3duOlxuICAgICAgICBpZiAoIWJsb2NrZWRLZXlzLmRvd24pIHtcbiAgICAgICAgICBmb2N1c0FuZFVwZGF0ZUluZGV4KFxuICAgICAgICAgICAgZm9jdXNlcy5mYWxsIHx8IGZvY3VzZXMuZmlyc3QsXG4gICAgICAgICAgICBldnQuY3VycmVudCxcbiAgICAgICAgICAgIGZvY3VzZXNMaXN0XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQXJyb3dMZWZ0OlxuICAgICAgICBpZiAoIWJsb2NrZWRLZXlzLmxlZnQpIHtcbiAgICAgICAgICBmb2N1c0FuZFVwZGF0ZUluZGV4KFxuICAgICAgICAgICAgZm9jdXNlcy5wcmV2aW91cyB8fCBmb2N1c2VzLmxhc3QsXG4gICAgICAgICAgICBldnQuY3VycmVudCxcbiAgICAgICAgICAgIGZvY3VzZXNMaXN0XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQXJyb3dSaWdodDpcbiAgICAgICAgaWYgKCFibG9ja2VkS2V5cy5yaWdodCkge1xuICAgICAgICAgIGZvY3VzQW5kVXBkYXRlSW5kZXgoXG4gICAgICAgICAgICBmb2N1c2VzLm5leHQgfHwgZm9jdXNlcy5maXJzdCxcbiAgICAgICAgICAgIGV2dC5jdXJyZW50LFxuICAgICAgICAgICAgZm9jdXNlc0xpc3RcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBIb21lOlxuICAgICAgICBmb2N1c0FuZFVwZGF0ZUluZGV4KGZvY3VzZXMuZmlyc3QsIGV2dC5jdXJyZW50LCBmb2N1c2VzTGlzdCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBFbmQ6XG4gICAgICAgIGZvY3VzQW5kVXBkYXRlSW5kZXgoZm9jdXNlcy5sYXN0LCBldnQuY3VycmVudCwgZm9jdXNlc0xpc3QpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG9uVmVydGljYWxBcnJhbmdlbWVudEhhbmRsZXIgPSAoZXZ0LCBmb2N1c2VzLCBmb2N1c2VzTGlzdCkgPT4ge1xuICAgIGNvbnN0IHsgQXJyb3dVcCwgQXJyb3dEb3duLCBIb21lLCBFbmQsIEVudGVyLCBTcGFjZUJhciB9ID0ga2V5Ym9hcmRDb2RlcztcbiAgICBjb25zdCBjaGlsZEZvY3VzSXNJbnB1dCA9IGNoaWxkRm9jdXMgJiYgY2hpbGRGb2N1cy5ub2RlTmFtZSA9PT0gXCJJTlBVVFwiO1xuXG4gICAgaWYgKFxuICAgICAgIWlzT25lT2ZLZXlzKGV2dCwgW0Fycm93VXAsIEFycm93RG93biwgSG9tZSwgRW5kLCBTcGFjZUJhciwgRW50ZXJdKSB8fFxuICAgICAgKGNoaWxkRm9jdXNJc0lucHV0ICYmIGlzS2V5KGV2dCwgRW50ZXIpKVxuICAgICkge1xuICAgICAgLy8gbm90aGluZyB0byBkb1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHdlJ2xsIGRvIHNvbWV0aGluZyB3aXRoIHRoZSBrZXkgc28gcHJldmVudCBkZWZhdWx0IGFuZCBzdG9wIHByb3BhZ2F0aW9uXG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgc3dpdGNoIChldnQua2V5Q29kZSkge1xuICAgICAgY2FzZSBTcGFjZUJhcjpcbiAgICAgIGNhc2UgRW50ZXI6XG4gICAgICAgIGV2dC50YXJnZXQuY2xpY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEFycm93VXA6XG4gICAgICAgIGZvY3VzQW5kVXBkYXRlSW5kZXgoXG4gICAgICAgICAgZm9jdXNlcy5wcmV2aW91cyB8fCBmb2N1c2VzLmxhc3QsXG4gICAgICAgICAgZXZ0LmN1cnJlbnQsXG4gICAgICAgICAgZm9jdXNlc0xpc3RcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEFycm93RG93bjpcbiAgICAgICAgZm9jdXNBbmRVcGRhdGVJbmRleChcbiAgICAgICAgICBmb2N1c2VzLm5leHQgfHwgZm9jdXNlcy5maXJzdCxcbiAgICAgICAgICBldnQuY3VycmVudCxcbiAgICAgICAgICBmb2N1c2VzTGlzdFxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgSG9tZTpcbiAgICAgICAgZm9jdXNBbmRVcGRhdGVJbmRleChmb2N1c2VzLmZpcnN0LCBldnQuY3VycmVudCwgZm9jdXNlc0xpc3QpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRW5kOlxuICAgICAgICBmb2N1c0FuZFVwZGF0ZUluZGV4KGZvY3VzZXMubGFzdCwgZXZ0LmN1cnJlbnQsIGZvY3VzZXNMaXN0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgIH1cbiAgfTtcblxuICBjb25zdCBvblNpbmdsZUhhbmRsZXIgPSAoZXZ0KSA9PiB7XG4gICAgY29uc3QgeyBFbnRlciwgU3BhY2VCYXIgfSA9IGtleWJvYXJkQ29kZXM7XG4gICAgY29uc3QgY2hpbGRGb2N1c0lzSW5wdXQgPSBjaGlsZEZvY3VzICYmIGNoaWxkRm9jdXMubm9kZU5hbWUgPT09IFwiSU5QVVRcIjtcblxuICAgIGlmIChcbiAgICAgICFpc09uZU9mS2V5cyhldnQsIFtTcGFjZUJhciwgRW50ZXJdKSB8fFxuICAgICAgKGNoaWxkRm9jdXNJc0lucHV0ICYmIGlzS2V5KGV2dCwgRW50ZXIpKVxuICAgICkge1xuICAgICAgLy8gbm90aGluZyB0byBkb1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHdlJ2xsIGRvIHNvbWV0aGluZyB3aXRoIHRoZSBrZXkgc28gcHJldmVudCBkZWZhdWx0IGFuZCBzdG9wIHByb3BhZ2F0aW9uXG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgZXZ0LmN1cnJlbnRUYXJnZXQuY2xpY2soKTtcbiAgfTtcblxuICBjb25zdCBvbktleURvd24gPSAoZXZ0KSA9PiB7XG4gICAgaWYgKHJvb3RSZWY/LmN1cnJlbnQgPT0gbnVsbCkge1xuICAgICAgLy8gb3BlcmF0aW5nIG91dHNpZGUgb2YgYSBjb21wb3NpdGUgd2lkZ2V0XG4gICAgICAvLyBub3RoaW5nIHRvIG1hbmFnZSwganVzdCBzdHlsZSBhbmQgdHJpZ2dlciBjbGlja3NcbiAgICAgIG9uU2luZ2xlSGFuZGxlcihldnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFRPRE8ga2VlcCB0aGUgc21hcnQgZGVmYXVsdCwgYnV0IGFsbG93IHRvIGV4cGxpY2l0bHkgb3ZlcnJpZGUgaWYgZGlzYWJsZWQgZWxlbWVudHMgc2hvdWxkIGJlIGZvY3VzYWJsZVxuICAgIGNvbnN0IGlzRGlzYWJsZWRGb2N1c2FibGUgPSBzdHJhdGVneSA9PT0gXCJtZW51XCI7XG4gICAgY29uc3QgZm9jdXNlc0xpc3QgPSBnZXRGb2N1c2VzKCkuZmlsdGVyKFxuICAgICAgKGVsKSA9PlxuICAgICAgICBpc0Rpc2FibGVkRm9jdXNhYmxlIHx8XG4gICAgICAgICFlbC5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3Nlcz8uZGlzYWJsZWQgYXMgc3RyaW5nKVxuICAgICk7XG5cbiAgICBjb25zdCBjdXJyZW50Rm9jdXMgPSBmb2N1c2VzTGlzdC5pbmRleE9mKGV2dC5jdXJyZW50VGFyZ2V0KTtcblxuICAgIGNvbnN0IGZvY3VzZXMgPSB7XG4gICAgICBmaXJzdDogZm9jdXNlc0xpc3RbMF0sXG4gICAgICBsYXN0OiBmb2N1c2VzTGlzdFtmb2N1c2VzTGlzdC5sZW5ndGggLSAxXSxcbiAgICAgIHByZXZpb3VzOiBmb2N1c2VzTGlzdFtjdXJyZW50Rm9jdXMgLSAxXSxcbiAgICAgIG5leHQ6IGZvY3VzZXNMaXN0W2N1cnJlbnRGb2N1cyArIDFdLFxuICAgICAgZmFsbDogZm9jdXNlc0xpc3RbY3VycmVudEZvY3VzICsgbmF2aWdhdGlvbkp1bXBdLFxuICAgICAganVtcDogZm9jdXNlc0xpc3RbY3VycmVudEZvY3VzIC0gbmF2aWdhdGlvbkp1bXBdLFxuICAgIH07XG5cbiAgICBpZiAoc3RyYXRlZ3kgPT09IFwiZ3JpZFwiKSB7XG4gICAgICBvbkdyaWRLZXlEb3duSGFuZGxlcihcbiAgICAgICAgZXZ0LFxuICAgICAgICBmb2N1c2VzLFxuICAgICAgICBmb2N1c2VzTGlzdCxcbiAgICAgICAgY3VycmVudEZvY3VzLFxuICAgICAgICBuYXZpZ2F0aW9uSnVtcFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBUT0RPIGFkZCBwcm9wZXJ0eSBmb3Igc3BlY2lmeWluZyB0aGUgY29tcG9zaXRlIHdpZGdldCBvcmllbnRhdGlvblxuICAgIC8vIFRPRE8gaW1wbGVtZW50IGhhbmRsZXIgZm9yIGhvcml6b250YWwgb3JpZW50YXRpb25cbiAgICBvblZlcnRpY2FsQXJyYW5nZW1lbnRIYW5kbGVyKGV2dCwgZm9jdXNlcywgZm9jdXNlc0xpc3QpO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5VXAgPSAoZXZ0KSA9PiB7XG4gICAgaWYgKGlzQnJvd3NlcihcImZpcmVmb3hcIikpIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9O1xuXG4gIGlmIChkaXNhYmxlZCkgcmV0dXJuIGNoaWxkcmVuO1xuXG4gIGNvbnN0IGZvY3VzV3JhcHBlciA9IChjaGlsZHJlblRvV3JhcCkgPT4gKFxuICAgIDxTdHlsZWRGb2N1c1dyYXBwZXJcbiAgICAgIGNsYXNzTmFtZT17Y2xzeChcbiAgICAgICAgY2xhc3Nlcz8uZXh0ZXJuYWxSZWZlcmVuY2UsXG4gICAgICAgIGZvY3VzQ2xhc3Nlcy5leHRlcm5hbFJlZmVyZW5jZVxuICAgICAgKX1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW5Ub1dyYXB9XG4gICAgICB7c2hvd0ZvY3VzICYmIChcbiAgICAgICAgPFN0eWxlZEZhbHNlRm9jdXNcbiAgICAgICAgICBjbGFzc05hbWU9e2Nsc3goY2xhc3Nlcz8uZmFsc2VGb2N1cywgZm9jdXNDbGFzc2VzLmZhbHNlRm9jdXMpfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L1N0eWxlZEZvY3VzV3JhcHBlcj5cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxDb25kaXRpb25hbFdyYXBwZXIgY29uZGl0aW9uPXt1c2VGYWxzZUZvY3VzfSB3cmFwcGVyPXtmb2N1c1dyYXBwZXJ9PlxuICAgICAgPEdsb2JhbCBzdHlsZXM9e2ZvY3VzU3R5bGVzfSAvPlxuICAgICAge1JlYWN0LmNsb25lRWxlbWVudChjaGlsZHJlbiwge1xuICAgICAgICBjbGFzc05hbWU6IGNsc3goXG4gICAgICAgICAgY2hpbGRyZW4ucHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICAgIGZvY3VzQ2xhc3Nlcy5yb290LFxuICAgICAgICAgIGNsYXNzZXM/LnJvb3QsXG4gICAgICAgICAgZmlsdGVyQ2xhc3MsXG4gICAgICAgICAgc2VsZWN0ZWQgJiYgY2xzeChmb2N1c0NsYXNzZXMuc2VsZWN0ZWQsIGNsYXNzZXM/LnNlbGVjdGVkKSxcbiAgICAgICAgICBkaXNhYmxlZENsYXNzICYmIGNsc3goZm9jdXNDbGFzc2VzLmRpc2FibGVkLCBjbGFzc2VzPy5kaXNhYmxlZCksXG4gICAgICAgICAgZm9jdXNEaXNhYmxlZCAmJlxuICAgICAgICAgICAgY2xzeChmb2N1c0NsYXNzZXMuZm9jdXNEaXNhYmxlZCwgY2xhc3Nlcz8uZm9jdXNEaXNhYmxlZClcbiAgICAgICAgKSxcbiAgICAgICAgcmVmOiBjb25maWcsXG4gICAgICAgIG9uRm9jdXMsXG4gICAgICAgIG9uQmx1cixcbiAgICAgICAgb25Nb3VzZURvd24sXG4gICAgICAgIG9uS2V5RG93bixcbiAgICAgICAgb25LZXlVcCxcbiAgICAgICAgc2VsZWN0ZWQsXG4gICAgICB9KX1cbiAgICA8L0NvbmRpdGlvbmFsV3JhcHBlcj5cbiAgKTtcbn07XG4iXX0= */",
21
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRm9jdXMvRm9jdXMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVd1QiIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay9odi11aWtpdC1yZWFjdC9odi11aWtpdC1yZWFjdC9wYWNrYWdlcy9jb3JlL3NyYy9jb21wb25lbnRzL0ZvY3VzL0ZvY3VzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjbHN4IGZyb20gXCJjbHN4XCI7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCBSZWFjdCwgeyBSZWZPYmplY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBIdkJhc2VQcm9wcyB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsga2V5Ym9hcmRDb2RlcywgaXNCcm93c2VyIH0gZnJvbSBcInV0aWxzXCI7XG5pbXBvcnQgQ29uZGl0aW9uYWxXcmFwcGVyIGZyb20gXCJ1dGlscy9Db25kaXRpb25hbFdyYXBwZXJcIjtcbmltcG9ydCB7IFN0eWxlZEZvY3VzV3JhcHBlciwgU3R5bGVkRmFsc2VGb2N1cyB9IGZyb20gXCIuL0ZvY3VzLnN0eWxlc1wiO1xuaW1wb3J0IHsgZ2V0Rm9jdXNhYmxlQ2hpbGRyZW4sIGlzS2V5LCBpc09uZU9mS2V5cywgc2V0Rm9jdXNUbyB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgZm9jdXNDbGFzc2VzLCB7IEh2Rm9jdXNDbGFzc2VzIH0gZnJvbSBcIi4vZm9jdXNDbGFzc2VzXCI7XG5pbXBvcnQgeyBjc3MsIEdsb2JhbCB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xuXG5jb25zdCBmb2N1c1N0eWxlcyA9IGNzc2BcbiAgLkh2Rm9jdXMtZm9jdXNlZCB7XG4gICAgb3V0bGluZS1jb2xvcjogIzUyYThlYztcbiAgICBvdXRsaW5lLXN0eWxlOiBzb2xpZDtcbiAgICBvdXRsaW5lLXdpZHRoOiAwcHg7XG4gICAgb3V0bGluZS1vZmZzZXQ6IC0xcHg7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICM1MmE4ZWMsIDAgMCAwIDRweCByZ2JhKDI5LCAxNTUsIDIwOSwgMC4zKTtcblxuICAgIEBtZWRpYSAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAwKSB7XG4gICAgICBvdXRsaW5lLWNvbG9yOiAjNTJhOGVjO1xuICAgICAgb3V0bGluZS1zdHlsZTogc29saWQ7XG4gICAgICBvdXRsaW5lLXdpZHRoOiAwcHg7XG4gICAgICBvdXRsaW5lLW9mZnNldDogLTFweDtcbiAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDFweCAjNTJhOGVjLCAwIDAgMCA0cHggcmdiYSgyOSwgMTU1LCAyMDksIDAuMyk7XG4gICAgfVxuICB9XG5cbiAgLkh2Rm9jdXMtZm9jdXNEaXNhYmxlZCB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG4gIC5IdkZvY3VzLWZvY3VzRGlzYWJsZWQgKjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG4gIC5IdkZvY3VzLWZvY3VzRGlzYWJsZWQgKiB7XG4gICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuYDtcblxuZXhwb3J0IHR5cGUgSHZGb2N1c1N0cmF0ZWdpZXMgPSBcImxpc3Rib3hcIiB8IFwibWVudVwiIHwgXCJjYXJkXCIgfCBcImdyaWRcIjtcblxuZXhwb3J0IHR5cGUgSHZGb2N1c1Byb3BzID0gSHZCYXNlUHJvcHM8SFRNTEVsZW1lbnQsIHsgY2hpbGRyZW4gfT4gJiB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdEVsZW1lbnQ7XG4gIC8qKiBFeHRyYSBjb25maWd1cmF0aW9uIGZvciB0aGUgY2hpbGQgZWxlbWVudC4gKi9cbiAgY29uZmlndXJhdGlvbj86IHtcbiAgICB0YWJJbmRleD86IG51bWJlcjtcbiAgfTtcbiAgLyoqIEluZGljYXRlcyB0aGF0IHRoZSBkaXNhYmxlZCBjbGFzcyBzaG91bGQgYmUgYXBwbGllZC4gKi9cbiAgZGlzYWJsZWRDbGFzcz86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRoZSBmb2N1cyBpcyBzZWxlY3RlZC4gKi9cbiAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgZm9jdXMgaXMgZGlzYWJsZWQuICovXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgLyoqIFRoZSByZWZlcmVuY2UgdG8gdGhlIHJvb3QgZWxlbWVudCB0byBob2xkIGFsbCBGb2N1cycgY29udGV4dC4gKi9cbiAgcm9vdFJlZj86IFJlZk9iamVjdDxIVE1MRWxlbWVudD47XG4gIC8qKiBTaG93IGZvY3VzIHdoZW4gY2xpY2sgZWxlbWVudC4gdiovXG4gIGZvY3VzT25DbGljaz86IGJvb2xlYW47XG4gIC8qKiBTaG93IGZvY3VzIHdoZW4gY2xpY2sgZWxlbWVudC4gdiovXG4gIGZvY3VzRGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKiogVXNlIHVwLyBkb3duIGtleWJvYXJkIGFycm93cyB0byBjb250cm9sIGZvY3VzLiAqL1xuICB1c2VBcnJvd3M/OiBib29sZWFuO1xuICAvKiogRm9jdXMgYW5kIG5hdmlnYXRpb24gc3RyYXRlZ3kgdG8gYmUgdXNlZC4gdiovXG4gIHN0cmF0ZWd5PzogSHZGb2N1c1N0cmF0ZWdpZXM7XG4gIC8qKiBVc2VzIGFuIGFic29sdXRlIHBvc2l0aW9uZWQgZGl2IGFzIGEgZm9jdXMuIHYqL1xuICB1c2VGYWxzZUZvY3VzPzogYm9vbGVhbjtcbiAgLyoqIE5hcnJvd3MgdGhlIHJlc3VsdHMgb2YgdGhlIGZvY3VzIHRvIG9ubHkgdGhlc2VzIGNsYXNzIHYqL1xuICBmaWx0ZXJDbGFzcz86IHN0cmluZztcbiAgLyoqIEhvdyBtdWNoIHRoZSBuYXZpZ2F0aW9uIHdpbGwgc2tpcCB3aGVuIHVzaW5nIHRoZSBhcnJvd3MuIHYqL1xuICBuYXZpZ2F0aW9uSnVtcD86IG51bWJlcjtcbiAgLyoqIEEgSnNzIE9iamVjdCB1c2VkIHRvIG92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC4gKi9cbiAgY2xhc3Nlcz86IEh2Rm9jdXNDbGFzc2VzO1xufTtcblxuZXhwb3J0IGNvbnN0IEh2Rm9jdXMgPSAoe1xuICBjbGFzc2VzLFxuICBjaGlsZHJlbixcbiAgY29uZmlndXJhdGlvbiA9IHt9LFxuICBkaXNhYmxlZENsYXNzID0gZmFsc2UsXG4gIHNlbGVjdGVkID0gZmFsc2UsXG4gIGRpc2FibGVkID0gZmFsc2UsXG4gIHJvb3RSZWYgPSB1bmRlZmluZWQsXG4gIGZvY3VzT25DbGljayA9IGZhbHNlLFxuICBmb2N1c0Rpc2FibGVkID0gdHJ1ZSxcbiAgc3RyYXRlZ3kgPSBcImxpc3Rib3hcIixcbiAgdXNlRmFsc2VGb2N1cyA9IGZhbHNlLFxuICBmaWx0ZXJDbGFzcyxcbiAgbmF2aWdhdGlvbkp1bXAgPSA0LFxufTogSHZGb2N1c1Byb3BzKSA9PiB7XG4gIGNvbnN0IFtzaG93Rm9jdXMsIHNldFNob3dGb2N1c10gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IFtjaGlsZEZvY3VzLCBzZXRDaGlsZEZvY3VzXSA9IHVzZVN0YXRlPGFueT4oKTtcbiAgY29uc3QgW2hhc1J1bkNvbmZpZywgc2V0SGFzUnVuQ29uZmlnXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBnZXRGb2N1c2VzID0gKCkgPT4ge1xuICAgIGNvbnN0IGZvY3VzZXMgPSByb290UmVmPy5jdXJyZW50XG4gICAgICA/IEFycmF5LmZyb20oXG4gICAgICAgICAgcm9vdFJlZi5jdXJyZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXG4gICAgICAgICAgICBmaWx0ZXJDbGFzcyB8fCBmb2N1c0NsYXNzZXMucm9vdCB8fCBjbGFzc2VzPy5yb290IHx8IFwicm9vdFwiXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICA6IFtdO1xuICAgIHJldHVybiBmb2N1c2VzO1xuICB9O1xuXG4gIGNvbnN0IHNldFRhYkluZGV4ID0gKGVsLCB0YWJJbmRleCA9IDApID0+IHtcbiAgICBjb25zdCBlbENoaWxkRm9jdXMgPSBnZXRGb2N1c2FibGVDaGlsZHJlbihlbClbMF07XG4gICAgaWYgKGVsQ2hpbGRGb2N1cykge1xuICAgICAgZWwudGFiSW5kZXggPSAtMTtcbiAgICAgIGVsQ2hpbGRGb2N1cy50YWJJbmRleCA9IHRhYkluZGV4O1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC50YWJJbmRleCA9IHRhYkluZGV4O1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBzZXRTZWxlY3RlZFRhYkluZGV4ID0gKCkgPT4ge1xuICAgIGNvbnN0IGZvY3VzZXMgPSBnZXRGb2N1c2VzKCk7XG4gICAgY29uc3QgZmlyc3RTZWxlY3RlZCA9IGZvY3VzZXMuZmluZCgoZm9jdXMpID0+XG4gICAgICBmb2N1cy5jbGFzc0xpc3QuY29udGFpbnMoXG4gICAgICAgIGZvY3VzQ2xhc3Nlcy5zZWxlY3RlZCB8fCBjbGFzc2VzPy5zZWxlY3RlZCB8fCBcInNlbGVjdGVkXCJcbiAgICAgIClcbiAgICApO1xuXG4gICAgaWYgKCFmaXJzdFNlbGVjdGVkKSByZXR1cm47XG4gICAgZm9jdXNlcy5mb3JFYWNoKChmb2N1cykgPT4gc2V0VGFiSW5kZXgoZm9jdXMsIC0xKSk7XG4gICAgc2V0VGFiSW5kZXgoZmlyc3RTZWxlY3RlZCwgMCk7XG4gIH07XG5cbiAgY29uc3QgY2xlYXJUYWJTaWJsaW5ncyA9IChlbCkgPT4ge1xuICAgIGdldEZvY3VzZXMoKS5mb3JFYWNoKChmb2N1cykgPT4gc2V0VGFiSW5kZXgoZm9jdXMsIC0xKSk7XG4gICAgc2V0VGFiSW5kZXgoZWwsIDApO1xuICB9O1xuXG4gIGNvbnN0IG9uRm9jdXNTdHJhdGVneSA9IChldnQpID0+IHtcbiAgICBpZiAoc3RyYXRlZ3kgPT09IFwibGlzdGJveFwiKSB7XG4gICAgICBjbGVhclRhYlNpYmxpbmdzKGV2dC5jdXJyZW50VGFyZ2V0KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgb25CbHVyU3RyYXRlZ3kgPSAoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgc3RyYXRlZ3kgPT09IFwibGlzdGJveFwiICYmXG4gICAgICByb290UmVmICYmXG4gICAgICByb290UmVmLmN1cnJlbnQgJiZcbiAgICAgICFyb290UmVmLmN1cnJlbnQuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudClcbiAgICApIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZXRTZWxlY3RlZFRhYkluZGV4KCk7XG4gICAgICB9LCAxMCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNvbmZpZyA9IChlbCkgPT4ge1xuICAgIGNvbnN0IHsgdGFiSW5kZXggfSA9IGNvbmZpZ3VyYXRpb247XG4gICAgaWYgKCFlbCB8fCBoYXNSdW5Db25maWcpIHJldHVybjtcbiAgICBpZiAoc3RyYXRlZ3kgPT09IFwiY2FyZFwiKSB7XG4gICAgICBzZXRDaGlsZEZvY3VzKGNoaWxkcmVuKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoc3RyYXRlZ3kgPT09IFwiZ3JpZFwiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZm9jdXNhYmxlQ2hpbGRyZW4gPSBnZXRGb2N1c2FibGVDaGlsZHJlbihlbCk7XG4gICAgaWYgKGZvY3VzYWJsZUNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgZm9jdXNhYmxlQ2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHNldFRhYkluZGV4KGNoaWxkLCAtMSkpO1xuICAgICAgc2V0Q2hpbGRGb2N1cyhmb2N1c2FibGVDaGlsZHJlblswXSk7XG4gICAgfVxuXG4gICAgaWYgKCFpc05pbCh0YWJJbmRleCkpIHNldFRhYkluZGV4KGVsLCB0YWJJbmRleCk7XG4gICAgc2V0SGFzUnVuQ29uZmlnKHRydWUpO1xuICB9O1xuXG4gIGNvbnN0IGFkZEZvY3VzQ2xhc3MgPSAoZXZ0KSA9PiB7XG4gICAgaWYgKCF1c2VGYWxzZUZvY3VzKSB7XG4gICAgICBldnQuY3VycmVudFRhcmdldC5jbGFzc0xpc3QuYWRkKGZvY3VzQ2xhc3Nlcy5mb2N1c2VkKTtcbiAgICAgIGlmIChjbGFzc2VzPy5mb2N1c2VkKSB7XG4gICAgICAgIGV2dC5jdXJyZW50VGFyZ2V0LmNsYXNzTGlzdC5hZGQoY2xhc3Nlcy5mb2N1c2VkKTtcbiAgICAgIH1cbiAgICAgIC8vIGFkZCBnbG9iYWwgY2xhc3MgSHZJc0ZvY3VzZWQgYXMgYSBtYXJrZXJcbiAgICAgIC8vIG5vdCB0byBiZSBzdHlsZWQgZGlyZWN0bHksIG9ubHkgYXMgaGVscGVyIGluIHNwZWNpZmljIGNzcyBxdWVyaWVzXG4gICAgICBldnQuY3VycmVudFRhcmdldC5jbGFzc0xpc3QuYWRkKFwiSHZJc0ZvY3VzZWRcIik7XG4gICAgICBjbGFzc2VzPy5mb2N1c1xuICAgICAgICA/LnNwbGl0KFwiIFwiKVxuICAgICAgICAuZm9yRWFjaCgoYykgPT4gZXZ0LmN1cnJlbnRUYXJnZXQuY2xhc3NMaXN0LmFkZChjKSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHJlbW92ZUZvY3VzQ2xhc3MgPSAoKSA9PiB7XG4gICAgaWYgKCF1c2VGYWxzZUZvY3VzKSB7XG4gICAgICBnZXRGb2N1c2VzKCkuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoZm9jdXNDbGFzc2VzLmZvY3VzZWQpIHtcbiAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoZm9jdXNDbGFzc2VzLmZvY3VzZWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjbGFzc2VzPy5mb2N1c2VkKSB7XG4gICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGNsYXNzZXMuZm9jdXNlZCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVtb3ZlIHRoZSBnbG9iYWwgY2xhc3MgSHZJc0ZvY3VzZWRcbiAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwiSHZJc0ZvY3VzZWRcIik7XG4gICAgICAgIGNsYXNzZXM/LmZvY3VzPy5zcGxpdChcIiBcIikuZm9yRWFjaCgoYykgPT4gZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGMpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBvbkZvY3VzID0gKGV2dCkgPT4ge1xuICAgIGFkZEZvY3VzQ2xhc3MoZXZ0KTtcbiAgICBzZXRTaG93Rm9jdXModHJ1ZSk7XG4gICAgLy8gZ2l2ZSBmb2N1cyB0byBjaGlsZCBlbGVtZW50IGlmIGFueSBmb2N1c2FibGVcblxuICAgIGlmIChjaGlsZEZvY3VzICYmIGNoaWxkRm9jdXMuZm9jdXMpIGNoaWxkRm9jdXMuZm9jdXMoKTtcbiAgICBvbkZvY3VzU3RyYXRlZ3koZXZ0KTtcbiAgfTtcblxuICBjb25zdCBvbkJsdXIgPSAoKSA9PiB7XG4gICAgc2V0U2hvd0ZvY3VzKGZhbHNlKTtcbiAgICByZW1vdmVGb2N1c0NsYXNzKCk7XG4gICAgb25CbHVyU3RyYXRlZ3koKTtcbiAgfTtcblxuICBjb25zdCBvbk1vdXNlRG93biA9IChldnQpID0+IHtcbiAgICBjb25zdCBoYXNDYXJkID0gISFldnQuY3VycmVudFRhcmdldD8ucXVlcnlTZWxlY3RvcihcIi5IdklzQ2FyZEdyaWRFbGVtZW50XCIpO1xuICAgIGlmIChzdHJhdGVneSA9PT0gXCJncmlkXCIgJiYgaGFzQ2FyZCkgcmV0dXJuO1xuXG4gICAgc2V0Rm9jdXNUbyhldnQuY3VycmVudFRhcmdldCk7XG4gICAgc2V0VGFiSW5kZXgoZXZ0LmN1cnJlbnRUYXJnZXQsIDApO1xuICAgIC8vIHJlbW92ZSBmb2N1cyBvdXRsaW5lIHVubGVzcyBleHBsaWNpdGx5IGVuYWJsZWRcbiAgICBpZiAoIWZvY3VzT25DbGljaykge1xuICAgICAgLy8gVE9ETyB0aGlzIHBpZWNlIG9mIGNvZGUgd29ya3Mgb25seSBiZWNhdXNlIG9uTW91c2VEb3duIGlzIGhhcHBlbmluZyBhZnRlciB0aGUgZm9jdXMgZXZlbnRcbiAgICAgIC8vIFRoZXJlIGlzIG5vdGhpbmcgaW4gaGVyZSB0aGF0IGd1YXJhbnRlZXMgdGhlIG9yZGVyIG9mIHRoZXNlIGV2ZW50cywgc28gaXQgbWF5IHByZXNlbnQgYSBwcm9ibGVtIGluIHRoZSBmdXR1cmVcbiAgICAgIHJlbW92ZUZvY3VzQ2xhc3MoKTtcbiAgICAgIHNldFNob3dGb2N1cyhmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGZvY3VzQW5kVXBkYXRlSW5kZXggPSAobmV4dEZvY3VzLCBwcmV2aW91c0ZvY3VzLCBmb2N1c2VzTGlzdCkgPT4ge1xuICAgIGlmIChmb2N1c2VzTGlzdD8uaW5jbHVkZXMocHJldmlvdXNGb2N1cykpIHtcbiAgICAgIHNldFRhYkluZGV4KHByZXZpb3VzRm9jdXMsIC0xKTtcbiAgICB9XG4gICAgc2V0VGFiSW5kZXgobmV4dEZvY3VzLCAwKTtcbiAgICBzZXRGb2N1c1RvKG5leHRGb2N1cyk7XG4gIH07XG5cbiAgY29uc3QgZ2V0RW5hYmxlZEtleXMgPSAoY3VycmVudEZvY3VzSW5kZXgsIGp1bXAsIGxpc3RTaXplKSA9PiAoe1xuICAgIHJpZ2h0OlxuICAgICAgKGN1cnJlbnRGb2N1c0luZGV4ICsgMSkgJSBqdW1wID09PSAwIHx8XG4gICAgICBjdXJyZW50Rm9jdXNJbmRleCArIDEgPiBsaXN0U2l6ZSAtIDEsXG4gICAgbGVmdDogY3VycmVudEZvY3VzSW5kZXggJSBqdW1wID09PSAwLFxuICAgIHVwOiBjdXJyZW50Rm9jdXNJbmRleCAtIGp1bXAgPCAwLFxuICAgIGRvd246XG4gICAgICBjdXJyZW50Rm9jdXNJbmRleCArIGp1bXAgPiBsaXN0U2l6ZSB8fFxuICAgICAgY3VycmVudEZvY3VzSW5kZXggKyBqdW1wID4gbGlzdFNpemUgLSAxLFxuICB9KTtcblxuICBjb25zdCBvbkdyaWRLZXlEb3duSGFuZGxlciA9IChcbiAgICBldnQsXG4gICAgZm9jdXNlcyxcbiAgICBmb2N1c2VzTGlzdCxcbiAgICBjdXJyZW50Rm9jdXNJbmRleCxcbiAgICBqdW1wXG4gICkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIEFycm93VXAsXG4gICAgICBBcnJvd0Rvd24sXG4gICAgICBIb21lLFxuICAgICAgRW5kLFxuICAgICAgQXJyb3dMZWZ0LFxuICAgICAgQXJyb3dSaWdodCxcbiAgICAgIEVudGVyLFxuICAgICAgU3BhY2VCYXIsXG4gICAgfSA9IGtleWJvYXJkQ29kZXM7XG5cbiAgICBjb25zdCBjaGlsZEZvY3VzSXNJbnB1dCA9IGNoaWxkRm9jdXMgJiYgY2hpbGRGb2N1cy5ub2RlTmFtZSA9PT0gXCJJTlBVVFwiO1xuXG4gICAgaWYgKFxuICAgICAgIWlzT25lT2ZLZXlzKGV2dCwgW1xuICAgICAgICBBcnJvd1VwLFxuICAgICAgICBBcnJvd0Rvd24sXG4gICAgICAgIEFycm93TGVmdCxcbiAgICAgICAgQXJyb3dSaWdodCxcbiAgICAgICAgSG9tZSxcbiAgICAgICAgRW5kLFxuICAgICAgICBTcGFjZUJhcixcbiAgICAgICAgRW50ZXIsXG4gICAgICBdKSB8fFxuICAgICAgKGNoaWxkRm9jdXNJc0lucHV0ICYmIGlzS2V5KGV2dCwgRW50ZXIpKVxuICAgICkge1xuICAgICAgLy8gbm90aGluZyB0byBkb1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHdlJ2xsIGRvIHNvbWV0aGluZyB3aXRoIHRoZSBrZXkgc28gcHJldmVudCBkZWZhdWx0IGFuZCBzdG9wIHByb3BhZ2F0aW9uXG4gICAgLy8gZXhjZXB0IGZvciBFbnRlciBhbmQgU3BhY2VCYXJcbiAgICBpZiAoIWlzT25lT2ZLZXlzKGV2dCwgW0VudGVyLCBTcGFjZUJhcl0pKSB7XG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBjb25zdCBibG9ja2VkS2V5cyA9IGdldEVuYWJsZWRLZXlzKFxuICAgICAgY3VycmVudEZvY3VzSW5kZXgsXG4gICAgICBqdW1wLFxuICAgICAgZm9jdXNlc0xpc3QubGVuZ3RoXG4gICAgKTtcblxuICAgIHN3aXRjaCAoZXZ0LmtleUNvZGUpIHtcbiAgICAgIGNhc2UgU3BhY2VCYXI6XG4gICAgICBjYXNlIEVudGVyOlxuICAgICAgICBpZiAoaXNCcm93c2VyKFwiZmlyZWZveFwiKSkge1xuICAgICAgICAgIGV2dC50YXJnZXQuY2xpY2soKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBldnQuY3VycmVudFRhcmdldC5jbGljaygpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBcnJvd1VwOlxuICAgICAgICBpZiAoIWJsb2NrZWRLZXlzLnVwKSB7XG4gICAgICAgICAgZm9jdXNBbmRVcGRhdGVJbmRleChcbiAgICAgICAgICAgIGZvY3VzZXMuanVtcCB8fCBmb2N1c2VzLmxhc3QsXG4gICAgICAgICAgICBldnQuY3VycmVudCxcbiAgICAgICAgICAgIGZvY3VzZXNMaXN0XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQXJyb3dEb3duOlxuICAgICAgICBpZiAoIWJsb2NrZWRLZXlzLmRvd24pIHtcbiAgICAgICAgICBmb2N1c0FuZFVwZGF0ZUluZGV4KFxuICAgICAgICAgICAgZm9jdXNlcy5mYWxsIHx8IGZvY3VzZXMuZmlyc3QsXG4gICAgICAgICAgICBldnQuY3VycmVudCxcbiAgICAgICAgICAgIGZvY3VzZXNMaXN0XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQXJyb3dMZWZ0OlxuICAgICAgICBpZiAoIWJsb2NrZWRLZXlzLmxlZnQpIHtcbiAgICAgICAgICBmb2N1c0FuZFVwZGF0ZUluZGV4KFxuICAgICAgICAgICAgZm9jdXNlcy5wcmV2aW91cyB8fCBmb2N1c2VzLmxhc3QsXG4gICAgICAgICAgICBldnQuY3VycmVudCxcbiAgICAgICAgICAgIGZvY3VzZXNMaXN0XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQXJyb3dSaWdodDpcbiAgICAgICAgaWYgKCFibG9ja2VkS2V5cy5yaWdodCkge1xuICAgICAgICAgIGZvY3VzQW5kVXBkYXRlSW5kZXgoXG4gICAgICAgICAgICBmb2N1c2VzLm5leHQgfHwgZm9jdXNlcy5maXJzdCxcbiAgICAgICAgICAgIGV2dC5jdXJyZW50LFxuICAgICAgICAgICAgZm9jdXNlc0xpc3RcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBIb21lOlxuICAgICAgICBmb2N1c0FuZFVwZGF0ZUluZGV4KGZvY3VzZXMuZmlyc3QsIGV2dC5jdXJyZW50LCBmb2N1c2VzTGlzdCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBFbmQ6XG4gICAgICAgIGZvY3VzQW5kVXBkYXRlSW5kZXgoZm9jdXNlcy5sYXN0LCBldnQuY3VycmVudCwgZm9jdXNlc0xpc3QpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG9uVmVydGljYWxBcnJhbmdlbWVudEhhbmRsZXIgPSAoZXZ0LCBmb2N1c2VzLCBmb2N1c2VzTGlzdCkgPT4ge1xuICAgIGNvbnN0IHsgQXJyb3dVcCwgQXJyb3dEb3duLCBIb21lLCBFbmQsIEVudGVyLCBTcGFjZUJhciB9ID0ga2V5Ym9hcmRDb2RlcztcbiAgICBjb25zdCBjaGlsZEZvY3VzSXNJbnB1dCA9IGNoaWxkRm9jdXMgJiYgY2hpbGRGb2N1cy5ub2RlTmFtZSA9PT0gXCJJTlBVVFwiO1xuXG4gICAgaWYgKFxuICAgICAgIWlzT25lT2ZLZXlzKGV2dCwgW0Fycm93VXAsIEFycm93RG93biwgSG9tZSwgRW5kLCBTcGFjZUJhciwgRW50ZXJdKSB8fFxuICAgICAgKGNoaWxkRm9jdXNJc0lucHV0ICYmIGlzS2V5KGV2dCwgRW50ZXIpKVxuICAgICkge1xuICAgICAgLy8gbm90aGluZyB0byBkb1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHdlJ2xsIGRvIHNvbWV0aGluZyB3aXRoIHRoZSBrZXkgc28gcHJldmVudCBkZWZhdWx0IGFuZCBzdG9wIHByb3BhZ2F0aW9uXG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgc3dpdGNoIChldnQua2V5Q29kZSkge1xuICAgICAgY2FzZSBTcGFjZUJhcjpcbiAgICAgIGNhc2UgRW50ZXI6XG4gICAgICAgIGV2dC50YXJnZXQuY2xpY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEFycm93VXA6XG4gICAgICAgIGZvY3VzQW5kVXBkYXRlSW5kZXgoXG4gICAgICAgICAgZm9jdXNlcy5wcmV2aW91cyB8fCBmb2N1c2VzLmxhc3QsXG4gICAgICAgICAgZXZ0LmN1cnJlbnQsXG4gICAgICAgICAgZm9jdXNlc0xpc3RcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEFycm93RG93bjpcbiAgICAgICAgZm9jdXNBbmRVcGRhdGVJbmRleChcbiAgICAgICAgICBmb2N1c2VzLm5leHQgfHwgZm9jdXNlcy5maXJzdCxcbiAgICAgICAgICBldnQuY3VycmVudCxcbiAgICAgICAgICBmb2N1c2VzTGlzdFxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgSG9tZTpcbiAgICAgICAgZm9jdXNBbmRVcGRhdGVJbmRleChmb2N1c2VzLmZpcnN0LCBldnQuY3VycmVudCwgZm9jdXNlc0xpc3QpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRW5kOlxuICAgICAgICBmb2N1c0FuZFVwZGF0ZUluZGV4KGZvY3VzZXMubGFzdCwgZXZ0LmN1cnJlbnQsIGZvY3VzZXNMaXN0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgIH1cbiAgfTtcblxuICBjb25zdCBvblNpbmdsZUhhbmRsZXIgPSAoZXZ0KSA9PiB7XG4gICAgY29uc3QgeyBFbnRlciwgU3BhY2VCYXIgfSA9IGtleWJvYXJkQ29kZXM7XG4gICAgY29uc3QgY2hpbGRGb2N1c0lzSW5wdXQgPSBjaGlsZEZvY3VzICYmIGNoaWxkRm9jdXMubm9kZU5hbWUgPT09IFwiSU5QVVRcIjtcblxuICAgIGlmIChcbiAgICAgICFpc09uZU9mS2V5cyhldnQsIFtTcGFjZUJhciwgRW50ZXJdKSB8fFxuICAgICAgKGNoaWxkRm9jdXNJc0lucHV0ICYmIGlzS2V5KGV2dCwgRW50ZXIpKVxuICAgICkge1xuICAgICAgLy8gbm90aGluZyB0byBkb1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHdlJ2xsIGRvIHNvbWV0aGluZyB3aXRoIHRoZSBrZXkgc28gcHJldmVudCBkZWZhdWx0IGFuZCBzdG9wIHByb3BhZ2F0aW9uXG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgZXZ0LmN1cnJlbnRUYXJnZXQuY2xpY2soKTtcbiAgfTtcblxuICBjb25zdCBvbktleURvd24gPSAoZXZ0KSA9PiB7XG4gICAgaWYgKHJvb3RSZWY/LmN1cnJlbnQgPT0gbnVsbCkge1xuICAgICAgLy8gb3BlcmF0aW5nIG91dHNpZGUgb2YgYSBjb21wb3NpdGUgd2lkZ2V0XG4gICAgICAvLyBub3RoaW5nIHRvIG1hbmFnZSwganVzdCBzdHlsZSBhbmQgdHJpZ2dlciBjbGlja3NcbiAgICAgIG9uU2luZ2xlSGFuZGxlcihldnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFRPRE8ga2VlcCB0aGUgc21hcnQgZGVmYXVsdCwgYnV0IGFsbG93IHRvIGV4cGxpY2l0bHkgb3ZlcnJpZGUgaWYgZGlzYWJsZWQgZWxlbWVudHMgc2hvdWxkIGJlIGZvY3VzYWJsZVxuICAgIGNvbnN0IGlzRGlzYWJsZWRGb2N1c2FibGUgPSBzdHJhdGVneSA9PT0gXCJtZW51XCI7XG4gICAgY29uc3QgZm9jdXNlc0xpc3QgPSBnZXRGb2N1c2VzKCkuZmlsdGVyKFxuICAgICAgKGVsKSA9PlxuICAgICAgICBpc0Rpc2FibGVkRm9jdXNhYmxlIHx8XG4gICAgICAgICFlbC5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3Nlcz8uZGlzYWJsZWQgYXMgc3RyaW5nKVxuICAgICk7XG5cbiAgICBjb25zdCBjdXJyZW50Rm9jdXMgPSBmb2N1c2VzTGlzdC5pbmRleE9mKGV2dC5jdXJyZW50VGFyZ2V0KTtcblxuICAgIGNvbnN0IGZvY3VzZXMgPSB7XG4gICAgICBmaXJzdDogZm9jdXNlc0xpc3RbMF0sXG4gICAgICBsYXN0OiBmb2N1c2VzTGlzdFtmb2N1c2VzTGlzdC5sZW5ndGggLSAxXSxcbiAgICAgIHByZXZpb3VzOiBmb2N1c2VzTGlzdFtjdXJyZW50Rm9jdXMgLSAxXSxcbiAgICAgIG5leHQ6IGZvY3VzZXNMaXN0W2N1cnJlbnRGb2N1cyArIDFdLFxuICAgICAgZmFsbDogZm9jdXNlc0xpc3RbY3VycmVudEZvY3VzICsgbmF2aWdhdGlvbkp1bXBdLFxuICAgICAganVtcDogZm9jdXNlc0xpc3RbY3VycmVudEZvY3VzIC0gbmF2aWdhdGlvbkp1bXBdLFxuICAgIH07XG5cbiAgICBpZiAoc3RyYXRlZ3kgPT09IFwiZ3JpZFwiKSB7XG4gICAgICBvbkdyaWRLZXlEb3duSGFuZGxlcihcbiAgICAgICAgZXZ0LFxuICAgICAgICBmb2N1c2VzLFxuICAgICAgICBmb2N1c2VzTGlzdCxcbiAgICAgICAgY3VycmVudEZvY3VzLFxuICAgICAgICBuYXZpZ2F0aW9uSnVtcFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBUT0RPIGFkZCBwcm9wZXJ0eSBmb3Igc3BlY2lmeWluZyB0aGUgY29tcG9zaXRlIHdpZGdldCBvcmllbnRhdGlvblxuICAgIC8vIFRPRE8gaW1wbGVtZW50IGhhbmRsZXIgZm9yIGhvcml6b250YWwgb3JpZW50YXRpb25cbiAgICBvblZlcnRpY2FsQXJyYW5nZW1lbnRIYW5kbGVyKGV2dCwgZm9jdXNlcywgZm9jdXNlc0xpc3QpO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5VXAgPSAoZXZ0KSA9PiB7XG4gICAgaWYgKGlzQnJvd3NlcihcImZpcmVmb3hcIikpIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9O1xuXG4gIGlmIChkaXNhYmxlZCkgcmV0dXJuIGNoaWxkcmVuO1xuXG4gIGNvbnN0IGZvY3VzV3JhcHBlciA9IChjaGlsZHJlblRvV3JhcCkgPT4gKFxuICAgIDxTdHlsZWRGb2N1c1dyYXBwZXJcbiAgICAgIGNsYXNzTmFtZT17Y2xzeChcbiAgICAgICAgY2xhc3Nlcz8uZXh0ZXJuYWxSZWZlcmVuY2UsXG4gICAgICAgIGZvY3VzQ2xhc3Nlcy5leHRlcm5hbFJlZmVyZW5jZVxuICAgICAgKX1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW5Ub1dyYXB9XG4gICAgICB7c2hvd0ZvY3VzICYmIChcbiAgICAgICAgPFN0eWxlZEZhbHNlRm9jdXNcbiAgICAgICAgICBjbGFzc05hbWU9e2Nsc3goY2xhc3Nlcz8uZmFsc2VGb2N1cywgZm9jdXNDbGFzc2VzLmZhbHNlRm9jdXMpfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L1N0eWxlZEZvY3VzV3JhcHBlcj5cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxDb25kaXRpb25hbFdyYXBwZXIgY29uZGl0aW9uPXt1c2VGYWxzZUZvY3VzfSB3cmFwcGVyPXtmb2N1c1dyYXBwZXJ9PlxuICAgICAgPEdsb2JhbCBzdHlsZXM9e2ZvY3VzU3R5bGVzfSAvPlxuICAgICAge1JlYWN0LmNsb25lRWxlbWVudChjaGlsZHJlbiwge1xuICAgICAgICBjbGFzc05hbWU6IGNsc3goXG4gICAgICAgICAgY2hpbGRyZW4ucHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICAgIGZvY3VzQ2xhc3Nlcy5yb290LFxuICAgICAgICAgIGNsYXNzZXM/LnJvb3QsXG4gICAgICAgICAgZmlsdGVyQ2xhc3MsXG4gICAgICAgICAgc2VsZWN0ZWQgJiYgY2xzeChmb2N1c0NsYXNzZXMuc2VsZWN0ZWQsIGNsYXNzZXM/LnNlbGVjdGVkKSxcbiAgICAgICAgICBkaXNhYmxlZENsYXNzICYmIGNsc3goZm9jdXNDbGFzc2VzLmRpc2FibGVkLCBjbGFzc2VzPy5kaXNhYmxlZCksXG4gICAgICAgICAgZm9jdXNEaXNhYmxlZCAmJlxuICAgICAgICAgICAgY2xzeChmb2N1c0NsYXNzZXMuZm9jdXNEaXNhYmxlZCwgY2xhc3Nlcz8uZm9jdXNEaXNhYmxlZClcbiAgICAgICAgKSxcbiAgICAgICAgcmVmOiBjb25maWcsXG4gICAgICAgIG9uRm9jdXMsXG4gICAgICAgIG9uQmx1cixcbiAgICAgICAgb25Nb3VzZURvd24sXG4gICAgICAgIG9uS2V5RG93bixcbiAgICAgICAgb25LZXlVcCxcbiAgICAgICAgc2VsZWN0ZWQsXG4gICAgICB9KX1cbiAgICA8L0NvbmRpdGlvbmFsV3JhcHBlcj5cbiAgKTtcbn07XG4iXX0= */",
22
22
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
23
23
  };
24
24
  const HvFocus = ({
@@ -1 +1 @@
1
- {"version":3,"file":"Focus.js","sources":["../../../../src/components/Focus/Focus.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { isNil } from \"lodash\";\nimport React, { RefObject, useState } from \"react\";\nimport { HvBaseProps } from \"../../types\";\nimport { keyboardCodes, isBrowser } from \"utils\";\nimport ConditionalWrapper from \"utils/ConditionalWrapper\";\nimport { StyledFocusWrapper, StyledFalseFocus } from \"./Focus.styles\";\nimport { getFocusableChildren, isKey, isOneOfKeys, setFocusTo } from \"./utils\";\nimport focusClasses, { HvFocusClasses } from \"./focusClasses\";\nimport { css, Global } from \"@emotion/react\";\n\nconst focusStyles = css`\n .HvFocus-focused {\n outline-color: #52a8ec;\n outline-style: solid;\n outline-width: 0px;\n outline-offset: -1px;\n box-shadow: 0 0 0 1px #52a8ec, 0 0 0 4px rgba(29, 155, 209, 0.3);\n\n @media (-webkit-min-device-pixel-ratio: 0) {\n outline-color: #52a8ec;\n outline-style: solid;\n outline-width: 0px;\n outline-offset: -1px;\n box-shadow: 0 0 0 1px #52a8ec, 0 0 0 4px rgba(29, 155, 209, 0.3);\n }\n }\n\n .HvFocus-focusDisabled {\n outline: none;\n box-shadow: none;\n }\n .HvFocus-focusDisabled *:focus {\n outline: none;\n box-shadow: none;\n }\n .HvFocus-focusDisabled * {\n outline: none !important;\n box-shadow: none !important;\n }\n`;\n\nexport type HvFocusProps = HvBaseProps<HTMLElement, { children }> & {\n children: React.ReactElement;\n /** Extra configuration for the child element. */\n configuration?: {\n tabIndex?: number;\n };\n /** Indicates that the disabled class should be applied. */\n disabledClass?: boolean;\n /** Whether the focus is selected. */\n selected?: boolean;\n /** Whether the focus is disabled. */\n disabled?: boolean;\n /** The reference to the root element to hold all Focus' context. */\n rootRef?: RefObject<HTMLElement>;\n /** Show focus when click element. v*/\n focusOnClick?: boolean;\n /** Show focus when click element. v*/\n focusDisabled?: boolean;\n /** Use up/ down keyboard arrows to control focus. */\n useArrows?: boolean;\n /** Focus and navigation strategy to be used. v*/\n strategy?: \"listbox\" | \"menu\" | \"card\" | \"grid\";\n /** Uses an absolute positioned div as a focus. v*/\n useFalseFocus?: boolean;\n /** Narrows the results of the focus to only theses class v*/\n filterClass?: string;\n /** How much the navigation will skip when using the arrows. v*/\n navigationJump?: number;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvFocusClasses;\n};\n\nexport const HvFocus = ({\n classes,\n children,\n configuration = {},\n disabledClass = false,\n selected = false,\n disabled = false,\n rootRef = undefined,\n focusOnClick = false,\n focusDisabled = true,\n strategy = \"listbox\",\n useFalseFocus = false,\n filterClass,\n navigationJump = 4,\n}: HvFocusProps) => {\n const [showFocus, setShowFocus] = useState<boolean>(false);\n const [childFocus, setChildFocus] = useState<any>();\n const [hasRunConfig, setHasRunConfig] = useState(false);\n\n const getFocuses = () => {\n const focuses = rootRef?.current\n ? Array.from(\n rootRef.current.getElementsByClassName(\n filterClass || focusClasses.root || classes?.root || \"root\"\n )\n )\n : [];\n return focuses;\n };\n\n const setTabIndex = (el, tabIndex = 0) => {\n const elChildFocus = getFocusableChildren(el)[0];\n if (elChildFocus) {\n el.tabIndex = -1;\n elChildFocus.tabIndex = tabIndex;\n } else {\n el.tabIndex = tabIndex;\n }\n };\n\n const setSelectedTabIndex = () => {\n const focuses = getFocuses();\n const firstSelected = focuses.find((focus) =>\n focus.classList.contains(\n focusClasses.selected || classes?.selected || \"selected\"\n )\n );\n\n if (!firstSelected) return;\n focuses.forEach((focus) => setTabIndex(focus, -1));\n setTabIndex(firstSelected, 0);\n };\n\n const clearTabSiblings = (el) => {\n getFocuses().forEach((focus) => setTabIndex(focus, -1));\n setTabIndex(el, 0);\n };\n\n const onFocusStrategy = (evt) => {\n if (strategy === \"listbox\") {\n clearTabSiblings(evt.currentTarget);\n }\n };\n\n const onBlurStrategy = () => {\n if (\n strategy === \"listbox\" &&\n rootRef &&\n rootRef.current &&\n !rootRef.current.contains(document.activeElement)\n ) {\n setTimeout(() => {\n setSelectedTabIndex();\n }, 10);\n }\n };\n\n const config = (el) => {\n const { tabIndex } = configuration;\n if (!el || hasRunConfig) return;\n if (strategy === \"card\") {\n setChildFocus(children);\n return;\n }\n\n if (strategy === \"grid\") {\n return;\n }\n\n const focusableChildren = getFocusableChildren(el);\n if (focusableChildren.length) {\n focusableChildren.forEach((child) => setTabIndex(child, -1));\n setChildFocus(focusableChildren[0]);\n }\n\n if (!isNil(tabIndex)) setTabIndex(el, tabIndex);\n setHasRunConfig(true);\n };\n\n const addFocusClass = (evt) => {\n if (!useFalseFocus) {\n evt.currentTarget.classList.add(focusClasses.focused);\n if (classes?.focused) {\n evt.currentTarget.classList.add(classes.focused);\n }\n // add global class HvIsFocused as a marker\n // not to be styled directly, only as helper in specific css queries\n evt.currentTarget.classList.add(\"HvIsFocused\");\n classes?.focus\n ?.split(\" \")\n .forEach((c) => evt.currentTarget.classList.add(c));\n }\n };\n\n const removeFocusClass = () => {\n if (!useFalseFocus) {\n getFocuses().forEach((element) => {\n if (focusClasses.focused) {\n element.classList.remove(focusClasses.focused);\n }\n if (classes?.focused) {\n element.classList.remove(classes.focused);\n }\n // remove the global class HvIsFocused\n element.classList.remove(\"HvIsFocused\");\n classes?.focus?.split(\" \").forEach((c) => element.classList.remove(c));\n });\n }\n };\n\n const onFocus = (evt) => {\n addFocusClass(evt);\n setShowFocus(true);\n // give focus to child element if any focusable\n\n if (childFocus && childFocus.focus) childFocus.focus();\n onFocusStrategy(evt);\n };\n\n const onBlur = () => {\n setShowFocus(false);\n removeFocusClass();\n onBlurStrategy();\n };\n\n const onMouseDown = (evt) => {\n const hasCard = !!evt.currentTarget?.querySelector(\".HvIsCardGridElement\");\n if (strategy === \"grid\" && hasCard) return;\n\n setFocusTo(evt.currentTarget);\n setTabIndex(evt.currentTarget, 0);\n // remove focus outline unless explicitly enabled\n if (!focusOnClick) {\n // TODO this piece of code works only because onMouseDown is happening after the focus event\n // There is nothing in here that guarantees the order of these events, so it may present a problem in the future\n removeFocusClass();\n setShowFocus(false);\n }\n };\n\n const focusAndUpdateIndex = (nextFocus, previousFocus, focusesList) => {\n if (focusesList?.includes(previousFocus)) {\n setTabIndex(previousFocus, -1);\n }\n setTabIndex(nextFocus, 0);\n setFocusTo(nextFocus);\n };\n\n const getEnabledKeys = (currentFocusIndex, jump, listSize) => ({\n right:\n (currentFocusIndex + 1) % jump === 0 ||\n currentFocusIndex + 1 > listSize - 1,\n left: currentFocusIndex % jump === 0,\n up: currentFocusIndex - jump < 0,\n down:\n currentFocusIndex + jump > listSize ||\n currentFocusIndex + jump > listSize - 1,\n });\n\n const onGridKeyDownHandler = (\n evt,\n focuses,\n focusesList,\n currentFocusIndex,\n jump\n ) => {\n const {\n ArrowUp,\n ArrowDown,\n Home,\n End,\n ArrowLeft,\n ArrowRight,\n Enter,\n SpaceBar,\n } = keyboardCodes;\n\n const childFocusIsInput = childFocus && childFocus.nodeName === \"INPUT\";\n\n if (\n !isOneOfKeys(evt, [\n ArrowUp,\n ArrowDown,\n ArrowLeft,\n ArrowRight,\n Home,\n End,\n SpaceBar,\n Enter,\n ]) ||\n (childFocusIsInput && isKey(evt, Enter))\n ) {\n // nothing to do\n return;\n }\n\n // we'll do something with the key so prevent default and stop propagation\n // except for Enter and SpaceBar\n if (!isOneOfKeys(evt, [Enter, SpaceBar])) {\n evt.preventDefault();\n evt.stopPropagation();\n }\n\n const blockedKeys = getEnabledKeys(\n currentFocusIndex,\n jump,\n focusesList.length\n );\n\n switch (evt.keyCode) {\n case SpaceBar:\n case Enter:\n if (isBrowser(\"firefox\")) {\n evt.target.click();\n } else {\n evt.currentTarget.click();\n }\n break;\n case ArrowUp:\n if (!blockedKeys.up) {\n focusAndUpdateIndex(\n focuses.jump || focuses.last,\n evt.current,\n focusesList\n );\n }\n break;\n case ArrowDown:\n if (!blockedKeys.down) {\n focusAndUpdateIndex(\n focuses.fall || focuses.first,\n evt.current,\n focusesList\n );\n }\n break;\n case ArrowLeft:\n if (!blockedKeys.left) {\n focusAndUpdateIndex(\n focuses.previous || focuses.last,\n evt.current,\n focusesList\n );\n }\n break;\n case ArrowRight:\n if (!blockedKeys.right) {\n focusAndUpdateIndex(\n focuses.next || focuses.first,\n evt.current,\n focusesList\n );\n }\n break;\n case Home:\n focusAndUpdateIndex(focuses.first, evt.current, focusesList);\n break;\n case End:\n focusAndUpdateIndex(focuses.last, evt.current, focusesList);\n break;\n default:\n }\n };\n\n const onVerticalArrangementHandler = (evt, focuses, focusesList) => {\n const { ArrowUp, ArrowDown, Home, End, Enter, SpaceBar } = keyboardCodes;\n const childFocusIsInput = childFocus && childFocus.nodeName === \"INPUT\";\n\n if (\n !isOneOfKeys(evt, [ArrowUp, ArrowDown, Home, End, SpaceBar, Enter]) ||\n (childFocusIsInput && isKey(evt, Enter))\n ) {\n // nothing to do\n return;\n }\n\n // we'll do something with the key so prevent default and stop propagation\n evt.preventDefault();\n evt.stopPropagation();\n\n switch (evt.keyCode) {\n case SpaceBar:\n case Enter:\n evt.target.click();\n break;\n case ArrowUp:\n focusAndUpdateIndex(\n focuses.previous || focuses.last,\n evt.current,\n focusesList\n );\n break;\n case ArrowDown:\n focusAndUpdateIndex(\n focuses.next || focuses.first,\n evt.current,\n focusesList\n );\n break;\n case Home:\n focusAndUpdateIndex(focuses.first, evt.current, focusesList);\n break;\n case End:\n focusAndUpdateIndex(focuses.last, evt.current, focusesList);\n break;\n default:\n }\n };\n\n const onSingleHandler = (evt) => {\n const { Enter, SpaceBar } = keyboardCodes;\n const childFocusIsInput = childFocus && childFocus.nodeName === \"INPUT\";\n\n if (\n !isOneOfKeys(evt, [SpaceBar, Enter]) ||\n (childFocusIsInput && isKey(evt, Enter))\n ) {\n // nothing to do\n return;\n }\n\n // we'll do something with the key so prevent default and stop propagation\n evt.preventDefault();\n evt.stopPropagation();\n\n evt.currentTarget.click();\n };\n\n const onKeyDown = (evt) => {\n if (rootRef?.current == null) {\n // operating outside of a composite widget\n // nothing to manage, just style and trigger clicks\n onSingleHandler(evt);\n return;\n }\n\n // TODO keep the smart default, but allow to explicitly override if disabled elements should be focusable\n const isDisabledFocusable = strategy === \"menu\";\n const focusesList = getFocuses().filter(\n (el) =>\n isDisabledFocusable ||\n !el.classList.contains(classes?.disabled as string)\n );\n\n const currentFocus = focusesList.indexOf(evt.currentTarget);\n\n const focuses = {\n first: focusesList[0],\n last: focusesList[focusesList.length - 1],\n previous: focusesList[currentFocus - 1],\n next: focusesList[currentFocus + 1],\n fall: focusesList[currentFocus + navigationJump],\n jump: focusesList[currentFocus - navigationJump],\n };\n\n if (strategy === \"grid\") {\n onGridKeyDownHandler(\n evt,\n focuses,\n focusesList,\n currentFocus,\n navigationJump\n );\n return;\n }\n\n // TODO add property for specifying the composite widget orientation\n // TODO implement handler for horizontal orientation\n onVerticalArrangementHandler(evt, focuses, focusesList);\n };\n\n const onKeyUp = (evt) => {\n if (isBrowser(\"firefox\")) evt.preventDefault();\n };\n\n if (disabled) return children;\n\n const focusWrapper = (childrenToWrap) => (\n <StyledFocusWrapper\n className={clsx(\n classes?.externalReference,\n focusClasses.externalReference\n )}\n >\n {childrenToWrap}\n {showFocus && (\n <StyledFalseFocus\n className={clsx(classes?.falseFocus, focusClasses.falseFocus)}\n />\n )}\n </StyledFocusWrapper>\n );\n\n return (\n <ConditionalWrapper condition={useFalseFocus} wrapper={focusWrapper}>\n <Global styles={focusStyles} />\n {React.cloneElement(children, {\n className: clsx(\n children.props.className,\n focusClasses.root,\n classes?.root,\n filterClass,\n selected && clsx(focusClasses.selected, classes?.selected),\n disabledClass && clsx(focusClasses.disabled, classes?.disabled),\n focusDisabled &&\n clsx(focusClasses.focusDisabled, classes?.focusDisabled)\n ),\n ref: config,\n onFocus,\n onBlur,\n onMouseDown,\n onKeyDown,\n onKeyUp,\n selected,\n })}\n </ConditionalWrapper>\n );\n};\n"],"names":["focusStyles","process","env","NODE_ENV","name","styles","map","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","HvFocus","classes","children","configuration","disabledClass","selected","disabled","rootRef","undefined","focusOnClick","focusDisabled","strategy","useFalseFocus","filterClass","navigationJump","showFocus","setShowFocus","useState","childFocus","setChildFocus","hasRunConfig","setHasRunConfig","getFocuses","focuses","current","Array","from","getElementsByClassName","focusClasses","root","setTabIndex","el","tabIndex","elChildFocus","getFocusableChildren","setSelectedTabIndex","firstSelected","find","focus","classList","contains","forEach","clearTabSiblings","onFocusStrategy","evt","currentTarget","onBlurStrategy","document","activeElement","setTimeout","config","focusableChildren","length","child","isNil","addFocusClass","add","focused","split","c","removeFocusClass","element","remove","onFocus","onBlur","onMouseDown","hasCard","querySelector","setFocusTo","focusAndUpdateIndex","nextFocus","previousFocus","focusesList","includes","getEnabledKeys","currentFocusIndex","jump","listSize","right","left","up","down","onGridKeyDownHandler","ArrowUp","ArrowDown","Home","End","ArrowLeft","ArrowRight","Enter","SpaceBar","keyboardCodes","childFocusIsInput","nodeName","isOneOfKeys","isKey","preventDefault","stopPropagation","blockedKeys","keyCode","isBrowser","target","click","last","fall","first","previous","next","onVerticalArrangementHandler","onSingleHandler","onKeyDown","isDisabledFocusable","filter","currentFocus","indexOf","onKeyUp","focusWrapper","childrenToWrap","_jsxs","StyledFocusWrapper","className","clsx","externalReference","StyledFalseFocus","falseFocus","ConditionalWrapper","condition","wrapper","_jsx","Global","React","cloneElement","props","ref"],"mappings":"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"}
1
+ {"version":3,"file":"Focus.js","sources":["../../../../src/components/Focus/Focus.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { isNil } from \"lodash\";\nimport React, { RefObject, useState } from \"react\";\nimport { HvBaseProps } from \"../../types\";\nimport { keyboardCodes, isBrowser } from \"utils\";\nimport ConditionalWrapper from \"utils/ConditionalWrapper\";\nimport { StyledFocusWrapper, StyledFalseFocus } from \"./Focus.styles\";\nimport { getFocusableChildren, isKey, isOneOfKeys, setFocusTo } from \"./utils\";\nimport focusClasses, { HvFocusClasses } from \"./focusClasses\";\nimport { css, Global } from \"@emotion/react\";\n\nconst focusStyles = css`\n .HvFocus-focused {\n outline-color: #52a8ec;\n outline-style: solid;\n outline-width: 0px;\n outline-offset: -1px;\n box-shadow: 0 0 0 1px #52a8ec, 0 0 0 4px rgba(29, 155, 209, 0.3);\n\n @media (-webkit-min-device-pixel-ratio: 0) {\n outline-color: #52a8ec;\n outline-style: solid;\n outline-width: 0px;\n outline-offset: -1px;\n box-shadow: 0 0 0 1px #52a8ec, 0 0 0 4px rgba(29, 155, 209, 0.3);\n }\n }\n\n .HvFocus-focusDisabled {\n outline: none;\n box-shadow: none;\n }\n .HvFocus-focusDisabled *:focus {\n outline: none;\n box-shadow: none;\n }\n .HvFocus-focusDisabled * {\n outline: none !important;\n box-shadow: none !important;\n }\n`;\n\nexport type HvFocusStrategies = \"listbox\" | \"menu\" | \"card\" | \"grid\";\n\nexport type HvFocusProps = HvBaseProps<HTMLElement, { children }> & {\n children: React.ReactElement;\n /** Extra configuration for the child element. */\n configuration?: {\n tabIndex?: number;\n };\n /** Indicates that the disabled class should be applied. */\n disabledClass?: boolean;\n /** Whether the focus is selected. */\n selected?: boolean;\n /** Whether the focus is disabled. */\n disabled?: boolean;\n /** The reference to the root element to hold all Focus' context. */\n rootRef?: RefObject<HTMLElement>;\n /** Show focus when click element. v*/\n focusOnClick?: boolean;\n /** Show focus when click element. v*/\n focusDisabled?: boolean;\n /** Use up/ down keyboard arrows to control focus. */\n useArrows?: boolean;\n /** Focus and navigation strategy to be used. v*/\n strategy?: HvFocusStrategies;\n /** Uses an absolute positioned div as a focus. v*/\n useFalseFocus?: boolean;\n /** Narrows the results of the focus to only theses class v*/\n filterClass?: string;\n /** How much the navigation will skip when using the arrows. v*/\n navigationJump?: number;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvFocusClasses;\n};\n\nexport const HvFocus = ({\n classes,\n children,\n configuration = {},\n disabledClass = false,\n selected = false,\n disabled = false,\n rootRef = undefined,\n focusOnClick = false,\n focusDisabled = true,\n strategy = \"listbox\",\n useFalseFocus = false,\n filterClass,\n navigationJump = 4,\n}: HvFocusProps) => {\n const [showFocus, setShowFocus] = useState<boolean>(false);\n const [childFocus, setChildFocus] = useState<any>();\n const [hasRunConfig, setHasRunConfig] = useState(false);\n\n const getFocuses = () => {\n const focuses = rootRef?.current\n ? Array.from(\n rootRef.current.getElementsByClassName(\n filterClass || focusClasses.root || classes?.root || \"root\"\n )\n )\n : [];\n return focuses;\n };\n\n const setTabIndex = (el, tabIndex = 0) => {\n const elChildFocus = getFocusableChildren(el)[0];\n if (elChildFocus) {\n el.tabIndex = -1;\n elChildFocus.tabIndex = tabIndex;\n } else {\n el.tabIndex = tabIndex;\n }\n };\n\n const setSelectedTabIndex = () => {\n const focuses = getFocuses();\n const firstSelected = focuses.find((focus) =>\n focus.classList.contains(\n focusClasses.selected || classes?.selected || \"selected\"\n )\n );\n\n if (!firstSelected) return;\n focuses.forEach((focus) => setTabIndex(focus, -1));\n setTabIndex(firstSelected, 0);\n };\n\n const clearTabSiblings = (el) => {\n getFocuses().forEach((focus) => setTabIndex(focus, -1));\n setTabIndex(el, 0);\n };\n\n const onFocusStrategy = (evt) => {\n if (strategy === \"listbox\") {\n clearTabSiblings(evt.currentTarget);\n }\n };\n\n const onBlurStrategy = () => {\n if (\n strategy === \"listbox\" &&\n rootRef &&\n rootRef.current &&\n !rootRef.current.contains(document.activeElement)\n ) {\n setTimeout(() => {\n setSelectedTabIndex();\n }, 10);\n }\n };\n\n const config = (el) => {\n const { tabIndex } = configuration;\n if (!el || hasRunConfig) return;\n if (strategy === \"card\") {\n setChildFocus(children);\n return;\n }\n\n if (strategy === \"grid\") {\n return;\n }\n\n const focusableChildren = getFocusableChildren(el);\n if (focusableChildren.length) {\n focusableChildren.forEach((child) => setTabIndex(child, -1));\n setChildFocus(focusableChildren[0]);\n }\n\n if (!isNil(tabIndex)) setTabIndex(el, tabIndex);\n setHasRunConfig(true);\n };\n\n const addFocusClass = (evt) => {\n if (!useFalseFocus) {\n evt.currentTarget.classList.add(focusClasses.focused);\n if (classes?.focused) {\n evt.currentTarget.classList.add(classes.focused);\n }\n // add global class HvIsFocused as a marker\n // not to be styled directly, only as helper in specific css queries\n evt.currentTarget.classList.add(\"HvIsFocused\");\n classes?.focus\n ?.split(\" \")\n .forEach((c) => evt.currentTarget.classList.add(c));\n }\n };\n\n const removeFocusClass = () => {\n if (!useFalseFocus) {\n getFocuses().forEach((element) => {\n if (focusClasses.focused) {\n element.classList.remove(focusClasses.focused);\n }\n if (classes?.focused) {\n element.classList.remove(classes.focused);\n }\n // remove the global class HvIsFocused\n element.classList.remove(\"HvIsFocused\");\n classes?.focus?.split(\" \").forEach((c) => element.classList.remove(c));\n });\n }\n };\n\n const onFocus = (evt) => {\n addFocusClass(evt);\n setShowFocus(true);\n // give focus to child element if any focusable\n\n if (childFocus && childFocus.focus) childFocus.focus();\n onFocusStrategy(evt);\n };\n\n const onBlur = () => {\n setShowFocus(false);\n removeFocusClass();\n onBlurStrategy();\n };\n\n const onMouseDown = (evt) => {\n const hasCard = !!evt.currentTarget?.querySelector(\".HvIsCardGridElement\");\n if (strategy === \"grid\" && hasCard) return;\n\n setFocusTo(evt.currentTarget);\n setTabIndex(evt.currentTarget, 0);\n // remove focus outline unless explicitly enabled\n if (!focusOnClick) {\n // TODO this piece of code works only because onMouseDown is happening after the focus event\n // There is nothing in here that guarantees the order of these events, so it may present a problem in the future\n removeFocusClass();\n setShowFocus(false);\n }\n };\n\n const focusAndUpdateIndex = (nextFocus, previousFocus, focusesList) => {\n if (focusesList?.includes(previousFocus)) {\n setTabIndex(previousFocus, -1);\n }\n setTabIndex(nextFocus, 0);\n setFocusTo(nextFocus);\n };\n\n const getEnabledKeys = (currentFocusIndex, jump, listSize) => ({\n right:\n (currentFocusIndex + 1) % jump === 0 ||\n currentFocusIndex + 1 > listSize - 1,\n left: currentFocusIndex % jump === 0,\n up: currentFocusIndex - jump < 0,\n down:\n currentFocusIndex + jump > listSize ||\n currentFocusIndex + jump > listSize - 1,\n });\n\n const onGridKeyDownHandler = (\n evt,\n focuses,\n focusesList,\n currentFocusIndex,\n jump\n ) => {\n const {\n ArrowUp,\n ArrowDown,\n Home,\n End,\n ArrowLeft,\n ArrowRight,\n Enter,\n SpaceBar,\n } = keyboardCodes;\n\n const childFocusIsInput = childFocus && childFocus.nodeName === \"INPUT\";\n\n if (\n !isOneOfKeys(evt, [\n ArrowUp,\n ArrowDown,\n ArrowLeft,\n ArrowRight,\n Home,\n End,\n SpaceBar,\n Enter,\n ]) ||\n (childFocusIsInput && isKey(evt, Enter))\n ) {\n // nothing to do\n return;\n }\n\n // we'll do something with the key so prevent default and stop propagation\n // except for Enter and SpaceBar\n if (!isOneOfKeys(evt, [Enter, SpaceBar])) {\n evt.preventDefault();\n evt.stopPropagation();\n }\n\n const blockedKeys = getEnabledKeys(\n currentFocusIndex,\n jump,\n focusesList.length\n );\n\n switch (evt.keyCode) {\n case SpaceBar:\n case Enter:\n if (isBrowser(\"firefox\")) {\n evt.target.click();\n } else {\n evt.currentTarget.click();\n }\n break;\n case ArrowUp:\n if (!blockedKeys.up) {\n focusAndUpdateIndex(\n focuses.jump || focuses.last,\n evt.current,\n focusesList\n );\n }\n break;\n case ArrowDown:\n if (!blockedKeys.down) {\n focusAndUpdateIndex(\n focuses.fall || focuses.first,\n evt.current,\n focusesList\n );\n }\n break;\n case ArrowLeft:\n if (!blockedKeys.left) {\n focusAndUpdateIndex(\n focuses.previous || focuses.last,\n evt.current,\n focusesList\n );\n }\n break;\n case ArrowRight:\n if (!blockedKeys.right) {\n focusAndUpdateIndex(\n focuses.next || focuses.first,\n evt.current,\n focusesList\n );\n }\n break;\n case Home:\n focusAndUpdateIndex(focuses.first, evt.current, focusesList);\n break;\n case End:\n focusAndUpdateIndex(focuses.last, evt.current, focusesList);\n break;\n default:\n }\n };\n\n const onVerticalArrangementHandler = (evt, focuses, focusesList) => {\n const { ArrowUp, ArrowDown, Home, End, Enter, SpaceBar } = keyboardCodes;\n const childFocusIsInput = childFocus && childFocus.nodeName === \"INPUT\";\n\n if (\n !isOneOfKeys(evt, [ArrowUp, ArrowDown, Home, End, SpaceBar, Enter]) ||\n (childFocusIsInput && isKey(evt, Enter))\n ) {\n // nothing to do\n return;\n }\n\n // we'll do something with the key so prevent default and stop propagation\n evt.preventDefault();\n evt.stopPropagation();\n\n switch (evt.keyCode) {\n case SpaceBar:\n case Enter:\n evt.target.click();\n break;\n case ArrowUp:\n focusAndUpdateIndex(\n focuses.previous || focuses.last,\n evt.current,\n focusesList\n );\n break;\n case ArrowDown:\n focusAndUpdateIndex(\n focuses.next || focuses.first,\n evt.current,\n focusesList\n );\n break;\n case Home:\n focusAndUpdateIndex(focuses.first, evt.current, focusesList);\n break;\n case End:\n focusAndUpdateIndex(focuses.last, evt.current, focusesList);\n break;\n default:\n }\n };\n\n const onSingleHandler = (evt) => {\n const { Enter, SpaceBar } = keyboardCodes;\n const childFocusIsInput = childFocus && childFocus.nodeName === \"INPUT\";\n\n if (\n !isOneOfKeys(evt, [SpaceBar, Enter]) ||\n (childFocusIsInput && isKey(evt, Enter))\n ) {\n // nothing to do\n return;\n }\n\n // we'll do something with the key so prevent default and stop propagation\n evt.preventDefault();\n evt.stopPropagation();\n\n evt.currentTarget.click();\n };\n\n const onKeyDown = (evt) => {\n if (rootRef?.current == null) {\n // operating outside of a composite widget\n // nothing to manage, just style and trigger clicks\n onSingleHandler(evt);\n return;\n }\n\n // TODO keep the smart default, but allow to explicitly override if disabled elements should be focusable\n const isDisabledFocusable = strategy === \"menu\";\n const focusesList = getFocuses().filter(\n (el) =>\n isDisabledFocusable ||\n !el.classList.contains(classes?.disabled as string)\n );\n\n const currentFocus = focusesList.indexOf(evt.currentTarget);\n\n const focuses = {\n first: focusesList[0],\n last: focusesList[focusesList.length - 1],\n previous: focusesList[currentFocus - 1],\n next: focusesList[currentFocus + 1],\n fall: focusesList[currentFocus + navigationJump],\n jump: focusesList[currentFocus - navigationJump],\n };\n\n if (strategy === \"grid\") {\n onGridKeyDownHandler(\n evt,\n focuses,\n focusesList,\n currentFocus,\n navigationJump\n );\n return;\n }\n\n // TODO add property for specifying the composite widget orientation\n // TODO implement handler for horizontal orientation\n onVerticalArrangementHandler(evt, focuses, focusesList);\n };\n\n const onKeyUp = (evt) => {\n if (isBrowser(\"firefox\")) evt.preventDefault();\n };\n\n if (disabled) return children;\n\n const focusWrapper = (childrenToWrap) => (\n <StyledFocusWrapper\n className={clsx(\n classes?.externalReference,\n focusClasses.externalReference\n )}\n >\n {childrenToWrap}\n {showFocus && (\n <StyledFalseFocus\n className={clsx(classes?.falseFocus, focusClasses.falseFocus)}\n />\n )}\n </StyledFocusWrapper>\n );\n\n return (\n <ConditionalWrapper condition={useFalseFocus} wrapper={focusWrapper}>\n <Global styles={focusStyles} />\n {React.cloneElement(children, {\n className: clsx(\n children.props.className,\n focusClasses.root,\n classes?.root,\n filterClass,\n selected && clsx(focusClasses.selected, classes?.selected),\n disabledClass && clsx(focusClasses.disabled, classes?.disabled),\n focusDisabled &&\n clsx(focusClasses.focusDisabled, classes?.focusDisabled)\n ),\n ref: config,\n onFocus,\n onBlur,\n onMouseDown,\n onKeyDown,\n onKeyUp,\n selected,\n })}\n </ConditionalWrapper>\n );\n};\n"],"names":["focusStyles","process","env","NODE_ENV","name","styles","map","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","HvFocus","classes","children","configuration","disabledClass","selected","disabled","rootRef","undefined","focusOnClick","focusDisabled","strategy","useFalseFocus","filterClass","navigationJump","showFocus","setShowFocus","useState","childFocus","setChildFocus","hasRunConfig","setHasRunConfig","getFocuses","focuses","current","Array","from","getElementsByClassName","focusClasses","root","setTabIndex","el","tabIndex","elChildFocus","getFocusableChildren","setSelectedTabIndex","firstSelected","find","focus","classList","contains","forEach","clearTabSiblings","onFocusStrategy","evt","currentTarget","onBlurStrategy","document","activeElement","setTimeout","config","focusableChildren","length","child","isNil","addFocusClass","add","focused","split","c","removeFocusClass","element","remove","onFocus","onBlur","onMouseDown","hasCard","querySelector","setFocusTo","focusAndUpdateIndex","nextFocus","previousFocus","focusesList","includes","getEnabledKeys","currentFocusIndex","jump","listSize","right","left","up","down","onGridKeyDownHandler","ArrowUp","ArrowDown","Home","End","ArrowLeft","ArrowRight","Enter","SpaceBar","keyboardCodes","childFocusIsInput","nodeName","isOneOfKeys","isKey","preventDefault","stopPropagation","blockedKeys","keyCode","isBrowser","target","click","last","fall","first","previous","next","onVerticalArrangementHandler","onSingleHandler","onKeyDown","isDisabledFocusable","filter","currentFocus","indexOf","onKeyUp","focusWrapper","childrenToWrap","_jsxs","StyledFocusWrapper","className","clsx","externalReference","StyledFalseFocus","falseFocus","ConditionalWrapper","condition","wrapper","_jsx","Global","React","cloneElement","props","ref"],"mappings":"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"}
@@ -2,7 +2,7 @@ import clsx from "clsx";
2
2
  import { StyledDiv } from "./Actions.styles.js";
3
3
  import headerActionsClasses from "./actionsClasses.js";
4
4
  import { jsx } from "@emotion/react/jsx-runtime";
5
- const HvActions = ({
5
+ const HvHeaderActions = ({
6
6
  classes,
7
7
  className,
8
8
  children,
@@ -15,6 +15,6 @@ const HvActions = ({
15
15
  });
16
16
  };
17
17
  export {
18
- HvActions
18
+ HvHeaderActions
19
19
  };
20
20
  //# sourceMappingURL=Actions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Actions.js","sources":["../../../../../src/components/Header/Actions/Actions.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { HvBaseProps } from \"../../../types\";\nimport { StyledDiv } from \"./Actions.styles\";\nimport headerActionsClasses, { HvHeaderActionsClasses } from \"./actionsClasses\";\n\nexport type HvActionsProps = HvBaseProps & {\n classes?: HvHeaderActionsClasses;\n};\n\nexport const HvActions = ({\n classes,\n className,\n children,\n ...others\n}: HvActionsProps) => {\n return (\n <StyledDiv\n className={clsx(className, headerActionsClasses.root, classes?.root)}\n {...others}\n >\n {children}\n </StyledDiv>\n );\n};\n"],"names":["HvActions","classes","className","children","others","StyledDiv","clsx","headerActionsClasses","root"],"mappings":";;;;AASO,MAAMA,YAAYA,CAAC;AAAA,EACxBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AACW,MAAM;AACpB,6BACGC,WAAS;AAAA,IACRH,WAAWI,KAAKJ,WAAWK,qBAAqBC,MAAMP,mCAASO,IAAI;AAAA,IAAE,GACjEJ;AAAAA,IAAMD;AAAAA,EAAAA,CAGA;AAEhB;"}
1
+ {"version":3,"file":"Actions.js","sources":["../../../../../src/components/Header/Actions/Actions.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { HvBaseProps } from \"../../../types\";\nimport { StyledDiv } from \"./Actions.styles\";\nimport headerActionsClasses, { HvHeaderActionsClasses } from \"./actionsClasses\";\n\nexport type HvHeaderActionsProps = HvBaseProps & {\n classes?: HvHeaderActionsClasses;\n};\n\nexport const HvHeaderActions = ({\n classes,\n className,\n children,\n ...others\n}: HvHeaderActionsProps) => {\n return (\n <StyledDiv\n className={clsx(className, headerActionsClasses.root, classes?.root)}\n {...others}\n >\n {children}\n </StyledDiv>\n );\n};\n"],"names":["HvHeaderActions","classes","className","children","others","StyledDiv","clsx","headerActionsClasses","root"],"mappings":";;;;AASO,MAAMA,kBAAkBA,CAAC;AAAA,EAC9BC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AACiB,MAAM;AAC1B,6BACGC,WAAS;AAAA,IACRH,WAAWI,KAAKJ,WAAWK,qBAAqBC,MAAMP,mCAASO,IAAI;AAAA,IAAE,GACjEJ;AAAAA,IAAMD;AAAAA,EAAAA,CAGA;AAEhB;"}
@@ -2,7 +2,7 @@ import { BrandRoot, BrandSeparator, BrandName } from "./Brand.styles.js";
2
2
  import headerBrandClasses from "./brandClasses.js";
3
3
  import clsx from "clsx";
4
4
  import { jsxs, jsx } from "@emotion/react/jsx-runtime";
5
- const HvBrand = ({
5
+ const HvHeaderBrand = ({
6
6
  classes,
7
7
  logo,
8
8
  name,
@@ -21,6 +21,6 @@ const HvBrand = ({
21
21
  });
22
22
  };
23
23
  export {
24
- HvBrand
24
+ HvHeaderBrand
25
25
  };
26
26
  //# sourceMappingURL=Brand.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Brand.js","sources":["../../../../../src/components/Header/Brand/Brand.tsx"],"sourcesContent":["import { HvBaseProps } from \"../../../types\";\nimport { BrandRoot, BrandSeparator, BrandName } from \"./Brand.styles\";\nimport headerBrandClasses, { HvHeaderBrandClasses } from \"./brandClasses\";\nimport clsx from \"clsx\";\n\nexport type HvBrandProps = HvBaseProps & {\n logo?: React.ReactNode;\n name?: string;\n classes?: HvHeaderBrandClasses;\n};\n\n/**\n * Header component is used to render a header bar with logo and brand name, navigation and actions.\n */\nexport const HvBrand = ({\n classes,\n logo,\n name,\n className,\n ...others\n}: HvBrandProps) => {\n return (\n <BrandRoot\n className={clsx(classes?.root, headerBrandClasses.root, className)}\n {...others}\n >\n {logo}\n {logo && name && (\n <BrandSeparator\n className={clsx(classes?.separator, headerBrandClasses.separator)}\n />\n )}\n {name && <BrandName variant=\"label\">{name}</BrandName>}\n </BrandRoot>\n );\n};\n"],"names":["HvBrand","classes","logo","name","className","others","BrandRoot","clsx","root","headerBrandClasses","children","BrandSeparator","separator","_jsx","BrandName","variant"],"mappings":";;;;AAcO,MAAMA,UAAUA,CAAC;AAAA,EACtBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AACS,MAAM;AAClB,8BACGC,WAAS;AAAA,IACRF,WAAWG,KAAKN,mCAASO,MAAMC,mBAAmBD,MAAMJ,SAAS;AAAA,IAAE,GAC/DC;AAAAA,IAAMK,UAAA,CAETR,MACAA,QAAQC,4BACNQ,gBAAc;AAAA,MACbP,WAAWG,KAAKN,mCAASW,WAAWH,mBAAmBG,SAAS;AAAA,IAAA,CAAE,GAGrET,QAAQU,oBAACC,WAAS;AAAA,MAACC,SAAQ;AAAA,MAAOL,UAAEP;AAAAA,IAAAA,CAAiB,CAAA;AAAA,EAAA,CAC5C;AAEhB;"}
1
+ {"version":3,"file":"Brand.js","sources":["../../../../../src/components/Header/Brand/Brand.tsx"],"sourcesContent":["import { HvBaseProps } from \"../../../types\";\nimport { BrandRoot, BrandSeparator, BrandName } from \"./Brand.styles\";\nimport headerBrandClasses, { HvHeaderBrandClasses } from \"./brandClasses\";\nimport clsx from \"clsx\";\n\nexport type HvHeaderBrandProps = HvBaseProps & {\n logo?: React.ReactNode;\n name?: string;\n classes?: HvHeaderBrandClasses;\n};\n\n/**\n * Header component is used to render a header bar with logo and brand name, navigation and actions.\n */\nexport const HvHeaderBrand = ({\n classes,\n logo,\n name,\n className,\n ...others\n}: HvHeaderBrandProps) => {\n return (\n <BrandRoot\n className={clsx(classes?.root, headerBrandClasses.root, className)}\n {...others}\n >\n {logo}\n {logo && name && (\n <BrandSeparator\n className={clsx(classes?.separator, headerBrandClasses.separator)}\n />\n )}\n {name && <BrandName variant=\"label\">{name}</BrandName>}\n </BrandRoot>\n );\n};\n"],"names":["HvHeaderBrand","classes","logo","name","className","others","BrandRoot","clsx","root","headerBrandClasses","children","BrandSeparator","separator","_jsx","BrandName","variant"],"mappings":";;;;AAcO,MAAMA,gBAAgBA,CAAC;AAAA,EAC5BC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AACe,MAAM;AACxB,8BACGC,WAAS;AAAA,IACRF,WAAWG,KAAKN,mCAASO,MAAMC,mBAAmBD,MAAMJ,SAAS;AAAA,IAAE,GAC/DC;AAAAA,IAAMK,UAAA,CAETR,MACAA,QAAQC,4BACNQ,gBAAc;AAAA,MACbP,WAAWG,KAAKN,mCAASW,WAAWH,mBAAmBG,SAAS;AAAA,IAAA,CAAE,GAGrET,QAAQU,oBAACC,WAAS;AAAA,MAACC,SAAQ;AAAA,MAAOL,UAAEP;AAAAA,IAAAA,CAAiB,CAAA;AAAA,EAAA,CAC5C;AAEhB;"}
@@ -6,7 +6,7 @@ import headerNavigationClasses from "./navigationClasses.js";
6
6
  import { jsx } from "@emotion/react/jsx-runtime";
7
7
  import { useSelectionPath } from "../../../hooks/useSelectionPath.js";
8
8
  import { HvMenuBar } from "./MenuBar/MenuBar.js";
9
- const HvNavigation = ({
9
+ const HvHeaderNavigation = ({
10
10
  data,
11
11
  selected,
12
12
  onClick,
@@ -35,6 +35,6 @@ const HvNavigation = ({
35
35
  });
36
36
  };
37
37
  export {
38
- HvNavigation
38
+ HvHeaderNavigation
39
39
  };
40
40
  //# sourceMappingURL=Navigation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Navigation.js","sources":["../../../../../src/components/Header/Navigation/Navigation.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { MouseEvent } from \"react\";\nimport { useSelectionPath } from \"hooks\";\nimport { HvBaseProps } from \"../../../types\";\nimport { HvMenuBar } from \"./MenuBar\";\nimport { StyledNav } from \"./Navigation.styles\";\nimport { FocusProvider } from \"./utils/FocusContext\";\nimport { SelectionContext } from \"./utils/SelectionContext\";\nimport headerNavigationClasses, {\n HvHeaderNavigationClasses,\n} from \"./navigationClasses\";\n\nexport interface HvNavigationItemProp {\n id: string;\n label: string;\n path?: string;\n href?: string;\n target?: string;\n data?: HvNavigationItemProp[];\n}\n\nexport type HvNavigationProps = HvBaseProps<HTMLDivElement, { onClick }> & {\n data: HvNavigationItemProp[];\n selected?: string;\n onClick?: (event: MouseEvent, selection: HvNavigationItemProp) => void;\n classes?: HvHeaderNavigationClasses;\n};\n\nexport const HvNavigation = ({\n data,\n selected,\n onClick,\n className,\n classes,\n ...others\n}: HvNavigationProps) => {\n const selectionPath = useSelectionPath(data, selected);\n\n const handleClick = (event, selection) => {\n event.preventDefault();\n\n onClick?.(event, selection);\n };\n\n return (\n <SelectionContext.Provider value={selectionPath}>\n <FocusProvider>\n <StyledNav\n className={clsx(\n className,\n headerNavigationClasses.root,\n classes?.root\n )}\n {...others}\n >\n <HvMenuBar data={data} type=\"menubar\" onClick={handleClick} />\n </StyledNav>\n </FocusProvider>\n </SelectionContext.Provider>\n );\n};\n"],"names":["HvNavigation","data","selected","onClick","className","classes","others","selectionPath","useSelectionPath","handleClick","event","selection","preventDefault","_jsx","SelectionContext","Provider","value","children","FocusProvider","StyledNav","clsx","headerNavigationClasses","root","HvMenuBar","type"],"mappings":";;;;;;;;AA4BO,MAAMA,eAAeA,CAAC;AAAA,EAC3BC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AACc,MAAM;AACjBC,QAAAA,gBAAgBC,iBAAiBP,MAAMC,QAAQ;AAE/CO,QAAAA,cAAcA,CAACC,OAAOC,cAAc;AACxCD,UAAME,eAAgB;AAEtBT,uCAAUO,OAAOC;AAAAA,EAAS;AAI1BE,SAAAA,oBAACC,iBAAiBC,UAAQ;AAAA,IAACC,OAAOT;AAAAA,IAAcU,8BAC7CC,eAAa;AAAA,MAAAD,8BACXE,WAAS;AAAA,QACRf,WAAWgB,KACThB,WACAiB,wBAAwBC,MACxBjB,mCAASiB,IAAI;AAAA,QACb,GACEhB;AAAAA,QAAMW,8BAETM,WAAS;AAAA,UAACtB;AAAAA,UAAYuB,MAAK;AAAA,UAAUrB,SAASM;AAAAA,QAAAA,CAAY;AAAA,MAAA,CAAG;AAAA,IAAA,CACpD;AAAA,EAAA,CAEY;AAEhC;"}
1
+ {"version":3,"file":"Navigation.js","sources":["../../../../../src/components/Header/Navigation/Navigation.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { MouseEvent } from \"react\";\nimport { useSelectionPath } from \"hooks\";\nimport { HvBaseProps } from \"../../../types\";\nimport { HvMenuBar } from \"./MenuBar\";\nimport { StyledNav } from \"./Navigation.styles\";\nimport { FocusProvider } from \"./utils/FocusContext\";\nimport { SelectionContext } from \"./utils/SelectionContext\";\nimport headerNavigationClasses, {\n HvHeaderNavigationClasses,\n} from \"./navigationClasses\";\n\nexport interface HvHeaderNavigationItemProp {\n id: string;\n label: string;\n path?: string;\n href?: string;\n target?: string;\n data?: HvHeaderNavigationItemProp[];\n}\n\nexport type HvHeaderNavigationProps = HvBaseProps<\n HTMLDivElement,\n { onClick }\n> & {\n data: HvHeaderNavigationItemProp[];\n selected?: string;\n onClick?: (event: MouseEvent, selection: HvHeaderNavigationItemProp) => void;\n classes?: HvHeaderNavigationClasses;\n};\n\nexport const HvHeaderNavigation = ({\n data,\n selected,\n onClick,\n className,\n classes,\n ...others\n}: HvHeaderNavigationProps) => {\n const selectionPath = useSelectionPath(data, selected);\n\n const handleClick = (event, selection) => {\n event.preventDefault();\n\n onClick?.(event, selection);\n };\n\n return (\n <SelectionContext.Provider value={selectionPath}>\n <FocusProvider>\n <StyledNav\n className={clsx(\n className,\n headerNavigationClasses.root,\n classes?.root\n )}\n {...others}\n >\n <HvMenuBar data={data} type=\"menubar\" onClick={handleClick} />\n </StyledNav>\n </FocusProvider>\n </SelectionContext.Provider>\n );\n};\n"],"names":["HvHeaderNavigation","data","selected","onClick","className","classes","others","selectionPath","useSelectionPath","handleClick","event","selection","preventDefault","_jsx","SelectionContext","Provider","value","children","FocusProvider","StyledNav","clsx","headerNavigationClasses","root","HvMenuBar","type"],"mappings":";;;;;;;;AA+BO,MAAMA,qBAAqBA,CAAC;AAAA,EACjCC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AACoB,MAAM;AACvBC,QAAAA,gBAAgBC,iBAAiBP,MAAMC,QAAQ;AAE/CO,QAAAA,cAAcA,CAACC,OAAOC,cAAc;AACxCD,UAAME,eAAgB;AAEtBT,uCAAUO,OAAOC;AAAAA,EAAS;AAI1BE,SAAAA,oBAACC,iBAAiBC,UAAQ;AAAA,IAACC,OAAOT;AAAAA,IAAcU,8BAC7CC,eAAa;AAAA,MAAAD,8BACXE,WAAS;AAAA,QACRf,WAAWgB,KACThB,WACAiB,wBAAwBC,MACxBjB,mCAASiB,IAAI;AAAA,QACb,GACEhB;AAAAA,QAAMW,8BAETM,WAAS;AAAA,UAACtB;AAAAA,UAAYuB,MAAK;AAAA,UAAUrB,SAASM;AAAAA,QAAAA,CAAY;AAAA,MAAA,CAAG;AAAA,IAAA,CACpD;AAAA,EAAA,CAEY;AAEhC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Kpi.js","sources":["../../../../src/components/Kpi/Kpi.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { useLabels } from \"hooks\";\nimport { HvTypography } from \"../../components\";\nimport { HvBaseProps } from \"../../types\";\nimport {\n StyledComparisonComposition,\n StyledComparisonContainer,\n StyledIndicatorsContainer,\n StyledIndicatorText,\n StyledIndicatorUnit,\n StyledInternalVisualComparisonDiv,\n StyledInternalVisualComparisonTypography,\n StyledRoot,\n StyledTrendIndicator,\n StyledVisualIndicator,\n} from \"./Kpi.styles\";\nimport kpiClasses, { HvKpiClasses } from \"./kpiClasses\";\n\nexport type HvKpiProps = HvBaseProps<HTMLDivElement, { children }> & {\n /**\n * An Element that will be rendered to the left of the kpi indicator text.\n */\n trendIndicator?: React.ReactNode;\n /**\n * An Element that will be rendered to the left of the kpi indicator text.\n */\n visualIndicator?: React.ReactNode;\n /**\n * An Element that will be rendered below the kpi indicator text.\n */\n visualComparison?: React.ReactNode;\n /**\n * The object that contains the different labels inside the kpi.\n */\n labels?: {\n title?: string;\n indicator?: string;\n unit?: string;\n comparisonIndicatorInfo?: string;\n };\n /**\n * The typography variant used in the main text indicator of the KPI\n */\n indicatorTextVariant?: \"display\" | \"title1\" | \"title2\";\n /**\n * The typography variant used in the main text indicator of the KPI\n */\n indicatorUnitTextVariant?: \"title2\" | \"body\";\n /**\n * A Jss Object used to override or extend the component styles applied.\n */\n classes?: HvKpiClasses;\n};\n\nconst DEFAULT_LABELS = {\n title: \"\",\n indicator: undefined,\n unit: undefined,\n comparisonIndicatorInfo: undefined,\n};\n\n/**\n * Key Performance Indicator is a type of performance measurement. It monitors a business indicator\n * and its success/failure against a given target. KPIs are the first item read on a dashboard.\n * Communicates simple, immediate and vital information for operational decision making.\n */\nexport const HvKpi = ({\n trendIndicator = null,\n visualIndicator = null,\n visualComparison = null,\n indicatorUnitTextVariant = \"title2\",\n indicatorTextVariant = \"title1\",\n labels,\n classes,\n className,\n ...others\n}: HvKpiProps) => {\n const mergedLabels = useLabels(DEFAULT_LABELS, labels);\n\n const InternalVisualComparison =\n typeof visualComparison === \"string\"\n ? StyledInternalVisualComparisonTypography\n : StyledInternalVisualComparisonDiv;\n\n return (\n <StyledRoot\n className={clsx(classes?.root, className, kpiClasses.root)}\n {...others}\n >\n <div>\n <HvTypography variant=\"label\">{mergedLabels?.title}</HvTypography>\n </div>\n <StyledIndicatorsContainer\n className={clsx(\n kpiClasses.indicatorsContainer,\n classes?.indicatorsContainer\n )}\n >\n {visualIndicator && (\n <StyledVisualIndicator\n className={clsx(\n kpiClasses.visualIndicatorContainer,\n kpiClasses.spacingToTheRight,\n classes?.visualIndicatorContainer,\n classes?.spacingToTheRight\n )}\n >\n {visualIndicator}\n </StyledVisualIndicator>\n )}\n {mergedLabels?.indicator && (\n <StyledIndicatorText\n className={clsx(\n kpiClasses.spacingToTheRight,\n kpiClasses.indicatorText,\n classes?.spacingToTheRight,\n classes?.indicatorText\n )}\n variant={indicatorTextVariant}\n >\n {mergedLabels.indicator}\n </StyledIndicatorText>\n )}\n {mergedLabels?.unit && (\n <StyledIndicatorUnit\n className={clsx(kpiClasses.indicatorUnit, classes?.indicatorUnit)}\n variant={indicatorUnitTextVariant}\n >\n {mergedLabels.unit}\n </StyledIndicatorUnit>\n )}\n </StyledIndicatorsContainer>\n {visualComparison && (\n <StyledComparisonComposition\n className={clsx(\n kpiClasses.comparisonComposition,\n classes?.comparisonComposition\n )}\n >\n {trendIndicator && (\n <StyledTrendIndicator\n className={clsx(\n kpiClasses.trendLine,\n kpiClasses.spacingToTheRight,\n classes?.trendLine,\n classes?.spacingToTheRight\n )}\n >\n {trendIndicator}\n </StyledTrendIndicator>\n )}\n <div>\n <StyledComparisonContainer\n className={clsx(\n kpiClasses.comparisonContainer,\n classes?.comparisonContainer\n )}\n >\n <InternalVisualComparison\n className={clsx(\n kpiClasses.comparisons,\n kpiClasses.spacingToTheRight,\n classes?.comparisons,\n classes?.spacingToTheRight\n )}\n variant=\"label\"\n >\n {visualComparison}\n </InternalVisualComparison>\n </StyledComparisonContainer>\n <StyledComparisonContainer\n className={clsx(\n kpiClasses.comparisonContainer,\n classes?.comparisonContainer\n )}\n >\n <HvTypography\n className={clsx(kpiClasses.comparisons, classes?.comparisons)}\n variant=\"caption2\"\n >\n {mergedLabels?.comparisonIndicatorInfo}\n </HvTypography>\n </StyledComparisonContainer>\n </div>\n </StyledComparisonComposition>\n )}\n </StyledRoot>\n );\n};\n"],"names":["DEFAULT_LABELS","title","indicator","undefined","unit","comparisonIndicatorInfo","HvKpi","trendIndicator","visualIndicator","visualComparison","indicatorUnitTextVariant","indicatorTextVariant","labels","classes","className","others","mergedLabels","useLabels","InternalVisualComparison","StyledInternalVisualComparisonTypography","StyledInternalVisualComparisonDiv","StyledRoot","clsx","root","kpiClasses","children","_jsx","HvTypography","variant","_jsxs","StyledIndicatorsContainer","indicatorsContainer","StyledVisualIndicator","visualIndicatorContainer","spacingToTheRight","StyledIndicatorText","indicatorText","StyledIndicatorUnit","indicatorUnit","StyledComparisonComposition","comparisonComposition","StyledTrendIndicator","trendLine","StyledComparisonContainer","comparisonContainer","comparisons"],"mappings":";;;;;;AAsDA,MAAMA,iBAAiB;AAAA,EACrBC,OAAO;AAAA,EACPC,WAAWC;AAAAA,EACXC,MAAMD;AAAAA,EACNE,yBAAyBF;AAC3B;AAOO,MAAMG,QAAQA,CAAC;AAAA,EACpBC,iBAAiB;AAAA,EACjBC,kBAAkB;AAAA,EAClBC,mBAAmB;AAAA,EACnBC,2BAA2B;AAAA,EAC3BC,uBAAuB;AAAA,EACvBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AACO,MAAM;AACVC,QAAAA,eAAeC,UAAUjB,gBAAgBY,MAAM;AAErD,QAAMM,2BACJ,OAAOT,qBAAqB,WACxBU,2CACAC;AAEN,8BACGC,YAAU;AAAA,IACTP,WAAWQ,KAAKT,mCAASU,MAAMT,WAAWU,WAAWD,IAAI;AAAA,IAAE,GACvDR;AAAAA,IAAMU,WAEVC,oBAAA,OAAA;AAAA,MAAAD,8BACGE,cAAY;AAAA,QAACC,SAAQ;AAAA,QAAOH,UAAET,6CAAcf;AAAAA,MAAAA,CAAK;AAAA,IAAA,CAC9C,GACN4B,qBAACC,2BAAyB;AAAA,MACxBhB,WAAWQ,KACTE,WAAWO,qBACXlB,mCAASkB,mBAAmB;AAAA,MAC5BN,UAEDjB,CAAAA,mBACCkB,oBAACM,uBAAqB;AAAA,QACpBlB,WAAWQ,KACTE,WAAWS,0BACXT,WAAWU,mBACXrB,mCAASoB,0BACTpB,mCAASqB,iBAAiB;AAAA,QAC1BT,UAEDjB;AAAAA,MAAe,CAAA,IAGnBQ,6CAAcd,kCACZiC,qBAAmB;AAAA,QAClBrB,WAAWQ,KACTE,WAAWU,mBACXV,WAAWY,eACXvB,mCAASqB,mBACTrB,mCAASuB,aAAa;AAAA,QAExBR,SAASjB;AAAAA,QAAqBc,UAE7BT,aAAad;AAAAA,MAAS,CAAA,IAG1Bc,6CAAcZ,6BACZiC,qBAAmB;AAAA,QAClBvB,WAAWQ,KAAKE,WAAWc,eAAezB,mCAASyB,aAAa;AAAA,QAChEV,SAASlB;AAAAA,QAAyBe,UAEjCT,aAAaZ;AAAAA,MAAAA,CAEjB,CAAA;AAAA,IAAA,CAAA,GAEFK,oBACCoB,qBAACU,6BAA2B;AAAA,MAC1BzB,WAAWQ,KACTE,WAAWgB,uBACX3B,mCAAS2B,qBAAqB;AAAA,MAC9Bf,UAEDlB,CAAAA,kBACCmB,oBAACe,sBAAoB;AAAA,QACnB3B,WAAWQ,KACTE,WAAWkB,WACXlB,WAAWU,mBACXrB,mCAAS6B,WACT7B,mCAASqB,iBAAiB;AAAA,QAC1BT,UAEDlB;AAAAA,MAAAA,CAAc,GAGnBsB,qBAAA,OAAA;AAAA,QAAAJ,UAAA,CACEC,oBAACiB,2BAAyB;AAAA,UACxB7B,WAAWQ,KACTE,WAAWoB,qBACX/B,mCAAS+B,mBAAmB;AAAA,UAC5BnB,8BAEDP,0BAAwB;AAAA,YACvBJ,WAAWQ,KACTE,WAAWqB,aACXrB,WAAWU,mBACXrB,mCAASgC,aACThC,mCAASqB,iBAAiB;AAAA,YAE5BN,SAAQ;AAAA,YAAOH,UAEdhB;AAAAA,UAAAA,CAAgB;AAAA,QAAA,CAEO,GAC5BiB,oBAACiB,2BAAyB;AAAA,UACxB7B,WAAWQ,KACTE,WAAWoB,qBACX/B,mCAAS+B,mBAAmB;AAAA,UAC5BnB,8BAEDE,cAAY;AAAA,YACXb,WAAWQ,KAAKE,WAAWqB,aAAahC,mCAASgC,WAAW;AAAA,YAC5DjB,SAAQ;AAAA,YAAUH,UAEjBT,6CAAcX;AAAAA,UAAAA,CAAuB;AAAA,QAAA,CAEd,CAAA;AAAA,MAAA,CACxB,CAAA;AAAA,IAAA,CAET,CAAA;AAAA,EAAA,CACU;AAEjB;"}
1
+ {"version":3,"file":"Kpi.js","sources":["../../../../src/components/Kpi/Kpi.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { useLabels } from \"hooks\";\nimport { HvTypography } from \"../../components\";\nimport { HvBaseProps } from \"../../types\";\nimport {\n StyledComparisonComposition,\n StyledComparisonContainer,\n StyledIndicatorsContainer,\n StyledIndicatorText,\n StyledIndicatorUnit,\n StyledInternalVisualComparisonDiv,\n StyledInternalVisualComparisonTypography,\n StyledRoot,\n StyledTrendIndicator,\n StyledVisualIndicator,\n} from \"./Kpi.styles\";\nimport kpiClasses, { HvKpiClasses } from \"./kpiClasses\";\n\nexport type HvKpiLabelProps = {\n /**\n * The text at the top of the kpi.\n */\n title?: string;\n /**\n * The text in the middle of the kpi.\n */\n indicator?: string;\n /**\n * The text to the right of the indicator.\n */\n unit?: string;\n /**\n * The text to the right of the visual comparison.\n */\n comparisonIndicatorInfo?: string;\n};\n\nexport type HvKpiProps = HvBaseProps<HTMLDivElement, { children }> & {\n /**\n * An Element that will be rendered to the left of the kpi indicator text.\n */\n trendIndicator?: React.ReactNode;\n /**\n * An Element that will be rendered to the left of the kpi indicator text.\n */\n visualIndicator?: React.ReactNode;\n /**\n * An Element that will be rendered below the kpi indicator text.\n */\n visualComparison?: React.ReactNode;\n /**\n * The object that contains the different labels inside the kpi.\n */\n labels?: HvKpiLabelProps;\n /**\n * The typography variant used in the main text indicator of the KPI\n */\n indicatorTextVariant?: \"display\" | \"title1\" | \"title2\";\n /**\n * The typography variant used in the main text indicator of the KPI\n */\n indicatorUnitTextVariant?: \"title2\" | \"body\";\n /**\n * A Jss Object used to override or extend the component styles applied.\n */\n classes?: HvKpiClasses;\n};\n\nconst DEFAULT_LABELS = {\n title: \"\",\n indicator: undefined,\n unit: undefined,\n comparisonIndicatorInfo: undefined,\n};\n\n/**\n * Key Performance Indicator is a type of performance measurement. It monitors a business indicator\n * and its success/failure against a given target. KPIs are the first item read on a dashboard.\n * Communicates simple, immediate and vital information for operational decision making.\n */\nexport const HvKpi = ({\n trendIndicator = null,\n visualIndicator = null,\n visualComparison = null,\n indicatorUnitTextVariant = \"title2\",\n indicatorTextVariant = \"title1\",\n labels,\n classes,\n className,\n ...others\n}: HvKpiProps) => {\n const mergedLabels = useLabels(DEFAULT_LABELS, labels);\n\n const InternalVisualComparison =\n typeof visualComparison === \"string\"\n ? StyledInternalVisualComparisonTypography\n : StyledInternalVisualComparisonDiv;\n\n return (\n <StyledRoot\n className={clsx(classes?.root, className, kpiClasses.root)}\n {...others}\n >\n <div>\n <HvTypography variant=\"label\">{mergedLabels?.title}</HvTypography>\n </div>\n <StyledIndicatorsContainer\n className={clsx(\n kpiClasses.indicatorsContainer,\n classes?.indicatorsContainer\n )}\n >\n {visualIndicator && (\n <StyledVisualIndicator\n className={clsx(\n kpiClasses.visualIndicatorContainer,\n kpiClasses.spacingToTheRight,\n classes?.visualIndicatorContainer,\n classes?.spacingToTheRight\n )}\n >\n {visualIndicator}\n </StyledVisualIndicator>\n )}\n {mergedLabels?.indicator && (\n <StyledIndicatorText\n className={clsx(\n kpiClasses.spacingToTheRight,\n kpiClasses.indicatorText,\n classes?.spacingToTheRight,\n classes?.indicatorText\n )}\n variant={indicatorTextVariant}\n >\n {mergedLabels.indicator}\n </StyledIndicatorText>\n )}\n {mergedLabels?.unit && (\n <StyledIndicatorUnit\n className={clsx(kpiClasses.indicatorUnit, classes?.indicatorUnit)}\n variant={indicatorUnitTextVariant}\n >\n {mergedLabels.unit}\n </StyledIndicatorUnit>\n )}\n </StyledIndicatorsContainer>\n {visualComparison && (\n <StyledComparisonComposition\n className={clsx(\n kpiClasses.comparisonComposition,\n classes?.comparisonComposition\n )}\n >\n {trendIndicator && (\n <StyledTrendIndicator\n className={clsx(\n kpiClasses.trendLine,\n kpiClasses.spacingToTheRight,\n classes?.trendLine,\n classes?.spacingToTheRight\n )}\n >\n {trendIndicator}\n </StyledTrendIndicator>\n )}\n <div>\n <StyledComparisonContainer\n className={clsx(\n kpiClasses.comparisonContainer,\n classes?.comparisonContainer\n )}\n >\n <InternalVisualComparison\n className={clsx(\n kpiClasses.comparisons,\n kpiClasses.spacingToTheRight,\n classes?.comparisons,\n classes?.spacingToTheRight\n )}\n variant=\"label\"\n >\n {visualComparison}\n </InternalVisualComparison>\n </StyledComparisonContainer>\n <StyledComparisonContainer\n className={clsx(\n kpiClasses.comparisonContainer,\n classes?.comparisonContainer\n )}\n >\n <HvTypography\n className={clsx(kpiClasses.comparisons, classes?.comparisons)}\n variant=\"caption2\"\n >\n {mergedLabels?.comparisonIndicatorInfo}\n </HvTypography>\n </StyledComparisonContainer>\n </div>\n </StyledComparisonComposition>\n )}\n </StyledRoot>\n );\n};\n"],"names":["DEFAULT_LABELS","title","indicator","undefined","unit","comparisonIndicatorInfo","HvKpi","trendIndicator","visualIndicator","visualComparison","indicatorUnitTextVariant","indicatorTextVariant","labels","classes","className","others","mergedLabels","useLabels","InternalVisualComparison","StyledInternalVisualComparisonTypography","StyledInternalVisualComparisonDiv","StyledRoot","clsx","root","kpiClasses","children","_jsx","HvTypography","variant","_jsxs","StyledIndicatorsContainer","indicatorsContainer","StyledVisualIndicator","visualIndicatorContainer","spacingToTheRight","StyledIndicatorText","indicatorText","StyledIndicatorUnit","indicatorUnit","StyledComparisonComposition","comparisonComposition","StyledTrendIndicator","trendLine","StyledComparisonContainer","comparisonContainer","comparisons"],"mappings":";;;;;;AAoEA,MAAMA,iBAAiB;AAAA,EACrBC,OAAO;AAAA,EACPC,WAAWC;AAAAA,EACXC,MAAMD;AAAAA,EACNE,yBAAyBF;AAC3B;AAOO,MAAMG,QAAQA,CAAC;AAAA,EACpBC,iBAAiB;AAAA,EACjBC,kBAAkB;AAAA,EAClBC,mBAAmB;AAAA,EACnBC,2BAA2B;AAAA,EAC3BC,uBAAuB;AAAA,EACvBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AACO,MAAM;AACVC,QAAAA,eAAeC,UAAUjB,gBAAgBY,MAAM;AAErD,QAAMM,2BACJ,OAAOT,qBAAqB,WACxBU,2CACAC;AAEN,8BACGC,YAAU;AAAA,IACTP,WAAWQ,KAAKT,mCAASU,MAAMT,WAAWU,WAAWD,IAAI;AAAA,IAAE,GACvDR;AAAAA,IAAMU,WAEVC,oBAAA,OAAA;AAAA,MAAAD,8BACGE,cAAY;AAAA,QAACC,SAAQ;AAAA,QAAOH,UAAET,6CAAcf;AAAAA,MAAAA,CAAK;AAAA,IAAA,CAC9C,GACN4B,qBAACC,2BAAyB;AAAA,MACxBhB,WAAWQ,KACTE,WAAWO,qBACXlB,mCAASkB,mBAAmB;AAAA,MAC5BN,UAEDjB,CAAAA,mBACCkB,oBAACM,uBAAqB;AAAA,QACpBlB,WAAWQ,KACTE,WAAWS,0BACXT,WAAWU,mBACXrB,mCAASoB,0BACTpB,mCAASqB,iBAAiB;AAAA,QAC1BT,UAEDjB;AAAAA,MAAe,CAAA,IAGnBQ,6CAAcd,kCACZiC,qBAAmB;AAAA,QAClBrB,WAAWQ,KACTE,WAAWU,mBACXV,WAAWY,eACXvB,mCAASqB,mBACTrB,mCAASuB,aAAa;AAAA,QAExBR,SAASjB;AAAAA,QAAqBc,UAE7BT,aAAad;AAAAA,MAAS,CAAA,IAG1Bc,6CAAcZ,6BACZiC,qBAAmB;AAAA,QAClBvB,WAAWQ,KAAKE,WAAWc,eAAezB,mCAASyB,aAAa;AAAA,QAChEV,SAASlB;AAAAA,QAAyBe,UAEjCT,aAAaZ;AAAAA,MAAAA,CAEjB,CAAA;AAAA,IAAA,CAAA,GAEFK,oBACCoB,qBAACU,6BAA2B;AAAA,MAC1BzB,WAAWQ,KACTE,WAAWgB,uBACX3B,mCAAS2B,qBAAqB;AAAA,MAC9Bf,UAEDlB,CAAAA,kBACCmB,oBAACe,sBAAoB;AAAA,QACnB3B,WAAWQ,KACTE,WAAWkB,WACXlB,WAAWU,mBACXrB,mCAAS6B,WACT7B,mCAASqB,iBAAiB;AAAA,QAC1BT,UAEDlB;AAAAA,MAAAA,CAAc,GAGnBsB,qBAAA,OAAA;AAAA,QAAAJ,UAAA,CACEC,oBAACiB,2BAAyB;AAAA,UACxB7B,WAAWQ,KACTE,WAAWoB,qBACX/B,mCAAS+B,mBAAmB;AAAA,UAC5BnB,8BAEDP,0BAAwB;AAAA,YACvBJ,WAAWQ,KACTE,WAAWqB,aACXrB,WAAWU,mBACXrB,mCAASgC,aACThC,mCAASqB,iBAAiB;AAAA,YAE5BN,SAAQ;AAAA,YAAOH,UAEdhB;AAAAA,UAAAA,CAAgB;AAAA,QAAA,CAEO,GAC5BiB,oBAACiB,2BAAyB;AAAA,UACxB7B,WAAWQ,KACTE,WAAWoB,qBACX/B,mCAAS+B,mBAAmB;AAAA,UAC5BnB,8BAEDE,cAAY;AAAA,YACXb,WAAWQ,KAAKE,WAAWqB,aAAahC,mCAASgC,WAAW;AAAA,YAC5DjB,SAAQ;AAAA,YAAUH,UAEjBT,6CAAcX;AAAAA,UAAAA,CAAuB;AAAA,QAAA,CAEd,CAAA;AAAA,MAAA,CACxB,CAAA;AAAA,IAAA,CAET,CAAA;AAAA,EAAA,CACU;AAEjB;"}
@@ -1,10 +1,10 @@
1
1
  import Slide from "@mui/material/Slide";
2
2
  import { StyledSnackbar } from "./Snackbar.styles.js";
3
- import { snackbarClasses } from "./snackbarClasses.js";
3
+ import snackbarClasses from "./snackbarClasses.js";
4
4
  import { capitalize } from "lodash";
5
5
  import clsx from "clsx";
6
6
  import { jsx } from "@emotion/react/jsx-runtime";
7
- import HvSnackBarContentWrapper from "./SnackbarContentWrapper/SnackbarContentWrapper.js";
7
+ import HvSnackbarContent from "./SnackbarContentWrapper/SnackbarContentWrapper.js";
8
8
  import { setId } from "../../utils/setId.js";
9
9
  const transLeft = (props) => /* @__PURE__ */ jsx(Slide, {
10
10
  ...props,
@@ -86,7 +86,7 @@ const HvSnackbar = ({
86
86
  transitionDuration,
87
87
  TransitionComponent: snackBarDirComponent(transitionDirection),
88
88
  ...others,
89
- children: /* @__PURE__ */ jsx(HvSnackBarContentWrapper, {
89
+ children: /* @__PURE__ */ jsx(HvSnackbarContent, {
90
90
  id: setId(id, "content"),
91
91
  label,
92
92
  variant,
@@ -1 +1 @@
1
- {"version":3,"file":"Snackbar.js","sources":["../../../../src/components/Snackbar/Snackbar.tsx"],"sourcesContent":["import Slide from \"@mui/material/Slide\";\nimport {\n SnackbarCloseReason,\n SnackbarOrigin,\n SnackbarProps as MuiSnackbarProps,\n} from \"@mui/material/Snackbar\";\nimport { HvBaseProps } from \"../../types\";\nimport { StyledSnackbar } from \"./Snackbar.styles\";\nimport { HvSnackbarClasses, snackbarClasses } from \"./snackbarClasses\";\nimport { capitalize } from \"lodash\";\nimport { SyntheticEvent } from \"react\";\nimport HvSnackBarContentWrapper from \"./SnackbarContentWrapper\";\nimport { setId } from \"utils\";\nimport { HvActionGeneric } from \"components\";\nimport { HvSnackbarContentWrapperProps } from \"./SnackbarContentWrapper/SnackbarContentWrapper\";\nimport clsx from \"clsx\";\n\nexport type HvSnackbarVariant = \"default\" | \"success\" | \"warning\" | \"error\";\n\nexport type HvSnackbarProps = Omit<MuiSnackbarProps, \"action\" | \"classes\"> &\n HvBaseProps & {\n /** If true, Snackbar is open. */\n open?: boolean;\n /** Callback fired when the component requests to be closed. Typically onClose is used to set state in the parent component, which is used to control the Snackbar open prop. The reason parameter can optionally be used to control the response to onClose, for example ignoring clickaway. */\n onClose?:\n | ((\n event: Event | SyntheticEvent<any, Event>,\n reason: SnackbarCloseReason\n ) => void)\n | undefined;\n /** The message to display. */\n label?: React.ReactNode;\n /** The anchor of the Snackbar. vertical: \"top\", \"bottom\" | horizontal: \"left\",\"center\",\"right. It defines where the snackbar will end his animation */\n anchorOrigin?: SnackbarOrigin;\n /** The number of milliseconds to wait before automatically calling the onClose function. onClose should then set the state of the open prop to hide the Snackbar */\n autoHideDuration?: number;\n /** Variant of the snackbar. */\n variant?: HvSnackbarVariant;\n /** Custom icon to replace the variant default. */\n customIcon?: React.ReactNode;\n /** Controls if the associated icon to the variant should be shown. */\n showIcon?: boolean;\n /** Action to display. */\n action?: React.ReactNode | HvActionGeneric;\n /** The callback function ran when an action is triggered, receiving `action` as param */\n actionCallback?: (\n event: React.SyntheticEvent,\n id: string,\n action: HvActionGeneric\n ) => void;\n /** Duration of transition in milliseconds. */\n transitionDuration?: number;\n /** Direction of slide transition. */\n transitionDirection?: \"up\" | \"down\" | \"left\" | \"right\";\n /** Custom offset from top/bottom of the page, in px. */\n offset?: number;\n /** Others applied to the content of the snackbar. */\n snackbarContentProps?: HvSnackbarContentWrapperProps;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvSnackbarClasses;\n };\n\nconst transLeft = (props) => <Slide {...props} direction=\"left\" />;\nconst transRight = (props) => <Slide {...props} direction=\"right\" />;\nconst transUp = (props) => <Slide {...props} direction=\"up\" />;\nconst transDown = (props) => <Slide {...props} direction=\"down\" />;\n\nconst snackBarDirComponent = (direction) => {\n switch (direction) {\n default:\n case \"left\":\n return transLeft;\n case \"right\":\n return transRight;\n case \"up\":\n return transUp;\n case \"down\":\n return transDown;\n }\n};\n\n/**\n * A Snackbar provides brief messages about app processes.\n * It is dismissed automatically after a given interval.\n *\n * Snackbar can be built with two different components.\n * One is the HvSnackbar, which wraps all the positioning, transition, auto hide, etc.\n * The other is the HvSnackbarContent, which allows a finer control and customization of the content of the Snackbar.\n */\nexport const HvSnackbar = ({\n classes,\n className,\n id,\n open = false,\n onClose,\n label = \"\",\n anchorOrigin = { vertical: \"top\", horizontal: \"right\" },\n autoHideDuration = 5000,\n variant = \"default\",\n showIcon = false,\n customIcon = null,\n action = null,\n actionCallback,\n transitionDuration = 300,\n transitionDirection = \"left\",\n offset = 60,\n snackbarContentProps,\n ...others\n}: HvSnackbarProps) => {\n const anchorOriginOffset = {\n anchorOriginTop: {\n top: `${offset}px`,\n },\n anchorOriginBottom: {\n bottom: `${offset}px`,\n },\n };\n\n return (\n <StyledSnackbar\n style={\n anchorOriginOffset[`anchorOrigin${capitalize(anchorOrigin.vertical)}`]\n }\n classes={{\n root: clsx(classes?.root, snackbarClasses.root),\n anchorOriginBottomCenter: clsx(\n classes?.anchorOriginBottomCenter,\n snackbarClasses.anchorOriginBottomCenter\n ),\n anchorOriginBottomLeft: clsx(\n classes?.anchorOriginBottomLeft,\n snackbarClasses.anchorOriginBottomLeft\n ),\n anchorOriginBottomRight: clsx(\n classes?.anchorOriginBottomRight,\n snackbarClasses.anchorOriginBottomRight\n ),\n anchorOriginTopCenter: clsx(\n classes?.anchorOriginTopCenter,\n snackbarClasses.anchorOriginTopCenter\n ),\n anchorOriginTopLeft: clsx(\n classes?.anchorOriginTopLeft,\n snackbarClasses.anchorOriginTopLeft\n ),\n anchorOriginTopRight: clsx(\n classes?.anchorOriginTopRight,\n snackbarClasses.anchorOriginTopRight\n ),\n }}\n className={className}\n id={id}\n anchorOrigin={anchorOrigin}\n open={open}\n onClose={onClose}\n autoHideDuration={autoHideDuration}\n transitionDuration={transitionDuration}\n TransitionComponent={snackBarDirComponent(transitionDirection)}\n {...others}\n >\n <HvSnackBarContentWrapper\n id={setId(id, \"content\")}\n label={label}\n variant={variant}\n customIcon={customIcon}\n showIcon={showIcon}\n action={action}\n actionCallback={actionCallback}\n {...snackbarContentProps}\n />\n </StyledSnackbar>\n );\n};\n"],"names":["transLeft","props","_jsx","Slide","direction","transRight","transUp","transDown","snackBarDirComponent","HvSnackbar","classes","className","id","open","onClose","label","anchorOrigin","vertical","horizontal","autoHideDuration","variant","showIcon","customIcon","action","actionCallback","transitionDuration","transitionDirection","offset","snackbarContentProps","others","anchorOriginOffset","anchorOriginTop","top","anchorOriginBottom","bottom","StyledSnackbar","style","capitalize","root","clsx","snackbarClasses","anchorOriginBottomCenter","anchorOriginBottomLeft","anchorOriginBottomRight","anchorOriginTopCenter","anchorOriginTopLeft","anchorOriginTopRight","TransitionComponent","children","HvSnackBarContentWrapper","setId"],"mappings":";;;;;;;;AA8DA,MAAMA,YAAaC,CAAUC,UAAAA,oBAACC,OAAK;AAAA,EAAA,GAAKF;AAAAA,EAAOG,WAAU;AAAM,CAAG;AAClE,MAAMC,aAAcJ,CAAUC,UAAAA,oBAACC,OAAK;AAAA,EAAA,GAAKF;AAAAA,EAAOG,WAAU;AAAO,CAAG;AACpE,MAAME,UAAWL,CAAUC,UAAAA,oBAACC,OAAK;AAAA,EAAA,GAAKF;AAAAA,EAAOG,WAAU;AAAI,CAAG;AAC9D,MAAMG,YAAaN,CAAUC,UAAAA,oBAACC,OAAK;AAAA,EAAA,GAAKF;AAAAA,EAAOG,WAAU;AAAM,CAAG;AAElE,MAAMI,uBAAwBJ,CAAc,cAAA;AAC1C,UAAQA,WAAS;AAAA,IACf;AAAA,IACA,KAAK;AACIJ,aAAAA;AAAAA,IACT,KAAK;AACIK,aAAAA;AAAAA,IACT,KAAK;AACIC,aAAAA;AAAAA,IACT,KAAK;AACIC,aAAAA;AAAAA,EAAU;AAEvB;AAUO,MAAME,aAAaA,CAAC;AAAA,EACzBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,OAAO;AAAA,EACPC;AAAAA,EACAC,QAAQ;AAAA,EACRC,eAAe;AAAA,IAAEC,UAAU;AAAA,IAAOC,YAAY;AAAA,EAAQ;AAAA,EACtDC,mBAAmB;AAAA,EACnBC,UAAU;AAAA,EACVC,WAAW;AAAA,EACXC,aAAa;AAAA,EACbC,SAAS;AAAA,EACTC;AAAAA,EACAC,qBAAqB;AAAA,EACrBC,sBAAsB;AAAA,EACtBC,SAAS;AAAA,EACTC;AAAAA,EACA,GAAGC;AACY,MAAM;AACrB,QAAMC,qBAAqB;AAAA,IACzBC,iBAAiB;AAAA,MACfC,KAAM,GAAEL;AAAAA,IACV;AAAA,IACAM,oBAAoB;AAAA,MAClBC,QAAS,GAAEP;AAAAA,IACb;AAAA,EAAA;AAGF,6BACGQ,gBAAc;AAAA,IACbC,OACEN,mBAAoB,eAAcO,WAAWrB,aAAaC,QAAQ,GAAG;AAAA,IAEvEP,SAAS;AAAA,MACP4B,MAAMC,KAAK7B,mCAAS4B,MAAME,gBAAgBF,IAAI;AAAA,MAC9CG,0BAA0BF,KACxB7B,mCAAS+B,0BACTD,gBAAgBC,wBAAwB;AAAA,MAE1CC,wBAAwBH,KACtB7B,mCAASgC,wBACTF,gBAAgBE,sBAAsB;AAAA,MAExCC,yBAAyBJ,KACvB7B,mCAASiC,yBACTH,gBAAgBG,uBAAuB;AAAA,MAEzCC,uBAAuBL,KACrB7B,mCAASkC,uBACTJ,gBAAgBI,qBAAqB;AAAA,MAEvCC,qBAAqBN,KACnB7B,mCAASmC,qBACTL,gBAAgBK,mBAAmB;AAAA,MAErCC,sBAAsBP,KACpB7B,mCAASoC,sBACTN,gBAAgBM,oBAAoB;AAAA,IAExC;AAAA,IACAnC;AAAAA,IACAC;AAAAA,IACAI;AAAAA,IACAH;AAAAA,IACAC;AAAAA,IACAK;AAAAA,IACAM;AAAAA,IACAsB,qBAAqBvC,qBAAqBkB,mBAAmB;AAAA,IAAE,GAC3DG;AAAAA,IAAMmB,8BAETC,0BAAwB;AAAA,MACvBrC,IAAIsC,MAAMtC,IAAI,SAAS;AAAA,MACvBG;AAAAA,MACAK;AAAAA,MACAE;AAAAA,MACAD;AAAAA,MACAE;AAAAA,MACAC;AAAAA,MAA+B,GAC3BI;AAAAA,IAAAA,CAAoB;AAAA,EAAA,CAEX;AAErB;"}
1
+ {"version":3,"file":"Snackbar.js","sources":["../../../../src/components/Snackbar/Snackbar.tsx"],"sourcesContent":["import Slide from \"@mui/material/Slide\";\nimport {\n SnackbarCloseReason,\n SnackbarOrigin,\n SnackbarProps as MuiSnackbarProps,\n} from \"@mui/material/Snackbar\";\nimport { HvBaseProps } from \"../../types\";\nimport { StyledSnackbar } from \"./Snackbar.styles\";\nimport snackbarClasses, { HvSnackbarClasses } from \"./snackbarClasses\";\nimport { capitalize } from \"lodash\";\nimport { SyntheticEvent } from \"react\";\nimport { setId } from \"utils\";\nimport { HvActionGeneric } from \"components\";\nimport {\n HvSnackbarContentProps,\n HvSnackbarContent,\n} from \"./SnackbarContentWrapper\";\nimport clsx from \"clsx\";\n\nexport type HvSnackbarVariant = \"default\" | \"success\" | \"warning\" | \"error\";\n\nexport type HvSnackbarProps = Omit<MuiSnackbarProps, \"action\" | \"classes\"> &\n HvBaseProps & {\n /** If true, Snackbar is open. */\n open?: boolean;\n /** Callback fired when the component requests to be closed. Typically onClose is used to set state in the parent component, which is used to control the Snackbar open prop. The reason parameter can optionally be used to control the response to onClose, for example ignoring clickaway. */\n onClose?:\n | ((\n event: Event | SyntheticEvent<any, Event>,\n reason: SnackbarCloseReason\n ) => void)\n | undefined;\n /** The message to display. */\n label?: React.ReactNode;\n /** The anchor of the Snackbar. vertical: \"top\", \"bottom\" | horizontal: \"left\",\"center\",\"right. It defines where the snackbar will end his animation */\n anchorOrigin?: SnackbarOrigin;\n /** The number of milliseconds to wait before automatically calling the onClose function. onClose should then set the state of the open prop to hide the Snackbar */\n autoHideDuration?: number;\n /** Variant of the snackbar. */\n variant?: HvSnackbarVariant;\n /** Custom icon to replace the variant default. */\n customIcon?: React.ReactNode;\n /** Controls if the associated icon to the variant should be shown. */\n showIcon?: boolean;\n /** Action to display. */\n action?: React.ReactNode | HvActionGeneric;\n /** The callback function ran when an action is triggered, receiving `action` as param */\n actionCallback?: (\n event: React.SyntheticEvent,\n id: string,\n action: HvActionGeneric\n ) => void;\n /** Duration of transition in milliseconds. */\n transitionDuration?: number;\n /** Direction of slide transition. */\n transitionDirection?: \"up\" | \"down\" | \"left\" | \"right\";\n /** Custom offset from top/bottom of the page, in px. */\n offset?: number;\n /** Others applied to the content of the snackbar. */\n snackbarContentProps?: HvSnackbarContentProps;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvSnackbarClasses;\n };\n\nconst transLeft = (props) => <Slide {...props} direction=\"left\" />;\nconst transRight = (props) => <Slide {...props} direction=\"right\" />;\nconst transUp = (props) => <Slide {...props} direction=\"up\" />;\nconst transDown = (props) => <Slide {...props} direction=\"down\" />;\n\nconst snackBarDirComponent = (direction) => {\n switch (direction) {\n default:\n case \"left\":\n return transLeft;\n case \"right\":\n return transRight;\n case \"up\":\n return transUp;\n case \"down\":\n return transDown;\n }\n};\n\n/**\n * A Snackbar provides brief messages about app processes.\n * It is dismissed automatically after a given interval.\n *\n * Snackbar can be built with two different components.\n * One is the HvSnackbar, which wraps all the positioning, transition, auto hide, etc.\n * The other is the HvSnackbarContent, which allows a finer control and customization of the content of the Snackbar.\n */\nexport const HvSnackbar = ({\n classes,\n className,\n id,\n open = false,\n onClose,\n label = \"\",\n anchorOrigin = { vertical: \"top\", horizontal: \"right\" },\n autoHideDuration = 5000,\n variant = \"default\",\n showIcon = false,\n customIcon = null,\n action = null,\n actionCallback,\n transitionDuration = 300,\n transitionDirection = \"left\",\n offset = 60,\n snackbarContentProps,\n ...others\n}: HvSnackbarProps) => {\n const anchorOriginOffset = {\n anchorOriginTop: {\n top: `${offset}px`,\n },\n anchorOriginBottom: {\n bottom: `${offset}px`,\n },\n };\n\n return (\n <StyledSnackbar\n style={\n anchorOriginOffset[`anchorOrigin${capitalize(anchorOrigin.vertical)}`]\n }\n classes={{\n root: clsx(classes?.root, snackbarClasses.root),\n anchorOriginBottomCenter: clsx(\n classes?.anchorOriginBottomCenter,\n snackbarClasses.anchorOriginBottomCenter\n ),\n anchorOriginBottomLeft: clsx(\n classes?.anchorOriginBottomLeft,\n snackbarClasses.anchorOriginBottomLeft\n ),\n anchorOriginBottomRight: clsx(\n classes?.anchorOriginBottomRight,\n snackbarClasses.anchorOriginBottomRight\n ),\n anchorOriginTopCenter: clsx(\n classes?.anchorOriginTopCenter,\n snackbarClasses.anchorOriginTopCenter\n ),\n anchorOriginTopLeft: clsx(\n classes?.anchorOriginTopLeft,\n snackbarClasses.anchorOriginTopLeft\n ),\n anchorOriginTopRight: clsx(\n classes?.anchorOriginTopRight,\n snackbarClasses.anchorOriginTopRight\n ),\n }}\n className={className}\n id={id}\n anchorOrigin={anchorOrigin}\n open={open}\n onClose={onClose}\n autoHideDuration={autoHideDuration}\n transitionDuration={transitionDuration}\n TransitionComponent={snackBarDirComponent(transitionDirection)}\n {...others}\n >\n <HvSnackbarContent\n id={setId(id, \"content\")}\n label={label}\n variant={variant}\n customIcon={customIcon}\n showIcon={showIcon}\n action={action}\n actionCallback={actionCallback}\n {...snackbarContentProps}\n />\n </StyledSnackbar>\n );\n};\n"],"names":["transLeft","props","_jsx","Slide","direction","transRight","transUp","transDown","snackBarDirComponent","HvSnackbar","classes","className","id","open","onClose","label","anchorOrigin","vertical","horizontal","autoHideDuration","variant","showIcon","customIcon","action","actionCallback","transitionDuration","transitionDirection","offset","snackbarContentProps","others","anchorOriginOffset","anchorOriginTop","top","anchorOriginBottom","bottom","StyledSnackbar","style","capitalize","root","clsx","snackbarClasses","anchorOriginBottomCenter","anchorOriginBottomLeft","anchorOriginBottomRight","anchorOriginTopCenter","anchorOriginTopLeft","anchorOriginTopRight","TransitionComponent","children","HvSnackbarContent","setId"],"mappings":";;;;;;;;AAgEA,MAAMA,YAAaC,CAAUC,UAAAA,oBAACC,OAAK;AAAA,EAAA,GAAKF;AAAAA,EAAOG,WAAU;AAAM,CAAG;AAClE,MAAMC,aAAcJ,CAAUC,UAAAA,oBAACC,OAAK;AAAA,EAAA,GAAKF;AAAAA,EAAOG,WAAU;AAAO,CAAG;AACpE,MAAME,UAAWL,CAAUC,UAAAA,oBAACC,OAAK;AAAA,EAAA,GAAKF;AAAAA,EAAOG,WAAU;AAAI,CAAG;AAC9D,MAAMG,YAAaN,CAAUC,UAAAA,oBAACC,OAAK;AAAA,EAAA,GAAKF;AAAAA,EAAOG,WAAU;AAAM,CAAG;AAElE,MAAMI,uBAAwBJ,CAAc,cAAA;AAC1C,UAAQA,WAAS;AAAA,IACf;AAAA,IACA,KAAK;AACIJ,aAAAA;AAAAA,IACT,KAAK;AACIK,aAAAA;AAAAA,IACT,KAAK;AACIC,aAAAA;AAAAA,IACT,KAAK;AACIC,aAAAA;AAAAA,EAAU;AAEvB;AAUO,MAAME,aAAaA,CAAC;AAAA,EACzBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,OAAO;AAAA,EACPC;AAAAA,EACAC,QAAQ;AAAA,EACRC,eAAe;AAAA,IAAEC,UAAU;AAAA,IAAOC,YAAY;AAAA,EAAQ;AAAA,EACtDC,mBAAmB;AAAA,EACnBC,UAAU;AAAA,EACVC,WAAW;AAAA,EACXC,aAAa;AAAA,EACbC,SAAS;AAAA,EACTC;AAAAA,EACAC,qBAAqB;AAAA,EACrBC,sBAAsB;AAAA,EACtBC,SAAS;AAAA,EACTC;AAAAA,EACA,GAAGC;AACY,MAAM;AACrB,QAAMC,qBAAqB;AAAA,IACzBC,iBAAiB;AAAA,MACfC,KAAM,GAAEL;AAAAA,IACV;AAAA,IACAM,oBAAoB;AAAA,MAClBC,QAAS,GAAEP;AAAAA,IACb;AAAA,EAAA;AAGF,6BACGQ,gBAAc;AAAA,IACbC,OACEN,mBAAoB,eAAcO,WAAWrB,aAAaC,QAAQ,GAAG;AAAA,IAEvEP,SAAS;AAAA,MACP4B,MAAMC,KAAK7B,mCAAS4B,MAAME,gBAAgBF,IAAI;AAAA,MAC9CG,0BAA0BF,KACxB7B,mCAAS+B,0BACTD,gBAAgBC,wBAAwB;AAAA,MAE1CC,wBAAwBH,KACtB7B,mCAASgC,wBACTF,gBAAgBE,sBAAsB;AAAA,MAExCC,yBAAyBJ,KACvB7B,mCAASiC,yBACTH,gBAAgBG,uBAAuB;AAAA,MAEzCC,uBAAuBL,KACrB7B,mCAASkC,uBACTJ,gBAAgBI,qBAAqB;AAAA,MAEvCC,qBAAqBN,KACnB7B,mCAASmC,qBACTL,gBAAgBK,mBAAmB;AAAA,MAErCC,sBAAsBP,KACpB7B,mCAASoC,sBACTN,gBAAgBM,oBAAoB;AAAA,IAExC;AAAA,IACAnC;AAAAA,IACAC;AAAAA,IACAI;AAAAA,IACAH;AAAAA,IACAC;AAAAA,IACAK;AAAAA,IACAM;AAAAA,IACAsB,qBAAqBvC,qBAAqBkB,mBAAmB;AAAA,IAAE,GAC3DG;AAAAA,IAAMmB,8BAETC,mBAAiB;AAAA,MAChBrC,IAAIsC,MAAMtC,IAAI,SAAS;AAAA,MACvBG;AAAAA,MACAK;AAAAA,MACAE;AAAAA,MACAD;AAAAA,MACAE;AAAAA,MACAC;AAAAA,MAA+B,GAC3BI;AAAAA,IAAAA,CAAoB;AAAA,EAAA,CAEX;AAErB;"}