@zydon/common 2.8.68 → 2.8.70
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.
- package/dist/{chunk-CYWFK4OE.js → chunk-2HAPOY5M.js} +2 -2
- package/dist/chunk-2ZJUGM2S.js +7 -0
- package/dist/chunk-2ZJUGM2S.js.map +1 -0
- package/dist/chunk-3ANG24S3.js +34 -0
- package/dist/chunk-3ANG24S3.js.map +1 -0
- package/dist/{chunk-GODJQLB7.js → chunk-3WZXWW7U.js} +4 -4
- package/dist/chunk-4F2NKGF6.js +6 -0
- package/dist/chunk-4F2NKGF6.js.map +1 -0
- package/dist/{chunk-JSL5OEWZ.js → chunk-5J35UAV6.js} +1 -1
- package/dist/chunk-5J35UAV6.js.map +1 -0
- package/dist/{chunk-6JTWZZRD.js → chunk-5ZLMWQZN.js} +4 -4
- package/dist/{chunk-5PUQMKA5.js → chunk-6WJV6RIV.js} +7 -7
- package/dist/chunk-6WJV6RIV.js.map +1 -0
- package/dist/{chunk-T53CFFZY.js → chunk-ASFSMJ6A.js} +2 -2
- package/dist/chunk-B26QCROD.js +11 -0
- package/dist/chunk-B26QCROD.js.map +1 -0
- package/dist/{chunk-D7UUJ7FJ.js → chunk-BVPBGV4Y.js} +2 -2
- package/dist/{chunk-CWRUW77O.js → chunk-C2G7TCA7.js} +2 -2
- package/dist/{chunk-EPMAHRQO.js → chunk-E5LHYPVP.js} +2 -2
- package/dist/{chunk-Y3TJIK6E.js → chunk-EGVNLRFU.js} +2 -2
- package/dist/chunk-EJ7OI2EH.js +16 -0
- package/dist/chunk-EJ7OI2EH.js.map +1 -0
- package/dist/chunk-FJBC6QA5.js +7 -0
- package/dist/chunk-FJBC6QA5.js.map +1 -0
- package/dist/{chunk-YKLRB3EJ.js → chunk-H5L3ML2R.js} +2 -2
- package/dist/{chunk-2A4XOLBZ.js → chunk-I3B772WD.js} +2 -2
- package/dist/chunk-IWUIXO24.js +4 -0
- package/dist/chunk-IWUIXO24.js.map +1 -0
- package/dist/{chunk-QMFFV7WM.js → chunk-KGV3O7H4.js} +3 -3
- package/dist/{chunk-PWR4GBUH.js → chunk-KKHNN3AT.js} +3 -3
- package/dist/{chunk-7JCGMZ6E.js → chunk-KZ7BJCEU.js} +2 -2
- package/dist/{chunk-PODYWSY7.js → chunk-MDDIBNRN.js} +2 -2
- package/dist/{chunk-KZFKHQ5P.js → chunk-OVLYORSO.js} +2 -2
- package/dist/{chunk-N2UR3W55.js → chunk-QPGDZXQ3.js} +2 -2
- package/dist/chunk-VTTZVSBX.js +12 -0
- package/dist/chunk-VTTZVSBX.js.map +1 -0
- package/dist/{chunk-LG2B5RFV.js → chunk-WLRSUL67.js} +2 -2
- package/dist/{chunk-3ELMAXMX.js → chunk-Z7F5DZAT.js} +2 -2
- package/dist/{chunk-O7SN6FIA.js → chunk-ZTTBPQJZ.js} +2 -2
- package/dist/components/ActionButton/index.js +3 -3
- package/dist/components/Autocomplete/index.js +3 -3
- package/dist/components/AutocompleteDetailed/index.js +2 -2
- package/dist/components/AvatarButton/index.js +2 -2
- package/dist/components/BuilderLayout/index.js +3 -3
- package/dist/components/BuilderSidebar/index.js +2 -2
- package/dist/components/BulkEditModal/index.js +4 -4
- package/dist/components/CardBrand/index.js +2 -2
- package/dist/components/Common/index.js +2 -2
- package/dist/components/CopyButton/index.js +4 -4
- package/dist/components/DataView/index.js +6 -6
- package/dist/components/DragButton/index.js +3 -3
- package/dist/components/Drawer/index.js +2 -2
- package/dist/components/DynamicDataView/index.js +21 -21
- package/dist/components/DynamicDataView/index.js.map +1 -1
- package/dist/components/EasyCropModal/index.js +5 -5
- package/dist/components/Error/index.js +2 -2
- package/dist/components/ExpandableGroup/index.js +2 -2
- package/dist/components/FileUpload/index.js +10 -10
- package/dist/components/FrameSkeleton/index.js +5 -5
- package/dist/components/HelpButton/index.js +3 -3
- package/dist/components/Icon/index.js +2 -2
- package/dist/components/IconButton/index.js +3 -3
- package/dist/components/ImageCropModal/index.js +3 -3
- package/dist/components/Incrementer/index.js +3 -3
- package/dist/components/InfoCircle/index.js +3 -3
- package/dist/components/ListBundles/index.js +4 -4
- package/dist/components/MenuItem/index.js +2 -2
- package/dist/components/Modal/index.js +3 -3
- package/dist/components/MoreMenu/index.js +2 -2
- package/dist/components/NotFound/index.js +2 -2
- package/dist/components/PasswordRules/index.js +2 -2
- package/dist/components/PopoverSelect/index.js +2 -2
- package/dist/components/ResponsivePopover/index.js +2 -2
- package/dist/components/Result/index.d.ts +1 -2
- package/dist/components/Result/index.js +1 -1
- package/dist/components/SearchInput/index.js +3 -3
- package/dist/components/SelectList/index.js +6 -6
- package/dist/components/SelectableCards/index.js +5 -5
- package/dist/components/SeoPreview/index.js +4 -4
- package/dist/components/SmartText/index.js +2 -2
- package/dist/components/SmartText/index.js.map +1 -1
- package/dist/components/StateDisplay/index.js +3 -3
- package/dist/components/Steps/index.js +2 -2
- package/dist/components/StyledTab/index.js +2 -2
- package/dist/components/SwapList/index.js +4 -4
- package/dist/components/TextMaxLine/index.js +2 -2
- package/dist/components/Tooltip/index.js +1 -1
- package/dist/components/WebhookCard/index.js +2 -2
- package/dist/components/animate/index.js +2 -2
- package/dist/components/carousel/index.js +3 -3
- package/dist/components/form/Address/index.js +4 -4
- package/dist/components/form/Autocomplete/index.js +4 -4
- package/dist/components/form/AutocompleteDetailed/index.js +2 -2
- package/dist/components/form/Codes/index.js +1 -1
- package/dist/components/form/FileUpload/index.js +10 -10
- package/dist/components/form/Incrementer/index.js +3 -3
- package/dist/components/form/Password/index.js +2 -2
- package/dist/components/form/SelectList/index.js +6 -6
- package/dist/components/form/SelectableCards/index.js +5 -5
- package/dist/components/form/Webhook/index.js +15 -14
- package/dist/components/form/Webhook/index.js.map +1 -1
- package/dist/components/lightbox/index.js +2 -2
- package/dist/components/table/index.js +3 -3
- package/dist/hooks/useActiveElement.js +1 -1
- package/dist/hooks/useActiveElement.js.map +1 -1
- package/dist/hooks/useCollapseSidebarOnMount.js +3 -3
- package/dist/hooks/useEventListener.js +1 -1
- package/dist/hooks/useLocalStorage.js +2 -2
- package/dist/hooks/useOnClickOutside.js +1 -1
- package/dist/hooks/useResponsive.d.ts +1 -1
- package/dist/hooks/useResponsive.js +1 -1
- package/dist/hooks/useUpload.js +3 -3
- package/dist/hooks/useUpload.js.map +1 -1
- package/dist/types/icon.d.ts +7 -1
- package/dist/types/icon.js +1 -1
- package/dist/utils/sanitize-html.d.ts +3 -0
- package/dist/utils/sanitize-html.js +6 -0
- package/dist/utils/sanitize-html.js.map +1 -0
- package/package.json +6 -3
- package/dist/chunk-2MCLMTFV.js +0 -16
- package/dist/chunk-2MCLMTFV.js.map +0 -1
- package/dist/chunk-5PUQMKA5.js.map +0 -1
- package/dist/chunk-DGCPCUVB.js +0 -4
- package/dist/chunk-DGCPCUVB.js.map +0 -1
- package/dist/chunk-FBVAHVU3.js +0 -11
- package/dist/chunk-FBVAHVU3.js.map +0 -1
- package/dist/chunk-FQOV5EGQ.js +0 -12
- package/dist/chunk-FQOV5EGQ.js.map +0 -1
- package/dist/chunk-IJZCVZ32.js +0 -6
- package/dist/chunk-IJZCVZ32.js.map +0 -1
- package/dist/chunk-JSL5OEWZ.js.map +0 -1
- package/dist/chunk-KKVRDMSE.js +0 -7
- package/dist/chunk-KKVRDMSE.js.map +0 -1
- package/dist/chunk-RPO7AI5K.js +0 -7
- package/dist/chunk-RPO7AI5K.js.map +0 -1
- package/dist/chunk-TBFQ5PEL.js +0 -34
- package/dist/chunk-TBFQ5PEL.js.map +0 -1
- /package/dist/{chunk-CYWFK4OE.js.map → chunk-2HAPOY5M.js.map} +0 -0
- /package/dist/{chunk-GODJQLB7.js.map → chunk-3WZXWW7U.js.map} +0 -0
- /package/dist/{chunk-6JTWZZRD.js.map → chunk-5ZLMWQZN.js.map} +0 -0
- /package/dist/{chunk-T53CFFZY.js.map → chunk-ASFSMJ6A.js.map} +0 -0
- /package/dist/{chunk-D7UUJ7FJ.js.map → chunk-BVPBGV4Y.js.map} +0 -0
- /package/dist/{chunk-CWRUW77O.js.map → chunk-C2G7TCA7.js.map} +0 -0
- /package/dist/{chunk-EPMAHRQO.js.map → chunk-E5LHYPVP.js.map} +0 -0
- /package/dist/{chunk-Y3TJIK6E.js.map → chunk-EGVNLRFU.js.map} +0 -0
- /package/dist/{chunk-YKLRB3EJ.js.map → chunk-H5L3ML2R.js.map} +0 -0
- /package/dist/{chunk-2A4XOLBZ.js.map → chunk-I3B772WD.js.map} +0 -0
- /package/dist/{chunk-QMFFV7WM.js.map → chunk-KGV3O7H4.js.map} +0 -0
- /package/dist/{chunk-PWR4GBUH.js.map → chunk-KKHNN3AT.js.map} +0 -0
- /package/dist/{chunk-7JCGMZ6E.js.map → chunk-KZ7BJCEU.js.map} +0 -0
- /package/dist/{chunk-PODYWSY7.js.map → chunk-MDDIBNRN.js.map} +0 -0
- /package/dist/{chunk-KZFKHQ5P.js.map → chunk-OVLYORSO.js.map} +0 -0
- /package/dist/{chunk-N2UR3W55.js.map → chunk-QPGDZXQ3.js.map} +0 -0
- /package/dist/{chunk-LG2B5RFV.js.map → chunk-WLRSUL67.js.map} +0 -0
- /package/dist/{chunk-3ELMAXMX.js.map → chunk-Z7F5DZAT.js.map} +0 -0
- /package/dist/{chunk-O7SN6FIA.js.map → chunk-ZTTBPQJZ.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/form/Webhook/index.tsx","../../../../src/components/form/Webhook/props.ts","../../../../src/components/form/Webhook/styles.ts","../../../../src/components/form/Webhook/WebhookAlert.tsx"],"names":["useFieldArray","useFormContext","Divider","IconButton","InputAdornment","Stack","Typography","ContentTypeOptions","HttpMethodOptions","Alert","alpha","styled","SyledIconButton","theme","StyledTypography","StyledAlert","jsx","jsxs","WebhookAlert","handleLinkClick","url","WebhookAlert_default","Fragment","Webhook","webhookData","isEditing","haveTip","hasFilter","hasType","control","headers","append","remove","handleCreateField","Field_default","Icon_default","Autocomplete_default","item","index","ActionButton_default","Webhook_default"],"mappings":"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","sourcesContent":["import { useFieldArray, useFormContext } from 'react-hook-form';\nimport Divider from '@mui/material/Divider';\nimport IconButton from '@mui/material/IconButton';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport ActionButton from 'components/ActionButton';\nimport Icon from 'components/Icon';\n\nimport Autocomplete from '../Autocomplete';\nimport Field from '../Field';\n\nimport { ContentTypeOptions, HttpMethodOptions, WebhookProps } from './props';\nimport { SyledIconButton } from './styles';\nimport WebhookAlert from './WebhookAlert';\n\nconst Webhook = ({\n webhookData,\n isEditing = false,\n haveTip = false,\n hasFilter = true,\n hasType = true,\n}: WebhookProps) => {\n const { control } = useFormContext();\n\n const {\n fields: headers,\n append,\n remove,\n } = useFieldArray({\n name: 'headers',\n control,\n });\n\n const handleCreateField = () => {\n append({\n value: '',\n name: '',\n });\n };\n\n return (\n <>\n {haveTip && <WebhookAlert />}\n {isEditing && <Field name=\"name\" label=\"Nome do webhook\" />}\n <Stack direction=\"row\" gap={2}>\n <Field\n name=\"url\"\n label=\"URL de endpoint\"\n rules={{ required: { value: true, message: 'Url é obrigatório' } }}\n />\n {hasFilter && <Field name=\"filter\" label=\"Filtro\" />}\n </Stack>\n {isEditing && webhookData && (\n <>\n <Field variant=\"filled\" name=\"solution\" label=\"Solução\" disabled />\n <Stack direction=\"row\" gap={2}>\n <Field variant=\"filled\" name=\"resource\" label=\"Origem\" disabled />\n <Field\n variant=\"filled\"\n name=\"resource_id\"\n label=\"ID origem\"\n disabled\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n <SyledIconButton\n aria-label=\"Copiar ID origem\"\n onClick={() =>\n navigator.clipboard.writeText(webhookData.resource_id)\n }\n >\n <Icon className=\"copyIcon\" icon=\"COPY_CONTENT\" />\n </SyledIconButton>\n </InputAdornment>\n ),\n }}\n />\n <Field variant=\"filled\" name=\"event\" label=\"Evento\" disabled />\n </Stack>\n </>\n )}\n <Stack direction=\"row\" gap={2} alignItems=\"center\">\n {hasType && (\n <Autocomplete\n fullWidth\n options={ContentTypeOptions}\n name=\"content_type\"\n label=\"Tipo de conteúdo\"\n required\n rules={{\n required: {\n value: true,\n message: 'Campo Tipo de conteúdo é obrigatório',\n },\n }}\n />\n )}\n <Autocomplete\n fullWidth\n options={HttpMethodOptions}\n name=\"http_method\"\n label=\"Método HTTP\"\n required\n rules={{\n required: {\n value: true,\n message: 'Campo Método HTTP é obrigatório',\n },\n }}\n />\n </Stack>\n <Typography variant=\"overline\" color=\"grey\">\n Cabeçalho\n </Typography>\n {headers?.map((item, index) => (\n <Stack key={item.id} direction=\"row\" gap={2} alignItems=\"center\">\n <Field\n name={`headers.${index}.name`}\n label=\"Chave\"\n required\n rules={{\n required: {\n value: true,\n message: '',\n },\n }}\n />\n <Field name={`headers.${index}.value`} label=\"Valor\" />\n <IconButton\n aria-label=\"Remover cabeçalho\"\n color=\"error\"\n onClick={() => remove(index)}\n >\n <Icon icon=\"DELETE_MARK_BUTTON_02\" />\n </IconButton>\n </Stack>\n ))}\n <ActionButton\n actionType=\"NEW\"\n size=\"large\"\n variant=\"outlined\"\n color=\"inherit\"\n fullWidth\n onClick={() => handleCreateField()}\n >\n Adicionar novo cabeçalho\n </ActionButton>\n <Divider />\n </>\n );\n};\n\nexport default Webhook;\n","import { WebhookType } from 'types/webhook';\n\nexport interface WebhookProps {\n webhookData?: WebhookType;\n isEditing?: boolean;\n haveTip?: boolean;\n hasFilter?: boolean;\n hasType?: boolean;\n}\nexport enum ContentTypeStatus {\n XML = 'XML',\n JSON = 'JSON',\n BYTEA = 'BYTEA',\n}\n\nexport enum HttpMethodStatus {\n GET = 'GET',\n POST = 'POST',\n PATCH = 'PATCH',\n DELETE = 'DELETE',\n PUT = 'PUT',\n}\n\nexport const ContentTypeOptions = [\n {\n label: ContentTypeStatus.XML,\n value: ContentTypeStatus.XML,\n },\n {\n label: ContentTypeStatus.JSON,\n value: ContentTypeStatus.JSON,\n },\n {\n label: ContentTypeStatus.BYTEA,\n value: ContentTypeStatus.BYTEA,\n },\n];\n\nexport const HttpMethodOptions = [\n {\n label: HttpMethodStatus.GET,\n value: HttpMethodStatus.GET,\n },\n {\n label: HttpMethodStatus.POST,\n value: HttpMethodStatus.POST,\n },\n {\n label: HttpMethodStatus.DELETE,\n value: HttpMethodStatus.DELETE,\n },\n {\n label: HttpMethodStatus.PUT,\n value: HttpMethodStatus.PUT,\n },\n];\n","import Alert from '@mui/material/Alert';\nimport IconButton from '@mui/material/IconButton';\nimport { alpha, styled } from '@mui/material/styles';\nimport Typography from '@mui/material/Typography';\n\nexport const SyledIconButton = styled(IconButton)(({ theme }) => ({\n svg: {\n color: `${theme.palette.primary.main} !important`,\n },\n}));\n\nexport const StyledTypography = styled(Typography)(() => ({\n textDecoration: 'underline',\n fontWeight: '600',\n cursor: 'pointer',\n}));\n\nexport const StyledAlert = styled(Alert)(({ theme }) => ({\n backgroundColor: `${alpha(theme.palette.primary.main, 0.03)}`,\n border: `1px solid ${alpha(theme.palette.primary.main, 0.4)}`,\n flexDirection: 'row',\n alignItems: 'center',\n padding: '2px 12px',\n gap: 8,\n borderRadius: 8,\n marginBottom: 16,\n\n '& svg': {\n color: theme.palette.primary.main,\n },\n}));\n","import Typography from '@mui/material/Typography';\n\nimport { StyledAlert, StyledTypography } from './styles';\n\nconst WebhookAlert = () => {\n const handleLinkClick = () => {\n const url =\n 'https://ajuda.zydon.com.br/pt-BR/articles/9180603-sobre-webhooks';\n window.open(url, '_blank');\n };\n\n return (\n <StyledAlert severity=\"info\">\n <Typography color=\"grey\" variant=\"caption\">\n Webhooks permitem que serviços externos sejam notificados quando\n determinados eventos acontecem. Saiba mais{' '}\n <StyledTypography\n variant=\"caption\"\n color=\"primary\"\n onClick={() => handleLinkClick()}\n >\n acessando a documentação do Webhook\n </StyledTypography>\n </Typography>\n </StyledAlert>\n );\n};\n\nexport default WebhookAlert;\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/form/Webhook/index.tsx","../../../../src/components/form/Webhook/props.ts","../../../../src/components/form/Webhook/styles.ts","../../../../src/components/form/Webhook/WebhookAlert.tsx"],"names":["useCallback","useMemo","useFieldArray","useFormContext","Divider","IconButton","InputAdornment","Stack","Typography","ContentTypeOptions","HttpMethodOptions","Alert","alpha","styled","SyledIconButton","theme","StyledTypography","StyledAlert","jsx","jsxs","WebhookAlert","handleLinkClick","url","WebhookAlert_default","Fragment","CONTENT_TYPE_RULES","HTTP_METHOD_RULES","URL_RULES","HEADER_KEY_RULES","Webhook","webhookData","isEditing","haveTip","hasFilter","hasType","control","headers","append","remove","handleCreateField","handleCopyResourceId","resourceIdInputProps","Icon_default","Field_default","Autocomplete_default","item","index","ActionButton_default","Webhook_default"],"mappings":"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","sourcesContent":["import { useCallback, useMemo } from 'react';\nimport { useFieldArray, useFormContext } from 'react-hook-form';\nimport Divider from '@mui/material/Divider';\nimport IconButton from '@mui/material/IconButton';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport ActionButton from 'components/ActionButton';\nimport Icon from 'components/Icon';\n\nimport Autocomplete from '../Autocomplete';\nimport Field from '../Field';\n\nimport { ContentTypeOptions, HttpMethodOptions, WebhookProps } from './props';\nimport { SyledIconButton } from './styles';\nimport WebhookAlert from './WebhookAlert';\n\nconst CONTENT_TYPE_RULES = {\n required: { value: true, message: 'Campo Tipo de conteúdo é obrigatório' },\n} as const;\n\nconst HTTP_METHOD_RULES = {\n required: { value: true, message: 'Campo Método HTTP é obrigatório' },\n} as const;\n\nconst URL_RULES = {\n required: { value: true, message: 'Url é obrigatório' },\n} as const;\n\nconst HEADER_KEY_RULES = {\n required: { value: true, message: '' },\n} as const;\n\nconst Webhook = ({\n webhookData,\n isEditing = false,\n haveTip = false,\n hasFilter = true,\n hasType = true,\n}: WebhookProps) => {\n const { control } = useFormContext();\n\n const {\n fields: headers,\n append,\n remove,\n } = useFieldArray({\n name: 'headers',\n control,\n });\n\n const handleCreateField = useCallback(() => {\n append({ value: '', name: '' });\n }, [append]);\n\n const handleCopyResourceId = useCallback(() => {\n if (!webhookData?.resource_id) return;\n navigator.clipboard\n .writeText(webhookData.resource_id)\n .catch(() => undefined);\n }, [webhookData?.resource_id]);\n\n const resourceIdInputProps = useMemo(\n () => ({\n endAdornment: (\n <InputAdornment position=\"end\">\n <SyledIconButton\n aria-label=\"Copiar ID origem\"\n onClick={handleCopyResourceId}\n >\n <Icon className=\"copyIcon\" icon=\"COPY_CONTENT\" />\n </SyledIconButton>\n </InputAdornment>\n ),\n }),\n [handleCopyResourceId],\n );\n\n return (\n <>\n {haveTip && <WebhookAlert />}\n {isEditing && <Field name=\"name\" label=\"Nome do webhook\" />}\n <Stack direction=\"row\" gap={2}>\n <Field name=\"url\" label=\"URL de endpoint\" rules={URL_RULES} />\n {hasFilter && <Field name=\"filter\" label=\"Filtro\" />}\n </Stack>\n {isEditing && webhookData && (\n <>\n <Field variant=\"filled\" name=\"solution\" label=\"Solução\" disabled />\n <Stack direction=\"row\" gap={2}>\n <Field variant=\"filled\" name=\"resource\" label=\"Origem\" disabled />\n <Field\n variant=\"filled\"\n name=\"resource_id\"\n label=\"ID origem\"\n disabled\n InputProps={resourceIdInputProps}\n />\n <Field variant=\"filled\" name=\"event\" label=\"Evento\" disabled />\n </Stack>\n </>\n )}\n <Stack direction=\"row\" gap={2} alignItems=\"center\">\n {hasType && (\n <Autocomplete\n fullWidth\n options={ContentTypeOptions}\n name=\"content_type\"\n label=\"Tipo de conteúdo\"\n required\n rules={CONTENT_TYPE_RULES}\n />\n )}\n <Autocomplete\n fullWidth\n options={HttpMethodOptions}\n name=\"http_method\"\n label=\"Método HTTP\"\n required\n rules={HTTP_METHOD_RULES}\n />\n </Stack>\n <Typography variant=\"overline\" color=\"grey\">\n Cabeçalho\n </Typography>\n {headers?.map((item, index) => (\n <Stack key={item.id} direction=\"row\" gap={2} alignItems=\"center\">\n <Field\n name={`headers.${index}.name`}\n label=\"Chave\"\n required\n rules={HEADER_KEY_RULES}\n />\n <Field name={`headers.${index}.value`} label=\"Valor\" />\n <IconButton\n aria-label=\"Remover cabeçalho\"\n color=\"error\"\n onClick={() => remove(index)}\n >\n <Icon icon=\"DELETE_MARK_BUTTON_02\" />\n </IconButton>\n </Stack>\n ))}\n <ActionButton\n actionType=\"NEW\"\n size=\"large\"\n variant=\"outlined\"\n color=\"inherit\"\n fullWidth\n onClick={handleCreateField}\n >\n Adicionar novo cabeçalho\n </ActionButton>\n <Divider />\n </>\n );\n};\n\nexport default Webhook;\n","import { WebhookType } from 'types/webhook';\n\nexport interface WebhookProps {\n webhookData?: WebhookType;\n isEditing?: boolean;\n haveTip?: boolean;\n hasFilter?: boolean;\n hasType?: boolean;\n}\nexport enum ContentTypeStatus {\n XML = 'XML',\n JSON = 'JSON',\n BYTEA = 'BYTEA',\n}\n\nexport enum HttpMethodStatus {\n GET = 'GET',\n POST = 'POST',\n PATCH = 'PATCH',\n DELETE = 'DELETE',\n PUT = 'PUT',\n}\n\nexport const ContentTypeOptions = [\n {\n label: ContentTypeStatus.XML,\n value: ContentTypeStatus.XML,\n },\n {\n label: ContentTypeStatus.JSON,\n value: ContentTypeStatus.JSON,\n },\n {\n label: ContentTypeStatus.BYTEA,\n value: ContentTypeStatus.BYTEA,\n },\n];\n\nexport const HttpMethodOptions = [\n {\n label: HttpMethodStatus.GET,\n value: HttpMethodStatus.GET,\n },\n {\n label: HttpMethodStatus.POST,\n value: HttpMethodStatus.POST,\n },\n {\n label: HttpMethodStatus.DELETE,\n value: HttpMethodStatus.DELETE,\n },\n {\n label: HttpMethodStatus.PUT,\n value: HttpMethodStatus.PUT,\n },\n];\n","import Alert from '@mui/material/Alert';\nimport IconButton from '@mui/material/IconButton';\nimport { alpha, styled } from '@mui/material/styles';\nimport Typography from '@mui/material/Typography';\n\nexport const SyledIconButton = styled(IconButton)(({ theme }) => ({\n svg: {\n color: `${theme.palette.primary.main} !important`,\n },\n}));\n\nexport const StyledTypography = styled(Typography)(() => ({\n textDecoration: 'underline',\n fontWeight: '600',\n cursor: 'pointer',\n}));\n\nexport const StyledAlert = styled(Alert)(({ theme }) => ({\n backgroundColor: `${alpha(theme.palette.primary.main, 0.03)}`,\n border: `1px solid ${alpha(theme.palette.primary.main, 0.4)}`,\n flexDirection: 'row',\n alignItems: 'center',\n padding: '2px 12px',\n gap: 8,\n borderRadius: 8,\n marginBottom: 16,\n\n '& svg': {\n color: theme.palette.primary.main,\n },\n}));\n","import Typography from '@mui/material/Typography';\n\nimport { StyledAlert, StyledTypography } from './styles';\n\nconst WebhookAlert = () => {\n const handleLinkClick = () => {\n const url =\n 'https://ajuda.zydon.com.br/pt-BR/articles/9180603-sobre-webhooks';\n window.open(url, '_blank');\n };\n\n return (\n <StyledAlert severity=\"info\">\n <Typography color=\"grey\" variant=\"caption\">\n Webhooks permitem que serviços externos sejam notificados quando\n determinados eventos acontecem. Saiba mais{' '}\n <StyledTypography\n variant=\"caption\"\n color=\"primary\"\n onClick={() => handleLinkClick()}\n >\n acessando a documentação do Webhook\n </StyledTypography>\n </Typography>\n </StyledAlert>\n );\n};\n\nexport default WebhookAlert;\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a } from '../../chunk-
|
|
2
|
-
import '../../chunk-
|
|
1
|
+
import { a } from '../../chunk-B26QCROD.js';
|
|
2
|
+
import '../../chunk-IWUIXO24.js';
|
|
3
3
|
import w from '@mui/material/Box';
|
|
4
4
|
import C, { useLightboxState } from 'yet-another-react-lightbox';
|
|
5
5
|
import d from 'yet-another-react-lightbox/plugins/captions';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { a } from '../../chunk-
|
|
2
|
-
import '../../chunk-
|
|
3
|
-
import '../../chunk-
|
|
1
|
+
import { a } from '../../chunk-KZ7BJCEU.js';
|
|
2
|
+
import '../../chunk-B26QCROD.js';
|
|
3
|
+
import '../../chunk-IWUIXO24.js';
|
|
4
4
|
import S from '@mui/material/TableCell';
|
|
5
5
|
import F from '@mui/material/TableRow';
|
|
6
6
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useState, useEffect } from 'react';
|
|
2
2
|
|
|
3
|
-
var i=()=>{let[o
|
|
3
|
+
var i=()=>{let[s,o]=useState(!1),[u,e]=useState(document.activeElement);return useEffect(()=>{let t=l=>e(l.target),n=()=>e(null);return window.addEventListener("focus",t,!0),window.addEventListener("blur",n,!0),o(!0),()=>{window.removeEventListener("focus",t,!0),window.removeEventListener("blur",n,!0);}},[]),{activeElement:u,listenersReady:s}},d=i;
|
|
4
4
|
|
|
5
5
|
export { d as default };
|
|
6
6
|
//# sourceMappingURL=useActiveElement.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/useActiveElement.ts"],"names":["useEffect","useState","useActiveElement","listenersReady","setListenersReady","activeElement","setActiveElement","onFocus","event","onBlur","useActiveElement_default"],"mappings":"AAAA,OAAS,aAAAA,EAAW,YAAAC,MAAgB,QAEpC,IAAMC,EAAmB,IAAM,CAC7B,GAAM,CAACC,EAAgBC,CAAiB,EAAIH,EAAkB,EAAK,EAC7D,CAACI,EAAeC,CAAgB,EAAIL,EACxC,SAAS,aACX,EAEA,OAAAD,EAAU,IAAM,CACd,IAAMO,EAAWC,GACfF,EAAiBE,EAAM,MAAiB,EACpCC,EAAS,IAAMH,EAAiB,IAAI,EAE1C,cAAO,iBAAiB,QAASC,EAAS,EAAI,EAC9C,OAAO,iBAAiB,OAAQE,EAAQ,EAAI,EAE5CL,EAAkB,EAAI,EAEf,IAAM,CACX,OAAO,oBAAoB,QAASG,
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useActiveElement.ts"],"names":["useEffect","useState","useActiveElement","listenersReady","setListenersReady","activeElement","setActiveElement","onFocus","event","onBlur","useActiveElement_default"],"mappings":"AAAA,OAAS,aAAAA,EAAW,YAAAC,MAAgB,QAEpC,IAAMC,EAAmB,IAAM,CAC7B,GAAM,CAACC,EAAgBC,CAAiB,EAAIH,EAAkB,EAAK,EAC7D,CAACI,EAAeC,CAAgB,EAAIL,EACxC,SAAS,aACX,EAEA,OAAAD,EAAU,IAAM,CACd,IAAMO,EAAWC,GACfF,EAAiBE,EAAM,MAAiB,EACpCC,EAAS,IAAMH,EAAiB,IAAI,EAE1C,cAAO,iBAAiB,QAASC,EAAS,EAAI,EAC9C,OAAO,iBAAiB,OAAQE,EAAQ,EAAI,EAE5CL,EAAkB,EAAI,EAEf,IAAM,CACX,OAAO,oBAAoB,QAASG,EAAS,EAAI,EACjD,OAAO,oBAAoB,OAAQE,EAAQ,EAAI,CACjD,CACF,EAAG,CAAC,CAAC,EAEE,CACL,cAAAJ,EACA,eAAAF,CACF,CACF,EAEOO,EAAQR","sourcesContent":["import { useEffect, useState } from 'react';\n\nconst useActiveElement = () => {\n const [listenersReady, setListenersReady] = useState<boolean>(false);\n const [activeElement, setActiveElement] = useState<Element | null>(\n document.activeElement,\n );\n\n useEffect(() => {\n const onFocus = (event: FocusEvent) =>\n setActiveElement(event.target as Element);\n const onBlur = () => setActiveElement(null);\n\n window.addEventListener('focus', onFocus, true);\n window.addEventListener('blur', onBlur, true);\n\n setListenersReady(true);\n\n return () => {\n window.removeEventListener('focus', onFocus, true);\n window.removeEventListener('blur', onBlur, true);\n };\n }, []);\n\n return {\n activeElement,\n listenersReady,\n };\n};\n\nexport default useActiveElement;\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { a as default } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { a as default } from '../chunk-C2G7TCA7.js';
|
|
2
|
+
import '../chunk-2HAPOY5M.js';
|
|
3
3
|
import '../chunk-XNKYJHNL.js';
|
|
4
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-FJBC6QA5.js';
|
|
5
5
|
import '../chunk-POTVACYB.js';
|
|
6
6
|
import '../chunk-ET3WPQIO.js';
|
|
7
7
|
//# sourceMappingURL=useCollapseSidebarOnMount.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { a as default } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { a as default } from '../chunk-2HAPOY5M.js';
|
|
2
|
+
import '../chunk-FJBC6QA5.js';
|
|
3
3
|
import '../chunk-POTVACYB.js';
|
|
4
4
|
import '../chunk-ET3WPQIO.js';
|
|
5
5
|
//# sourceMappingURL=useLocalStorage.js.map
|
|
@@ -4,6 +4,6 @@ type ReturnType = boolean;
|
|
|
4
4
|
type Query = 'up' | 'down' | 'between' | 'only';
|
|
5
5
|
type Value = Breakpoint | number;
|
|
6
6
|
declare const useResponsive: (query: Query, start?: Value, end?: Value) => ReturnType;
|
|
7
|
-
declare function useWidth(): "
|
|
7
|
+
declare function useWidth(): "xs" | "sm" | "md" | "lg" | "xl";
|
|
8
8
|
|
|
9
9
|
export { useResponsive as default, useWidth };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { b as default, a as useWidth } from '../chunk-
|
|
1
|
+
export { b as default, a as useWidth } from '../chunk-2ZJUGM2S.js';
|
|
2
2
|
//# sourceMappingURL=useResponsive.js.map
|
package/dist/hooks/useUpload.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { useState } from 'react';
|
|
1
|
+
import { useState, useRef, useCallback, useEffect } from 'react';
|
|
2
2
|
import { useFormContext } from 'react-hook-form';
|
|
3
3
|
|
|
4
|
-
function
|
|
4
|
+
function b(t,a){let{watch:d,setValue:r}=useFormContext(),[p,o]=useState(a),u=d(t)||[],l=useRef([]),c=useCallback(e=>{let n=URL.createObjectURL(e);return l.current.push(n),n},[]),s=useCallback(()=>{l.current.forEach(e=>URL.revokeObjectURL(e)),l.current=[];},[]);return useEffect(()=>()=>s(),[s]),{uploadFile:async e=>{if(!e){s(),r(t,void 0),o(void 0);return}s(),r(t,e),o(Object.assign(e,{preview:c(e)}));},uploadFiles:async e=>{r(t,[...u,...e.map(n=>Object.assign(n,{preview:c(n)}))]);},handleDeleteFile:()=>{s(),r(t,void 0),o(void 0);},handleRemoveAll:()=>{r(t,void 0);},handleRemove:e=>{let n=u.filter(F=>F!==e);r(t,n);},file:p,setFileValue:o}}var O=b;
|
|
5
5
|
|
|
6
|
-
export {
|
|
6
|
+
export { O as default };
|
|
7
7
|
//# sourceMappingURL=useUpload.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/useUpload.ts"],"names":["useState","useFormContext","useUpload","fieldName","urlImage","watch","setValue","fileValue","setFileValue","filesValues","file","files","filteredItems","f","useUpload_default"],"mappings":"AAAA,OAAS,
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useUpload.ts"],"names":["useCallback","useEffect","useRef","useState","useFormContext","useUpload","fieldName","urlImage","watch","setValue","fileValue","setFileValue","filesValues","objectUrlsRef","createTrackedUrl","file","url","revokeAllUrls","files","filteredItems","f","useUpload_default"],"mappings":"AAAA,OAAS,eAAAA,EAAa,aAAAC,EAAW,UAAAC,EAAQ,YAAAC,MAAgB,QACzD,OAAS,kBAAAC,MAAsB,kBAI/B,SAASC,EAAUC,EAAmBC,EAAmB,CACvD,GAAM,CAAE,MAAAC,EAAO,SAAAC,CAAS,EAAIL,EAAe,EACrC,CAACM,EAAWC,CAAY,EAAIR,EAChCI,CACF,EACMK,EAAwBJ,EAAMF,CAAS,GAAK,CAAC,EAC7CO,EAAgBX,EAAiB,CAAC,CAAC,EAEnCY,EAAmBd,EAAae,GAA6B,CACjE,IAAMC,EAAM,IAAI,gBAAgBD,CAAI,EACpC,OAAAF,EAAc,QAAQ,KAAKG,CAAG,EACvBA,CACT,EAAG,CAAC,CAAC,EAECC,EAAgBjB,EAAY,IAAM,CACtCa,EAAc,QAAQ,QAAQG,GAAO,IAAI,gBAAgBA,CAAG,CAAC,EAC7DH,EAAc,QAAU,CAAC,CAC3B,EAAG,CAAC,CAAC,EAEL,OAAAZ,EAAU,IACD,IAAMgB,EAAc,EAC1B,CAACA,CAAa,CAAC,EA+CX,CACL,WA9CiB,MAAOF,GAAgB,CACxC,GAAI,CAACA,EAAM,CACTE,EAAc,EACdR,EAASH,EAAW,MAAS,EAC7BK,EAAa,MAAS,EACtB,OAGFM,EAAc,EACdR,EAASH,EAAWS,CAAI,EAExBJ,EACE,OAAO,OAAOI,EAAM,CAClB,QAASD,EAAiBC,CAAI,CAChC,CAAC,CACH,CACF,EA+BE,YA7BkB,MAAOG,GAAkB,CAC3CT,EAASH,EAAW,CAClB,GAAGM,EACH,GAAGM,EAAM,IAAKH,GACZ,OAAO,OAAOA,EAAM,CAClB,QAASD,EAAiBC,CAAI,CAChC,CAAC,CACH,CACF,CAAC,CACH,EAqBE,iBAnBuB,IAAM,CAC7BE,EAAc,EACdR,EAASH,EAAW,MAAS,EAC7BK,EAAa,MAAS,CACxB,EAgBE,gBAdsB,IAAM,CAC5BF,EAASH,EAAW,MAAS,CAC/B,EAaE,aAXoBS,GAAwB,CAC5C,IAAMI,EAAgBP,EAAY,OAAOQ,GAAKA,IAAML,CAAI,EAExDN,EAASH,EAAWa,CAAa,CACnC,EAQE,KAAMT,EACN,aAAAC,CACF,CACF,CAEA,IAAOU,EAAQhB","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\n\nimport { CustomFile } from 'types/upload';\n\nfunction useUpload(fieldName: string, urlImage?: string) {\n const { watch, setValue } = useFormContext();\n const [fileValue, setFileValue] = useState<CustomFile | string | undefined>(\n urlImage,\n );\n const filesValues: string[] = watch(fieldName) || [];\n const objectUrlsRef = useRef<string[]>([]);\n\n const createTrackedUrl = useCallback((file: Blob | MediaSource) => {\n const url = URL.createObjectURL(file);\n objectUrlsRef.current.push(url);\n return url;\n }, []);\n\n const revokeAllUrls = useCallback(() => {\n objectUrlsRef.current.forEach(url => URL.revokeObjectURL(url));\n objectUrlsRef.current = [];\n }, []);\n\n useEffect(() => {\n return () => revokeAllUrls();\n }, [revokeAllUrls]);\n\n const uploadFile = async (file?: File) => {\n if (!file) {\n revokeAllUrls();\n setValue(fieldName, undefined);\n setFileValue(undefined);\n return;\n }\n\n revokeAllUrls();\n setValue(fieldName, file);\n\n setFileValue(\n Object.assign(file, {\n preview: createTrackedUrl(file),\n }),\n );\n };\n\n const uploadFiles = async (files: File[]) => {\n setValue(fieldName, [\n ...filesValues,\n ...files.map((file: Blob | MediaSource) =>\n Object.assign(file, {\n preview: createTrackedUrl(file),\n }),\n ),\n ]);\n };\n\n const handleDeleteFile = () => {\n revokeAllUrls();\n setValue(fieldName, undefined);\n setFileValue(undefined);\n };\n\n const handleRemoveAll = () => {\n setValue(fieldName, undefined);\n };\n\n const handleRemove = (file: File | string) => {\n const filteredItems = filesValues.filter(f => f !== file);\n\n setValue(fieldName, filteredItems);\n };\n\n return {\n uploadFile,\n uploadFiles,\n handleDeleteFile,\n handleRemoveAll,\n handleRemove,\n file: fileValue,\n setFileValue,\n };\n}\n\nexport default useUpload;\n"]}
|
package/dist/types/icon.d.ts
CHANGED
|
@@ -212,6 +212,7 @@ declare enum Icon {
|
|
|
212
212
|
ARROW_TURN_BACKWARD = "ARROW_TURN_BACKWARD",
|
|
213
213
|
ARROW_TURN_FORWARD = "ARROW_TURN_FORWARD",
|
|
214
214
|
COLUMN_INSERT = "COLUMN_INSERT",
|
|
215
|
+
ROW_INSERT = "ROW_INSERT",
|
|
215
216
|
INSERT_ROW = "INSERT_ROW",
|
|
216
217
|
USER_SWITCH = "USER_SWITCH",
|
|
217
218
|
ARTIFICIAL_INTELLIGENCE_04 = "ARTIFICIAL_INTELLIGENCE_04",
|
|
@@ -492,7 +493,12 @@ declare enum Icon {
|
|
|
492
493
|
PIX_BADGE = "PIX_BADGE",
|
|
493
494
|
SAMSUNGPAY_BADGE = "SAMSUNGPAY_BADGE",
|
|
494
495
|
VISA_BADGE = "VISA_BADGE",
|
|
495
|
-
TRANSACTION_HISTORY = "TRANSACTION_HISTORY"
|
|
496
|
+
TRANSACTION_HISTORY = "TRANSACTION_HISTORY",
|
|
497
|
+
WAREHOUSE = "WAREHOUSE",
|
|
498
|
+
BRANDING = "BRANDING",
|
|
499
|
+
TAPE_MEASURE = "TAPE_MEASURE",
|
|
500
|
+
PERMANENT_JOB = "PERMANENT_JOB",
|
|
501
|
+
SETTINGS_ERROR_02 = "SETTINGS_ERROR_02"
|
|
496
502
|
}
|
|
497
503
|
declare const ICON_ALIASES: {
|
|
498
504
|
readonly ARROW_LEFT_SIMPLE: Icon.CHEVRON_LEFT;
|
package/dist/types/icon.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { b as ICON_ALIASES, a as Icon } from '../chunk-
|
|
1
|
+
export { b as ICON_ALIASES, a as Icon } from '../chunk-IWUIXO24.js';
|
|
2
2
|
//# sourceMappingURL=icon.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import i from 'isomorphic-dompurify';
|
|
2
|
+
|
|
3
|
+
var r=["div","span","p","b","i","em","strong","u","br","hr","h1","h2","h3","h4","h5","h6","ul","ol","li","blockquote","table","thead","tbody","tfoot","tr","th","td","img","a","figure","figcaption"],e=["class","style","title","alt","width","height","colspan","rowspan","src","href","rel"],s=t=>t?i.sanitize(t,{ALLOWED_TAGS:r,ALLOWED_ATTR:e,ALLOW_DATA_ATTR:!1}):"";
|
|
4
|
+
|
|
5
|
+
export { s as sanitizeHtml };
|
|
6
|
+
//# sourceMappingURL=sanitize-html.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/sanitize-html.ts"],"names":["DOMPurify","ALLOWED_TAGS","ALLOWED_ATTR","sanitizeHtml","html"],"mappings":"AAAA,OAAOA,MAAe,uBAEtB,IAAMC,EAAe,CACnB,MACA,OACA,IACA,IACA,IACA,KACA,SACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,aACA,QACA,QACA,QACA,QACA,KACA,KACA,KACA,MACA,IACA,SACA,YACF,EAEMC,EAAe,CACnB,QACA,QACA,QACA,MACA,QACA,SACA,UACA,UACA,MACA,OACA,KACF,EAEaC,EAAgBC,GACtBA,EAEEJ,EAAU,SAASI,EAAM,CAC9B,aAAAH,EACA,aAAAC,EACA,gBAAiB,EACnB,CAAC,EANiB","sourcesContent":["import DOMPurify from 'isomorphic-dompurify';\n\nconst ALLOWED_TAGS = [\n 'div',\n 'span',\n 'p',\n 'b',\n 'i',\n 'em',\n 'strong',\n 'u',\n 'br',\n 'hr',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'ul',\n 'ol',\n 'li',\n 'blockquote',\n 'table',\n 'thead',\n 'tbody',\n 'tfoot',\n 'tr',\n 'th',\n 'td',\n 'img',\n 'a',\n 'figure',\n 'figcaption',\n];\n\nconst ALLOWED_ATTR = [\n 'class',\n 'style',\n 'title',\n 'alt',\n 'width',\n 'height',\n 'colspan',\n 'rowspan',\n 'src',\n 'href',\n 'rel',\n];\n\nexport const sanitizeHtml = (html?: string | null): string => {\n if (!html) return '';\n\n return DOMPurify.sanitize(html, {\n ALLOWED_TAGS,\n ALLOWED_ATTR,\n ALLOW_DATA_ATTR: false,\n });\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zydon/common",
|
|
3
|
-
"version": "2.8.
|
|
3
|
+
"version": "2.8.70",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
},
|
|
24
24
|
"scripts": {
|
|
25
25
|
"dev": "vite",
|
|
26
|
-
"test": "jest --ci --collectCoverage=false",
|
|
27
|
-
"report": "jest --ci --coverage --reporters=default --reporters=jest-junit",
|
|
26
|
+
"test": "jest --ci --collectCoverage=false --forceExit --detectOpenHandles",
|
|
27
|
+
"report": "jest --ci --coverage --forceExit --detectOpenHandles --reporters=default --reporters=jest-junit",
|
|
28
28
|
"test:coverage": "jest --coverage",
|
|
29
29
|
"test:watch": "jest --watch --collectCoverage=false",
|
|
30
30
|
"build": "tsup && node scripts/fix-sourcemaps.cjs",
|
|
@@ -107,6 +107,8 @@
|
|
|
107
107
|
"@mui/material": "^5.16.7",
|
|
108
108
|
"@mui/x-data-grid-premium": "^7.14.0",
|
|
109
109
|
"@mui/x-date-pickers-pro": "^7.14.0",
|
|
110
|
+
"@swc/core": "^1.15.21",
|
|
111
|
+
"@swc/jest": "^0.2.39",
|
|
110
112
|
"@testing-library/dom": "10.0.0",
|
|
111
113
|
"@testing-library/jest-dom": "^6.6.3",
|
|
112
114
|
"@testing-library/react": "^16.1.0",
|
|
@@ -166,6 +168,7 @@
|
|
|
166
168
|
"framer-motion": "^11.3.30",
|
|
167
169
|
"hugeicons-react": "0.4.0",
|
|
168
170
|
"invariant": "^2.2.4",
|
|
171
|
+
"isomorphic-dompurify": "^3.6.0",
|
|
169
172
|
"lodash": "^4.17.21",
|
|
170
173
|
"react-color": "^2.19.3",
|
|
171
174
|
"react-cropper": "^2.3.3",
|
package/dist/chunk-2MCLMTFV.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { a } from './chunk-FBVAHVU3.js';
|
|
2
|
-
import { k, b } from './chunk-GLRLKFPS.js';
|
|
3
|
-
import { forwardRef, Children, isValidElement, useMemo, useState, useCallback, useEffect, useRef } from 'react';
|
|
4
|
-
import N from '@mui/material/Box';
|
|
5
|
-
import { styled, useTheme } from '@mui/material/styles';
|
|
6
|
-
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
7
|
-
import J, { buttonBaseClasses } from '@mui/material/ButtonBase';
|
|
8
|
-
import Y from '@mui/material/Stack';
|
|
9
|
-
import he from '@mui/material/SvgIcon';
|
|
10
|
-
import _e from '@mui/material/NoSsr';
|
|
11
|
-
import Xe from 'embla-carousel-react';
|
|
12
|
-
|
|
13
|
-
var Ge={xs:"(min-width: 0px)",sm:"(min-width: 600px)",md:"(min-width: 900px)",lg:"(min-width: 1200px)",xl:"(min-width: 1536px)"};var p={root:"mnl__carousel__root",container:"mnl__carousel__container",dots:"mnl__carousel__dots",dot:"mnl__carousel__dot",arrows:"mnl__carousel__arrows",arrowsLabel:"mnl__carousel__arrows_label",arrowPrev:"mnl__carousel__btn--prev",arrowNext:"mnl__carousel__btn--next",arrowSvg:"mnl__carousel__btn__svg",slide:"mnl__carousel__slide",slideContent:"mnl__carousel__slide__content",thumbs:"mnl__carousel__thumbs",thumb:"mnl__carousel__thumb",thumbContainer:"mnl__carousel__thumbs__container",thumbImage:"mnl__carousel__thumb__image",progress:"mnl__carousel__progress",progressBar:"mnl__carousel__progress__bar",state:{selected:"state--selected",disabled:"state--disabled"}};var pe=styled(N,{shouldForwardProp:e=>e!=="axis"&&e!=="slideSpacing"})(({axis:e,slideSpacing:o})=>({display:"block",position:"relative",...e==="x"&&{minWidth:0,paddingLeft:o},...e==="y"&&{minHeight:0,paddingTop:o}})),me=styled(N)(()=>({overflow:"hidden",position:"relative",borderRadius:"inherit"}));function w({sx:e,options:o,children:r,...t}){let i=de(o?.slidesToShow);return jsx(pe,{component:"li",axis:o?.axis??"x",slideSpacing:o?.slideSpacing,className:p.slide,sx:{flex:i,...e},...t,children:o?.parallax?jsx(me,{className:p.slideContent,children:jsx("div",{className:"slide__parallax__layer",children:r})}):r})}function de(e){return e&&typeof e=="object"?Object.keys(e).reduce((o,r)=>{let t=e[r];return o[r]=W(t),o},{}):W(e)}function W(e=1){if(typeof e=="string"){if(!(e==="auto"||e.endsWith("%")||e.endsWith("px")))throw new Error("Only accepts values: auto, px, %, or number.");return `0 0 ${e}`}if(typeof e=="number")return `0 0 ${100/e}%`;throw new Error("Invalid value type. Only accepts values: auto, px, %, or number.")}var R=styled(N,{shouldForwardProp:e=>e!=="axis"})(({axis:e})=>({margin:"auto",width:"100%",maxWidth:"100%",overflow:"hidden",position:"relative",...e==="y"&&{height:"100%"}})),T=styled(N,{shouldForwardProp:e=>e!=="axis"&&e!=="slideSpacing"})(({axis:e,slideSpacing:o})=>({display:"flex",backfaceVisibility:"hidden",...e==="x"&&{touchAction:"pan-y pinch-zoom",marginLeft:`calc(${o} * -1)`},...e==="y"&&{height:"100%",flexDirection:"column",touchAction:"pan-x pinch-zoom",marginTop:`calc(${o} * -1)`}}));function io({carousel:e,children:o,sx:r,slotProps:t,...i}){let{mainRef:n,options:s}=e,a=s?.axis??"x",l=s?.slideSpacing??"0px",c=s?.direction??"ltr",u=Children.map(o,m=>{if(isValidElement(m)){let d=m;return jsx(w,{options:e.options,sx:t?.slide,...i,children:m},d.key)}return null});return jsx(R,{sx:r,axis:a,ref:n,dir:c,className:p.root,children:jsx(T,{component:"ul",axis:a,slideSpacing:l,className:p.container,sx:{...e.pluginNames?.includes("autoHeight")&&{alignItems:"flex-start",transition:m=>m.transitions.create(["height"],{easing:m.transitions.easing.easeInOut,duration:m.transitions.duration.shorter})},...t?.container},children:u})})}function Co({options:e,slotProps:o,totalSlides:r,selectedIndex:t,onClickPrev:i,onClickNext:n,disablePrev:s,disableNext:a,sx:l,...c}){return jsxs(Y,{direction:"row",alignItems:"center",display:"inline-flex",className:p.arrows,sx:{gap:.5,zIndex:9,color:"action.active",...l},...c,children:[jsx(h,{variant:"prev",options:e,disabled:s,onClick:i,svgIcon:o?.prevBtn?.svgIcon,svgSize:o?.prevBtn?.svgSize,sx:o?.prevBtn?.sx}),jsx(h,{variant:"next",options:e,disabled:a,onClick:n,svgIcon:o?.nextBtn?.svgIcon,svgSize:o?.prevBtn?.svgSize,sx:o?.prevBtn?.sx})]})}function ho({options:e,slotProps:o,totalSlides:r,selectedIndex:t,onClickPrev:i,onClickNext:n,disablePrev:s,disableNext:a,sx:l,...c}){let u=useTheme();return jsxs(Y,{direction:"row",alignItems:"center",display:"inline-flex",className:p.arrows,sx:{p:.5,gap:.25,zIndex:9,borderRadius:1.25,color:"common.white",bgcolor:k(u.vars.palette.grey["900Channel"],.48),...l},...c,children:[jsx(h,{variant:"prev",options:e,disabled:s,onClick:i,sx:{p:.75,borderRadius:"inherit",...o?.prevBtn?.sx},svgIcon:o?.prevBtn?.svgIcon,svgSize:o?.prevBtn?.svgSize??16}),jsxs(N,{component:"span",className:p.arrowsLabel,sx:{mx:.5,typography:"subtitle2"},"data-testid":"carousel-number-display",children:[t,"/",r]}),jsx(h,{variant:"next",options:e,disabled:a,onClick:n,sx:{p:.75,borderRadius:"inherit",...o?.nextBtn?.sx},svgIcon:o?.nextBtn?.svgIcon,svgSize:o?.prevBtn?.svgSize??16})]})}function So({options:e,slotProps:o,onClickPrev:r,onClickNext:t,disablePrev:i,disableNext:n}){let s={zIndex:9,top:"50%",borderRadius:1.5,position:"absolute",color:"common.white",bgcolor:"text.primary",transform:"translateY(-50%)","&:hover":{opacity:.8},[b.dark]:{color:"grey.800"}};return jsxs(Fragment,{children:[jsx(h,{variant:"prev",options:e,disabled:i,onClick:r,svgIcon:o?.prevBtn?.svgIcon,svgSize:o?.prevBtn?.svgSize,sx:{left:-16,...s,...o?.prevBtn?.sx}}),jsx(h,{variant:"next",options:e,disabled:n,onClick:t,svgIcon:o?.nextBtn?.svgIcon,svgSize:o?.nextBtn?.svgSize,sx:{right:-16,...s,...o?.nextBtn?.sx}})]})}function h({sx:e,svgIcon:o,svgSize:r,options:t,variant:i,...n}){let s=i==="prev",a=i==="next",l=o||jsx("path",{fill:"currentColor",fillRule:"evenodd",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",clipRule:"evenodd"}),c=o||jsx("path",{fill:"currentColor",fillRule:"evenodd",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",clipRule:"evenodd"});return jsx(J,{className:s?p.arrowPrev:p.arrowPrev,"aria-label":s?"Prev button":"Next button",sx:{p:1,borderRadius:"50%",boxSizing:"content-box",transition:u=>u.transitions.create(["all"],{easing:u.transitions.easing.sharp,duration:u.transitions.duration.short}),[`&.${buttonBaseClasses.disabled}`]:{opacity:.4},...e,...t?.direction==="rtl"&&{...s&&{right:-16,left:"auto"},...a&&{left:-16,right:"auto"}}},...n,children:jsx(he,{className:p.arrowSvg,sx:{width:r??20,height:r??20,...t?.axis==="y"&&{transform:" rotate(90deg)"},...t?.direction==="rtl"&&{transform:" scaleX(-1)"}},children:s?l:c})})}function Ro({sx:e,gap:o,slotProps:r,onClickDot:t,scrollSnaps:i,selectedIndex:n,fallbackCount:s=1,variant:a="circular",fallback:l=!1,...c}){let u=useTheme(),m={number:o??6,rounded:o??2,circular:o??2},d={circular:r?.dot?.size??18,number:r?.dot?.size??28},S=jsx(N,{sx:{height:d.circular,width:`calc(${s*d.circular+m.circular*(s-1)}px )`,...a==="number"&&{height:d.number,width:`calc(${s*d.number+m.number*(s-1)}px )`}}}),f={circular:y=>({width:d.circular,height:d.circular,"&::before":{width:8,height:8,content:'""',opacity:.24,borderRadius:"50%",bgcolor:"primary.main",transition:u.transitions.create(["opacity"],{easing:u.transitions.easing.sharp,duration:u.transitions.duration.short}),...y&&{opacity:1}}}),rounded:y=>({width:d.circular,height:d.circular,"&::before":{width:8,height:8,content:'""',opacity:.24,borderRadius:"50%",bgcolor:"primary.main",transition:u.transitions.create(["width","opacity"],{easing:u.transitions.easing.sharp,duration:u.transitions.duration.short}),...y&&{width:"calc(100% - 4px)",opacity:1,borderRadius:1}}}),number:y=>({width:d.number,height:d.number,borderRadius:"50%",typography:"caption",color:"text.disabled",border:`solid 1px ${k(u.vars.palette.grey["500Channel"],.16)}`,...y&&{color:"common.white",bgcolor:"text.primary",fontWeight:"fontWeightSemiBold",[b.dark]:{color:"grey.800"}}})};return jsx(_e,{fallback:l?S:null,children:jsx(N,{"data-testid":"carousel-dots",component:"ul",className:p.dots,sx:{zIndex:9,display:"inline-flex",...a==="circular"&&{gap:`${m.circular}px`},...a==="rounded"&&{gap:`${m.rounded}px`},...a==="number"&&{gap:`${m.number}px`},...e},...c,children:i.map((y,x)=>{let v=x===n;return jsx(N,{component:"li",sx:{display:"inline-flex"},children:jsx(J,{disableRipple:!0,"aria-label":`dot-${x}`,className:p.dot.concat(v?` ${p.state.selected}`:""),onClick:()=>t(x),sx:{...a==="circular"&&f.circular(v),...a==="rounded"&&f.rounded(v),...a==="number"&&f.number(v),[`&.${p.state.selected}`]:{...r?.dot?.selected},...r?.dot?.sx},children:a==="number"&&x+1})},x)})})})}var we=styled(N)(({theme:e})=>({height:6,maxWidth:120,width:"100%",borderRadius:6,overflow:"hidden",position:"relative",color:e.palette.text.primary,backgroundColor:e.palette.divider})),Pe=styled(N)(()=>({top:0,bottom:0,width:"100%",left:"-100%",position:"absolute",backgroundColor:"currentColor"}));function Lo({value:e,sx:o,...r}){return jsx(we,{"data-testid":"carousel-progress",sx:o,className:p.progress,...r,children:jsx(Pe,{"data-testid":"carousel-progress-bar",className:p.progressBar,sx:{transform:`translate3d(${e}%, 0px, 0px)`}})})}var Ne=forwardRef(({children:e,slotProps:o,options:r,sx:t,...i},n)=>{let s=r?.axis??"x",a=r?.slideSpacing??"12px",l=Oe(s),c=Children.map(e,u=>{if(isValidElement(u)){let m=u;return jsx(w,{options:{...r,slideSpacing:a},sx:o?.slide,children:u},m.key)}return null});return jsx(R,{ref:n,axis:s,"data-testid":"carousel-root",className:p.thumbs,sx:{flexShrink:0,...s==="x"&&{p:.5,maxWidth:1},...s==="y"&&{p:.5,maxHeight:1},...!o?.disableMask&&l,...t},...i,children:jsx(T,{component:"ul",axis:s,"data-testid":"carousel-container",slideSpacing:a,className:p.thumbContainer,sx:{...o?.container},children:c})})});Ne.displayName="CarouselThumbs";function qo({thumbType:e="image",sx:o,src:r,index:t,selected:i,imageRender:n,thumbAlt:s,...a$1}){if(e==="image"&&(r||n)){let l={width:1,height:1,aspectRatio:1,objectFit:"cover",borderRadius:"inherit"};return jsx(J,{className:p.thumb,"data-testid":"carousel-thumb",sx:{width:64,height:64,opacity:.48,flexShrink:0,cursor:"pointer",borderRadius:1.25,transition:c=>c.transitions.create(["opacity","box-shadow"],{easing:c.transitions.easing.sharp,duration:c.transitions.duration.short}),...i&&{opacity:1,boxShadow:c=>`0 0 0 2px ${c.vars.palette.primary.main}`},...o},...a$1,children:n?.({sx:l,classes:p.thumbImage})||jsx(N,{component:"img",alt:s||`Imagem do slide ${t}`,src:r,"data-testid":"carousel-thumb-image",className:p.thumbImage,sx:l})})}return e==="video"?jsx(J,{className:p.thumb,"data-testid":"carousel-thumb",sx:{width:64,height:64,opacity:.48,flexShrink:0,cursor:"pointer",borderRadius:1.25,color:l=>l.vars.palette.primary.main,transition:l=>l.transitions.create(["opacity","box-shadow"],{easing:l.transitions.easing.sharp,duration:l.transitions.duration.short}),...i&&{opacity:1,boxShadow:l=>`0 0 0 2px ${l.vars.palette.primary.main}`},...o},...a$1,children:jsx(a,{icon:"PLAY_CIRCLE",width:32})}):null}function Oe(e){let o=useTheme(),r={zIndex:9,content:'""',position:"absolute"},t=`${o.vars.palette.background.paper} 20%, ${k(o.vars.palette.background.paperChannel,0)} 100%)`;return e==="y"?{"&::before, &::after":{...r,left:0,height:40,width:"100%"},"&::before":{top:-8,background:`linear-gradient(to bottom, ${t}`},"&::after":{bottom:-8,background:`linear-gradient(to top, ${t}`}}:{"&::before, &::after":{...r,top:0,width:40,height:"100%"},"&::before":{left:-8,background:`linear-gradient(to right, ${t}`},"&::after":{right:-8,background:`linear-gradient(to left, ${t}`}}}var A=e=>{let[o,r]=useState(!0),[t,i]=useState(!0),n=useCallback(()=>{e&&e.scrollPrev();},[e]),s=useCallback(()=>{e&&e.scrollNext();},[e]),a=useCallback(l=>{r(!l.canScrollPrev()),i(!l.canScrollNext());},[]);return useEffect(()=>{if(e)return a(e),e.on("reInit",a),e.on("select",a),()=>{e.off("reInit",a),e.off("select",a);}},[e,a]),{disablePrev:o,disableNext:t,onClickPrev:n,onClickNext:s}};function oe(e){let[o,r]=useState(!1),t=useCallback(n=>{let s=e?.plugins()?.autoplay;if(!s)return;(s.options.stopOnInteraction===!1?s.reset:s.stop)(),n();},[e]),i=useCallback(()=>{let n=e?.plugins()?.autoplay;if(!n)return;(n.isPlaying()?n.stop:n.play)();},[e]);return useEffect(()=>{let n=e?.plugins()?.autoplay;n&&(r(n.isPlaying()),e.on("autoplay:play",()=>r(!0)).on("autoplay:stop",()=>r(!1)).on("reInit",()=>r(!1)));},[e]),{isPlaying:o,onTogglePlay:i,onClickAutoplay:t}}function re(e){let[o,r]=useState(!1),t=useCallback(n=>{let s=e?.plugins()?.autoScroll;if(!s)return;(s.options.stopOnInteraction===!1?s.reset:s.stop)(),n();},[e]),i=useCallback(()=>{let n=e?.plugins()?.autoScroll;if(!n)return;(n.isPlaying()?n.stop:n.play)();},[e]);return useEffect(()=>{let n=e?.plugins()?.autoScroll;n&&(r(n.isPlaying()),e.on("autoScroll:play",()=>r(!0)).on("autoScroll:stop",()=>r(!1)).on("reInit",()=>r(!1)));},[e]),{isPlaying:o,onTogglePlay:i,onClickAutoplay:t}}function se(e){let[o,r]=useState(0),[t,i]=useState(0),[n,s]=useState([]),a=useCallback(u=>{e&&e.scrollTo(u);},[e]),l=useCallback(u=>{s(u.scrollSnapList());},[]),c=useCallback(u=>{i(u.selectedScrollSnap()),r(u.scrollSnapList().length);},[]);return useEffect(()=>{if(e)return l(e),c(e),e.on("reInit",l),e.on("reInit",c),e.on("select",c),()=>{e.off("reInit",l),e.off("reInit",c),e.off("select",c);}},[e,l,c]),{dotCount:o,scrollSnaps:n,selectedIndex:t,onClickDot:a}}function ne(e,o){let r=useRef(0),t=useRef([]),i=typeof o=="number"?o:.24,n=useCallback(l=>{t.current=l.slideNodes().map(c=>c.querySelector(".slide__parallax__layer"));},[]),s=useCallback(l=>{r.current=i*l.scrollSnapList().length;},[i]),a=useCallback((l,c)=>{let u=l.internalEngine(),m=l.scrollProgress(),d=l.slidesInView(),S=c==="scroll";l.scrollSnapList().forEach((f,y)=>{let x=f-m;u.slideRegistry[y].forEach(k=>{if(S&&!d.includes(k))return;u.options.loop&&u.slideLooper.loopPoints.forEach(V=>{let D=V.target();if(k===V.index&&D!==0){let M=Math.sign(D);M===-1&&(x=f-(1+m)),M===1&&(x=f+(1-m));}});let ce=x*(-1*r.current)*100,U=t.current[k];U&&(U.style.transform=`translateX(${ce}%)`);});});},[]);return useEffect(()=>{if(!(!e||!o))return n(e),s(e),a(e),e.on("reInit",n).on("reInit",s).on("reInit",a).on("scroll",a),()=>{e.off("reInit",n).off("reInit",s).off("reInit",a).off("scroll",a);}},[e,a]),null}function le(e){let[o,r]=useState(0),t=useCallback(i=>{let n=Math.max(0,Math.min(1,i.scrollProgress()));r(n*100);},[]);return useEffect(()=>{if(e)return t(e),e.on("reInit",t),e.on("scroll",t),()=>{e.off("reInit",t).off("scroll",t);}},[e,t]),{value:o}}function ue(e,o){let[r,t]=Xe({containScroll:"keepSnaps",dragFree:!0,...o}),[i,n]=useState(0),s=useCallback(l=>{!e||!t||e.scrollTo(l);},[e,t]),a=useCallback(()=>{!e||!t||(n(e.selectedScrollSnap()),t.scrollTo(e.selectedScrollSnap()));},[e,t,n]);return useEffect(()=>{if(e)return a(),e.on("select",a),e.on("reInit",a),()=>{e.off("select",a),e.off("reInit",a);}},[e,a]),{onClickThumb:s,thumbsRef:r,thumbsApi:t,selectedIndex:i}}var St=(e,o)=>{let[r,t]=Xe(e,o),{disablePrev:i,disableNext:n,onClickPrev:s,onClickNext:a}=A(t),l=o?.map(y=>y.name),c=se(t),u=oe(t),m=re(t),d=le(t),S=ue(t,e?.thumbs);ne(t,e?.parallax);let f=useMemo(()=>l?.includes("autoplay")?{onClickPrev:()=>u.onClickAutoplay(s),onClickNext:()=>u.onClickAutoplay(a)}:l?.includes("autoScroll")?{onClickPrev:()=>m.onClickAutoplay(s),onClickNext:()=>m.onClickAutoplay(a)}:{onClickPrev:s,onClickNext:a},[m,u,a,s,l]);return {options:{...e,...t?.internalEngine().options},pluginNames:l,mainRef:r,mainApi:t,arrows:{disablePrev:i,disableNext:n,onClickPrev:f.onClickPrev,onClickNext:f.onClickNext},dots:c,thumbs:S,progress:d,autoplay:u,autoScroll:m}};
|
|
14
|
-
|
|
15
|
-
export { Ge as a, p as b, w as c, R as d, T as e, io as f, Co as g, ho as h, So as i, h as j, Ro as k, Lo as l, Ne as m, qo as n, St as o };
|
|
16
|
-
//# sourceMappingURL=chunk-2MCLMTFV.js.map
|
|
@@ -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":"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","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';\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';\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';\nimport { varAlpha } from 'theme/styles';\n\nimport Icon from 'components/Icon';\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"]}
|