@zydon/common 2.8.64 → 2.8.65

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 (143) hide show
  1. package/dist/{chunk-3XECTDUZ.js → chunk-2MCLMTFV.js} +2 -2
  2. package/dist/chunk-2MCLMTFV.js.map +1 -0
  3. package/dist/{chunk-KYN54T4U.js → chunk-3ELMAXMX.js} +2 -2
  4. package/dist/{chunk-JT4DYZAT.js → chunk-5PUQMKA5.js} +4 -4
  5. package/dist/{chunk-WZFHXFZZ.js → chunk-7JCGMZ6E.js} +2 -2
  6. package/dist/{chunk-AVPFUSEB.js → chunk-7LBBLVDC.js} +1 -1
  7. package/dist/{chunk-AVPFUSEB.js.map → chunk-7LBBLVDC.js.map} +1 -1
  8. package/dist/{chunk-TJAQH6MS.js → chunk-DGCPCUVB.js} +2 -2
  9. package/dist/chunk-DGCPCUVB.js.map +1 -0
  10. package/dist/{chunk-XCCDYZLG.js → chunk-EPMAHRQO.js} +2 -2
  11. package/dist/chunk-FBVAHVU3.js +11 -0
  12. package/dist/chunk-FBVAHVU3.js.map +1 -0
  13. package/dist/{chunk-JRDGTK34.js → chunk-FQOV5EGQ.js} +2 -2
  14. package/dist/{chunk-A2GUNNNS.js → chunk-GODJQLB7.js} +3 -3
  15. package/dist/chunk-JSL5OEWZ.js +7 -0
  16. package/dist/chunk-JSL5OEWZ.js.map +1 -0
  17. package/dist/{chunk-O7B4K34H.js → chunk-KZFKHQ5P.js} +2 -2
  18. package/dist/{chunk-KYV74QIT.js → chunk-LNESYSHP.js} +1 -1
  19. package/dist/chunk-LNESYSHP.js.map +1 -0
  20. package/dist/{chunk-BNBE2OMA.js → chunk-LZQ7OFKO.js} +1 -1
  21. package/dist/{chunk-BNBE2OMA.js.map → chunk-LZQ7OFKO.js.map} +1 -1
  22. package/dist/{chunk-2LLPCOAG.js → chunk-N2UR3W55.js} +2 -2
  23. package/dist/{chunk-IDFJFFIV.js → chunk-NMGWHSNZ.js} +2 -2
  24. package/dist/{chunk-LJ5JKDMG.js → chunk-NWT5TUJO.js} +2 -2
  25. package/dist/chunk-NWT5TUJO.js.map +1 -0
  26. package/dist/{chunk-3XLPNBQU.js → chunk-PODYWSY7.js} +2 -2
  27. package/dist/{chunk-PKEBJI2J.js → chunk-PWR4GBUH.js} +2 -2
  28. package/dist/{chunk-3WFLKIPF.js → chunk-Q2AVS24Z.js} +2 -2
  29. package/dist/{chunk-YZIBDCPM.js → chunk-QMFFV7WM.js} +3 -3
  30. package/dist/{chunk-ITMUJKVT.js → chunk-SDS77DQQ.js} +3 -3
  31. package/dist/{chunk-F64NQ3BY.js → chunk-T53CFFZY.js} +2 -2
  32. package/dist/{chunk-DAFN2ILN.js → chunk-TBFQ5PEL.js} +6 -6
  33. package/dist/{chunk-7OV7UPWM.js → chunk-U4I7JPER.js} +1 -1
  34. package/dist/{chunk-7OV7UPWM.js.map → chunk-U4I7JPER.js.map} +1 -1
  35. package/dist/{chunk-T6UNWMMX.js → chunk-UJMWTYPH.js} +2 -2
  36. package/dist/{chunk-FZBK5B3G.js → chunk-Y3TJIK6E.js} +2 -2
  37. package/dist/chunk-YJQVENY7.js +18 -0
  38. package/dist/chunk-YJQVENY7.js.map +1 -0
  39. package/dist/{chunk-3JZOHMCP.js → chunk-YKLRB3EJ.js} +2 -2
  40. package/dist/components/ActionButton/index.js +3 -3
  41. package/dist/components/Autocomplete/index.js +3 -3
  42. package/dist/components/AutocompleteDetailed/index.js +1 -1
  43. package/dist/components/AvatarButton/index.js +7 -7
  44. package/dist/components/BuilderLayout/index.js +3 -3
  45. package/dist/components/BuilderSidebar/index.js +2 -2
  46. package/dist/components/BulkEditModal/index.js +4 -4
  47. package/dist/components/CardBrand/index.js +2 -2
  48. package/dist/components/Common/index.js +5 -5
  49. package/dist/components/Common/index.js.map +1 -1
  50. package/dist/components/CopyButton/index.js +4 -4
  51. package/dist/components/DataCards/index.js +1 -1
  52. package/dist/components/DataGrid/index.js +2 -2
  53. package/dist/components/DataView/index.js +6 -6
  54. package/dist/components/DragButton/index.js +3 -3
  55. package/dist/components/Drawer/index.js +2 -2
  56. package/dist/components/DynamicDataView/index.js +8 -8
  57. package/dist/components/DynamicDataView/index.js.map +1 -1
  58. package/dist/components/EasyCropModal/index.js +4 -4
  59. package/dist/components/EmptyContent/index.js +1 -1
  60. package/dist/components/Error/index.js +2 -2
  61. package/dist/components/ExpandableGroup/index.js +2 -2
  62. package/dist/components/FileUpload/index.js +8 -8
  63. package/dist/components/FrameSkeleton/index.js +2 -2
  64. package/dist/components/HelpButton/index.js +3 -3
  65. package/dist/components/Icon/index.js +2 -2
  66. package/dist/components/IconButton/index.js +3 -3
  67. package/dist/components/ImageCropModal/index.js +3 -3
  68. package/dist/components/Incrementer/index.js +3 -3
  69. package/dist/components/InfoCircle/index.js +3 -3
  70. package/dist/components/Label/index.js +1 -1
  71. package/dist/components/ListBundles/index.js +3 -3
  72. package/dist/components/MenuItem/index.js +2 -2
  73. package/dist/components/Modal/index.js +3 -3
  74. package/dist/components/MoreMenu/index.js +2 -2
  75. package/dist/components/NotFound/index.js +2 -2
  76. package/dist/components/PasswordRules/index.js +2 -2
  77. package/dist/components/PopoverSelect/index.js +2 -2
  78. package/dist/components/SearchInput/index.js +3 -3
  79. package/dist/components/SelectList/index.js +5 -5
  80. package/dist/components/SelectableCards/index.js +4 -4
  81. package/dist/components/SeoPreview/index.js +2 -2
  82. package/dist/components/SplashScreen/index.js.map +1 -1
  83. package/dist/components/StateDisplay/index.js +3 -3
  84. package/dist/components/Steps/index.js +2 -2
  85. package/dist/components/StyledTab/index.js +2 -2
  86. package/dist/components/SwapList/index.js +3 -3
  87. package/dist/components/ToggleTheme/index.js +5 -5
  88. package/dist/components/Tooltip/index.js +1 -1
  89. package/dist/components/WebhookCard/index.js +3 -3
  90. package/dist/components/carousel/index.js +3 -3
  91. package/dist/components/form/Address/index.js +4 -4
  92. package/dist/components/form/Autocomplete/index.js +4 -4
  93. package/dist/components/form/AutocompleteDetailed/index.js +1 -1
  94. package/dist/components/form/Codes/index.js +2 -2
  95. package/dist/components/form/Codes/index.js.map +1 -1
  96. package/dist/components/form/FileUpload/index.js +8 -8
  97. package/dist/components/form/Incrementer/index.js +3 -3
  98. package/dist/components/form/Password/index.js +2 -2
  99. package/dist/components/form/SelectList/index.js +5 -5
  100. package/dist/components/form/SelectableCards/index.js +4 -4
  101. package/dist/components/form/Webhook/index.js +5 -5
  102. package/dist/components/lightbox/index.js +2 -2
  103. package/dist/components/table/index.js +3 -3
  104. package/dist/hooks/useThemeToggle.js +4 -4
  105. package/dist/index.js +4 -4
  106. package/dist/theme/theme-provider.js +3 -3
  107. package/dist/theme/with-settings/index.js +2 -2
  108. package/dist/types/icon.d.ts +1 -0
  109. package/dist/types/icon.js +1 -1
  110. package/dist/utils/color.js +1 -1
  111. package/eslint-shared-rules.cjs +25 -0
  112. package/package.json +11 -5
  113. package/scripts/eslint-rules/mui-icon-button-has-label.cjs +71 -0
  114. package/scripts/eslint-rules/tooltip-child-has-wrapper.cjs +101 -0
  115. package/dist/chunk-3C7RDPW6.js +0 -18
  116. package/dist/chunk-3C7RDPW6.js.map +0 -1
  117. package/dist/chunk-3XECTDUZ.js.map +0 -1
  118. package/dist/chunk-7QKCCB23.js +0 -7
  119. package/dist/chunk-7QKCCB23.js.map +0 -1
  120. package/dist/chunk-KYV74QIT.js.map +0 -1
  121. package/dist/chunk-LJ5JKDMG.js.map +0 -1
  122. package/dist/chunk-TJAQH6MS.js.map +0 -1
  123. package/dist/chunk-YAAMDKRR.js +0 -11
  124. package/dist/chunk-YAAMDKRR.js.map +0 -1
  125. /package/dist/{chunk-KYN54T4U.js.map → chunk-3ELMAXMX.js.map} +0 -0
  126. /package/dist/{chunk-JT4DYZAT.js.map → chunk-5PUQMKA5.js.map} +0 -0
  127. /package/dist/{chunk-WZFHXFZZ.js.map → chunk-7JCGMZ6E.js.map} +0 -0
  128. /package/dist/{chunk-XCCDYZLG.js.map → chunk-EPMAHRQO.js.map} +0 -0
  129. /package/dist/{chunk-JRDGTK34.js.map → chunk-FQOV5EGQ.js.map} +0 -0
  130. /package/dist/{chunk-A2GUNNNS.js.map → chunk-GODJQLB7.js.map} +0 -0
  131. /package/dist/{chunk-O7B4K34H.js.map → chunk-KZFKHQ5P.js.map} +0 -0
  132. /package/dist/{chunk-2LLPCOAG.js.map → chunk-N2UR3W55.js.map} +0 -0
  133. /package/dist/{chunk-IDFJFFIV.js.map → chunk-NMGWHSNZ.js.map} +0 -0
  134. /package/dist/{chunk-3XLPNBQU.js.map → chunk-PODYWSY7.js.map} +0 -0
  135. /package/dist/{chunk-PKEBJI2J.js.map → chunk-PWR4GBUH.js.map} +0 -0
  136. /package/dist/{chunk-3WFLKIPF.js.map → chunk-Q2AVS24Z.js.map} +0 -0
  137. /package/dist/{chunk-YZIBDCPM.js.map → chunk-QMFFV7WM.js.map} +0 -0
  138. /package/dist/{chunk-ITMUJKVT.js.map → chunk-SDS77DQQ.js.map} +0 -0
  139. /package/dist/{chunk-F64NQ3BY.js.map → chunk-T53CFFZY.js.map} +0 -0
  140. /package/dist/{chunk-DAFN2ILN.js.map → chunk-TBFQ5PEL.js.map} +0 -0
  141. /package/dist/{chunk-T6UNWMMX.js.map → chunk-UJMWTYPH.js.map} +0 -0
  142. /package/dist/{chunk-FZBK5B3G.js.map → chunk-Y3TJIK6E.js.map} +0 -0
  143. /package/dist/{chunk-3JZOHMCP.js.map → chunk-YKLRB3EJ.js.map} +0 -0
@@ -1,5 +1,5 @@
1
- export { c as buildPrimaryColors, b as updateComponentsWithSettings, a as updateCoreWithSettings } from '../../chunk-3WFLKIPF.js';
2
- import '../../chunk-KYV74QIT.js';
1
+ export { c as buildPrimaryColors, b as updateComponentsWithSettings, a as updateCoreWithSettings } from '../../chunk-Q2AVS24Z.js';
2
+ import '../../chunk-LNESYSHP.js';
3
3
  import '../../chunk-YPL4KIKN.js';
4
4
  import '../../chunk-HBOBTNB5.js';
5
5
  import '../../chunk-GLRLKFPS.js';
@@ -437,6 +437,7 @@ declare enum Icon {
437
437
  DASHBOARD_SQUARE_03 = "DASHBOARD_SQUARE_03",
438
438
  DOWNLOAD = "DOWNLOAD",
439
439
  CALENDAR_01_ICON = "CALENDAR_01_ICON",
440
+ TARGET_02_ICON = "TARGET_02_ICON",
440
441
  MEDIA_VIDEO_FILES = "MEDIA_VIDEO_FILES",
441
442
  MEDIA_IMAGE_FILES = "MEDIA_IMAGE_FILES",
442
443
  MEDIA_PDF_FILES = "MEDIA_PDF_FILES",
@@ -1,2 +1,2 @@
1
- export { b as ICON_ALIASES, a as Icon } from '../chunk-TJAQH6MS.js';
1
+ export { b as ICON_ALIASES, a as Icon } from '../chunk-DGCPCUVB.js';
2
2
  //# sourceMappingURL=icon.js.map
@@ -1,3 +1,3 @@
1
- export { b as getContrastTextColor, a as getLuminosity, c as normalizeHexColor } from '../chunk-KYV74QIT.js';
1
+ export { b as getContrastTextColor, a as getLuminosity, c as normalizeHexColor } from '../chunk-LNESYSHP.js';
2
2
  import '../chunk-HBOBTNB5.js';
3
3
  //# sourceMappingURL=color.js.map
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Regras ESLint compartilhadas do @zydon/common.
5
+ *
6
+ * Uso nos projetos consumidores (eslint-local-rules.cjs):
7
+ *
8
+ * module.exports = require('@zydon/common/eslint-rules');
9
+ *
10
+ * // ou misturar com regras locais:
11
+ * module.exports = {
12
+ * ...require('@zydon/common/eslint-rules'),
13
+ * 'minha-regra': require('./minha-regra.cjs'),
14
+ * };
15
+ */
16
+
17
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
18
+ const tooltipChildHasWrapper = require('./scripts/eslint-rules/tooltip-child-has-wrapper.cjs');
19
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
20
+ const muiIconButtonHasLabel = require('./scripts/eslint-rules/mui-icon-button-has-label.cjs');
21
+
22
+ module.exports = {
23
+ 'tooltip-child-has-wrapper': tooltipChildHasWrapper,
24
+ 'mui-icon-button-has-label': muiIconButtonHasLabel,
25
+ };
package/package.json CHANGED
@@ -1,13 +1,16 @@
1
1
  {
2
2
  "name": "@zydon/common",
3
- "version": "2.8.64",
3
+ "version": "2.8.65",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "module": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
8
8
  "files": [
9
9
  "dist",
10
- "README"
10
+ "README",
11
+ "eslint-shared-rules.cjs",
12
+ "scripts/eslint-rules/tooltip-child-has-wrapper.cjs",
13
+ "scripts/eslint-rules/mui-icon-button-has-label.cjs"
11
14
  ],
12
15
  "author": "Zydon Tech",
13
16
  "bugs": {
@@ -27,8 +30,8 @@
27
30
  "build": "tsup && node scripts/fix-sourcemaps.cjs",
28
31
  "build:watch": "tsup --watch",
29
32
  "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
30
- "lint:fix": "eslint --fix . --ext ts,tsx",
31
- "format": "prettier --write \"**/*.*\""
33
+ "lint:fix": "prettier --write \"**/*.*\" && eslint --fix . --ext ts,tsx",
34
+ "format": "prettier --write \"**/*.*\" && eslint --fix --quiet . --ext ts,tsx"
32
35
  },
33
36
  "exports": {
34
37
  ".": {
@@ -91,7 +94,10 @@
91
94
  "import": "./dist/utils/*.js",
92
95
  "types": "./dist/utils/*.d.ts"
93
96
  },
94
- "./styles.css": "./dist/index.css"
97
+ "./styles.css": "./dist/index.css",
98
+ "./eslint-rules": {
99
+ "require": "./eslint-shared-rules.cjs"
100
+ }
95
101
  },
96
102
  "sideEffects": false,
97
103
  "devDependencies": {
@@ -0,0 +1,71 @@
1
+ 'use strict';
2
+
3
+ const MUI_ICONBUTTON_SOURCES = new Set([
4
+ '@mui/material/IconButton',
5
+ '@mui/material',
6
+ ]);
7
+
8
+ module.exports = {
9
+ meta: {
10
+ type: 'problem',
11
+ docs: {
12
+ description:
13
+ 'Require aria-label or aria-labelledby on MUI IconButton components.',
14
+ recommended: false,
15
+ },
16
+ schema: [],
17
+ messages: {
18
+ missingLabel: 'MUI IconButton must have aria-label or aria-labelledby.',
19
+ },
20
+ },
21
+ create(context) {
22
+ const muiIconButtonNames = new Set();
23
+
24
+ function isMuiIconButtonImport(node) {
25
+ return (
26
+ node && node.source && MUI_ICONBUTTON_SOURCES.has(node.source.value)
27
+ );
28
+ }
29
+
30
+ function collectMuiIconButtonNames(node) {
31
+ if (!isMuiIconButtonImport(node)) return;
32
+
33
+ for (const specifier of node.specifiers) {
34
+ if (
35
+ specifier.type === 'ImportDefaultSpecifier' &&
36
+ node.source.value === '@mui/material/IconButton'
37
+ ) {
38
+ muiIconButtonNames.add(specifier.local.name);
39
+ }
40
+
41
+ if (specifier.type === 'ImportSpecifier') {
42
+ const importedName = specifier.imported && specifier.imported.name;
43
+ if (importedName === 'IconButton') {
44
+ muiIconButtonNames.add(specifier.local.name);
45
+ }
46
+ }
47
+ }
48
+ }
49
+
50
+ function hasAriaLabel(node) {
51
+ return node.attributes.some(attr => {
52
+ if (attr.type !== 'JSXAttribute' || !attr.name) return false;
53
+ return (
54
+ attr.name.name === 'aria-label' ||
55
+ attr.name.name === 'aria-labelledby'
56
+ );
57
+ });
58
+ }
59
+
60
+ return {
61
+ ImportDeclaration: collectMuiIconButtonNames,
62
+ JSXOpeningElement(node) {
63
+ if (node.name.type !== 'JSXIdentifier') return;
64
+ if (!muiIconButtonNames.has(node.name.name)) return;
65
+ if (hasAriaLabel(node)) return;
66
+
67
+ context.report({ node, messageId: 'missingLabel' });
68
+ },
69
+ };
70
+ },
71
+ };
@@ -0,0 +1,101 @@
1
+ 'use strict';
2
+
3
+ const TOOLTIP_SOURCES = new Set([
4
+ '@mui/material/Tooltip',
5
+ '@mui/material',
6
+ ]);
7
+
8
+ // Components from these sources forward refs and are safe as direct Tooltip children
9
+ const REF_SAFE_SOURCES = /^(@mui\/|@zydon\/common)/;
10
+
11
+ // Styled components from styles files also forward refs
12
+ const STYLE_FILE_PATTERN = /[\\/]styles?(?:\.ts|\.tsx)?$/;
13
+
14
+ module.exports = {
15
+ meta: {
16
+ type: 'problem',
17
+ docs: {
18
+ description:
19
+ 'Require MUI Tooltip children to be wrapped in a native HTML element or be a ref-safe component.',
20
+ recommended: false,
21
+ },
22
+ schema: [],
23
+ messages: {
24
+ unwrappedChild:
25
+ 'Tooltip children must be wrapped in a native HTML element (e.g., <span>). ' +
26
+ 'Use <span style={{ display: "inline-flex" }}> as wrapper, or use the Tooltip from @zydon/common which wraps automatically.',
27
+ },
28
+ },
29
+ create(context) {
30
+ const tooltipNames = new Set();
31
+ const refSafeNames = new Set();
32
+
33
+ function collectTooltipNames(node) {
34
+ if (!node.source || !TOOLTIP_SOURCES.has(node.source.value)) return;
35
+
36
+ for (const specifier of node.specifiers) {
37
+ if (
38
+ specifier.type === 'ImportDefaultSpecifier' &&
39
+ node.source.value === '@mui/material/Tooltip'
40
+ ) {
41
+ tooltipNames.add(specifier.local.name);
42
+ }
43
+
44
+ if (specifier.type === 'ImportSpecifier') {
45
+ const importedName = specifier.imported && specifier.imported.name;
46
+ if (importedName === 'Tooltip') {
47
+ tooltipNames.add(specifier.local.name);
48
+ }
49
+ }
50
+ }
51
+ }
52
+
53
+ function collectRefSafeComponents(node) {
54
+ if (!node.source) return;
55
+ const src = node.source.value;
56
+ if (!REF_SAFE_SOURCES.test(src) && !STYLE_FILE_PATTERN.test(src)) return;
57
+
58
+ for (const specifier of node.specifiers) {
59
+ refSafeNames.add(specifier.local.name);
60
+ }
61
+ }
62
+
63
+ return {
64
+ ImportDeclaration(node) {
65
+ collectTooltipNames(node);
66
+ collectRefSafeComponents(node);
67
+ },
68
+ JSXElement(node) {
69
+ const opening = node.openingElement;
70
+ if (opening.name.type !== 'JSXIdentifier') return;
71
+ if (!tooltipNames.has(opening.name.name)) return;
72
+
73
+ const jsxChildren = node.children.filter(
74
+ child =>
75
+ child.type === 'JSXElement' ||
76
+ child.type === 'JSXExpressionContainer',
77
+ );
78
+
79
+ if (jsxChildren.length !== 1) return;
80
+
81
+ const child = jsxChildren[0];
82
+
83
+ // JSXExpressionContainer ({variable}) — can't check statically, skip
84
+ if (child.type === 'JSXExpressionContainer') return;
85
+
86
+ if (child.type === 'JSXElement') {
87
+ const childName = child.openingElement.name;
88
+ if (childName.type === 'JSXIdentifier') {
89
+ // Native HTML elements start with lowercase in JSX
90
+ const isNative =
91
+ childName.name[0] === childName.name[0].toLowerCase();
92
+ const isRefSafe = refSafeNames.has(childName.name);
93
+ if (!isNative && !isRefSafe) {
94
+ context.report({ node: child, messageId: 'unwrappedChild' });
95
+ }
96
+ }
97
+ }
98
+ },
99
+ };
100
+ },
101
+ };
@@ -1,18 +0,0 @@
1
- import { a } from './chunk-VR3K2Y2C.js';
2
- import { b } from './chunk-RPO7AI5K.js';
3
- import k, { memo, useMemo, forwardRef, useCallback, useState, useDeferredValue, useEffect } from 'react';
4
- import Be, { autocompleteClasses } from '@mui/material/Autocomplete';
5
- import Le from '@mui/material/CircularProgress';
6
- import Ie from '@mui/material/TextField';
7
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
- import { VariableSizeList } from 'react-window';
9
- import ke from '@mui/material/ListSubheader';
10
- import Y from '@mui/material/Typography';
11
- import T from '@mui/material/Stack';
12
- import Oe from '@mui/material/Popper';
13
- import { styled } from '@mui/material/styles';
14
-
15
- var _=memo(({params:e,name:r,placeholder:o,error:t,helperText:n,label:i,required:a,loading:p,tabIndex:m})=>jsx(Ie,{...e,name:r,placeholder:o,fullWidth:!0,error:!!t,helperText:n,label:i,required:a,InputProps:{...e.InputProps,endAdornment:jsxs(Fragment,{children:[p?jsx(Le,{color:"primary",size:20}):null,e.InputProps.endAdornment]})},inputProps:{...e.inputProps,name:r,tabIndex:m}}));_.displayName="AutocompleteDetailedInput";var U=_;var X=styled(Oe)({[`& .${autocompleteClasses.listbox}`]:{boxSizing:"border-box","& ul":{padding:0,margin:0}}}),F=styled(T)(({theme:e})=>({flex:1,width:"100%",gap:6,[e.breakpoints.down("md")]:{flexDirection:"column"},[e.breakpoints.up("md")]:{flexDirection:"row"}})),w=styled(T)(({theme:e})=>({flex:1,maxWidth:"100%",gap:6,[e.breakpoints.up("md")]:{flex:"1 1 calc(50% - 8px)",width:"calc(50% - 8px)",minWidth:"calc(50% - 8px)",maxWidth:"calc(50% - 8px)"}})),q=styled(T)(({theme:e})=>({position:"relative",alignItems:"center",justifyContent:"center",width:68,height:68,borderRadius:8,overflow:"hidden",img:{position:"absolute",width:"100%",height:"100%",objectFit:"cover"},[e.breakpoints.down("sm")]:{display:"none"}})),J=styled("hr")(({theme:e})=>({borderStyle:"dashed",position:"absolute",bottom:0,width:"100%",margin:0,borderColor:e.palette.divider,borderWidth:"0 0 thin"}));var we={width:68,height:68,borderRadius:1},Z=memo(({option:e})=>{let r=useMemo(()=>Object.keys(e).filter(t=>t.startsWith("field")).map((t,n)=>{let i=e[t];if(i&&typeof i=="object"){let a="label"in i?i.label:null,p="value"in i?i.value:null;return jsxs(Y,{component:"span",variant:"body2",color:"textPrimary",noWrap:!0,children:[a,": ",p]},`${t}:${n}`)}}),[e]),o=useMemo(()=>e.image?jsx("img",{alt:"Imagem",src:e.image}):jsx(a,{alt:e.label||e.value.toString(),name:e.label||e.value.toString(),sx:we}),[e]);return jsxs(Fragment,{children:[jsxs(T,{direction:"row",gap:2,margin:2,children:[jsx(q,{children:o}),jsxs(T,{flex:1,overflow:"hidden",children:[jsxs(Y,{variant:"subtitle2",color:"textPrimary",noWrap:!0,flex:1,children:[e.value," - ",e.label]}),r.length>0&&jsxs(F,{width:1,children:[jsxs(w,{children:[r[0]?r[0]:void 0,r[1]?r[1]:void 0]}),(r[2]||r[3])&&jsxs(w,{children:[r[2]?r[2]:void 0,r[3]?r[3]:void 0]})]})]})]}),jsx(J,{className:"border"})]})});Z.displayName="ListItem";var R=Z;var D=8,ee=memo(e=>{let{data:r,index:o,style:t}=e,n=r[o],i={...t,top:t.top+D,paddingTop:8,display:"block"};if(Object.prototype.hasOwnProperty.call(n,"group")){let m=n;return jsx(ke,{component:"div",style:i,children:m.group},`list-box-item-group-${m.group}`)}let a=n,p=a.props?.children?.props;return jsx(Y,{component:"li",...a.props,noWrap:!0,style:i,children:jsx(R,{...p})})});ee.displayName="ListboxRow";var te=ee;var ie=k.createContext({}),ae=forwardRef((e,r)=>{let o=k.useContext(ie);return jsx("div",{ref:r,...e,...o})});ae.displayName="OuterElementType";var He=e=>{let r=k.useRef(null);return useEffect(()=>{r.current!=null&&r.current.resetAfterIndex(0,!0);},[e]),r},Ne=forwardRef(function(r,o){let{children:t,"data-item-height":n,...i}=r,a=useMemo(()=>{let l=[];return t.forEach(u=>{l.push(u),Object.prototype.hasOwnProperty.call(u,"children")&&Array.isArray(u.children)&&l.push(...u.children);}),l},[t]),p=a.length,m=n>112?n:112,f=useCallback(l=>Object.prototype.hasOwnProperty.call(l,"group")?48:m,[m]),b=useMemo(()=>p>8?8*m:a.map(f).reduce((l,u)=>l+u,0),[p,m,a,f]),L=He(p),I=useCallback(l=>f(a[l]),[a,f]);return jsx("div",{ref:o,children:jsx(ie.Provider,{value:i,children:jsx(VariableSizeList,{itemData:a,height:b+2*D,width:"100%",ref:L,outerElementType:ae,innerElementType:"ul",itemSize:I,overscanCount:5,itemCount:p,children:te})})})}),le=Ne;var je=e=>e&&typeof e=="object"?e.value.toString():e.toString(),_e=e=>e,Ue=(e,r)=>{let o=r.inputValue.toLocaleUpperCase();return e.filter(t=>`${t.field1?.value} ${t.field1?.label} ${t.field2?.label} ${t.field2?.value} ${t.field3?.label} ${t.field3?.value} ${t.field4?.label} ${t.field4?.value} ${t.field5?.label} ${t.field5?.value} ${t.label}${t.value}`.toLocaleUpperCase().includes(o))},Xe=({key:e,...r},o)=>jsx("li",{...r,style:{display:"block"},children:jsx(R,{option:o})},e),pe=memo(forwardRef(({name:e,label:r,value:o,options:t=[],loading:n,noOptionsText:i="Nenhum resultado encontrado.",loadingText:a="Carregando op\xE7\xF5es...",error:p,helperText:m,placeholder:f,onChange:b$1,groupBy:L,disabled:I,multiple:l,required:u,renderOption:me,tabIndex:M,onSearch:v,onInputChange:S,...ue},de)=>{let[$,C]=useState(""),[H,ce]=useState(null),O=useDeferredValue($),N=b("down","md"),fe=useMemo(()=>l?(Array.isArray(o)?o:[]).reduce((d,xe)=>{let W=t.find(Pe=>Pe.value.toString()===xe.toString());return W?[...d,W]:[...d]},[]):t.find(s=>s.value.toString()===o?.toString())||null,[t,o,l]),z=useMemo(()=>N&&t[0]?Object.keys(t[0]).length*24:void 0,[N,t]),be=useCallback((g,s,d)=>{if(ce(d),S&&S(g,s,d),d==="input"){v&&v(s),C(s);return}if(d==="reset"){C(s);return}d==="clear"&&C("");},[S,v]),ge=useCallback((g,s)=>{if(!s){b$1(l?[]:null);return}if(Array.isArray(s)){b$1(s.map(je));return}b$1(typeof s=="string"?s.toString():s.value.toString());},[b$1,l]),he=useMemo(()=>({"data-item-height":z}),[z]),ye=useCallback(g=>jsx(U,{params:g,name:e,placeholder:f,error:p,helperText:m,label:r,required:u,loading:n,tabIndex:M}),[e,f,p,m,r,u,n,M]),Re=useMemo(()=>!O||H==="reset"?t:Ue(t,{inputValue:O}),[t,O,H]);return jsx(Be,{ref:de,value:fe,inputValue:$,onInputChange:be,options:Re,loading:n,noOptionsText:i,loadingText:a,disabled:n||I,disableListWrap:!0,PopperComponent:X,ListboxProps:he,ListboxComponent:me?void 0:le,onChange:ge,renderOption:Xe,renderGroup:_e,groupBy:L,multiple:l,renderInput:ye,...ue})}));pe.displayName="Autocomplete";var kt=pe;
16
-
17
- export { kt as a };
18
- //# sourceMappingURL=chunk-3C7RDPW6.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/AutocompleteDetailed/index.tsx","../src/components/AutocompleteDetailed/AutocompleteDetailedInput.tsx","../src/components/AutocompleteDetailed/Listbox.tsx","../src/components/AutocompleteDetailed/ListboxRow.tsx","../src/components/AutocompleteDetailed/ListItem.tsx","../src/components/AutocompleteDetailed/styles.ts"],"names":["forwardRef","memo","useCallback","useDeferredValue","useMemo","useState","MuiAutocomplete","CircularProgress","TextField","Fragment","jsx","jsxs","AutocompleteDetailedInput","params","name","placeholder","error","helperText","label","required","loading","tabIndex","AutocompleteDetailedInput_default","React","useEffect","VariableSizeList","ListSubheader","Typography","Stack","autocompleteClasses","Popper","styled","StyledPopper","OptionBox","theme","OptionContent","ImageContainer","DividerStyled","AVATAR_SX","ListItem","option","options","key","index","data","value","image","CustomAvatar_default","ListItem_default","LISTBOX_PADDING","ListboxRow","props","style","dataSet","inlineStyle","groupItem","element","listItemProps","ListboxRow_default","OuterElementContext","OuterElementType","ref","outerProps","useResetCache","ListboxComponent","children","dataItemHeight","other","itemData","item","itemCount","itemSize","getChildSize","child","getHeight","a","b","gridRef","getItemSize","Listbox_default","getOptionValue","optionValue","renderGroup","filterOptions","opts","state","searchValue","opt","renderOptionListItem","AutocompleteDetailed","noOptionsText","loadingText","onChange","groupBy","disabled","multiple","renderOption","onSearch","onInputChange","inputValue","setInputValue","inputReason","setInputReason","deferredInputValue","mdDown","useResponsive_default","formattedValue","acc","curr","optionHeight","handleInputChange","event","eventValue","reason","handleChange","_","listboxProps","memoizedRenderInput","filteredOptions","AutocompleteDetailed_default"],"mappings":"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","sourcesContent":["import {\n forwardRef,\n HTMLAttributes,\n memo,\n ReactNode,\n useCallback,\n useDeferredValue,\n useMemo,\n useState,\n} from 'react';\nimport MuiAutocomplete, {\n AutocompleteRenderGroupParams,\n AutocompleteRenderInputParams,\n} from '@mui/material/Autocomplete';\n\nimport useResponsive from 'hooks/useResponsive';\nimport { Option } from 'types/option';\n\nimport AutocompleteDetailedInput from './AutocompleteDetailedInput';\nimport ListboxComponent from './Listbox';\nimport ListItem from './ListItem';\nimport { AutocompleteDetailedProps } from './props';\nimport { StyledPopper } from './styles';\n\nconst getOptionValue = (optionValue: Option | string | number): string =>\n optionValue && typeof optionValue === 'object'\n ? optionValue.value.toString()\n : optionValue.toString();\n\nconst renderGroup = (params: AutocompleteRenderGroupParams) =>\n params as unknown as ReactNode;\n\nconst filterOptions = (opts: Option[], state: { inputValue: string }) => {\n const searchValue = state.inputValue.toLocaleUpperCase();\n return opts.filter(opt => {\n const search = `${opt.field1?.value} ${opt.field1?.label} ${opt.field2?.label} ${opt.field2?.value} ${opt.field3?.label} ${opt.field3?.value} ${opt.field4?.label} ${opt.field4?.value} ${opt.field5?.label} ${opt.field5?.value} ${opt.label}${opt.value}`;\n return search.toLocaleUpperCase().includes(searchValue);\n });\n};\n\nconst renderOptionListItem = (\n { key, ...props }: React.HTMLAttributes<HTMLLIElement> & { key: string },\n option: Option,\n) => {\n return (\n <li key={key} {...props} style={{ display: 'block' }}>\n <ListItem option={option} />\n </li>\n );\n};\n\nconst AutocompleteDetailed = memo(\n forwardRef<unknown, AutocompleteDetailedProps>(\n (\n {\n name,\n label,\n value,\n options = [],\n loading,\n noOptionsText = 'Nenhum resultado encontrado.',\n loadingText = 'Carregando opções...',\n error,\n helperText,\n placeholder,\n onChange,\n groupBy,\n disabled,\n multiple,\n required,\n renderOption,\n tabIndex,\n onSearch,\n onInputChange,\n ...other\n },\n ref,\n ) => {\n const [inputValue, setInputValue] = useState<string>('');\n const [inputReason, setInputReason] = useState<\n 'input' | 'reset' | 'clear' | null\n >(null);\n const deferredInputValue = useDeferredValue(inputValue);\n\n const mdDown = useResponsive('down', 'md');\n\n const formattedValue = useMemo(() => {\n if (multiple) {\n const values = Array.isArray(value) ? value : [];\n\n return values.reduce<Option[]>((acc, curr) => {\n const item = options.find(\n opt => opt.value.toString() === curr.toString(),\n );\n\n if (item) return [...acc, item];\n\n return [...acc];\n }, []);\n }\n\n const item = options.find(\n opt => opt.value.toString() === value?.toString(),\n );\n\n return item || null;\n }, [options, value, multiple]);\n\n const optionHeight = useMemo(\n () =>\n mdDown && options[0]\n ? Object.keys(options[0]).length * 24\n : undefined,\n [mdDown, options],\n );\n\n const handleInputChange = useCallback(\n (\n event: React.SyntheticEvent,\n eventValue: string,\n reason: 'input' | 'reset' | 'clear',\n ) => {\n setInputReason(reason);\n if (onInputChange) onInputChange(event, eventValue, reason);\n\n if (reason === 'input') {\n if (onSearch) onSearch(eventValue);\n setInputValue(eventValue);\n\n return;\n }\n\n if (reason === 'reset') {\n setInputValue(eventValue);\n return;\n }\n\n if (reason === 'clear') {\n setInputValue('');\n }\n },\n [onInputChange, onSearch],\n );\n\n const handleChange = useCallback(\n (\n _: React.SyntheticEvent,\n option: Option | (string | Option)[] | string | null,\n ) => {\n if (!option) {\n onChange(multiple ? [] : null);\n return;\n }\n\n if (Array.isArray(option)) {\n onChange(option.map(getOptionValue));\n return;\n }\n\n onChange(\n typeof option === 'string'\n ? option.toString()\n : option.value.toString(),\n );\n },\n [onChange, multiple],\n );\n\n const listboxProps = useMemo(\n () =>\n ({\n 'data-item-height': optionHeight,\n }) as HTMLAttributes<HTMLUListElement>,\n [optionHeight],\n );\n\n const memoizedRenderInput = useCallback(\n (params: AutocompleteRenderInputParams) => (\n <AutocompleteDetailedInput\n params={params}\n name={name}\n placeholder={placeholder}\n error={error}\n helperText={helperText}\n label={label}\n required={required}\n loading={loading}\n tabIndex={tabIndex}\n />\n ),\n [\n name,\n placeholder,\n error,\n helperText,\n label,\n required,\n loading,\n tabIndex,\n ],\n );\n\n const filteredOptions = useMemo(() => {\n if (!deferredInputValue || inputReason === 'reset') return options;\n return filterOptions(options, { inputValue: deferredInputValue });\n }, [options, deferredInputValue, inputReason]);\n\n return (\n <MuiAutocomplete\n ref={ref}\n value={formattedValue}\n inputValue={inputValue}\n onInputChange={handleInputChange}\n options={filteredOptions}\n loading={loading}\n noOptionsText={noOptionsText}\n loadingText={loadingText}\n disabled={loading || disabled}\n disableListWrap\n PopperComponent={StyledPopper}\n ListboxProps={listboxProps}\n ListboxComponent={renderOption ? undefined : ListboxComponent}\n onChange={handleChange}\n renderOption={renderOptionListItem}\n renderGroup={renderGroup}\n groupBy={groupBy}\n multiple={multiple}\n renderInput={memoizedRenderInput}\n {...other}\n />\n );\n },\n ),\n);\n\nAutocompleteDetailed.displayName = 'Autocomplete';\n\nexport default AutocompleteDetailed;\n","import { memo } from 'react';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport TextField from '@mui/material/TextField';\n\nimport { AutocompleteDetailedInputProps } from './props';\n\nconst AutocompleteDetailedInput = memo(\n ({\n params,\n name,\n placeholder,\n error,\n helperText,\n label,\n required,\n loading,\n tabIndex,\n }: AutocompleteDetailedInputProps) => (\n <TextField\n {...params}\n name={name}\n placeholder={placeholder}\n fullWidth\n error={!!error}\n helperText={helperText}\n label={label}\n required={required}\n InputProps={{\n ...params.InputProps,\n endAdornment: (\n <>\n {loading ? <CircularProgress color=\"primary\" size={20} /> : null}\n {params.InputProps.endAdornment}\n </>\n ),\n }}\n inputProps={{\n ...params.inputProps,\n name,\n tabIndex,\n }}\n />\n ),\n);\n\nAutocompleteDetailedInput.displayName = 'AutocompleteDetailedInput';\n\nexport default AutocompleteDetailedInput;\n","import React, {\n forwardRef,\n HTMLAttributes,\n useCallback,\n useEffect,\n useMemo,\n} from 'react';\nimport { VariableSizeList } from 'react-window';\nimport { AutocompleteRenderGroupParams } from '@mui/material/Autocomplete';\n\nimport ListboxRow, { LISTBOX_PADDING } from './ListboxRow';\n\nconst OuterElementContext = React.createContext({});\n\nconst OuterElementType = forwardRef<HTMLDivElement>((props, ref) => {\n const outerProps = React.useContext(OuterElementContext);\n return <div ref={ref} {...props} {...outerProps} />;\n});\n\nOuterElementType.displayName = 'OuterElementType';\n\nconst useResetCache = (data: number) => {\n const ref = React.useRef<VariableSizeList>(null);\n\n useEffect(() => {\n if (ref.current != null) {\n ref.current.resetAfterIndex(0, true);\n }\n }, [data]);\n\n return ref;\n};\n\nconst ListboxComponent = forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLElement>\n>(function ListboxComponent(props, ref) {\n const {\n children,\n // eslint-disable-next-line react/prop-types\n 'data-item-height': dataItemHeight,\n ...other\n } = props as { 'data-item-height': number } & HTMLAttributes<HTMLElement>;\n\n const itemData: (React.ReactElement | AutocompleteRenderGroupParams)[] =\n useMemo(() => {\n const data: (React.ReactElement | AutocompleteRenderGroupParams)[] = [];\n (\n children as (React.ReactElement | AutocompleteRenderGroupParams)[]\n ).forEach(item => {\n data.push(item);\n if (\n Object.prototype.hasOwnProperty.call(item, 'children') &&\n Array.isArray((item as AutocompleteRenderGroupParams).children)\n ) {\n data.push(\n ...((item as AutocompleteRenderGroupParams)\n .children as React.ReactElement[]),\n );\n }\n });\n return data;\n }, [children]);\n const itemCount = itemData.length;\n const itemSize = dataItemHeight > 112 ? dataItemHeight : 112;\n\n const getChildSize = useCallback(\n (child: React.ReactElement | AutocompleteRenderGroupParams) => {\n if (Object.prototype.hasOwnProperty.call(child, 'group')) {\n return 48;\n }\n\n return itemSize;\n },\n [itemSize],\n );\n\n const getHeight = useMemo(() => {\n if (itemCount > 8) {\n return 8 * itemSize;\n }\n return itemData.map(getChildSize).reduce((a, b) => a + b, 0);\n }, [itemCount, itemSize, itemData, getChildSize]);\n\n const gridRef = useResetCache(itemCount);\n\n const getItemSize = useCallback(\n (index: number) => {\n return getChildSize(itemData[index]);\n },\n [itemData, getChildSize],\n );\n\n return (\n <div ref={ref}>\n <OuterElementContext.Provider value={other}>\n <VariableSizeList\n itemData={itemData}\n height={getHeight + 2 * LISTBOX_PADDING}\n width=\"100%\"\n ref={gridRef}\n outerElementType={OuterElementType}\n innerElementType=\"ul\"\n itemSize={getItemSize}\n overscanCount={5}\n itemCount={itemCount}\n >\n {ListboxRow}\n </VariableSizeList>\n </OuterElementContext.Provider>\n </div>\n );\n});\n\nexport default ListboxComponent;\n","import { memo } from 'react';\nimport { ListChildComponentProps } from 'react-window';\nimport { AutocompleteRenderGroupParams } from '@mui/material/Autocomplete';\nimport ListSubheader from '@mui/material/ListSubheader';\nimport Typography from '@mui/material/Typography';\n\nimport ListItem from './ListItem';\nimport { ListItemProps } from './props';\n\nconst LISTBOX_PADDING = 8;\n\nconst ListboxRow = memo((props: ListChildComponentProps) => {\n const { data, index, style } = props;\n const dataSet = data[index] as\n | React.ReactElement\n | AutocompleteRenderGroupParams;\n\n const inlineStyle = {\n ...style,\n top: (style.top as number) + LISTBOX_PADDING,\n paddingTop: 8,\n display: 'block',\n };\n\n if (Object.prototype.hasOwnProperty.call(dataSet, 'group')) {\n const groupItem = dataSet as AutocompleteRenderGroupParams;\n return (\n <ListSubheader\n key={`list-box-item-group-${groupItem.group}`}\n component=\"div\"\n style={inlineStyle}\n >\n {groupItem.group}\n </ListSubheader>\n );\n }\n\n const element = dataSet as React.ReactElement;\n const listItemProps = element.props?.children?.props as ListItemProps;\n\n return (\n <Typography component=\"li\" {...element.props} noWrap style={inlineStyle}>\n <ListItem {...listItemProps} />\n </Typography>\n );\n});\n\nListboxRow.displayName = 'ListboxRow';\n\nexport { LISTBOX_PADDING };\nexport default ListboxRow;\n","import { memo, useMemo } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport CustomAvatar from 'components/CustomAvatar';\n\nimport { ListItemProps } from './props';\nimport {\n DividerStyled,\n ImageContainer,\n OptionBox,\n OptionContent,\n} from './styles';\n\nconst AVATAR_SX = { width: 68, height: 68, borderRadius: 1 };\n\nconst ListItem = memo(({ option }: ListItemProps) => {\n const options = useMemo(\n () =>\n Object.keys(option)\n .filter(key => key.startsWith('field'))\n .map((key, index) => {\n const data = option[key];\n\n if (data && typeof data === 'object') {\n const label = ('label' in data ? data.label : null) as string;\n const value = ('value' in data ? data.value : null) as string;\n\n return (\n <Typography\n key={`${key}:${index}`}\n component=\"span\"\n variant=\"body2\"\n color=\"textPrimary\"\n noWrap\n >\n {label}: {value}\n </Typography>\n );\n }\n }),\n [option],\n );\n\n const image = useMemo(\n () =>\n option.image ? (\n <img alt=\"Imagem\" src={option.image} />\n ) : (\n <CustomAvatar\n alt={option.label || option.value.toString()}\n name={option.label || option.value.toString()}\n sx={AVATAR_SX}\n />\n ),\n [option],\n );\n\n return (\n <>\n <Stack direction=\"row\" gap={2} margin={2}>\n <ImageContainer>{image}</ImageContainer>\n\n <Stack flex={1} overflow=\"hidden\">\n <Typography variant=\"subtitle2\" color=\"textPrimary\" noWrap flex={1}>\n {option.value} - {option.label}\n </Typography>\n\n {options.length > 0 && (\n <OptionBox width={1}>\n <OptionContent>\n {options[0] ? options[0] : undefined}\n {options[1] ? options[1] : undefined}\n </OptionContent>\n\n {(options[2] || options[3]) && (\n <OptionContent>\n {options[2] ? options[2] : undefined}\n {options[3] ? options[3] : undefined}\n </OptionContent>\n )}\n </OptionBox>\n )}\n </Stack>\n </Stack>\n\n <DividerStyled className=\"border\" />\n </>\n );\n});\n\nListItem.displayName = 'ListItem';\n\nexport default ListItem;\n","import { autocompleteClasses } from '@mui/material/Autocomplete';\nimport Popper from '@mui/material/Popper';\nimport Stack from '@mui/material/Stack';\nimport { styled } from '@mui/material/styles';\n\nexport const StyledPopper = styled(Popper)({\n [`& .${autocompleteClasses.listbox}`]: {\n boxSizing: 'border-box',\n '& ul': {\n padding: 0,\n margin: 0,\n },\n },\n});\n\nexport const OptionBox = styled(Stack)(({ theme }) => ({\n flex: 1,\n width: '100%',\n gap: 6,\n\n [theme.breakpoints.down('md')]: {\n flexDirection: 'column',\n },\n\n [theme.breakpoints.up('md')]: {\n flexDirection: 'row',\n },\n}));\n\nexport const OptionContent = styled(Stack)(({ theme }) => ({\n flex: 1,\n maxWidth: '100%',\n gap: 6,\n\n [theme.breakpoints.up('md')]: {\n flex: '1 1 calc(50% - 8px)',\n width: 'calc(50% - 8px)',\n minWidth: 'calc(50% - 8px)',\n maxWidth: 'calc(50% - 8px)',\n },\n}));\n\nexport const ImageContainer = styled(Stack)(({ theme }) => ({\n position: 'relative',\n alignItems: 'center',\n justifyContent: 'center',\n width: 68,\n height: 68,\n borderRadius: 8,\n overflow: 'hidden',\n\n img: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n },\n\n [theme.breakpoints.down('sm')]: {\n display: 'none',\n },\n}));\n\nexport const DividerStyled = styled('hr')(({ theme }) => ({\n borderStyle: 'dashed',\n position: 'absolute',\n bottom: 0,\n width: '100%',\n margin: 0,\n borderColor: theme.palette.divider,\n borderWidth: '0 0 thin',\n}));\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/carousel/breakpoints.ts","../src/components/carousel/carousel.tsx","../src/components/carousel/components/carousel-slide.tsx","../src/components/carousel/classes.ts","../src/components/carousel/components/carousel-arrow-buttons.tsx","../src/components/carousel/components/carousel-dot-buttons.tsx","../src/components/carousel/components/carousel-progress-bar.tsx","../src/components/carousel/components/carousel-thumbs.tsx","../src/components/carousel/hooks/use-carousel.ts","../src/components/carousel/hooks/use-carousel-arrows.ts","../src/components/carousel/hooks/use-carousel-auto-play.ts","../src/components/carousel/hooks/use-carousel-auto-scroll.ts","../src/components/carousel/hooks/use-carousel-dots.ts","../src/components/carousel/hooks/use-carousel-parallax.ts","../src/components/carousel/hooks/use-carousel-progress.ts","../src/components/carousel/hooks/use-thumbs.ts"],"names":["carouselBreakpoints","Children","isValidElement","Box","styled","carouselClasses","jsx","StyledRoot","prop","axis","slideSpacing","StyledContent","CarouselSlide","sx","options","children","other","slideSize","getSize","slidesToShow","acc","key","sizeByKey","getValue","value","StyledContainer","Carousel","carousel","slotProps","props","mainRef","direction","renderChildren","child","reactChild","theme","ButtonBase","buttonBaseClasses","Stack","useTheme","SvgIcon","Fragment","jsxs","CarouselArrowBasicButtons","totalSlides","selectedIndex","onClickPrev","onClickNext","disablePrev","disableNext","ArrowButton","CarouselArrowNumberButtons","varAlpha","CarouselArrowFloatButtons","baseStyles","stylesMode","svgIcon","svgSize","variant","arrowPrev","arrowNext","prevSvg","nextSvg","NoSsr","CarouselDotButtons","gap","onClickDot","scrollSnaps","fallbackCount","fallback","GAPS","SIZES","renderFallback","dotStyles","selected","_","index","StyledProgress","CarouselProgressBar","forwardRef","CarouselThumbs","ref","maskStyles","useMaskStyle","CarouselThumb","thumbType","src","imageRender","thumbAlt","sxThumb","Icon_default","bgcolor","useMemo","useEmblaCarousel","useCallback","useEffect","useState","useCarouselArrows","mainApi","setDisabledPrevBtn","setDisabledNextBtn","onSelect","_mainApi","useCarouselAutoPlay","isPlaying","setIsPlaying","onClickAutoplay","callback","autoplay","onTogglePlay","useCarouselAutoScroll","autoScroll","useCarouselDots","dotCount","setDotCount","setSelectedIndex","setScrollSnaps","onInit","useRef","useParallax","parallax","tweenFactor","tweenNodes","TWEEN_FACTOR_BASE","setTweenNodes","slideNode","setTweenFactor","tweenParallax","eventName","engine","scrollProgress","slidesInView","isScrollEvent","scrollSnap","snapIndex","diffToTarget","slideIndex","loopItem","target","sign","translateValue","tweenNode","useCarouselProgress","setScrollProgress","onScroll","progress","useThumbs","thumbsRef","thumbsApi","onClickThumb","useCarousel","plugins","pluginNames","plugin","_dots","_autoplay","_autoScroll","_progress","_thumbs","controls"],"mappings":"uFAAO,IAAMA,GAAsB,CACjC,GAAI,mBACJ,GAAI,qBACJ,GAAI,qBACJ,GAAI,sBACJ,GAAI,qBACN,ECLA,OAAS,YAAAC,GAAU,kBAAAC,OAAsB,QACzC,OAAOC,MAAS,oBAChB,OAAS,UAAAC,MAAc,uBCDvB,OAAOD,MAAS,oBAChB,OAAS,UAAAC,MAAc,uBCHhB,IAAMC,EAAkB,CAC7B,KAAM,sBACN,UAAW,2BAEX,KAAM,sBACN,IAAK,qBAEL,OAAQ,wBACR,YAAa,8BACb,UAAW,2BACX,UAAW,2BACX,SAAU,0BAEV,MAAO,uBACP,aAAc,gCAEd,OAAQ,wBACR,MAAO,uBACP,eAAgB,mCAChB,WAAY,8BAEZ,SAAU,0BACV,YAAa,+BACb,MAAO,CAAE,SAAU,kBAAmB,SAAU,iBAAkB,CACpE,EDoCU,cAAAC,MAAA,oBA7CV,IAAMC,GAAaH,EAAOD,EAAK,CAC7B,kBAAmBK,GAAQA,IAAS,QAAUA,IAAS,cACzD,CAAC,EAAe,CAAC,CAAE,KAAAC,EAAM,aAAAC,CAAa,KAAO,CAC3C,QAAS,QACT,SAAU,WACV,GAAID,IAAS,KAAO,CAClB,SAAU,EACV,YAAaC,CACf,EACA,GAAID,IAAS,KAAO,CAClB,UAAW,EACX,WAAYC,CACd,CACF,EAAE,EAEIC,GAAgBP,EAAOD,CAAG,EAAE,KAAO,CACvC,SAAU,SACV,SAAU,WACV,aAAc,SAChB,EAAE,EAIK,SAASS,EAAc,CAC5B,GAAAC,EACA,QAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EAAkC,CAChC,IAAMC,EAAYC,GAAQJ,GAAS,YAAY,EAE/C,OACER,EAACC,GAAA,CACC,UAAU,KACV,KAAMO,GAAS,MAAQ,IACvB,aAAcA,GAAS,aACvB,UAAWT,EAAgB,MAC3B,GAAI,CACF,KAAMY,EACN,GAAGJ,CACL,EACC,GAAGG,EAEH,SAAAF,GAAS,SACRR,EAACK,GAAA,CAAc,UAAWN,EAAgB,aACxC,SAAAC,EAAC,OAAI,UAAU,yBAA0B,SAAAS,EAAS,EACpD,EAEAA,EAEJ,CAEJ,CAIA,SAASG,GAAQC,EAAsC,CACrD,OAAIA,GAAgB,OAAOA,GAAiB,SACnC,OAAO,KAAKA,CAAY,EAAE,OAAoB,CAACC,EAAKC,IAAQ,CACjE,IAAMC,EAAYH,EAAaE,CAAG,EAClC,OAAAD,EAAIC,CAAG,EAAIE,EAASD,CAAS,EACtBF,CACT,EAAG,CAAC,CAAC,EAGAG,EAASJ,CAAY,CAC9B,CAEA,SAASI,EAASC,EAAyB,EAAW,CACpD,GAAI,OAAOA,GAAU,SAAU,CAG7B,GAAI,EADFA,IAAU,QAAUA,EAAM,SAAS,GAAG,GAAKA,EAAM,SAAS,IAAI,GAE9D,MAAM,IAAI,MAAM,8CAA8C,EAGhE,MAAO,OAAOA,IAGhB,GAAI,OAAOA,GAAU,SACnB,MAAO,OAAO,IAAMA,KAItB,MAAM,IAAI,MACR,kEACF,CACF,CDtCQ,cAAAlB,MAAA,oBApDD,IAAMC,EAAaH,EAAOD,EAAK,CACpC,kBAAmBK,GAAQA,IAAS,MACtC,CAAC,EAAe,CAAC,CAAE,KAAAC,CAAK,KAAO,CAC7B,OAAQ,OACR,MAAO,OACP,SAAU,OACV,SAAU,SACV,SAAU,WACV,GAAIA,IAAS,KAAO,CAClB,OAAQ,MACV,CACF,EAAE,EAEWgB,EAAkBrB,EAAOD,EAAK,CACzC,kBAAmBK,GAAQA,IAAS,QAAUA,IAAS,cACzD,CAAC,EAAe,CAAC,CAAE,KAAAC,EAAM,aAAAC,CAAa,KAAO,CAC3C,QAAS,OACT,mBAAoB,SACpB,GAAID,IAAS,KAAO,CAClB,YAAa,mBACb,WAAY,QAAQC,SACtB,EACA,GAAID,IAAS,KAAO,CAClB,OAAQ,OACR,cAAe,SACf,YAAa,mBACb,UAAW,QAAQC,SACrB,CACF,EAAE,EAIK,SAASgB,GAAS,CACvB,SAAAC,EACA,SAAAZ,EACA,GAAAF,EACA,UAAAe,EACA,GAAGC,CACL,EAAkB,CAChB,GAAM,CAAE,QAAAC,EAAS,QAAAhB,CAAQ,EAAIa,EAEvBlB,EAAOK,GAAS,MAAQ,IAExBJ,EAAeI,GAAS,cAAgB,MAExCiB,EAAYjB,GAAS,WAAa,MAElCkB,EAAiB/B,GAAS,IAAIc,EAAUkB,GAAS,CACrD,GAAI/B,GAAe+B,CAAK,EAAG,CACzB,IAAMC,EAAaD,EAEnB,OACE3B,EAACM,EAAA,CAEC,QAASe,EAAS,QAClB,GAAIC,GAAW,MACd,GAAGC,EAEH,SAAAI,GALIC,EAAW,GAMlB,EAGJ,OAAO,IACT,CAAC,EAED,OACE5B,EAACC,EAAA,CACC,GAAIM,EACJ,KAAMJ,EACN,IAAKqB,EACL,IAAKC,EACL,UAAW1B,EAAgB,KAE3B,SAAAC,EAACmB,EAAA,CACC,UAAU,KACV,KAAMhB,EACN,aAAcC,EACd,UAAWL,EAAgB,UAC3B,GAAI,CACF,GAAIsB,EAAS,aAAa,SAAS,YAAY,GAAK,CAClD,WAAY,aACZ,WAAYQ,GACVA,EAAM,YAAY,OAAO,CAAC,QAAQ,EAAG,CACnC,OAAQA,EAAM,YAAY,OAAO,UACjC,SAAUA,EAAM,YAAY,SAAS,OACvC,CAAC,CACL,EACA,GAAGP,GAAW,SAChB,EAEC,SAAAI,EACH,EACF,CAEJ,CGxGA,OAAO7B,OAAS,oBAEhB,OAAOiC,IAAc,qBAAAC,OAAyB,2BAE9C,OAAOC,MAAW,sBAElB,OAAS,YAAAC,OAAgB,uBACzB,OAAOC,OAAa,wBAwBhB,OA6HA,YAAAC,GAhHE,OAAAnC,EAbF,QAAAoC,MAAA,oBAdG,SAASC,GAA0B,CACxC,QAAA7B,EACA,UAAAc,EACA,YAAAgB,EACA,cAAAC,EAEA,YAAAC,EACA,YAAAC,EACA,YAAAC,EACA,YAAAC,EACA,GAAApC,EACA,GAAGG,CACL,EAA2C,CACzC,OACE0B,EAACJ,EAAA,CACC,UAAU,MACV,WAAW,SACX,QAAQ,cACR,UAAWjC,EAAgB,OAC3B,GAAI,CACF,IAAK,GACL,OAAQ,EACR,MAAO,gBACP,GAAGQ,CACL,EACC,GAAGG,EAEJ,UAAAV,EAAC4C,EAAA,CACC,QAAQ,OACR,QAASpC,EACT,SAAUkC,EACV,QAASF,EACT,QAASlB,GAAW,SAAS,QAC7B,QAASA,GAAW,SAAS,QAC7B,GAAIA,GAAW,SAAS,GAC1B,EAEAtB,EAAC4C,EAAA,CACC,QAAQ,OACR,QAASpC,EACT,SAAUmC,EACV,QAASF,EACT,QAASnB,GAAW,SAAS,QAC7B,QAASA,GAAW,SAAS,QAC7B,GAAIA,GAAW,SAAS,GAC1B,GACF,CAEJ,CAIO,SAASuB,GAA2B,CACzC,QAAArC,EACA,UAAAc,EACA,YAAAgB,EACA,cAAAC,EAEA,YAAAC,EACA,YAAAC,EACA,YAAAC,EACA,YAAAC,EACA,GAAApC,EACA,GAAGG,CACL,EAA2C,CACzC,IAAMmB,EAAQI,GAAS,EAEvB,OACEG,EAACJ,EAAA,CACC,UAAU,MACV,WAAW,SACX,QAAQ,cACR,UAAWjC,EAAgB,OAC3B,GAAI,CACF,EAAG,GACH,IAAK,IACL,OAAQ,EACR,aAAc,KACd,MAAO,eACP,QAAS+C,EAASjB,EAAM,KAAK,QAAQ,KAAK,YAAY,EAAG,GAAI,EAC7D,GAAGtB,CACL,EACC,GAAGG,EAEJ,UAAAV,EAAC4C,EAAA,CACC,QAAQ,OACR,QAASpC,EACT,SAAUkC,EACV,QAASF,EACT,GAAI,CAAE,EAAG,IAAM,aAAc,UAAW,GAAGlB,GAAW,SAAS,EAAG,EAClE,QAASA,GAAW,SAAS,QAC7B,QAASA,GAAW,SAAS,SAAW,GAC1C,EAEAc,EAACvC,GAAA,CACC,UAAU,OACV,UAAWE,EAAgB,YAC3B,GAAI,CAAE,GAAI,GAAK,WAAY,WAAY,EACvC,cAAY,0BAEX,UAAAwC,EAAc,IAAED,GACnB,EAEAtC,EAAC4C,EAAA,CACC,QAAQ,OACR,QAASpC,EACT,SAAUmC,EACV,QAASF,EACT,GAAI,CAAE,EAAG,IAAM,aAAc,UAAW,GAAGnB,GAAW,SAAS,EAAG,EAClE,QAASA,GAAW,SAAS,QAC7B,QAASA,GAAW,SAAS,SAAW,GAC1C,GACF,CAEJ,CAIO,SAASyB,GAA0B,CACxC,QAAAvC,EACA,UAAAc,EACA,YAAAkB,EACA,YAAAC,EACA,YAAAC,EACA,YAAAC,CACF,EAA2C,CACzC,IAAMK,EAAwB,CAC5B,OAAQ,EACR,IAAK,MACL,aAAc,IACd,SAAU,WACV,MAAO,eACP,QAAS,eACT,UAAW,mBACX,UAAW,CAAE,QAAS,EAAI,EAC1B,CAACC,EAAW,IAAI,EAAG,CAAE,MAAO,UAAW,CACzC,EAEA,OACEb,EAAAD,GAAA,CACE,UAAAnC,EAAC4C,EAAA,CACC,QAAQ,OACR,QAASpC,EACT,SAAUkC,EACV,QAASF,EACT,QAASlB,GAAW,SAAS,QAC7B,QAASA,GAAW,SAAS,QAC7B,GAAI,CAAE,KAAM,IAAK,GAAG0B,EAAY,GAAG1B,GAAW,SAAS,EAAG,EAC5D,EAEAtB,EAAC4C,EAAA,CACC,QAAQ,OACR,QAASpC,EACT,SAAUmC,EACV,QAASF,EACT,QAASnB,GAAW,SAAS,QAC7B,QAASA,GAAW,SAAS,QAC7B,GAAI,CAAE,MAAO,IAAK,GAAG0B,EAAY,GAAG1B,GAAW,SAAS,EAAG,EAC7D,GACF,CAEJ,CAIO,SAASsB,EAAY,CAC1B,GAAArC,EACA,QAAA2C,EACA,QAAAC,EACA,QAAA3C,EACA,QAAA4C,EACA,GAAG1C,CACL,EAA+C,CAC7C,IAAM2C,EAAYD,IAAY,OACxBE,EAAYF,IAAY,OAExBG,EAAUL,GACdlD,EAAC,QACC,KAAK,eACL,SAAS,UACT,EAAE,wIACF,SAAS,UACX,EAGIwD,EAAUN,GACdlD,EAAC,QACC,KAAK,eACL,SAAS,UACT,EAAE,uIACF,SAAS,UACX,EAGF,OACEA,EAAC8B,GAAA,CACC,UACEuB,EAAYtD,EAAgB,UAAYA,EAAgB,UAE1D,aAAYsD,EAAY,cAAgB,cACxC,GAAI,CACF,EAAG,EACH,aAAc,MACd,UAAW,cACX,WAAYxB,GACVA,EAAM,YAAY,OAAO,CAAC,KAAK,EAAG,CAChC,OAAQA,EAAM,YAAY,OAAO,MACjC,SAAUA,EAAM,YAAY,SAAS,KACvC,CAAC,EACH,CAAC,KAAKE,GAAkB,UAAU,EAAG,CACnC,QAAS,EACX,EACA,GAAGxB,EACH,GAAIC,GAAS,YAAc,OAAS,CAClC,GAAI6C,GAAa,CAAE,MAAO,IAAK,KAAM,MAAO,EAC5C,GAAIC,GAAa,CAAE,KAAM,IAAK,MAAO,MAAO,CAC9C,CACF,EACC,GAAG5C,EAEJ,SAAAV,EAACkC,GAAA,CACC,UAAWnC,EAAgB,SAC3B,GAAI,CACF,MAAOoD,GAAW,GAClB,OAAQA,GAAW,GACnB,GAAI3C,GAAS,OAAS,KAAO,CAAE,UAAW,gBAAiB,EAC3D,GAAIA,GAAS,YAAc,OAAS,CAAE,UAAW,aAAc,CACjE,EAEC,SAAA6C,EAAYE,EAAUC,EACzB,EACF,CAEJ,CC3PA,OAAO3D,MAAS,oBAChB,OAAOiC,OAAgB,2BACvB,OAAO2B,OAAW,sBAClB,OAAS,YAAAxB,OAAgB,uBAmCrB,cAAAjC,MAAA,oBA1BG,SAAS0D,GAAmB,CACjC,GAAAnD,EACA,IAAAoD,EACA,UAAArC,EACA,WAAAsC,EACA,YAAAC,EACA,cAAAtB,EACA,cAAAuB,EAAgB,EAChB,QAAAV,EAAU,WACV,SAAAW,EAAW,GACX,GAAGrD,CACL,EAA4B,CAC1B,IAAMmB,EAAQI,GAAS,EAEjB+B,EAAO,CACX,OAAQL,GAAO,EACf,QAASA,GAAO,EAChB,SAAUA,GAAO,CACnB,EAEMM,EAAQ,CACZ,SAAU3C,GAAW,KAAK,MAAQ,GAClC,OAAQA,GAAW,KAAK,MAAQ,EAClC,EAEM4C,EACJlE,EAACH,EAAA,CACC,GAAI,CACF,OAAQoE,EAAM,SACd,MAAO,QAAQH,EAAgBG,EAAM,SAAWD,EAAK,UAAYF,EAAgB,SACjF,GAAIV,IAAY,UAAY,CAC1B,OAAQa,EAAM,OACd,MAAO,QAAQH,EAAgBG,EAAM,OAASD,EAAK,QAAUF,EAAgB,QAC/E,CACF,EACF,EAGIK,EAAY,CAChB,SAAWC,IAAuB,CAChC,MAAOH,EAAM,SACb,OAAQA,EAAM,SACd,YAAa,CACX,MAAO,EACP,OAAQ,EACR,QAAS,KACT,QAAS,IACT,aAAc,MACd,QAAS,eACT,WAAYpC,EAAM,YAAY,OAAO,CAAC,SAAS,EAAG,CAChD,OAAQA,EAAM,YAAY,OAAO,MACjC,SAAUA,EAAM,YAAY,SAAS,KACvC,CAAC,EACD,GAAIuC,GAAY,CAAE,QAAS,CAAE,CAC/B,CACF,GACA,QAAUA,IAAuB,CAC/B,MAAOH,EAAM,SACb,OAAQA,EAAM,SACd,YAAa,CACX,MAAO,EACP,OAAQ,EACR,QAAS,KACT,QAAS,IACT,aAAc,MACd,QAAS,eACT,WAAYpC,EAAM,YAAY,OAAO,CAAC,QAAS,SAAS,EAAG,CACzD,OAAQA,EAAM,YAAY,OAAO,MACjC,SAAUA,EAAM,YAAY,SAAS,KACvC,CAAC,EACD,GAAIuC,GAAY,CACd,MAAO,mBACP,QAAS,EACT,aAAc,CAChB,CACF,CACF,GACA,OAASA,IAAuB,CAC9B,MAAOH,EAAM,OACb,OAAQA,EAAM,OACd,aAAc,MACd,WAAY,UACZ,MAAO,gBACP,OAAQ,aAAanB,EAASjB,EAAM,KAAK,QAAQ,KAAK,YAAY,EAAG,GAAI,IACzE,GAAIuC,GAAY,CACd,MAAO,eACP,QAAS,eACT,WAAY,qBACZ,CAACnB,EAAW,IAAI,EAAG,CAAE,MAAO,UAAW,CACzC,CACF,EACF,EAEA,OACEjD,EAACyD,GAAA,CAAM,SAAUM,EAAWG,EAAiB,KAC3C,SAAAlE,EAACH,EAAA,CACC,cAAY,gBACZ,UAAU,KACV,UAAWE,EAAgB,KAC3B,GAAI,CACF,OAAQ,EACR,QAAS,cACT,GAAIqD,IAAY,YAAc,CAAE,IAAK,GAAGY,EAAK,YAAa,EAC1D,GAAIZ,IAAY,WAAa,CAAE,IAAK,GAAGY,EAAK,WAAY,EACxD,GAAIZ,IAAY,UAAY,CAAE,IAAK,GAAGY,EAAK,UAAW,EACtD,GAAGzD,CACL,EACC,GAAGG,EAEH,SAAAmD,EAAY,IAAI,CAACQ,EAAGC,IAAU,CAC7B,IAAMF,EAAWE,IAAU/B,EAE3B,OACEvC,EAACH,EAAA,CAAI,UAAU,KAAiB,GAAI,CAAE,QAAS,aAAc,EAC3D,SAAAG,EAAC8B,GAAA,CACC,cAAa,GACb,aAAY,OAAOwC,IACnB,UAAWvE,EAAgB,IAAI,OAC7BqE,EAAW,IAAIrE,EAAgB,MAAM,WAAa,EACpD,EACA,QAAS,IAAM6D,EAAWU,CAAK,EAC/B,GAAI,CACF,GAAIlB,IAAY,YAAce,EAAU,SAASC,CAAQ,EACzD,GAAIhB,IAAY,WAAae,EAAU,QAAQC,CAAQ,EACvD,GAAIhB,IAAY,UAAYe,EAAU,OAAOC,CAAQ,EACrD,CAAC,KAAKrE,EAAgB,MAAM,UAAU,EAAG,CACvC,GAAGuB,GAAW,KAAK,QACrB,EACA,GAAGA,GAAW,KAAK,EACrB,EAEC,SAAA8B,IAAY,UAAYkB,EAAQ,EACnC,GAnBuBA,CAoBzB,CAEJ,CAAC,EACH,EACF,CAEJ,CCtJA,OAAOzE,MAAS,oBAChB,OAAS,UAAAC,MAAc,uBAyCjB,cAAAE,MAAA,oBAlCN,IAAMC,GAAaH,EAAOD,CAAG,EAAE,CAAC,CAAE,MAAAgC,CAAM,KAAO,CAC7C,OAAQ,EACR,SAAU,IACV,MAAO,OACP,aAAc,EACd,SAAU,SACV,SAAU,WACV,MAAOA,EAAM,QAAQ,KAAK,QAC1B,gBAAiBA,EAAM,QAAQ,OACjC,EAAE,EAEI0C,GAAiBzE,EAAOD,CAAG,EAAE,KAAO,CACxC,IAAK,EACL,OAAQ,EACR,MAAO,OACP,KAAM,QACN,SAAU,WACV,gBAAiB,cACnB,EAAE,EAIK,SAAS2E,GAAoB,CAClC,MAAAtD,EACA,GAAAX,EACA,GAAGG,CACL,EAAwC,CACtC,OACEV,EAACC,GAAA,CACC,cAAY,oBACZ,GAAIM,EACJ,UAAWR,EAAgB,SAC1B,GAAGW,EAEJ,SAAAV,EAACuE,GAAA,CACC,cAAY,wBACZ,UAAWxE,EAAgB,YAC3B,GAAI,CACF,UAAW,eAAemB,eAC5B,EACF,EACF,CAEJ,CCpDA,OAAS,YAAAvB,GAAU,cAAA8E,GAAY,kBAAA7E,OAAsB,QAErD,OAAOC,OAAS,oBAEhB,OAAOiC,MAAgB,2BAEvB,OAAS,YAAAG,OAAgB,uBAgCjB,cAAAjC,MAAA,oBAfD,IAAM0E,GAAiBD,GAG5B,CAAC,CAAE,SAAAhE,EAAU,UAAAa,EAAW,QAAAd,EAAS,GAAAD,EAAI,GAAGG,CAAM,EAAGiE,IAAQ,CACzD,IAAMxE,EAAOK,GAAS,MAAQ,IAExBJ,EAAeI,GAAS,cAAgB,OAExCoE,EAAaC,GAAa1E,CAAI,EAE9BuB,EAAiB/B,GAAS,IAAIc,EAAUkB,GAAS,CACrD,GAAI/B,GAAe+B,CAAK,EAAG,CACzB,IAAMC,EAAaD,EAEnB,OACE3B,EAACM,EAAA,CAEC,QAAS,CAAE,GAAGE,EAAS,aAAAJ,CAAa,EACpC,GAAIkB,GAAW,MAEd,SAAAK,GAJIC,EAAW,GAKlB,EAGJ,OAAO,IACT,CAAC,EAED,OACE5B,EAACC,EAAA,CACC,IAAK0E,EACL,KAAMxE,EACN,cAAY,gBACZ,UAAWJ,EAAgB,OAC3B,GAAI,CACF,WAAY,EACZ,GAAII,IAAS,KAAO,CAAE,EAAG,GAAK,SAAU,CAAE,EAC1C,GAAIA,IAAS,KAAO,CAAE,EAAG,GAAK,UAAW,CAAE,EAC3C,GAAI,CAACmB,GAAW,aAAesD,EAC/B,GAAGrE,CACL,EACC,GAAGG,EAEJ,SAAAV,EAACmB,EAAA,CACC,UAAU,KACV,KAAMhB,EACN,cAAY,qBACZ,aAAcC,EACd,UAAWL,EAAgB,eAC3B,GAAI,CACF,GAAGuB,GAAW,SAChB,EAEC,SAAAI,EACH,EACF,CAEJ,CAAC,EACDgD,GAAe,YAAc,iBAEtB,SAASI,GAAc,CAC5B,UAAAC,EAAY,QACZ,GAAAxE,EACA,IAAAyE,EACA,MAAAV,EACA,SAAAF,EACA,YAAAa,EACA,SAAAC,EACA,GAAGxE,CACL,EAAyC,CACvC,GAAIqE,IAAc,UAAYC,GAAOC,GAAc,CACjD,IAAME,EAA0B,CAC9B,MAAO,EACP,OAAQ,EACR,YAAa,EACb,UAAW,QACX,aAAc,SAChB,EAEA,OACEnF,EAAC8B,EAAA,CACC,UAAW/B,EAAgB,MAC3B,cAAY,iBACZ,GAAI,CACF,MAAO,GACP,OAAQ,GACR,QAAS,IACT,WAAY,EACZ,OAAQ,UACR,aAAc,KACd,WAAY8B,GACVA,EAAM,YAAY,OAAO,CAAC,UAAW,YAAY,EAAG,CAClD,OAAQA,EAAM,YAAY,OAAO,MACjC,SAAUA,EAAM,YAAY,SAAS,KACvC,CAAC,EACH,GAAIuC,GAAY,CACd,QAAS,EACT,UAAWvC,GAAS,aAAaA,EAAM,KAAK,QAAQ,QAAQ,MAC9D,EACA,GAAGtB,CACL,EACC,GAAGG,EAEH,SAAAuE,IAAc,CACb,GAAIE,EACJ,QAASpF,EAAgB,UAC3B,CAAC,GACCC,EAACH,GAAA,CACC,UAAU,MACV,IAAKqF,GAAY,mBAAmBZ,IACpC,IAAKU,EACL,cAAY,uBACZ,UAAWjF,EAAgB,WAC3B,GAAIoF,EACN,EAEJ,EAIJ,OAAIJ,IAAc,QAEd/E,EAAC8B,EAAA,CACC,UAAW/B,EAAgB,MAC3B,cAAY,iBACZ,GAAI,CACF,MAAO,GACP,OAAQ,GACR,QAAS,IACT,WAAY,EACZ,OAAQ,UACR,aAAc,KACd,MAAO8B,GAASA,EAAM,KAAK,QAAQ,QAAQ,KAC3C,WAAYA,GACVA,EAAM,YAAY,OAAO,CAAC,UAAW,YAAY,EAAG,CAClD,OAAQA,EAAM,YAAY,OAAO,MACjC,SAAUA,EAAM,YAAY,SAAS,KACvC,CAAC,EACH,GAAIuC,GAAY,CACd,QAAS,EACT,UAAWvC,GAAS,aAAaA,EAAM,KAAK,QAAQ,QAAQ,MAC9D,EACA,GAAGtB,CACL,EACC,GAAGG,EAEJ,SAAAV,EAACoF,EAAA,CAAK,KAAK,cAAc,MAAO,GAAI,EACtC,EAIG,IACT,CAIA,SAASP,GAAa1E,EAA0C,CAC9D,IAAM0B,EAAQI,GAAS,EAEjBe,EAAa,CACjB,OAAQ,EACR,QAAS,KACT,SAAU,UACZ,EAEMqC,EAAU,GAAGxD,EAAM,KAAK,QAAQ,WAAW,cAAciB,EAASjB,EAAM,KAAK,QAAQ,WAAW,aAAc,CAAC,UAErH,OAAI1B,IAAS,IACJ,CACL,sBAAuB,CACrB,GAAG6C,EACH,KAAM,EACN,OAAQ,GACR,MAAO,MACT,EACA,YAAa,CACX,IAAK,GACL,WAAY,8BAA8BqC,GAC5C,EACA,WAAY,CACV,OAAQ,GACR,WAAY,2BAA2BA,GACzC,CACF,EAGK,CACL,sBAAuB,CACrB,GAAGrC,EACH,IAAK,EACL,MAAO,GACP,OAAQ,MACV,EACA,YAAa,CACX,KAAM,GACN,WAAY,6BAA6BqC,GAC3C,EACA,WAAY,CACV,MAAO,GACP,WAAY,4BAA4BA,GAC1C,CACF,CACF,CCjOA,OAAS,WAAAC,OAAe,QAExB,OAAOC,OAAsB,uBCF7B,OAAS,eAAAC,EAAa,aAAAC,GAAW,YAAAC,MAAgB,QAO1C,IAAMC,EACXC,GAC4B,CAC5B,GAAM,CAAClD,EAAamD,CAAkB,EAAIH,EAAS,EAAI,EAEjD,CAAC/C,EAAamD,CAAkB,EAAIJ,EAAS,EAAI,EAEjDlD,EAAcgD,EAAY,IAAM,CAC/BI,GACLA,EAAQ,WAAW,CACrB,EAAG,CAACA,CAAO,CAAC,EAENnD,EAAc+C,EAAY,IAAM,CAC/BI,GACLA,EAAQ,WAAW,CACrB,EAAG,CAACA,CAAO,CAAC,EAENG,EAAWP,EAAaQ,GAAgC,CAC5DH,EAAmB,CAACG,EAAS,cAAc,CAAC,EAC5CF,EAAmB,CAACE,EAAS,cAAc,CAAC,CAC9C,EAAG,CAAC,CAAC,EAEL,OAAAP,GAAU,IAAM,CACd,GAAKG,EAEL,OAAAG,EAASH,CAAO,EAChBA,EAAQ,GAAG,SAAUG,CAAQ,EAC7BH,EAAQ,GAAG,SAAUG,CAAQ,EAEtB,IAAM,CACXH,EAAQ,IAAI,SAAUG,CAAQ,EAC9BH,EAAQ,IAAI,SAAUG,CAAQ,CAChC,CACF,EAAG,CAACH,EAASG,CAAQ,CAAC,EAEf,CACL,YAAArD,EACA,YAAAC,EACA,YAAAH,EACA,YAAAC,CACF,CACF,EC9CA,OAAS,eAAA+C,GAAa,aAAAC,GAAW,YAAAC,OAAgB,QAO1C,SAASO,GACdL,EAC2B,CAC3B,GAAM,CAACM,EAAWC,CAAY,EAAIT,GAAS,EAAK,EAE1CU,EAAkBZ,GACrBa,GAAyB,CACxB,IAAMC,EAAWV,GAAS,QAAQ,GAAG,SACrC,GAAI,CAACU,EAAU,QAGbA,EAAS,QAAQ,oBAAsB,GACnCA,EAAS,MACTA,EAAS,MAEH,EACZD,EAAS,CACX,EACA,CAACT,CAAO,CACV,EAEMW,EAAef,GAAY,IAAM,CACrC,IAAMc,EAAWV,GAAS,QAAQ,GAAG,SACrC,GAAI,CAACU,EAAU,QAEIA,EAAS,UAAU,EAAIA,EAAS,KAAOA,EAAS,MACxD,CACb,EAAG,CAACV,CAAO,CAAC,EAEZ,OAAAH,GAAU,IAAM,CACd,IAAMa,EAAWV,GAAS,QAAQ,GAAG,SAChCU,IAELH,EAAaG,EAAS,UAAU,CAAC,EACjCV,EACG,GAAG,gBAAiB,IAAMO,EAAa,EAAI,CAAC,EAC5C,GAAG,gBAAiB,IAAMA,EAAa,EAAK,CAAC,EAC7C,GAAG,SAAU,IAAMA,EAAa,EAAK,CAAC,EAC3C,EAAG,CAACP,CAAO,CAAC,EAEL,CAAE,UAAAM,EAAW,aAAAK,EAAc,gBAAAH,CAAgB,CACpD,CChDA,OAAS,eAAAZ,GAAa,aAAAC,GAAW,YAAAC,OAAgB,QAO1C,SAASc,GACdZ,EAC2B,CAC3B,GAAM,CAACM,EAAWC,CAAY,EAAIT,GAAS,EAAK,EAE1CU,EAAkBZ,GACrBa,GAAyB,CACxB,IAAMI,EAAab,GAAS,QAAQ,GAAG,WACvC,GAAI,CAACa,EAAY,QAGfA,EAAW,QAAQ,oBAAsB,GACrCA,EAAW,MACXA,EAAW,MAEL,EACZJ,EAAS,CACX,EACA,CAACT,CAAO,CACV,EAEMW,EAAef,GAAY,IAAM,CACrC,IAAMiB,EAAab,GAAS,QAAQ,GAAG,WACvC,GAAI,CAACa,EAAY,QAEEA,EAAW,UAAU,EACpCA,EAAW,KACXA,EAAW,MACJ,CACb,EAAG,CAACb,CAAO,CAAC,EAEZ,OAAAH,GAAU,IAAM,CACd,IAAMgB,EAAab,GAAS,QAAQ,GAAG,WAClCa,IAELN,EAAaM,EAAW,UAAU,CAAC,EACnCb,EACG,GAAG,kBAAmB,IAAMO,EAAa,EAAI,CAAC,EAC9C,GAAG,kBAAmB,IAAMA,EAAa,EAAK,CAAC,EAC/C,GAAG,SAAU,IAAMA,EAAa,EAAK,CAAC,EAC3C,EAAG,CAACP,CAAO,CAAC,EAEL,CAAE,UAAAM,EAAW,aAAAK,EAAc,gBAAAH,CAAgB,CACpD,CCpDA,OAAS,eAAAZ,EAAa,aAAAC,GAAW,YAAAC,MAAgB,QAK1C,SAASgB,GACdd,EACuB,CACvB,GAAM,CAACe,EAAUC,CAAW,EAAIlB,EAAS,CAAC,EAEpC,CAACnD,EAAesE,CAAgB,EAAInB,EAAS,CAAC,EAE9C,CAAC7B,EAAaiD,CAAc,EAAIpB,EAAmB,CAAC,CAAC,EAErD9B,EAAa4B,EAChBlB,GAAkB,CACZsB,GACLA,EAAQ,SAAStB,CAAK,CACxB,EACA,CAACsB,CAAO,CACV,EAEMmB,EAASvB,EAAaQ,GAAgC,CAC1Dc,EAAed,EAAS,eAAe,CAAC,CAC1C,EAAG,CAAC,CAAC,EAECD,EAAWP,EAAaQ,GAAgC,CAC5Da,EAAiBb,EAAS,mBAAmB,CAAC,EAC9CY,EAAYZ,EAAS,eAAe,EAAE,MAAM,CAC9C,EAAG,CAAC,CAAC,EAEL,OAAAP,GAAU,IAAM,CACd,GAAKG,EAEL,OAAAmB,EAAOnB,CAAO,EACdG,EAASH,CAAO,EAChBA,EAAQ,GAAG,SAAUmB,CAAM,EAC3BnB,EAAQ,GAAG,SAAUG,CAAQ,EAC7BH,EAAQ,GAAG,SAAUG,CAAQ,EAEtB,IAAM,CACXH,EAAQ,IAAI,SAAUmB,CAAM,EAC5BnB,EAAQ,IAAI,SAAUG,CAAQ,EAC9BH,EAAQ,IAAI,SAAUG,CAAQ,CAChC,CACF,EAAG,CAACH,EAASmB,EAAQhB,CAAQ,CAAC,EAEvB,CACL,SAAAY,EACA,YAAA9C,EACA,cAAAtB,EACA,WAAAqB,CACF,CACF,CCrDA,OAAS,eAAA4B,EAAa,aAAAC,GAAW,UAAAuB,OAAc,QAKxC,SAASC,GACdrB,EACAsB,EACA,CACA,IAAMC,EAAcH,GAAO,CAAC,EAEtBI,EAAaJ,GAAsB,CAAC,CAAC,EAErCK,EAAoB,OAAOH,GAAa,SAAWA,EAAW,IAE9DI,EAAgB9B,EAAaQ,GAAsC,CACvEoB,EAAW,QAAUpB,EAClB,WAAW,EACX,IACCuB,GACEA,EAAU,cAAc,yBAAyB,CACrD,CACJ,EAAG,CAAC,CAAC,EAECC,EAAiBhC,EACpBQ,GAAgC,CAC/BmB,EAAY,QACVE,EAAoBrB,EAAS,eAAe,EAAE,MAClD,EACA,CAACqB,CAAiB,CACpB,EAEMI,EAAgBjC,EACpB,CAACQ,EAA6B0B,IAA+B,CAC3D,IAAMC,EAAS3B,EAAS,eAAe,EAEjC4B,EAAiB5B,EAAS,eAAe,EAEzC6B,EAAe7B,EAAS,aAAa,EAErC8B,EAAgBJ,IAAc,SAEpC1B,EAAS,eAAe,EAAE,QAAQ,CAAC+B,EAAYC,IAAc,CAC3D,IAAIC,EAAeF,EAAaH,EAEXD,EAAO,cAAcK,CAAS,EAEtC,QAAQE,GAAc,CACjC,GAAIJ,GAAiB,CAACD,EAAa,SAASK,CAAU,EAAG,OAErDP,EAAO,QAAQ,MACjBA,EAAO,YAAY,WAAW,QAAQQ,GAAY,CAChD,IAAMC,EAASD,EAAS,OAAO,EAE/B,GAAID,IAAeC,EAAS,OAASC,IAAW,EAAG,CACjD,IAAMC,EAAO,KAAK,KAAKD,CAAM,EAEzBC,IAAS,KACXJ,EAAeF,GAAc,EAAIH,IAE/BS,IAAS,IACXJ,EAAeF,GAAc,EAAIH,IAGvC,CAAC,EAGH,IAAMU,GACJL,GAAgB,GAAKd,EAAY,SAAW,IAExCoB,EAAYnB,EAAW,QAAQc,CAAU,EAE3CK,IACFA,EAAU,MAAM,UAAY,cAAcD,OAE9C,CAAC,CACH,CAAC,CACH,EACA,CAAC,CACH,EAEA,OAAA7C,GAAU,IAAM,CACd,GAAI,GAACG,GAAW,CAACsB,GAEjB,OAAAI,EAAc1B,CAAO,EACrB4B,EAAe5B,CAAO,EACtB6B,EAAc7B,CAAO,EAErBA,EACG,GAAG,SAAU0B,CAAa,EAC1B,GAAG,SAAUE,CAAc,EAC3B,GAAG,SAAUC,CAAa,EAC1B,GAAG,SAAUA,CAAa,EAEtB,IAAM,CACX7B,EACG,IAAI,SAAU0B,CAAa,EAC3B,IAAI,SAAUE,CAAc,EAC5B,IAAI,SAAUC,CAAa,EAC3B,IAAI,SAAUA,CAAa,CAChC,CAEF,EAAG,CAAC7B,EAAS6B,CAAa,CAAC,EAEpB,IACT,CCzGA,OAAS,eAAAjC,GAAa,aAAAC,GAAW,YAAAC,OAAgB,QAK1C,SAAS8C,GACd5C,EAC2B,CAC3B,GAAM,CAACgC,EAAgBa,CAAiB,EAAI/C,GAAS,CAAC,EAEhDgD,EAAWlD,GAAaQ,GAAgC,CAC5D,IAAM2C,EAAW,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG3C,EAAS,eAAe,CAAC,CAAC,EAEnEyC,EAAkBE,EAAW,GAAG,CAClC,EAAG,CAAC,CAAC,EAEL,OAAAlD,GAAU,IAAM,CACd,GAAKG,EAEL,OAAA8C,EAAS9C,CAAO,EAChBA,EAAQ,GAAG,SAAU8C,CAAQ,EAC7B9C,EAAQ,GAAG,SAAU8C,CAAQ,EAEtB,IAAM,CACX9C,EAAQ,IAAI,SAAU8C,CAAQ,EAAE,IAAI,SAAUA,CAAQ,CACxD,CACF,EAAG,CAAC9C,EAAS8C,CAAQ,CAAC,EAEf,CAAE,MAAOd,CAAe,CACjC,CC7BA,OAAS,eAAApC,GAAa,aAAAC,GAAW,YAAAC,OAAgB,QAEjD,OAAOH,OAAsB,uBAItB,SAASqD,GACdhD,EACApF,EACyB,CACzB,GAAM,CAACqI,EAAWC,CAAS,EAAIvD,GAAiB,CAC9C,cAAe,YACf,SAAU,GACV,GAAG/E,CACL,CAAC,EAEK,CAAC+B,EAAesE,CAAgB,EAAInB,GAAS,CAAC,EAE9CqD,EAAevD,GAClBlB,GAAkB,CACb,CAACsB,GAAW,CAACkD,GACjBlD,EAAQ,SAAStB,CAAK,CACxB,EACA,CAACsB,EAASkD,CAAS,CACrB,EAEM/C,EAAWP,GAAY,IAAM,CAC7B,CAACI,GAAW,CAACkD,IACjBjC,EAAiBjB,EAAQ,mBAAmB,CAAC,EAC7CkD,EAAU,SAASlD,EAAQ,mBAAmB,CAAC,EACjD,EAAG,CAACA,EAASkD,EAAWjC,CAAgB,CAAC,EAEzC,OAAApB,GAAU,IAAM,CACd,GAAKG,EACL,OAAAG,EAAS,EACTH,EAAQ,GAAG,SAAUG,CAAQ,EAC7BH,EAAQ,GAAG,SAAUG,CAAQ,EAEtB,IAAM,CACXH,EAAQ,IAAI,SAAUG,CAAQ,EAC9BH,EAAQ,IAAI,SAAUG,CAAQ,CAChC,CACF,EAAG,CAACH,EAASG,CAAQ,CAAC,EAEf,CACL,aAAAgD,EACA,UAAAF,EACA,UAAAC,EACA,cAAAvG,CACF,CACF,CPlCO,IAAMyG,GAAc,CACzBxI,EACAyI,IACsB,CACtB,GAAM,CAACzH,EAASoE,CAAO,EAAIL,GAAiB/E,EAASyI,CAAO,EAEtD,CAAE,YAAAvG,EAAa,YAAAC,EAAa,YAAAH,EAAa,YAAAC,CAAY,EACzDkD,EAAkBC,CAAO,EAErBsD,EAAcD,GAAS,IAAIE,GAAUA,EAAO,IAAI,EAEhDC,EAAQ1C,GAAgBd,CAAO,EAE/ByD,EAAYpD,GAAoBL,CAAO,EAEvC0D,EAAc9C,GAAsBZ,CAAO,EAE3C2D,EAAYf,GAAoB5C,CAAO,EAEvC4D,EAAUZ,GAAUhD,EAASpF,GAAS,MAAM,EAElDyG,GAAYrB,EAASpF,GAAS,QAAQ,EAEtC,IAAMiJ,EAAWnE,GAAQ,IACnB4D,GAAa,SAAS,UAAU,EAC3B,CACL,YAAa,IAAMG,EAAU,gBAAgB7G,CAAW,EACxD,YAAa,IAAM6G,EAAU,gBAAgB5G,CAAW,CAC1D,EAEEyG,GAAa,SAAS,YAAY,EAC7B,CACL,YAAa,IAAMI,EAAY,gBAAgB9G,CAAW,EAC1D,YAAa,IAAM8G,EAAY,gBAAgB7G,CAAW,CAC5D,EAEK,CACL,YAAAD,EACA,YAAAC,CACF,EACC,CAAC6G,EAAaD,EAAW5G,EAAaD,EAAa0G,CAAW,CAAC,EAElE,MAAO,CACL,QAAS,CACP,GAAG1I,EACH,GAAGoF,GAAS,eAAe,EAAE,OAC/B,EACA,YAAAsD,EACA,QAAA1H,EACA,QAAAoE,EAEA,OAAQ,CACN,YAAAlD,EACA,YAAAC,EACA,YAAa8G,EAAS,YACtB,YAAaA,EAAS,WACxB,EAEA,KAAML,EAEN,OAAQI,EAER,SAAUD,EAEV,SAAUF,EACV,WAAYC,CACd,CACF","sourcesContent":["export const carouselBreakpoints = {\n xs: '(min-width: 0px)',\n sm: '(min-width: 600px)',\n md: '(min-width: 900px)',\n lg: '(min-width: 1200px)',\n xl: '(min-width: 1536px)',\n};\n","/* eslint-disable react/function-component-definition */\nimport { Children, isValidElement } from 'react';\nimport Box from '@mui/material/Box';\nimport { styled } from '@mui/material/styles';\n\nimport { CarouselSlide } from './components/carousel-slide';\nimport { carouselClasses } from './classes';\nimport type {\n CarouselProps,\n CarouselStyledProps as StyledProps,\n} from './types';\n\nexport const StyledRoot = styled(Box, {\n shouldForwardProp: prop => prop !== 'axis',\n})<StyledProps>(({ axis }) => ({\n margin: 'auto',\n width: '100%',\n maxWidth: '100%',\n overflow: 'hidden',\n position: 'relative',\n ...(axis === 'y' && {\n height: '100%',\n }),\n}));\n\nexport const StyledContainer = styled(Box, {\n shouldForwardProp: prop => prop !== 'axis' && prop !== 'slideSpacing',\n})<StyledProps>(({ axis, slideSpacing }) => ({\n display: 'flex',\n backfaceVisibility: 'hidden',\n ...(axis === 'x' && {\n touchAction: 'pan-y pinch-zoom',\n marginLeft: `calc(${slideSpacing} * -1)`,\n }),\n ...(axis === 'y' && {\n height: '100%',\n flexDirection: 'column',\n touchAction: 'pan-x pinch-zoom',\n marginTop: `calc(${slideSpacing} * -1)`,\n }),\n}));\n\n// ----------------------------------------------------------------------\n\nexport function Carousel({\n carousel,\n children,\n sx,\n slotProps,\n ...props\n}: CarouselProps) {\n const { mainRef, options } = carousel;\n\n const axis = options?.axis ?? 'x';\n\n const slideSpacing = options?.slideSpacing ?? '0px';\n\n const direction = options?.direction ?? 'ltr';\n\n const renderChildren = Children.map(children, child => {\n if (isValidElement(child)) {\n const reactChild = child as React.ReactElement<{ key?: React.Key }>;\n\n return (\n <CarouselSlide\n key={reactChild.key}\n options={carousel.options}\n sx={slotProps?.slide}\n {...props}\n >\n {child}\n </CarouselSlide>\n );\n }\n return null;\n });\n\n return (\n <StyledRoot\n sx={sx}\n axis={axis}\n ref={mainRef}\n dir={direction}\n className={carouselClasses.root}\n >\n <StyledContainer\n component=\"ul\"\n axis={axis}\n slideSpacing={slideSpacing}\n className={carouselClasses.container}\n sx={{\n ...(carousel.pluginNames?.includes('autoHeight') && {\n alignItems: 'flex-start',\n transition: theme =>\n theme.transitions.create(['height'], {\n easing: theme.transitions.easing.easeInOut,\n duration: theme.transitions.duration.shorter,\n }),\n }),\n ...slotProps?.container,\n }}\n >\n {renderChildren}\n </StyledContainer>\n </StyledRoot>\n );\n}\n","/* eslint-disable react/function-component-definition */\nimport type { BoxProps } from '@mui/material/Box';\nimport Box from '@mui/material/Box';\nimport { styled } from '@mui/material/styles';\n\nimport { carouselClasses } from '../classes';\nimport type {\n CarouselInputValue as InputValue,\n CarouselObjectValue as ObjectValue,\n CarouselSlideProps,\n CarouselStyledProps as StyledProps,\n} from '../types';\n\n// ----------------------------------------------------------------------\n\nconst StyledRoot = styled(Box, {\n shouldForwardProp: prop => prop !== 'axis' && prop !== 'slideSpacing',\n})<StyledProps>(({ axis, slideSpacing }) => ({\n display: 'block',\n position: 'relative',\n ...(axis === 'x' && {\n minWidth: 0,\n paddingLeft: slideSpacing,\n }),\n ...(axis === 'y' && {\n minHeight: 0,\n paddingTop: slideSpacing,\n }),\n}));\n\nconst StyledContent = styled(Box)(() => ({\n overflow: 'hidden',\n position: 'relative',\n borderRadius: 'inherit',\n}));\n\n// ----------------------------------------------------------------------\n\nexport function CarouselSlide({\n sx,\n options,\n children,\n ...other\n}: BoxProps & CarouselSlideProps) {\n const slideSize = getSize(options?.slidesToShow);\n\n return (\n <StyledRoot\n component=\"li\"\n axis={options?.axis ?? 'x'}\n slideSpacing={options?.slideSpacing}\n className={carouselClasses.slide}\n sx={{\n flex: slideSize,\n ...sx,\n }}\n {...other}\n >\n {options?.parallax ? (\n <StyledContent className={carouselClasses.slideContent}>\n <div className=\"slide__parallax__layer\">{children}</div>\n </StyledContent>\n ) : (\n children\n )}\n </StyledRoot>\n );\n}\n\n// ----------------------------------------------------------------------\n\nfunction getSize(slidesToShow: InputValue): InputValue {\n if (slidesToShow && typeof slidesToShow === 'object') {\n return Object.keys(slidesToShow).reduce<ObjectValue>((acc, key) => {\n const sizeByKey = slidesToShow[key];\n acc[key] = getValue(sizeByKey);\n return acc;\n }, {});\n }\n\n return getValue(slidesToShow);\n}\n\nfunction getValue(value: string | number = 1): string {\n if (typeof value === 'string') {\n const isSupported =\n value === 'auto' || value.endsWith('%') || value.endsWith('px');\n if (!isSupported) {\n throw new Error('Only accepts values: auto, px, %, or number.');\n }\n // value is either 'auto', ends with '%', or ends with 'px'\n return `0 0 ${value}`;\n }\n\n if (typeof value === 'number') {\n return `0 0 ${100 / value}%`;\n }\n\n // Default case should not be reached due to the type signature, but we include it for safety\n throw new Error(\n 'Invalid value type. Only accepts values: auto, px, %, or number.',\n );\n}\n","export const carouselClasses = {\n root: 'mnl__carousel__root',\n container: 'mnl__carousel__container',\n // dot\n dots: 'mnl__carousel__dots',\n dot: 'mnl__carousel__dot',\n // arrow\n arrows: 'mnl__carousel__arrows',\n arrowsLabel: 'mnl__carousel__arrows_label',\n arrowPrev: 'mnl__carousel__btn--prev',\n arrowNext: 'mnl__carousel__btn--next',\n arrowSvg: 'mnl__carousel__btn__svg',\n // slide\n slide: 'mnl__carousel__slide',\n slideContent: 'mnl__carousel__slide__content',\n // thumb\n thumbs: 'mnl__carousel__thumbs',\n thumb: 'mnl__carousel__thumb',\n thumbContainer: 'mnl__carousel__thumbs__container',\n thumbImage: 'mnl__carousel__thumb__image',\n // progress\n progress: 'mnl__carousel__progress',\n progressBar: 'mnl__carousel__progress__bar',\n state: { selected: 'state--selected', disabled: 'state--disabled' },\n};\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable react/function-component-definition */\nimport Box from '@mui/material/Box';\nimport type { ButtonBaseProps } from '@mui/material/ButtonBase';\nimport ButtonBase, { buttonBaseClasses } from '@mui/material/ButtonBase';\nimport type { StackProps } from '@mui/material/Stack';\nimport Stack from '@mui/material/Stack';\nimport type { CSSObject } from '@mui/material/styles';\nimport { useTheme } from '@mui/material/styles';\nimport SvgIcon from '@mui/material/SvgIcon';\n\nimport { stylesMode, varAlpha } from 'theme/styles';\n\nimport { carouselClasses } from '../classes';\nimport type {\n CarouselArrowButtonProps,\n CarouselArrowButtonsProps,\n} from '../types';\n\nexport function CarouselArrowBasicButtons({\n options,\n slotProps,\n totalSlides,\n selectedIndex,\n //\n onClickPrev,\n onClickNext,\n disablePrev,\n disableNext,\n sx,\n ...other\n}: StackProps & CarouselArrowButtonsProps) {\n return (\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n display=\"inline-flex\"\n className={carouselClasses.arrows}\n sx={{\n gap: 0.5,\n zIndex: 9,\n color: 'action.active',\n ...sx,\n }}\n {...other}\n >\n <ArrowButton\n variant=\"prev\"\n options={options}\n disabled={disablePrev}\n onClick={onClickPrev}\n svgIcon={slotProps?.prevBtn?.svgIcon}\n svgSize={slotProps?.prevBtn?.svgSize}\n sx={slotProps?.prevBtn?.sx}\n />\n\n <ArrowButton\n variant=\"next\"\n options={options}\n disabled={disableNext}\n onClick={onClickNext}\n svgIcon={slotProps?.nextBtn?.svgIcon}\n svgSize={slotProps?.prevBtn?.svgSize}\n sx={slotProps?.prevBtn?.sx}\n />\n </Stack>\n );\n}\n\n// ----------------------------------------------------------------------\n\nexport function CarouselArrowNumberButtons({\n options,\n slotProps,\n totalSlides,\n selectedIndex,\n //\n onClickPrev,\n onClickNext,\n disablePrev,\n disableNext,\n sx,\n ...other\n}: StackProps & CarouselArrowButtonsProps) {\n const theme = useTheme();\n\n return (\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n display=\"inline-flex\"\n className={carouselClasses.arrows}\n sx={{\n p: 0.5,\n gap: 0.25,\n zIndex: 9,\n borderRadius: 1.25,\n color: 'common.white',\n bgcolor: varAlpha(theme.vars.palette.grey['900Channel'], 0.48),\n ...sx,\n }}\n {...other}\n >\n <ArrowButton\n variant=\"prev\"\n options={options}\n disabled={disablePrev}\n onClick={onClickPrev}\n sx={{ p: 0.75, borderRadius: 'inherit', ...slotProps?.prevBtn?.sx }}\n svgIcon={slotProps?.prevBtn?.svgIcon}\n svgSize={slotProps?.prevBtn?.svgSize ?? 16}\n />\n\n <Box\n component=\"span\"\n className={carouselClasses.arrowsLabel}\n sx={{ mx: 0.5, typography: 'subtitle2' }}\n data-testid=\"carousel-number-display\"\n >\n {selectedIndex}/{totalSlides}\n </Box>\n\n <ArrowButton\n variant=\"next\"\n options={options}\n disabled={disableNext}\n onClick={onClickNext}\n sx={{ p: 0.75, borderRadius: 'inherit', ...slotProps?.nextBtn?.sx }}\n svgIcon={slotProps?.nextBtn?.svgIcon}\n svgSize={slotProps?.prevBtn?.svgSize ?? 16}\n />\n </Stack>\n );\n}\n\n// ----------------------------------------------------------------------\n\nexport function CarouselArrowFloatButtons({\n options,\n slotProps,\n onClickPrev,\n onClickNext,\n disablePrev,\n disableNext,\n}: StackProps & CarouselArrowButtonsProps) {\n const baseStyles: CSSObject = {\n zIndex: 9,\n top: '50%',\n borderRadius: 1.5,\n position: 'absolute',\n color: 'common.white',\n bgcolor: 'text.primary',\n transform: 'translateY(-50%)',\n '&:hover': { opacity: 0.8 },\n [stylesMode.dark]: { color: 'grey.800' },\n };\n\n return (\n <>\n <ArrowButton\n variant=\"prev\"\n options={options}\n disabled={disablePrev}\n onClick={onClickPrev}\n svgIcon={slotProps?.prevBtn?.svgIcon}\n svgSize={slotProps?.prevBtn?.svgSize}\n sx={{ left: -16, ...baseStyles, ...slotProps?.prevBtn?.sx }}\n />\n\n <ArrowButton\n variant=\"next\"\n options={options}\n disabled={disableNext}\n onClick={onClickNext}\n svgIcon={slotProps?.nextBtn?.svgIcon}\n svgSize={slotProps?.nextBtn?.svgSize}\n sx={{ right: -16, ...baseStyles, ...slotProps?.nextBtn?.sx }}\n />\n </>\n );\n}\n\n// ----------------------------------------------------------------------\n\nexport function ArrowButton({\n sx,\n svgIcon,\n svgSize,\n options,\n variant,\n ...other\n}: ButtonBaseProps & CarouselArrowButtonProps) {\n const arrowPrev = variant === 'prev';\n const arrowNext = variant === 'next';\n\n const prevSvg = svgIcon || (\n <path\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n d=\"M15.488 4.43a.75.75 0 0 1 .081 1.058L9.988 12l5.581 6.512a.75.75 0 1 1-1.138.976l-6-7a.75.75 0 0 1 0-.976l6-7a.75.75 0 0 1 1.057-.081\"\n clipRule=\"evenodd\"\n />\n );\n\n const nextSvg = svgIcon || (\n <path\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n d=\"M8.512 4.43a.75.75 0 0 1 1.057.082l6 7a.75.75 0 0 1 0 .976l-6 7a.75.75 0 0 1-1.138-.976L14.012 12L8.431 5.488a.75.75 0 0 1 .08-1.057\"\n clipRule=\"evenodd\"\n />\n );\n\n return (\n <ButtonBase\n className={\n arrowPrev ? carouselClasses.arrowPrev : carouselClasses.arrowPrev\n }\n aria-label={arrowPrev ? 'Prev button' : 'Next button'}\n sx={{\n p: 1,\n borderRadius: '50%',\n boxSizing: 'content-box',\n transition: theme =>\n theme.transitions.create(['all'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.short,\n }),\n [`&.${buttonBaseClasses.disabled}`]: {\n opacity: 0.4,\n },\n ...sx,\n ...(options?.direction === 'rtl' && {\n ...(arrowPrev && { right: -16, left: 'auto' }),\n ...(arrowNext && { left: -16, right: 'auto' }),\n }),\n }}\n {...other}\n >\n <SvgIcon\n className={carouselClasses.arrowSvg}\n sx={{\n width: svgSize ?? 20,\n height: svgSize ?? 20,\n ...(options?.axis === 'y' && { transform: ' rotate(90deg)' }),\n ...(options?.direction === 'rtl' && { transform: ' scaleX(-1)' }),\n }}\n >\n {arrowPrev ? prevSvg : nextSvg}\n </SvgIcon>\n </ButtonBase>\n );\n}\n","/* eslint-disable react/function-component-definition */\nimport Box from '@mui/material/Box';\nimport ButtonBase from '@mui/material/ButtonBase';\nimport NoSsr from '@mui/material/NoSsr';\nimport { useTheme } from '@mui/material/styles';\n\nimport { stylesMode, varAlpha } from 'theme/styles';\n\nimport { carouselClasses } from '../classes';\nimport type { CarouselDotButtonsProps } from '../types';\n\n// ----------------------------------------------------------------------\n\nexport function CarouselDotButtons({\n sx,\n gap,\n slotProps,\n onClickDot,\n scrollSnaps,\n selectedIndex,\n fallbackCount = 1,\n variant = 'circular',\n fallback = false,\n ...other\n}: CarouselDotButtonsProps) {\n const theme = useTheme();\n\n const GAPS = {\n number: gap ?? 6,\n rounded: gap ?? 2,\n circular: gap ?? 2,\n };\n\n const SIZES = {\n circular: slotProps?.dot?.size ?? 18,\n number: slotProps?.dot?.size ?? 28,\n };\n\n const renderFallback = (\n <Box\n sx={{\n height: SIZES.circular,\n width: `calc(${fallbackCount * SIZES.circular + GAPS.circular * (fallbackCount - 1)}px )`,\n ...(variant === 'number' && {\n height: SIZES.number,\n width: `calc(${fallbackCount * SIZES.number + GAPS.number * (fallbackCount - 1)}px )`,\n }),\n }}\n />\n );\n\n const dotStyles = {\n circular: (selected: boolean) => ({\n width: SIZES.circular,\n height: SIZES.circular,\n '&::before': {\n width: 8,\n height: 8,\n content: '\"\"',\n opacity: 0.24,\n borderRadius: '50%',\n bgcolor: 'primary.main',\n transition: theme.transitions.create(['opacity'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.short,\n }),\n ...(selected && { opacity: 1 }),\n },\n }),\n rounded: (selected: boolean) => ({\n width: SIZES.circular,\n height: SIZES.circular,\n '&::before': {\n width: 8,\n height: 8,\n content: '\"\"',\n opacity: 0.24,\n borderRadius: '50%',\n bgcolor: 'primary.main',\n transition: theme.transitions.create(['width', 'opacity'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.short,\n }),\n ...(selected && {\n width: 'calc(100% - 4px)',\n opacity: 1,\n borderRadius: 1,\n }),\n },\n }),\n number: (selected: boolean) => ({\n width: SIZES.number,\n height: SIZES.number,\n borderRadius: '50%',\n typography: 'caption',\n color: 'text.disabled',\n border: `solid 1px ${varAlpha(theme.vars.palette.grey['500Channel'], 0.16)}`,\n ...(selected && {\n color: 'common.white',\n bgcolor: 'text.primary',\n fontWeight: 'fontWeightSemiBold',\n [stylesMode.dark]: { color: 'grey.800' },\n }),\n }),\n };\n\n return (\n <NoSsr fallback={fallback ? renderFallback : null}>\n <Box\n data-testid=\"carousel-dots\"\n component=\"ul\"\n className={carouselClasses.dots}\n sx={{\n zIndex: 9,\n display: 'inline-flex',\n ...(variant === 'circular' && { gap: `${GAPS.circular}px` }),\n ...(variant === 'rounded' && { gap: `${GAPS.rounded}px` }),\n ...(variant === 'number' && { gap: `${GAPS.number}px` }),\n ...sx,\n }}\n {...other}\n >\n {scrollSnaps.map((_, index) => {\n const selected = index === selectedIndex;\n\n return (\n <Box component=\"li\" key={index} sx={{ display: 'inline-flex' }}>\n <ButtonBase\n disableRipple\n aria-label={`dot-${index}`}\n className={carouselClasses.dot.concat(\n selected ? ` ${carouselClasses.state.selected}` : '',\n )}\n onClick={() => onClickDot(index)}\n sx={{\n ...(variant === 'circular' && dotStyles.circular(selected)),\n ...(variant === 'rounded' && dotStyles.rounded(selected)),\n ...(variant === 'number' && dotStyles.number(selected)),\n [`&.${carouselClasses.state.selected}`]: {\n ...slotProps?.dot?.selected,\n },\n ...slotProps?.dot?.sx,\n }}\n >\n {variant === 'number' && index + 1}\n </ButtonBase>\n </Box>\n );\n })}\n </Box>\n </NoSsr>\n );\n}\n","/* eslint-disable react/function-component-definition */\nimport type { BoxProps } from '@mui/material/Box';\nimport Box from '@mui/material/Box';\nimport { styled } from '@mui/material/styles';\n\nimport { carouselClasses } from '../classes';\nimport type { CarouselProgressBarProps } from '../types';\n\n// ----------------------------------------------------------------------\n\nconst StyledRoot = styled(Box)(({ theme }) => ({\n height: 6,\n maxWidth: 120,\n width: '100%',\n borderRadius: 6,\n overflow: 'hidden',\n position: 'relative',\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.divider,\n}));\n\nconst StyledProgress = styled(Box)(() => ({\n top: 0,\n bottom: 0,\n width: '100%',\n left: '-100%',\n position: 'absolute',\n backgroundColor: 'currentColor',\n}));\n\n// ----------------------------------------------------------------------\n\nexport function CarouselProgressBar({\n value,\n sx,\n ...other\n}: BoxProps & CarouselProgressBarProps) {\n return (\n <StyledRoot\n data-testid=\"carousel-progress\"\n sx={sx}\n className={carouselClasses.progress}\n {...other}\n >\n <StyledProgress\n data-testid=\"carousel-progress-bar\"\n className={carouselClasses.progressBar}\n sx={{\n transform: `translate3d(${value}%, 0px, 0px)`,\n }}\n />\n </StyledRoot>\n );\n}\n","/* eslint-disable react/function-component-definition */\nimport { Children, forwardRef, isValidElement } from 'react';\nimport type { BoxProps } from '@mui/material/Box';\nimport Box from '@mui/material/Box';\nimport type { ButtonBaseProps } from '@mui/material/ButtonBase';\nimport ButtonBase from '@mui/material/ButtonBase';\nimport type { CSSObject, SxProps, Theme } from '@mui/material/styles';\nimport { useTheme } from '@mui/material/styles';\n\nimport Icon from 'components/Icon';\nimport { varAlpha } from 'theme/styles';\n\nimport { StyledContainer, StyledRoot } from '../carousel';\nimport { carouselClasses } from '../classes';\nimport type {\n CarouselOptions,\n CarouselThumbProps,\n CarouselThumbsProps,\n} from '../types';\n\nimport { CarouselSlide } from './carousel-slide';\n\n// ----------------------------------------------------------------------\n\nexport const CarouselThumbs = forwardRef<\n HTMLDivElement,\n BoxProps & CarouselThumbsProps\n>(({ children, slotProps, options, sx, ...other }, ref) => {\n const axis = options?.axis ?? 'x';\n\n const slideSpacing = options?.slideSpacing ?? '12px';\n\n const maskStyles = useMaskStyle(axis);\n\n const renderChildren = Children.map(children, child => {\n if (isValidElement(child)) {\n const reactChild = child as React.ReactElement<{ key?: React.Key }>;\n\n return (\n <CarouselSlide\n key={reactChild.key}\n options={{ ...options, slideSpacing }}\n sx={slotProps?.slide}\n >\n {child}\n </CarouselSlide>\n );\n }\n return null;\n });\n\n return (\n <StyledRoot\n ref={ref}\n axis={axis}\n data-testid=\"carousel-root\"\n className={carouselClasses.thumbs}\n sx={{\n flexShrink: 0,\n ...(axis === 'x' && { p: 0.5, maxWidth: 1 }),\n ...(axis === 'y' && { p: 0.5, maxHeight: 1 }),\n ...(!slotProps?.disableMask && maskStyles),\n ...sx,\n }}\n {...other}\n >\n <StyledContainer\n component=\"ul\"\n axis={axis}\n data-testid=\"carousel-container\"\n slideSpacing={slideSpacing}\n className={carouselClasses.thumbContainer}\n sx={{\n ...slotProps?.container,\n }}\n >\n {renderChildren}\n </StyledContainer>\n </StyledRoot>\n );\n});\nCarouselThumbs.displayName = 'CarouselThumbs';\n\nexport function CarouselThumb({\n thumbType = 'image',\n sx,\n src,\n index,\n selected,\n imageRender,\n thumbAlt,\n ...other\n}: ButtonBaseProps & CarouselThumbProps) {\n if (thumbType === 'image' && (src || imageRender)) {\n const sxThumb: SxProps<Theme> = {\n width: 1,\n height: 1,\n aspectRatio: 1,\n objectFit: 'cover',\n borderRadius: 'inherit',\n };\n\n return (\n <ButtonBase\n className={carouselClasses.thumb}\n data-testid=\"carousel-thumb\"\n sx={{\n width: 64,\n height: 64,\n opacity: 0.48,\n flexShrink: 0,\n cursor: 'pointer',\n borderRadius: 1.25,\n transition: theme =>\n theme.transitions.create(['opacity', 'box-shadow'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.short,\n }),\n ...(selected && {\n opacity: 1,\n boxShadow: theme => `0 0 0 2px ${theme.vars.palette.primary.main}`,\n }),\n ...sx,\n }}\n {...other}\n >\n {imageRender?.({\n sx: sxThumb,\n classes: carouselClasses.thumbImage,\n }) || (\n <Box\n component=\"img\"\n alt={thumbAlt || `Imagem do slide ${index}`}\n src={src}\n data-testid=\"carousel-thumb-image\"\n className={carouselClasses.thumbImage}\n sx={sxThumb}\n />\n )}\n </ButtonBase>\n );\n }\n\n if (thumbType === 'video') {\n return (\n <ButtonBase\n className={carouselClasses.thumb}\n data-testid=\"carousel-thumb\"\n sx={{\n width: 64,\n height: 64,\n opacity: 0.48,\n flexShrink: 0,\n cursor: 'pointer',\n borderRadius: 1.25,\n color: theme => theme.vars.palette.primary.main,\n transition: theme =>\n theme.transitions.create(['opacity', 'box-shadow'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.short,\n }),\n ...(selected && {\n opacity: 1,\n boxShadow: theme => `0 0 0 2px ${theme.vars.palette.primary.main}`,\n }),\n ...sx,\n }}\n {...other}\n >\n <Icon icon=\"PLAY_CIRCLE\" width={32} />\n </ButtonBase>\n );\n }\n\n return null;\n}\n\n// ----------------------------------------------------------------------\n\nfunction useMaskStyle(axis: CarouselOptions['axis']): CSSObject {\n const theme = useTheme();\n\n const baseStyles = {\n zIndex: 9,\n content: '\"\"',\n position: 'absolute',\n };\n\n const bgcolor = `${theme.vars.palette.background.paper} 20%, ${varAlpha(theme.vars.palette.background.paperChannel, 0)} 100%)`;\n\n if (axis === 'y') {\n return {\n '&::before, &::after': {\n ...baseStyles,\n left: 0,\n height: 40,\n width: '100%',\n },\n '&::before': {\n top: -8,\n background: `linear-gradient(to bottom, ${bgcolor}`,\n },\n '&::after': {\n bottom: -8,\n background: `linear-gradient(to top, ${bgcolor}`,\n },\n };\n }\n\n return {\n '&::before, &::after': {\n ...baseStyles,\n top: 0,\n width: 40,\n height: '100%',\n },\n '&::before': {\n left: -8,\n background: `linear-gradient(to right, ${bgcolor}`,\n },\n '&::after': {\n right: -8,\n background: `linear-gradient(to left, ${bgcolor}`,\n },\n };\n}\n","import { useMemo } from 'react';\nimport type { EmblaPluginType } from 'embla-carousel';\nimport useEmblaCarousel from 'embla-carousel-react';\n\nimport type { CarouselOptions, UseCarouselReturn } from '../types';\n\nimport { useCarouselArrows } from './use-carousel-arrows';\nimport { useCarouselAutoPlay } from './use-carousel-auto-play';\nimport { useCarouselAutoScroll } from './use-carousel-auto-scroll';\nimport { useCarouselDots } from './use-carousel-dots';\nimport { useParallax } from './use-carousel-parallax';\nimport { useCarouselProgress } from './use-carousel-progress';\nimport { useThumbs } from './use-thumbs';\n\n// ----------------------------------------------------------------------\n\nexport const useCarousel = (\n options?: CarouselOptions,\n plugins?: EmblaPluginType[],\n): UseCarouselReturn => {\n const [mainRef, mainApi] = useEmblaCarousel(options, plugins);\n\n const { disablePrev, disableNext, onClickPrev, onClickNext } =\n useCarouselArrows(mainApi);\n\n const pluginNames = plugins?.map(plugin => plugin.name);\n\n const _dots = useCarouselDots(mainApi);\n\n const _autoplay = useCarouselAutoPlay(mainApi);\n\n const _autoScroll = useCarouselAutoScroll(mainApi);\n\n const _progress = useCarouselProgress(mainApi);\n\n const _thumbs = useThumbs(mainApi, options?.thumbs);\n\n useParallax(mainApi, options?.parallax);\n\n const controls = useMemo(() => {\n if (pluginNames?.includes('autoplay')) {\n return {\n onClickPrev: () => _autoplay.onClickAutoplay(onClickPrev),\n onClickNext: () => _autoplay.onClickAutoplay(onClickNext),\n };\n }\n if (pluginNames?.includes('autoScroll')) {\n return {\n onClickPrev: () => _autoScroll.onClickAutoplay(onClickPrev),\n onClickNext: () => _autoScroll.onClickAutoplay(onClickNext),\n };\n }\n return {\n onClickPrev,\n onClickNext,\n };\n }, [_autoScroll, _autoplay, onClickNext, onClickPrev, pluginNames]);\n\n return {\n options: {\n ...options,\n ...mainApi?.internalEngine().options,\n },\n pluginNames,\n mainRef,\n mainApi,\n // arrows\n arrows: {\n disablePrev,\n disableNext,\n onClickPrev: controls.onClickPrev,\n onClickNext: controls.onClickNext,\n },\n // dots\n dots: _dots,\n // thumbs\n thumbs: _thumbs,\n // progress\n progress: _progress,\n // autoplay\n autoplay: _autoplay,\n autoScroll: _autoScroll,\n };\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport type { EmblaCarouselType } from 'embla-carousel';\n\nimport type { UseCarouselArrowsReturn } from '../types';\n\n// ----------------------------------------------------------------------\n\nexport const useCarouselArrows = (\n mainApi?: EmblaCarouselType,\n): UseCarouselArrowsReturn => {\n const [disablePrev, setDisabledPrevBtn] = useState(true);\n\n const [disableNext, setDisabledNextBtn] = useState(true);\n\n const onClickPrev = useCallback(() => {\n if (!mainApi) return;\n mainApi.scrollPrev();\n }, [mainApi]);\n\n const onClickNext = useCallback(() => {\n if (!mainApi) return;\n mainApi.scrollNext();\n }, [mainApi]);\n\n const onSelect = useCallback((_mainApi: EmblaCarouselType) => {\n setDisabledPrevBtn(!_mainApi.canScrollPrev());\n setDisabledNextBtn(!_mainApi.canScrollNext());\n }, []);\n\n useEffect(() => {\n if (!mainApi) return;\n\n onSelect(mainApi);\n mainApi.on('reInit', onSelect);\n mainApi.on('select', onSelect);\n\n return () => {\n mainApi.off('reInit', onSelect);\n mainApi.off('select', onSelect);\n };\n }, [mainApi, onSelect]);\n\n return {\n disablePrev,\n disableNext,\n onClickPrev,\n onClickNext,\n };\n};\n","/* eslint-disable @typescript-eslint/ban-ts-comment */\n// @ts-nocheck\nimport { useCallback, useEffect, useState } from 'react';\nimport type { EmblaCarouselType } from 'embla-carousel';\n\nimport type { UseCarouselAutoPlayReturn } from '../types';\n\n// ----------------------------------------------------------------------\n\nexport function useCarouselAutoPlay(\n mainApi?: EmblaCarouselType,\n): UseCarouselAutoPlayReturn {\n const [isPlaying, setIsPlaying] = useState(false);\n\n const onClickAutoplay = useCallback(\n (callback: () => void) => {\n const autoplay = mainApi?.plugins()?.autoplay;\n if (!autoplay) return;\n\n const resetOrStop =\n autoplay.options.stopOnInteraction === false\n ? autoplay.reset\n : autoplay.stop;\n\n resetOrStop();\n callback();\n },\n [mainApi],\n );\n\n const onTogglePlay = useCallback(() => {\n const autoplay = mainApi?.plugins()?.autoplay;\n if (!autoplay) return;\n\n const playOrStop = autoplay.isPlaying() ? autoplay.stop : autoplay.play;\n playOrStop();\n }, [mainApi]);\n\n useEffect(() => {\n const autoplay = mainApi?.plugins()?.autoplay;\n if (!autoplay) return;\n\n setIsPlaying(autoplay.isPlaying());\n mainApi\n .on('autoplay:play', () => setIsPlaying(true))\n .on('autoplay:stop', () => setIsPlaying(false))\n .on('reInit', () => setIsPlaying(false));\n }, [mainApi]);\n\n return { isPlaying, onTogglePlay, onClickAutoplay };\n}\n","/* eslint-disable @typescript-eslint/ban-ts-comment */\n// @ts-nocheck\nimport { useCallback, useEffect, useState } from 'react';\nimport type { EmblaCarouselType } from 'embla-carousel';\n\nimport type { UseCarouselAutoPlayReturn } from '../types';\n\n// ----------------------------------------------------------------------\n\nexport function useCarouselAutoScroll(\n mainApi?: EmblaCarouselType,\n): UseCarouselAutoPlayReturn {\n const [isPlaying, setIsPlaying] = useState(false);\n\n const onClickAutoplay = useCallback(\n (callback: () => void) => {\n const autoScroll = mainApi?.plugins()?.autoScroll;\n if (!autoScroll) return;\n\n const resetOrStop =\n autoScroll.options.stopOnInteraction === false\n ? autoScroll.reset\n : autoScroll.stop;\n\n resetOrStop();\n callback();\n },\n [mainApi],\n );\n\n const onTogglePlay = useCallback(() => {\n const autoScroll = mainApi?.plugins()?.autoScroll;\n if (!autoScroll) return;\n\n const playOrStop = autoScroll.isPlaying()\n ? autoScroll.stop\n : autoScroll.play;\n playOrStop();\n }, [mainApi]);\n\n useEffect(() => {\n const autoScroll = mainApi?.plugins()?.autoScroll;\n if (!autoScroll) return;\n\n setIsPlaying(autoScroll.isPlaying());\n mainApi\n .on('autoScroll:play', () => setIsPlaying(true))\n .on('autoScroll:stop', () => setIsPlaying(false))\n .on('reInit', () => setIsPlaying(false));\n }, [mainApi]);\n\n return { isPlaying, onTogglePlay, onClickAutoplay };\n}\n","import { useCallback, useEffect, useState } from 'react';\nimport type { EmblaCarouselType } from 'embla-carousel';\n\nimport type { UseCarouselDotsReturn } from '../types';\n\nexport function useCarouselDots(\n mainApi?: EmblaCarouselType,\n): UseCarouselDotsReturn {\n const [dotCount, setDotCount] = useState(0);\n\n const [selectedIndex, setSelectedIndex] = useState(0);\n\n const [scrollSnaps, setScrollSnaps] = useState<number[]>([]);\n\n const onClickDot = useCallback(\n (index: number) => {\n if (!mainApi) return;\n mainApi.scrollTo(index);\n },\n [mainApi],\n );\n\n const onInit = useCallback((_mainApi: EmblaCarouselType) => {\n setScrollSnaps(_mainApi.scrollSnapList());\n }, []);\n\n const onSelect = useCallback((_mainApi: EmblaCarouselType) => {\n setSelectedIndex(_mainApi.selectedScrollSnap());\n setDotCount(_mainApi.scrollSnapList().length);\n }, []);\n\n useEffect(() => {\n if (!mainApi) return;\n\n onInit(mainApi);\n onSelect(mainApi);\n mainApi.on('reInit', onInit);\n mainApi.on('reInit', onSelect);\n mainApi.on('select', onSelect);\n\n return () => {\n mainApi.off('reInit', onInit);\n mainApi.off('reInit', onSelect);\n mainApi.off('select', onSelect);\n };\n }, [mainApi, onInit, onSelect]);\n\n return {\n dotCount,\n scrollSnaps,\n selectedIndex,\n onClickDot,\n };\n}\n","import { useCallback, useEffect, useRef } from 'react';\nimport type { EmblaCarouselType, EmblaEventType } from 'embla-carousel';\n\nimport type { CarouselOptions } from '../types';\n\nexport function useParallax(\n mainApi?: EmblaCarouselType,\n parallax?: CarouselOptions['parallax'],\n) {\n const tweenFactor = useRef(0);\n\n const tweenNodes = useRef<HTMLElement[]>([]);\n\n const TWEEN_FACTOR_BASE = typeof parallax === 'number' ? parallax : 0.24;\n\n const setTweenNodes = useCallback((_mainApi: EmblaCarouselType): void => {\n tweenNodes.current = _mainApi\n .slideNodes()\n .map(\n slideNode =>\n slideNode.querySelector('.slide__parallax__layer') as HTMLElement,\n );\n }, []);\n\n const setTweenFactor = useCallback(\n (_mainApi: EmblaCarouselType) => {\n tweenFactor.current =\n TWEEN_FACTOR_BASE * _mainApi.scrollSnapList().length;\n },\n [TWEEN_FACTOR_BASE],\n );\n\n const tweenParallax = useCallback(\n (_mainApi: EmblaCarouselType, eventName?: EmblaEventType) => {\n const engine = _mainApi.internalEngine();\n\n const scrollProgress = _mainApi.scrollProgress();\n\n const slidesInView = _mainApi.slidesInView();\n\n const isScrollEvent = eventName === 'scroll';\n\n _mainApi.scrollSnapList().forEach((scrollSnap, snapIndex) => {\n let diffToTarget = scrollSnap - scrollProgress;\n\n const slidesInSnap = engine.slideRegistry[snapIndex];\n\n slidesInSnap.forEach(slideIndex => {\n if (isScrollEvent && !slidesInView.includes(slideIndex)) return;\n\n if (engine.options.loop) {\n engine.slideLooper.loopPoints.forEach(loopItem => {\n const target = loopItem.target();\n\n if (slideIndex === loopItem.index && target !== 0) {\n const sign = Math.sign(target);\n\n if (sign === -1) {\n diffToTarget = scrollSnap - (1 + scrollProgress);\n }\n if (sign === 1) {\n diffToTarget = scrollSnap + (1 - scrollProgress);\n }\n }\n });\n }\n\n const translateValue =\n diffToTarget * (-1 * tweenFactor.current) * 100;\n\n const tweenNode = tweenNodes.current[slideIndex];\n\n if (tweenNode) {\n tweenNode.style.transform = `translateX(${translateValue}%)`;\n }\n });\n });\n },\n [],\n );\n\n useEffect(() => {\n if (!mainApi || !parallax) return;\n\n setTweenNodes(mainApi);\n setTweenFactor(mainApi);\n tweenParallax(mainApi);\n\n mainApi\n .on('reInit', setTweenNodes)\n .on('reInit', setTweenFactor)\n .on('reInit', tweenParallax)\n .on('scroll', tweenParallax);\n\n return () => {\n mainApi\n .off('reInit', setTweenNodes)\n .off('reInit', setTweenFactor)\n .off('reInit', tweenParallax)\n .off('scroll', tweenParallax);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mainApi, tweenParallax]);\n\n return null;\n}\n","import { useCallback, useEffect, useState } from 'react';\nimport type { EmblaCarouselType } from 'embla-carousel';\n\nimport type { UseCarouselProgressReturn } from '../types';\n\nexport function useCarouselProgress(\n mainApi?: EmblaCarouselType,\n): UseCarouselProgressReturn {\n const [scrollProgress, setScrollProgress] = useState(0);\n\n const onScroll = useCallback((_mainApi: EmblaCarouselType) => {\n const progress = Math.max(0, Math.min(1, _mainApi.scrollProgress()));\n\n setScrollProgress(progress * 100);\n }, []);\n\n useEffect(() => {\n if (!mainApi) return;\n\n onScroll(mainApi);\n mainApi.on('reInit', onScroll);\n mainApi.on('scroll', onScroll);\n\n return () => {\n mainApi.off('reInit', onScroll).off('scroll', onScroll);\n };\n }, [mainApi, onScroll]);\n\n return { value: scrollProgress };\n}\n","import { useCallback, useEffect, useState } from 'react';\nimport type { EmblaCarouselType } from 'embla-carousel';\nimport useEmblaCarousel from 'embla-carousel-react';\n\nimport type { CarouselOptions, UseCarouselThumbsReturn } from '../types';\n\nexport function useThumbs(\n mainApi?: EmblaCarouselType,\n options?: Partial<CarouselOptions>,\n): UseCarouselThumbsReturn {\n const [thumbsRef, thumbsApi] = useEmblaCarousel({\n containScroll: 'keepSnaps',\n dragFree: true,\n ...options,\n });\n\n const [selectedIndex, setSelectedIndex] = useState(0);\n\n const onClickThumb = useCallback(\n (index: number) => {\n if (!mainApi || !thumbsApi) return;\n mainApi.scrollTo(index);\n },\n [mainApi, thumbsApi],\n );\n\n const onSelect = useCallback(() => {\n if (!mainApi || !thumbsApi) return;\n setSelectedIndex(mainApi.selectedScrollSnap());\n thumbsApi.scrollTo(mainApi.selectedScrollSnap());\n }, [mainApi, thumbsApi, setSelectedIndex]);\n\n useEffect(() => {\n if (!mainApi) return;\n onSelect();\n mainApi.on('select', onSelect);\n mainApi.on('reInit', onSelect);\n\n return () => {\n mainApi.off('select', onSelect);\n mainApi.off('reInit', onSelect);\n };\n }, [mainApi, onSelect]);\n\n return {\n onClickThumb,\n thumbsRef,\n thumbsApi,\n selectedIndex,\n };\n}\n"]}
@@ -1,7 +0,0 @@
1
- import i from '@mui/material/Tooltip';
2
- import { jsx } from 'react/jsx-runtime';
3
-
4
- var t=({children:p,...l})=>jsx(i,{...l,children:jsx("span",{style:{display:"inline-flex",userSelect:"none"},children:p})}),s=t;
5
-
6
- export { s as a };
7
- //# sourceMappingURL=chunk-7QKCCB23.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Tooltip/index.tsx"],"names":["MuiTooltip","jsx","Tooltip","children","props","Tooltip_default"],"mappings":"AAAA,OAAOA,MAAkC,wBAKnC,cAAAC,MAAA,oBAHN,IAAMC,EAAU,CAAC,CAAE,SAAAC,EAAU,GAAGC,CAAM,IAElCH,EAACD,EAAA,CAAY,GAAGI,EACd,SAAAH,EAAC,QAAK,MAAO,CAAE,QAAS,cAAe,WAAY,MAAO,EACvD,SAAAE,EACH,EACF,EAIGE,EAAQH","sourcesContent":["import MuiTooltip, { TooltipProps } from '@mui/material/Tooltip';\n\nconst Tooltip = ({ children, ...props }: TooltipProps) => {\n return (\n <MuiTooltip {...props}>\n <span style={{ display: 'inline-flex', userSelect: 'none' }}>\n {children}\n </span>\n </MuiTooltip>\n );\n};\n\nexport default Tooltip;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/color.ts"],"names":["Color","getLuminosity","color","getContrastTextColor","colors_default","normalizeHexColor"],"mappings":"wCAAA,OAAOA,MAAW,QAIX,IAAMC,EAAiBC,GAAkBF,EAAME,CAAK,EAAE,WAAW,EAE3DC,EAAwBD,GAChBD,EAAcC,CAAK,EAElB,GAAME,EAAO,KAAK,GAAG,EAAI,UAGlCC,EAAqBH,GAC3BA,EAEE,IADSA,EAAM,QAAQ,MAAO,EAAE,IADpB","sourcesContent":["import Color from 'color';\n\nimport COLORS from 'theme/core/colors.json';\n\nexport const getLuminosity = (color: string) => Color(color).luminosity();\n\nexport const getContrastTextColor = (color: string) => {\n const luminosity = getLuminosity(color);\n\n return luminosity > 0.5 ? COLORS.grey[800] : '#FFFFFF';\n};\n\nexport const normalizeHexColor = (color: string): string => {\n if (!color) return '#000000';\n const cleaned = color.replace(/^#+/, '');\n return `#${cleaned}`;\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/theme/theme-provider.tsx","../src/theme/create-theme.ts"],"names":["useEffect","useMemo","CssBaseline","CssVarsProvider","useColorScheme","darken","extendTheme","lighten","cloneDeep","buildPrimaryColors","color","createTheme","localeComponents","settings","cssVarPrefix","primaryColors","localColorSchemes","colorSchemes","setNestedProperty","initialTheme","shadows","customShadows","components","typography","setFont","shouldSkipGeneratingVar","updateTheme","updateCoreWithSettings","updateComponentsWithSettings","keys","_","skipGlobalKeys","skipPaletteKeys","paletteType","skipKeys","key","jsx","jsxs","ThemeProviderCore","children","primaryColor","useSettingsContext","theme","baseTheme","allLangs","cssVarsConfig","THEME_CONFIG","ModeWrapper","updateSettings","mode","setMode","colorScheme","ThemeProvider","fontFamily","compactLayout","contrast","navColor","navLayout","storageKey","settings_provider_default","theme_provider_default"],"mappings":"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","sourcesContent":["import { PropsWithChildren, useEffect, useMemo } from 'react';\nimport type {} from '@mui/lab/themeAugmentation';\nimport CssBaseline from '@mui/material/CssBaseline';\nimport {\n Experimental_CssVarsProvider as CssVarsProvider,\n useColorScheme,\n} from '@mui/material/styles';\nimport type {} from '@mui/material/themeCssVarsAugmentation';\nimport type {} from '@mui/x-data-grid/themeAugmentation';\nimport type {} from '@mui/x-date-pickers-pro/themeAugmentation';\n\nimport { allLangs } from 'locales/all-langs';\n\nimport { createTheme } from './create-theme';\nimport { ThemeProviderProps } from './props';\nimport { THEME_CONFIG } from './scheme-config';\nimport SettingsProvider from './settings-provider';\nimport { useSettingsContext } from './settings-provider';\n\nconst ThemeProviderCore = ({\n children,\n primaryColor = '#4E5BEC',\n cssVarPrefix = 'app',\n}: PropsWithChildren<ThemeProviderProps>) => {\n const { settings } = useSettingsContext();\n\n useEffect(() => {\n localStorage.setItem(`${settings.storageKey}`, settings.colorScheme);\n localStorage.setItem(`${settings.storageKey}-light`, 'light');\n localStorage.setItem(`${settings.storageKey}-dark`, 'dark');\n }, [settings.storageKey, settings.colorScheme]);\n\n const theme = useMemo(() => {\n const baseTheme = createTheme(\n allLangs[1].systemValue,\n {\n primaryColor,\n colorScheme: settings.colorScheme,\n contrast: settings.contrast,\n navLayout: settings.navLayout,\n navColor: settings.navColor,\n compactLayout: settings.compactLayout,\n fontFamily: settings.fontFamily,\n storageKey: settings.storageKey,\n },\n cssVarPrefix,\n );\n\n baseTheme.palette = baseTheme.colorSchemes?.[settings.colorScheme]?.palette;\n\n return baseTheme;\n }, [settings, primaryColor, cssVarPrefix]);\n\n const cssVarsConfig = useMemo(() => {\n const config = {\n theme,\n mode: settings.colorScheme,\n defaultMode: settings.colorScheme,\n defaultColorScheme: settings.colorScheme,\n modeStorageKey: settings.storageKey,\n colorSchemeStorageKey: settings.storageKey,\n attribute: THEME_CONFIG.ATTRIBUTE,\n };\n\n return config;\n }, [theme, settings.colorScheme, settings.storageKey]);\n\n return (\n <CssVarsProvider {...cssVarsConfig}>\n <CssBaseline enableColorScheme />\n <ModeWrapper>{children}</ModeWrapper>\n </CssVarsProvider>\n );\n};\n\nconst ModeWrapper = ({ children }: PropsWithChildren) => {\n const { settings, updateSettings } = useSettingsContext();\n const { mode, setMode } = useColorScheme();\n\n useEffect(() => {\n const colorScheme = settings.colorScheme;\n document?.documentElement.setAttribute(THEME_CONFIG.ATTRIBUTE, colorScheme);\n setMode(colorScheme);\n }, [settings.colorScheme, setMode]);\n\n useEffect(() => {\n if (mode === settings.colorScheme) return;\n updateSettings({\n colorScheme: mode === 'system' ? settings.colorScheme : mode,\n });\n }, [mode, settings.colorScheme, updateSettings]);\n\n return children;\n};\n\nconst ThemeProvider = ({\n children,\n cssVarPrefix,\n primaryColor = '#4E5BEC',\n fontFamily = 'Public Sans',\n compactLayout = true,\n contrast = 'default',\n navColor = 'integrate',\n navLayout = 'vertical',\n colorScheme = 'light',\n}: ThemeProviderProps) => {\n const storageKey = `${cssVarPrefix ? `${cssVarPrefix}-` : ''}${THEME_CONFIG.STORAGE_KEY}`;\n\n return (\n <SettingsProvider\n primaryColor={primaryColor}\n fontFamily={fontFamily}\n compactLayout={compactLayout}\n contrast={contrast}\n navColor={navColor}\n navLayout={navLayout}\n colorScheme={colorScheme}\n cssVarPrefix={cssVarPrefix}\n storageKey={storageKey}\n >\n <ThemeProviderCore\n primaryColor={primaryColor}\n cssVarPrefix={cssVarPrefix}\n >\n {children}\n </ThemeProviderCore>\n </SettingsProvider>\n );\n};\n\nexport { THEME_CONFIG };\nexport { useSettingsContext } from './settings-provider';\nexport default ThemeProvider;\n","import type { Theme } from '@mui/material/styles';\nimport {\n darken,\n experimental_extendTheme as extendTheme,\n lighten,\n} from '@mui/material/styles';\nimport cloneDeep from 'lodash/cloneDeep';\n\nimport { SettingsState } from 'types/settings';\nimport { setNestedProperty } from 'utils/object';\n\nimport { setFont } from './styles/utils';\nimport {\n updateComponentsWithSettings,\n updateCoreWithSettings,\n} from './with-settings/update-theme';\nimport {\n colorSchemes,\n components,\n customShadows,\n shadows,\n typography,\n} from './core';\nimport type { ThemeLocaleComponents } from './types';\n\nconst buildPrimaryColors = (color: string) => ({\n lighter: lighten(color, 0.815),\n light: lighten(color, 0.225),\n main: color,\n dark: darken(color, 0.15),\n darker: darken(color, 0.35),\n contrastText: '#000',\n});\n\nexport function createTheme(\n localeComponents: ThemeLocaleComponents,\n settings: SettingsState,\n cssVarPrefix = 'app',\n): Theme {\n const primaryColors = buildPrimaryColors(settings.primaryColor);\n\n const localColorSchemes = cloneDeep(colorSchemes);\n setNestedProperty(localColorSchemes, 'dark.palette.primary', primaryColors);\n setNestedProperty(localColorSchemes, 'light.palette.primary', primaryColors);\n\n const initialTheme = {\n mode: settings.colorScheme,\n colorSchemes: localColorSchemes,\n shadows: shadows(settings.colorScheme),\n customShadows: customShadows(settings.colorScheme, primaryColors.main),\n shape: { borderRadius: 8 },\n components,\n typography: {\n ...typography,\n fontFamily: setFont(settings.fontFamily),\n },\n cssVarPrefix,\n shouldSkipGeneratingVar,\n };\n\n const updateTheme = updateCoreWithSettings(initialTheme, settings);\n\n const theme = extendTheme(\n updateTheme,\n localeComponents,\n updateComponentsWithSettings(settings),\n );\n\n return theme;\n}\n\n// ----------------------------------------------------------------------\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction shouldSkipGeneratingVar(keys: string[], _: string | number): boolean {\n const skipGlobalKeys = [\n 'mixins',\n 'overlays',\n 'direction',\n 'breakpoints',\n 'cssVarPrefix',\n 'unstable_sxConfig',\n 'typography',\n 'colorSchemes',\n ];\n\n const skipPaletteKeys: {\n [key: string]: string[];\n } = {\n global: ['tonalOffset', 'dividerChannel', 'contrastThreshold'],\n grey: ['A100', 'A200', 'A400', 'A700'],\n text: ['icon'],\n };\n\n const isPaletteKey = keys[0] === 'palette';\n\n if (isPaletteKey) {\n const paletteType = keys[1];\n const skipKeys = skipPaletteKeys[paletteType] || skipPaletteKeys.global;\n\n return keys.some(key => skipKeys?.includes(key));\n }\n\n return keys.some(key => skipGlobalKeys?.includes(key));\n}\n"]}