@corva/ui 3.78.0-9 → 3.78.0-rc.1
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/MCP_README.md +11 -3
- package/cjs-bundle/clients/api/apiCore.js +1 -1
- package/cjs-bundle/clients/api/apiCore.js.map +1 -1
- package/cjs-bundle/clients/subscriptions/socket-client.v2.js +1 -1
- package/cjs-bundle/clients/subscriptions/socket-client.v2.js.map +1 -1
- package/cjs-bundle/clients/subscriptions/subscriptions-auth-recovery.js +2 -0
- package/cjs-bundle/clients/subscriptions/subscriptions-auth-recovery.js.map +1 -0
- package/cjs-bundle/clients/subscriptions/subscriptions-client.dummy.js +1 -1
- package/cjs-bundle/clients/subscriptions/subscriptions-client.dummy.js.map +1 -1
- package/cjs-bundle/clients/subscriptions/subscriptions-client.factory.js +1 -1
- package/cjs-bundle/clients/subscriptions/subscriptions-client.factory.js.map +1 -1
- package/cjs-bundle/clients/subscriptions/subscriptions-client.js +1 -1
- package/cjs-bundle/clients/subscriptions/subscriptions-client.js.map +1 -1
- package/cjs-bundle/components/AssetsMultipleSelector/AssetsMultipleSelector.js.map +1 -1
- package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js +1 -1
- package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js.map +1 -1
- package/cjs-bundle/componentsV2/Autocomplete/Autocomplete.js +1 -1
- package/cjs-bundle/componentsV2/Autocomplete/Autocomplete.js.map +1 -1
- package/cjs-bundle/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.js +1 -1
- package/cjs-bundle/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.js.map +1 -1
- package/cjs-bundle/componentsV2/ColorPicker/ColorPicker.js +1 -1
- package/cjs-bundle/componentsV2/ColorPicker/ColorPicker.js.map +1 -1
- package/cjs-bundle/componentsV2/DatePicker/Input/Input.js +1 -1
- package/cjs-bundle/componentsV2/DatePicker/Input/Input.js.map +1 -1
- package/cjs-bundle/componentsV2/DatePicker/TimePicker/TimePicker.js +1 -1
- package/cjs-bundle/componentsV2/DatePicker/TimePicker/TimePicker.js.map +1 -1
- package/cjs-bundle/componentsV2/DatePicker/TimePicker/TimePicker.scss.js +1 -1
- package/cjs-bundle/componentsV2/DatePicker/utils.js +1 -1
- package/cjs-bundle/componentsV2/DatePicker/utils.js.map +1 -1
- package/cjs-bundle/componentsV2/Hotkey/Hotkey.js +1 -1
- package/cjs-bundle/componentsV2/Hotkey/Hotkey.js.map +1 -1
- package/cjs-bundle/componentsV2/Hotkey/icons/CapsLock.js +2 -0
- package/cjs-bundle/componentsV2/Hotkey/icons/CapsLock.js.map +1 -0
- package/cjs-bundle/componentsV2/Hotkey/icons/Command.js +1 -1
- package/cjs-bundle/componentsV2/Hotkey/icons/Command.js.map +1 -1
- package/cjs-bundle/componentsV2/Hotkey/icons/LMB.js +2 -0
- package/cjs-bundle/componentsV2/Hotkey/icons/LMB.js.map +1 -0
- package/cjs-bundle/componentsV2/Hotkey/icons/MacControl.js +2 -0
- package/cjs-bundle/componentsV2/Hotkey/icons/MacControl.js.map +1 -0
- package/cjs-bundle/componentsV2/Hotkey/icons/Option.js +1 -1
- package/cjs-bundle/componentsV2/Hotkey/icons/Option.js.map +1 -1
- package/cjs-bundle/componentsV2/Hotkey/icons/RMB.js +2 -0
- package/cjs-bundle/componentsV2/Hotkey/icons/RMB.js.map +1 -0
- package/cjs-bundle/componentsV2/Hotkey/icons/Shift.js +1 -1
- package/cjs-bundle/componentsV2/Hotkey/icons/Shift.js.map +1 -1
- package/cjs-bundle/componentsV2/RadioAndCheckboxIcons/CheckboxIcon.scss.js +1 -1
- package/cjs-bundle/componentsV2/RadioAndCheckboxIcons/RadioIcon.scss.js +1 -1
- package/cjs-bundle/componentsV2/RadioAndCheckboxLabel/RadioAndCheckboxLabel.scss.js +1 -1
- package/cjs-bundle/icons/customIcons/icons/Search.js.map +1 -1
- package/clients/api/apiCore.d.ts +2 -0
- package/clients/api/apiCore.d.ts.map +1 -1
- package/clients/api/apiCore.js +1 -1
- package/clients/api/apiCore.js.map +1 -1
- package/clients/subscriptions/__tests__/subscriptions-auth-recovery.test.d.ts +2 -0
- package/clients/subscriptions/__tests__/subscriptions-auth-recovery.test.d.ts.map +1 -0
- package/clients/subscriptions/socket-client.v2.d.ts +8 -0
- package/clients/subscriptions/socket-client.v2.d.ts.map +1 -1
- package/clients/subscriptions/socket-client.v2.js +1 -1
- package/clients/subscriptions/socket-client.v2.js.map +1 -1
- package/clients/subscriptions/subscriptions-auth-recovery.d.ts +53 -0
- package/clients/subscriptions/subscriptions-auth-recovery.d.ts.map +1 -0
- package/clients/subscriptions/subscriptions-auth-recovery.js +2 -0
- package/clients/subscriptions/subscriptions-auth-recovery.js.map +1 -0
- package/clients/subscriptions/subscriptions-client.d.ts +6 -1
- package/clients/subscriptions/subscriptions-client.d.ts.map +1 -1
- package/clients/subscriptions/subscriptions-client.dummy.d.ts +2 -1
- package/clients/subscriptions/subscriptions-client.dummy.d.ts.map +1 -1
- package/clients/subscriptions/subscriptions-client.dummy.js +1 -1
- package/clients/subscriptions/subscriptions-client.dummy.js.map +1 -1
- package/clients/subscriptions/subscriptions-client.factory.d.ts +8 -0
- package/clients/subscriptions/subscriptions-client.factory.d.ts.map +1 -1
- package/clients/subscriptions/subscriptions-client.factory.js +1 -1
- package/clients/subscriptions/subscriptions-client.factory.js.map +1 -1
- package/clients/subscriptions/subscriptions-client.js +1 -1
- package/clients/subscriptions/subscriptions-client.js.map +1 -1
- package/clients/subscriptions/types.d.ts +5 -0
- package/clients/subscriptions/types.d.ts.map +1 -1
- package/components/AssetsMultipleSelector/AssetsMultipleSelector.d.ts.map +1 -1
- package/components/AssetsMultipleSelector/AssetsMultipleSelector.js.map +1 -1
- package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.d.ts.map +1 -1
- package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js +1 -1
- package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js.map +1 -1
- package/components/Drillstring/BHAComponentDetail/constants.d.ts +2 -2
- package/componentsV2/Autocomplete/Autocomplete.d.ts.map +1 -1
- package/componentsV2/Autocomplete/Autocomplete.js +1 -1
- package/componentsV2/Autocomplete/Autocomplete.js.map +1 -1
- package/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.d.ts.map +1 -1
- package/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.js +1 -1
- package/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.js.map +1 -1
- package/componentsV2/ColorPicker/ColorPicker.d.ts +3 -0
- package/componentsV2/ColorPicker/ColorPicker.d.ts.map +1 -1
- package/componentsV2/ColorPicker/ColorPicker.js +1 -1
- package/componentsV2/ColorPicker/ColorPicker.js.map +1 -1
- package/componentsV2/DatePicker/DatePickerNext.stories.d.ts.map +1 -1
- package/componentsV2/DatePicker/Input/Input.js +1 -1
- package/componentsV2/DatePicker/Input/Input.js.map +1 -1
- package/componentsV2/DatePicker/TimePicker/TimePicker.d.ts.map +1 -1
- package/componentsV2/DatePicker/TimePicker/TimePicker.js +1 -1
- package/componentsV2/DatePicker/TimePicker/TimePicker.js.map +1 -1
- package/componentsV2/DatePicker/TimePicker/TimePicker.scss.js +1 -1
- package/componentsV2/DatePicker/utils.js +1 -1
- package/componentsV2/DatePicker/utils.js.map +1 -1
- package/componentsV2/Hotkey/Hotkey.d.ts +4 -0
- package/componentsV2/Hotkey/Hotkey.d.ts.map +1 -1
- package/componentsV2/Hotkey/Hotkey.js +1 -1
- package/componentsV2/Hotkey/Hotkey.js.map +1 -1
- package/componentsV2/Hotkey/Hotkey.stories.d.ts +1 -0
- package/componentsV2/Hotkey/Hotkey.stories.d.ts.map +1 -1
- package/componentsV2/Hotkey/icons/CapsLock.d.ts +2 -0
- package/componentsV2/Hotkey/icons/CapsLock.d.ts.map +1 -0
- package/componentsV2/Hotkey/icons/CapsLock.js +2 -0
- package/componentsV2/Hotkey/icons/CapsLock.js.map +1 -0
- package/componentsV2/Hotkey/icons/Command.d.ts +1 -1
- package/componentsV2/Hotkey/icons/Command.d.ts.map +1 -1
- package/componentsV2/Hotkey/icons/Command.js +1 -1
- package/componentsV2/Hotkey/icons/Command.js.map +1 -1
- package/componentsV2/Hotkey/icons/LMB.d.ts +2 -0
- package/componentsV2/Hotkey/icons/LMB.d.ts.map +1 -0
- package/componentsV2/Hotkey/icons/LMB.js +2 -0
- package/componentsV2/Hotkey/icons/LMB.js.map +1 -0
- package/componentsV2/Hotkey/icons/MacControl.d.ts +2 -0
- package/componentsV2/Hotkey/icons/MacControl.d.ts.map +1 -0
- package/componentsV2/Hotkey/icons/MacControl.js +2 -0
- package/componentsV2/Hotkey/icons/MacControl.js.map +1 -0
- package/componentsV2/Hotkey/icons/Option.d.ts +1 -1
- package/componentsV2/Hotkey/icons/Option.d.ts.map +1 -1
- package/componentsV2/Hotkey/icons/Option.js +1 -1
- package/componentsV2/Hotkey/icons/Option.js.map +1 -1
- package/componentsV2/Hotkey/icons/RMB.d.ts +2 -0
- package/componentsV2/Hotkey/icons/RMB.d.ts.map +1 -0
- package/componentsV2/Hotkey/icons/RMB.js +2 -0
- package/componentsV2/Hotkey/icons/RMB.js.map +1 -0
- package/componentsV2/Hotkey/icons/Shift.d.ts +1 -1
- package/componentsV2/Hotkey/icons/Shift.d.ts.map +1 -1
- package/componentsV2/Hotkey/icons/Shift.js +1 -1
- package/componentsV2/Hotkey/icons/Shift.js.map +1 -1
- package/componentsV2/Hotkey/icons/index.d.ts +4 -0
- package/componentsV2/Hotkey/icons/index.d.ts.map +1 -1
- package/componentsV2/Hotkey/index.d.ts +1 -1
- package/componentsV2/Hotkey/index.d.ts.map +1 -1
- package/componentsV2/RadioAndCheckboxIcons/CheckboxIcon.scss.js +1 -1
- package/componentsV2/RadioAndCheckboxIcons/RadioIcon.scss.js +1 -1
- package/componentsV2/RadioAndCheckboxLabel/RadioAndCheckboxLabel.scss.js +1 -1
- package/icons/customIcons/icons/Search.d.ts +1 -1
- package/icons/customIcons/icons/Search.js.map +1 -1
- package/mcp-server/server.mjs +887 -11002
- package/package.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DevCenterIsolatedAppPage.js","sources":["../../../../../src/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js"],"sourcesContent":["import { makeStyles } from '@material-ui/core';\nimport classNames from 'classnames';\nimport moment from 'moment-timezone';\nimport PropTypes from 'prop-types';\nimport { useEffect, useLayoutEffect } from 'react';\nimport { MemoryRouter } from 'react-router-dom';\n\nimport { ISOLATED_PAGE_APP_CONTAINER_ID } from './constants';\nimport { useXProps } from './effects/useXProps';\nimport { getDashboardCapturingHandler } from './utils/dashboardCapturing';\nimport { replaceUndefinedValuesWithNull } from './utils/replaceUndefinedValuesWithNull';\n\nimport { LOCAL_STORAGE_APP_THEME_KEY } from '~/CLI/hocs/constants';\nimport { isPDFReportView } from '~/CLI/hocs/utils';\nimport { apiRequestsRateLimiter } from '~/clients';\nimport AppContext from '~/components/DevCenter/AppContext';\nimport DevCenterAppContainer from '~/components/DevCenter/DevCenterAppContainer';\nimport { IsInsideIsolatedDcAppProvider } from '~/components/DevCenter/DevCenterAppContainer/components/IsInsideIsolatedDcAppProvider';\nimport { THEMES } from '~/constants/theme';\nimport { withMUIProvidersHOC } from '~/hocs';\nimport { IconParkProvider } from '~/icons';\nimport { PermissionsContext } from '~/permissions/PermissionsContext';\nimport '~/styles/globalStyles';\nimport { updateUserUnits } from '~/utils';\nimport { setThemeVariables } from '~/utils/themeVariables';\n\nconst DevCenterAppContainerWithMUI = withMUIProvidersHOC(DevCenterAppContainer);\n\n/**\n * It's important to keep these global styles in js, to apply only\n * when the component is actually used, if moved to CSS - they'll be\n * applied to whatever somehow imports the code\n */\nconst useStyles = makeStyles(() => ({\n '@global': {\n body: {\n backgroundColor: 'transparent',\n overflow: 'hidden',\n },\n },\n}));\n\n/**\n * Root component that is rendered inside of app's iframe.\n * Receives CLIAppComponent, CLIAppSettings when used\n * in local development\n */\nexport function DevCenterIsolatedAppPage({\n CLIAppComponent = null,\n CLIAppSettings = null,\n containerReportClassName = null,\n}) {\n useStyles();\n\n const {\n appContextValue,\n globalMixpanelEventTracker,\n globalNotificationToastsAPI,\n onSettingChange,\n onSettingsChange,\n permissionsContextValue,\n timezone,\n userUnits,\n trackApiRateLimiterException,\n ...xProps\n } = useXProps();\n const isReportsPage = xProps.location.pathname.startsWith('/reports/') || isPDFReportView;\n const appId = xProps?.app?.id;\n\n // Force light theme for PDF reports view\n const selectedTheme =\n localStorage.getItem(LOCAL_STORAGE_APP_THEME_KEY) ||\n xProps.currentUser?.settings?.uiSettings?.theme ||\n THEMES.DARK;\n const isDarkTheme = !isReportsPage && selectedTheme !== THEMES.LIGHT;\n\n useLayoutEffect(() => {\n setThemeVariables(isDarkTheme);\n }, [isDarkTheme]);\n\n // Apply userUnits and/or timezone before paint so that the first render\n // (including PDF reports) uses the correct unit system.\n // useLayoutEffect runs synchronously after DOM mutations but before the browser paints,\n // and re-runs whenever userUnits changes — fixing the production race where the iframe mounts\n // before the parent has finished loading the dashboard's unit_system.\n useLayoutEffect(() => {\n if (userUnits) {\n updateUserUnits({ userUnits });\n }\n }, [userUnits]);\n\n useLayoutEffect(() => {\n if (timezone) {\n moment.tz.setDefault(timezone);\n }\n return () => moment.tz.setDefault(null);\n }, [timezone]);\n\n useEffect(() => {\n window[Symbol.for('notificationToasts')] = globalNotificationToastsAPI;\n window[Symbol.for('logToMixpanel')] = globalMixpanelEventTracker;\n window[Symbol.for('corvaAPI.rateLimiterReport')] = trackApiRateLimiterException;\n }, [globalNotificationToastsAPI, globalMixpanelEventTracker, trackApiRateLimiterException]);\n\n useEffect(() => {\n apiRequestsRateLimiter.updateConfig(xProps.apiRateLimiterConfig);\n }, [xProps.apiRateLimiterConfig]);\n\n useEffect(() => {\n const dashboardCapturingHandler = getDashboardCapturingHandler(appId);\n window.addEventListener('message', dashboardCapturingHandler);\n return () => window.removeEventListener('message', dashboardCapturingHandler);\n }, [appId]);\n\n return (\n <MemoryRouter\n initialEntries={[(xProps.location?.pathname || '/') + (xProps.location?.search || '')]}\n >\n <PermissionsContext.Provider value={permissionsContextValue}>\n <AppContext.Provider value={appContextValue}>\n <IsInsideIsolatedDcAppProvider value>\n <IconParkProvider>\n <div\n id={ISOLATED_PAGE_APP_CONTAINER_ID}\n className={classNames(isReportsPage && containerReportClassName)}\n >\n <DevCenterAppContainerWithMUI\n {...xProps}\n theme={isDarkTheme ? THEMES.DARK : THEMES.LIGHT}\n // zoid serializes passed arguments using JSON.stringify.\n // All undefined values are removed as they are not valid JSON values\n // so we replace undefined values with null to not drop them\n // Any future cb function that passes arbitrary objects as args\n // also should be wrapped in this mapper\n // ⚠️⚠️⚠️ When refactoring this to referentially stable callbacks, remove `useStableCallback` from\n // /src/componentsV2/AppCommonsProvider/AppCommonsProvider.tsx\n onSettingsChange={nextSettings =>\n onSettingsChange(replaceUndefinedValuesWithNull(nextSettings))\n }\n onSettingChange={(key, value) =>\n onSettingChange(key, replaceUndefinedValuesWithNull(value))\n }\n CLIAppComponent={CLIAppComponent}\n CLIAppSettings={CLIAppSettings}\n trackApiRateLimiterException={trackApiRateLimiterException}\n />\n </div>\n </IconParkProvider>\n </IsInsideIsolatedDcAppProvider>\n </AppContext.Provider>\n </PermissionsContext.Provider>\n </MemoryRouter>\n );\n}\n\nDevCenterIsolatedAppPage.propTypes = {\n CLIAppComponent: PropTypes.func,\n CLIAppSettings: PropTypes.func,\n containerReportClassName: PropTypes.string,\n};\n"],"names":["DevCenterAppContainerWithMUI","withMUIProvidersHOC","DevCenterAppContainer","useStyles","makeStyles","body","backgroundColor","overflow","DevCenterIsolatedAppPage","_ref","_xProps$app","_xProps$currentUser","_xProps$currentUser$s","_xProps$currentUser$s2","_xProps$location","_xProps$location2","_ref$CLIAppComponent","CLIAppComponent","_ref$CLIAppSettings","CLIAppSettings","_ref$containerReportC","containerReportClassName","_useXProps","useXProps","appContextValue","globalMixpanelEventTracker","globalNotificationToastsAPI","onSettingChange","onSettingsChange","permissionsContextValue","timezone","userUnits","trackApiRateLimiterException","xProps","_objectWithoutProperties","_excluded","isReportsPage","location","pathname","startsWith","isPDFReportView","appId","app","id","selectedTheme","localStorage","getItem","LOCAL_STORAGE_APP_THEME_KEY","currentUser","settings","uiSettings","theme","THEMES","DARK","isDarkTheme","LIGHT","useLayoutEffect","setThemeVariables","updateUserUnits","moment","tz","setDefault","useEffect","window","Symbol","for","apiRequestsRateLimiter","updateConfig","apiRateLimiterConfig","dashboardCapturingHandler","getDashboardCapturingHandler","addEventListener","removeEventListener","_jsx","MemoryRouter","initialEntries","search","children","PermissionsContext","Provider","value","AppContext","IsInsideIsolatedDcAppProvider","IconParkProvider","jsx","ISOLATED_PAGE_APP_CONTAINER_ID","className","classNames","_objectSpread","nextSettings","replaceUndefinedValuesWithNull","key","propTypes","PropTypes","func","string"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DevCenterIsolatedAppPage.js","sources":["../../../../../src/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js"],"sourcesContent":["import { makeStyles } from '@material-ui/core';\nimport classNames from 'classnames';\nimport moment from 'moment-timezone';\nimport PropTypes from 'prop-types';\nimport { useEffect, useLayoutEffect } from 'react';\nimport { MemoryRouter } from 'react-router-dom';\n\nimport { ISOLATED_PAGE_APP_CONTAINER_ID } from './constants';\nimport { useXProps } from './effects/useXProps';\nimport { getDashboardCapturingHandler } from './utils/dashboardCapturing';\nimport { replaceUndefinedValuesWithNull } from './utils/replaceUndefinedValuesWithNull';\n\nimport { LOCAL_STORAGE_APP_THEME_KEY } from '~/CLI/hocs/constants';\nimport { isPDFReportView } from '~/CLI/hocs/utils';\nimport { apiRequestsRateLimiter } from '~/clients';\nimport AppContext from '~/components/DevCenter/AppContext';\nimport DevCenterAppContainer from '~/components/DevCenter/DevCenterAppContainer';\nimport { IsInsideIsolatedDcAppProvider } from '~/components/DevCenter/DevCenterAppContainer/components/IsInsideIsolatedDcAppProvider';\nimport { THEMES } from '~/constants/theme';\nimport { withMUIProvidersHOC } from '~/hocs';\nimport { IconParkProvider } from '~/icons';\nimport { PermissionsContext } from '~/permissions/PermissionsContext';\nimport '~/styles/globalStyles';\nimport { updateUserUnits } from '~/utils';\nimport { setThemeVariables } from '~/utils/themeVariables';\n\nconst DevCenterAppContainerWithMUI = withMUIProvidersHOC(DevCenterAppContainer);\n\n/**\n * It's important to keep these global styles in js, to apply only\n * when the component is actually used, if moved to CSS - they'll be\n * applied to whatever somehow imports the code\n */\nconst useStyles = makeStyles(() => ({\n '@global': {\n body: {\n backgroundColor: 'transparent',\n overflow: 'hidden',\n },\n },\n}));\n\n/**\n * Root component that is rendered inside of app's iframe.\n * Receives CLIAppComponent, CLIAppSettings when used\n * in local development\n */\nexport function DevCenterIsolatedAppPage({\n CLIAppComponent = null,\n CLIAppSettings = null,\n containerReportClassName = null,\n}) {\n useStyles();\n\n const {\n appContextValue,\n globalMixpanelEventTracker,\n globalNotificationToastsAPI,\n onSettingChange,\n onSettingsChange,\n permissionsContextValue,\n timezone,\n userUnits,\n trackApiRateLimiterException,\n ...xProps\n } = useXProps();\n const isReportsPage = xProps.location.pathname.startsWith('/reports/') || isPDFReportView;\n const printTheme = new URLSearchParams(xProps.location.search).get('printTheme');\n const appId = xProps?.app?.id;\n\n // Reports use light theme by default unless dark mode is explicitly requested.\n const selectedTheme =\n localStorage.getItem(LOCAL_STORAGE_APP_THEME_KEY) ||\n xProps.currentUser?.settings?.uiSettings?.theme ||\n THEMES.DARK;\n const isDarkTheme = isReportsPage ? printTheme === THEMES.DARK : selectedTheme !== THEMES.LIGHT;\n\n useLayoutEffect(() => {\n setThemeVariables(isDarkTheme);\n }, [isDarkTheme]);\n\n // Apply userUnits and/or timezone before paint so that the first render\n // (including PDF reports) uses the correct unit system.\n // useLayoutEffect runs synchronously after DOM mutations but before the browser paints,\n // and re-runs whenever userUnits changes — fixing the production race where the iframe mounts\n // before the parent has finished loading the dashboard's unit_system.\n useLayoutEffect(() => {\n if (userUnits) {\n updateUserUnits({ userUnits });\n }\n }, [userUnits]);\n\n useLayoutEffect(() => {\n if (timezone) {\n moment.tz.setDefault(timezone);\n }\n return () => moment.tz.setDefault(null);\n }, [timezone]);\n\n useEffect(() => {\n window[Symbol.for('notificationToasts')] = globalNotificationToastsAPI;\n window[Symbol.for('logToMixpanel')] = globalMixpanelEventTracker;\n window[Symbol.for('corvaAPI.rateLimiterReport')] = trackApiRateLimiterException;\n }, [globalNotificationToastsAPI, globalMixpanelEventTracker, trackApiRateLimiterException]);\n\n useEffect(() => {\n apiRequestsRateLimiter.updateConfig(xProps.apiRateLimiterConfig);\n }, [xProps.apiRateLimiterConfig]);\n\n useEffect(() => {\n const dashboardCapturingHandler = getDashboardCapturingHandler(appId);\n window.addEventListener('message', dashboardCapturingHandler);\n return () => window.removeEventListener('message', dashboardCapturingHandler);\n }, [appId]);\n\n return (\n <MemoryRouter\n initialEntries={[(xProps.location?.pathname || '/') + (xProps.location?.search || '')]}\n >\n <PermissionsContext.Provider value={permissionsContextValue}>\n <AppContext.Provider value={appContextValue}>\n <IsInsideIsolatedDcAppProvider value>\n <IconParkProvider>\n <div\n id={ISOLATED_PAGE_APP_CONTAINER_ID}\n className={classNames(isReportsPage && containerReportClassName)}\n >\n <DevCenterAppContainerWithMUI\n {...xProps}\n theme={isDarkTheme ? THEMES.DARK : THEMES.LIGHT}\n // zoid serializes passed arguments using JSON.stringify.\n // All undefined values are removed as they are not valid JSON values\n // so we replace undefined values with null to not drop them\n // Any future cb function that passes arbitrary objects as args\n // also should be wrapped in this mapper\n // ⚠️⚠️⚠️ When refactoring this to referentially stable callbacks, remove `useStableCallback` from\n // /src/componentsV2/AppCommonsProvider/AppCommonsProvider.tsx\n onSettingsChange={nextSettings =>\n onSettingsChange(replaceUndefinedValuesWithNull(nextSettings))\n }\n onSettingChange={(key, value) =>\n onSettingChange(key, replaceUndefinedValuesWithNull(value))\n }\n CLIAppComponent={CLIAppComponent}\n CLIAppSettings={CLIAppSettings}\n trackApiRateLimiterException={trackApiRateLimiterException}\n />\n </div>\n </IconParkProvider>\n </IsInsideIsolatedDcAppProvider>\n </AppContext.Provider>\n </PermissionsContext.Provider>\n </MemoryRouter>\n );\n}\n\nDevCenterIsolatedAppPage.propTypes = {\n CLIAppComponent: PropTypes.func,\n CLIAppSettings: PropTypes.func,\n containerReportClassName: PropTypes.string,\n};\n"],"names":["DevCenterAppContainerWithMUI","withMUIProvidersHOC","DevCenterAppContainer","useStyles","makeStyles","body","backgroundColor","overflow","DevCenterIsolatedAppPage","_ref","_xProps$app","_xProps$currentUser","_xProps$currentUser$s","_xProps$currentUser$s2","_xProps$location","_xProps$location2","_ref$CLIAppComponent","CLIAppComponent","_ref$CLIAppSettings","CLIAppSettings","_ref$containerReportC","containerReportClassName","_useXProps","useXProps","appContextValue","globalMixpanelEventTracker","globalNotificationToastsAPI","onSettingChange","onSettingsChange","permissionsContextValue","timezone","userUnits","trackApiRateLimiterException","xProps","_objectWithoutProperties","_excluded","isReportsPage","location","pathname","startsWith","isPDFReportView","printTheme","URLSearchParams","search","get","appId","app","id","selectedTheme","localStorage","getItem","LOCAL_STORAGE_APP_THEME_KEY","currentUser","settings","uiSettings","theme","THEMES","DARK","isDarkTheme","LIGHT","useLayoutEffect","setThemeVariables","updateUserUnits","moment","tz","setDefault","useEffect","window","Symbol","for","apiRequestsRateLimiter","updateConfig","apiRateLimiterConfig","dashboardCapturingHandler","getDashboardCapturingHandler","addEventListener","removeEventListener","_jsx","MemoryRouter","initialEntries","children","PermissionsContext","Provider","value","AppContext","IsInsideIsolatedDcAppProvider","IconParkProvider","jsx","ISOLATED_PAGE_APP_CONTAINER_ID","className","classNames","_objectSpread","nextSettings","replaceUndefinedValuesWithNull","key","propTypes","PropTypes","func","string"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),o=require("@babel/runtime/helpers/toConsumableArray"),s=require("@babel/runtime/helpers/typeof"),n=require("@babel/runtime/helpers/slicedToArray"),i=require("@material-ui/lab"),c=require("react"),r=require("classnames"),t=require("../Popper/Popper.js"),u=require("../../icons/iconParkIcons.js");require("../../icons/customIcons/icons/AddMessage.js"),require("../../icons/customIcons/icons/DragOne.js"),require("../../icons/customIcons/icons/Attention.js"),require("../../icons/customIcons/icons/Collapse.js"),require("../../icons/customIcons/icons/Dashboard.js"),require("../../icons/customIcons/icons/Expand.js"),require("../../icons/customIcons/icons/FolderClosed.js"),require("../../icons/customIcons/icons/FolderClosedFilled.js"),require("../../icons/customIcons/icons/FolderOpened.js"),require("../../icons/customIcons/icons/GreaterOrEqual.js"),require("../../icons/customIcons/icons/LessOrEqual.js"),require("../../icons/customIcons/icons/Search.js"),require("../../icons/customIcons/icons/SearchOne.js"),require("../../icons/customIcons/icons/Wellhub.js"),require("../../icons/customIcons/icons/MultiRuler.js"),require("../../icons/customIcons/icons/Checkbox.js"),require("../../icons/customIcons/icons/CheckboxChecked.js"),require("../../icons/customIcons/icons/CheckboxIndeterminate.js"),require("../../icons/customIcons/icons/Radio.js"),require("../../icons/customIcons/icons/RadioChecked.js"),require("../../icons/customIcons/icons/SimulFrac.js"),require("../../icons/customIcons/icons/ZipperFrac.js"),require("../../icons/customIcons/icons/CautionFilled.js"),require("../../icons/customIcons/icons/InfoRounded.js"),require("../../icons/customIcons/icons/FlameFilled.js"),require("../../icons/customIcons/icons/MoreApp.js"),require("../../icons/customIcons/icons/Pad.js"),require("../../icons/customIcons/icons/DrilloutUnit.js"),require("../../icons/customIcons/icons/FracFleet.js"),require("../../icons/customIcons/icons/Global.js"),require("../../icons/customIcons/icons/Program.js"),require("../../icons/customIcons/icons/Rig.js"),require("../../icons/customIcons/icons/Well.js"),require("../../icons/customIcons/icons/Gap.js"),require("../../icons/customIcons/icons/Pin.js"),require("../../icons/customIcons/icons/PinOne.js"),require("../../icons/customIcons/icons/PinOneCrossed.js"),require("../../icons/customIcons/icons/CloseOneFilled.js"),require("../../icons/customIcons/icons/AttentionFilled.js"),require("../../icons/customIcons/icons/CheckOneFilled.js"),require("../../icons/customIcons/icons/Archive.js"),require("../../icons/customIcons/icons/ArchiveCancel.js"),require("../../icons/customIcons/icons/Unarchive.js"),require("../../icons/customIcons/icons/Archived.js"),require("../../icons/customIcons/icons/InterventionUnit.js"),require("../../icons/customIcons/icons/CloudDelete.js"),require("../../icons/customIcons/icons/Lasso.js"),require("../../icons/customIcons/icons/Radius.js"),require("../../icons/customIcons/icons/ErrorOps.js"),require("../../icons/customIcons/icons/DataTypeOps.js"),require("../../icons/customIcons/icons/FalsePositiveOps.js"),require("../../icons/customIcons/icons/CalibrationOps.js"),require("../../icons/customIcons/icons/CriticalOps.js"),require("../../icons/customIcons/icons/Company.js"),require("../../icons/customIcons/icons/ArchiveOne.js"),require("../../icons/customIcons/icons/ParseBotFusion.js"),require("../../icons/customIcons/icons/Connect.js"),require("../../icons/customIcons/icons/PuzzleOne.js"),require("../../icons/customIcons/icons/Feed.js"),require("../../icons/customIcons/icons/Prompt.js"),require("../../icons/customIcons/icons/Companies.js"),require("../../icons/customIcons/icons/ClipboardAi.js"),require("../../icons/customIcons/icons/Key.js"),require("../../icons/customIcons/icons/AtSignCrossed.js"),require("../../icons/customIcons/icons/MappingManual.js"),require("../../icons/customIcons/icons/Mapping.js"),require("../../icons/customIcons/icons/Metrics.js"),require("../../icons/customIcons/icons/Drops.js"),require("../../icons/customIcons/icons/ClipboardSearch.js"),require("../../icons/customIcons/icons/Template.js"),require("../../icons/customIcons/icons/ClipboardMetrics.js"),require("../../icons/customIcons/icons/ClipboardBuilder.js"),require("../../icons/customIcons/icons/UnitConversion.js"),require("../../icons/customIcons/icons/NPT.js"),require("../../icons/customIcons/icons/GuidedFrac.js");var l=require("./AutocompleteInput/AutocompleteInput.js"),a=require("./AutocompletePaper.js"),p=require("./utils.js"),m=require("./AutocompleteMenuItem.js"),d=require("./AutocompleteListBox.js"),j=require("./Autocomplete.scss.js"),I=require("../Menu/Menu.js"),f=require("react/jsx-runtime");function q(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var O=q(e),b=q(o),C=q(s),h=q(n),v=q(r);function A(e,o){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);o&&(n=n.filter((function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable}))),s.push.apply(s,n)}return s}function g(e){for(var o=1;o<arguments.length;o++){var s=null!=arguments[o]?arguments[o]:{};o%2?A(Object(s),!0).forEach((function(o){O.default(e,o,s[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(s)):A(Object(s)).forEach((function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(s,o))}))}return e}var y=function(e){var o=e.label,s=e.options,n=void 0===s?[]:s,r=e.value,q=e.onChange,A=e.multiple,y=e.renderOption,x=void 0===y?p.renderOptionDefault:y,P=e.optionSize,k=void 0===P?"medium":P,M=e.showPopupIcon,F=void 0===M||M,D=e.clearable,S=void 0===D||D,N=e.loading,R=e.noOptionsMessage,w=e.filterOptions,z=e.prefix,B=e.disabled,T=e.getOptionDisabled,V=e.renderSelected,L=void 0===V?p.renderSelectedValue:V,E=e.onInputChange,G=e.className,U=e.testId,W=e.status,_=e.message,K=e.useAllOption,Z=void 0!==K&&K,H=e.useOnlyOptionButton,J=void 0!==H&&H,Q=e.groupBy,X=e.renderGroup,Y=e.disableFiltering,$=e.onCreate,ee=e.dropdownClassName,oe=e.popperProps,se=e.placeholder,ne=e.focusOnClear,ie=void 0===ne||ne,ce=e.listboxComponent,re=e.size,te=void 0===re?"small":re,ue=e.labelPlacement,le=void 0===ue?"top":ue,ae=e.elementsClassNames,pe=e.htmlAttributes,me=e.onOpen,de=e.onClose,je=e.type,Ie=e.spacing,fe=e.isNext,qe=c.useState(""),Oe=h.default(qe,2),be=Oe[0],Ce=Oe[1],he=c.useMemo((function(){if(void 0===r||r instanceof Array&&0===r.length)return A?[]:null;var e=r instanceof Array?r:[r];if(A){var o=e.filter((function(e){return"object"!==C.default(e)})),s=e.filter((function(e){return"object"===C.default(e)})).map((function(e){return{id:e.id,title:e.title}})),i=n.filter((function(e){return o.includes(e.id)}));return[].concat(b.default(i),b.default(s))}return"object"===C.default(e[0])?e[0]:n.find((function(o){return e[0]===o.id}))||null}),[A,r,n]),ve=he instanceof Array&&he.length>0,Ae=he instanceof Array&&he.length===n.length,ge=N?"Loading ...":"No options",ye=!S||!he||he instanceof Array&&!(null!=he&&he.length),xe=c.useCallback((function(e){return f.jsx(l.AutocompleteInput,g(g({},e),{},{label:o,loading:N,prefix:z,status:W,message:_,readOnly:Y,placeholder:se,size:te,labelPlacement:le,elementsClassNames:ae,htmlAttributes:pe,type:je,spacing:Ie,isNext:fe}))}),[o,N,z,W,_,Y,se,te,le,ae,pe,je,Ie,fe]),Pe=c.useCallback((function(e,o,s){if("clear"!==s||ie||(e.stopPropagation(),e.preventDefault()),$&&o){var i=(o instanceof Array?o:[o]).find((function(e){return!p.isRealOption(e)&&!!e[p.CreateOptionMark]}));if(i)return void $(i.newOptionTitle||"")}if(A&&o instanceof Array&&o.some((function(e){return!p.isRealOption(e)&&!!e[p.AllOptionMark]})))return void(he instanceof Array&&he.length<n.length?null==q||q(n.filter(p.isRealOption),s,e):null==q||q([],s,e));null==q||q(o||void 0,s,e)}),[ie,$,A,q,he,n]),ke=c.useCallback((function(e,o){return null==q?void 0:q([e],"select-only-option",o)}),[q]),Me=c.useCallback((function(e,o){var s=o.selected;return p.isRealOption(e)?f.jsx(m.AutocompleteMenuItem,{size:k,selected:s,prefix:e.prefix,multiple:A,useOnlyButton:J,option:e,onSelectOnly:ke,children:x(e)}):e[p.AllOptionMark]?f.jsxs("div",{className:j.allOptionContainer,children:[f.jsx(m.AutocompleteMenuItem,{size:k,selected:ve,indeterminate:ve&&!Ae,multiple:!0,children:e.title}),f.jsx(I.Menu.Divider,{className:j.allOptionDivider})]}):f.jsx(m.AutocompleteMenuItem,{size:k,selected:ve,children:e.title})}),[k,A,J,ke,x,ve,Ae]),Fe=c.useCallback((function(e,o){var s,n=w?w(e,o.inputValue):i.createFilterOptions()(e,o),c=Z&&A&&n.length&&e.length>1?[O.default({title:"All"},p.AllOptionMark,!0)].concat(b.default(n)):n;return $&&""!==o.inputValue.trim()?[].concat(b.default(c),[(s={title:'Add "'.concat(o.inputValue,'"')},O.default(s,p.CreateOptionMark,!0),O.default(s,"newOptionTitle",o.inputValue),s)]):c}),[w,$,Z,A]),De=c.useCallback((function(e){return p.isRealOption(e)&&!(null==T||!T(e))}),[T]),Se=c.useCallback((function(e){return e.title}),[]),Ne=c.useCallback((function(e,o){var s=e.filter(p.isRealOption).map((function(e,s){return{option:e,onDelete:o({index:s}).onDelete}}));return L(s,{useAllOption:Z,allOptions:n})}),[L,Z,n]),Re=c.useCallback((function(e,o,s){e&&"blur"===e.type?Ce(""):"reset"!==s&&Ce(o),"reset"!==s&&(null==E||E(o,e))}),[E]),we=c.useMemo((function(){if(Q)return function(e){return p.isRealOption(e)?Q(e):""}}),[Q]),ze=c.useMemo((function(){return{paper:ee}}),[ee]),Be=c.useCallback((function(e,o){return!(!p.isRealOption(e)||!p.isRealOption(o))&&e.id===o.id}),[]),Te=i.Autocomplete,Ve=c.useCallback((function(e){return f.jsx(t.Popper,g(g(g({},e),oe),{},{className:v.default(null==e?void 0:e.className,null==oe?void 0:oe.className)}))}),[oe]),Le=c.useCallback((function(){null==me||me()}),[me]),Ee=c.useCallback((function(e,o){null==de||de(o)}),[de]);return f.jsx("div",{className:v.default(j.root,F&&j.withArrow,!ye&&j.withClear,G),"data-testid":U,children:f.jsx(Te,{value:he,options:n,getOptionLabel:Se,renderInput:xe,PopperComponent:Ve,PaperComponent:a.AutocompletePaper,multiple:A,disableCloseOnSelect:A,blurOnSelect:!A,onChange:Pe,renderOption:Me,popupIcon:f.jsx(u.DownIcon,{size:16}),forcePopupIcon:!!F,closeIcon:f.jsx(u.CloseSmallIcon,{size:16}),disableClearable:ye,clearText:"",noOptionsText:R||ge,filterOptions:Fe,disabled:B,getOptionDisabled:De,renderTags:Ne,inputValue:A?be:void 0,onInputChange:Re,groupBy:we,renderGroup:X,clearOnBlur:!0,selectOnFocus:!Y,classes:ze,getOptionSelected:Be,ListboxComponent:null!=ce?ce:d.AutocompleteListBox,onOpen:Le,onClose:Ee})})},x=function(e){return y(g(g({},e),{},{isNext:!0}))};x.selectedValueRenderers={default:p.renderSelectedValue,chipsMultiline:p.renderSelectedValueChips},exports.Autocomplete=function(e){return y(g(g({},e),{},{isNext:!1}))},exports.AutocompleteNext=x;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),o=require("@babel/runtime/helpers/toConsumableArray"),s=require("@babel/runtime/helpers/typeof"),n=require("@babel/runtime/helpers/slicedToArray"),i=require("@material-ui/lab"),c=require("react"),t=require("classnames"),r=require("../Popper/Popper.js"),u=require("../../icons/iconParkIcons.js");require("../../icons/customIcons/icons/AddMessage.js"),require("../../icons/customIcons/icons/DragOne.js"),require("../../icons/customIcons/icons/Attention.js"),require("../../icons/customIcons/icons/Collapse.js"),require("../../icons/customIcons/icons/Dashboard.js"),require("../../icons/customIcons/icons/Expand.js"),require("../../icons/customIcons/icons/FolderClosed.js"),require("../../icons/customIcons/icons/FolderClosedFilled.js"),require("../../icons/customIcons/icons/FolderOpened.js"),require("../../icons/customIcons/icons/GreaterOrEqual.js"),require("../../icons/customIcons/icons/LessOrEqual.js"),require("../../icons/customIcons/icons/Search.js"),require("../../icons/customIcons/icons/SearchOne.js"),require("../../icons/customIcons/icons/Wellhub.js"),require("../../icons/customIcons/icons/MultiRuler.js"),require("../../icons/customIcons/icons/Checkbox.js"),require("../../icons/customIcons/icons/CheckboxChecked.js"),require("../../icons/customIcons/icons/CheckboxIndeterminate.js"),require("../../icons/customIcons/icons/Radio.js"),require("../../icons/customIcons/icons/RadioChecked.js"),require("../../icons/customIcons/icons/SimulFrac.js"),require("../../icons/customIcons/icons/ZipperFrac.js"),require("../../icons/customIcons/icons/CautionFilled.js"),require("../../icons/customIcons/icons/InfoRounded.js"),require("../../icons/customIcons/icons/FlameFilled.js"),require("../../icons/customIcons/icons/MoreApp.js"),require("../../icons/customIcons/icons/Pad.js"),require("../../icons/customIcons/icons/DrilloutUnit.js"),require("../../icons/customIcons/icons/FracFleet.js"),require("../../icons/customIcons/icons/Global.js"),require("../../icons/customIcons/icons/Program.js"),require("../../icons/customIcons/icons/Rig.js"),require("../../icons/customIcons/icons/Well.js"),require("../../icons/customIcons/icons/Gap.js"),require("../../icons/customIcons/icons/Pin.js"),require("../../icons/customIcons/icons/PinOne.js"),require("../../icons/customIcons/icons/PinOneCrossed.js"),require("../../icons/customIcons/icons/CloseOneFilled.js"),require("../../icons/customIcons/icons/AttentionFilled.js"),require("../../icons/customIcons/icons/CheckOneFilled.js"),require("../../icons/customIcons/icons/Archive.js"),require("../../icons/customIcons/icons/ArchiveCancel.js"),require("../../icons/customIcons/icons/Unarchive.js"),require("../../icons/customIcons/icons/Archived.js"),require("../../icons/customIcons/icons/InterventionUnit.js"),require("../../icons/customIcons/icons/CloudDelete.js"),require("../../icons/customIcons/icons/Lasso.js"),require("../../icons/customIcons/icons/Radius.js"),require("../../icons/customIcons/icons/ErrorOps.js"),require("../../icons/customIcons/icons/DataTypeOps.js"),require("../../icons/customIcons/icons/FalsePositiveOps.js"),require("../../icons/customIcons/icons/CalibrationOps.js"),require("../../icons/customIcons/icons/CriticalOps.js"),require("../../icons/customIcons/icons/Company.js"),require("../../icons/customIcons/icons/ArchiveOne.js"),require("../../icons/customIcons/icons/ParseBotFusion.js"),require("../../icons/customIcons/icons/Connect.js"),require("../../icons/customIcons/icons/PuzzleOne.js"),require("../../icons/customIcons/icons/Feed.js"),require("../../icons/customIcons/icons/Prompt.js"),require("../../icons/customIcons/icons/Companies.js"),require("../../icons/customIcons/icons/ClipboardAi.js"),require("../../icons/customIcons/icons/Key.js"),require("../../icons/customIcons/icons/AtSignCrossed.js"),require("../../icons/customIcons/icons/MappingManual.js"),require("../../icons/customIcons/icons/Mapping.js"),require("../../icons/customIcons/icons/Metrics.js"),require("../../icons/customIcons/icons/Drops.js"),require("../../icons/customIcons/icons/ClipboardSearch.js"),require("../../icons/customIcons/icons/Template.js"),require("../../icons/customIcons/icons/ClipboardMetrics.js"),require("../../icons/customIcons/icons/ClipboardBuilder.js"),require("../../icons/customIcons/icons/UnitConversion.js"),require("../../icons/customIcons/icons/NPT.js"),require("../../icons/customIcons/icons/GuidedFrac.js");var l=require("./AutocompleteInput/AutocompleteInput.js"),a=require("./AutocompletePaper.js"),p=require("./utils.js"),m=require("./AutocompleteMenuItem.js"),d=require("./AutocompleteListBox.js"),j=require("./Autocomplete.scss.js"),I=require("../Menu/Menu.js"),q=require("react/jsx-runtime");function f(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var O=f(e),b=f(o),C=f(s),v=f(n),h=f(t);function g(e,o){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);o&&(n=n.filter((function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable}))),s.push.apply(s,n)}return s}function A(e){for(var o=1;o<arguments.length;o++){var s=null!=arguments[o]?arguments[o]:{};o%2?g(Object(s),!0).forEach((function(o){O.default(e,o,s[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(s)):g(Object(s)).forEach((function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(s,o))}))}return e}var y=function(e){var o=e.label,s=e.options,n=void 0===s?[]:s,t=e.value,f=e.onChange,g=e.multiple,y=e.renderOption,x=void 0===y?p.renderOptionDefault:y,P=e.optionSize,M=void 0===P?"medium":P,k=e.showPopupIcon,F=void 0===k||k,D=e.clearable,S=void 0===D||D,R=e.loading,N=e.noOptionsMessage,w=e.filterOptions,z=e.prefix,T=e.disabled,V=e.getOptionDisabled,B=e.renderSelected,E=void 0===B?p.renderSelectedValue:B,L=e.onInputChange,G=e.className,U=e.testId,K=e.status,W=e.message,_=e.useAllOption,Z=void 0!==_&&_,H=e.useOnlyOptionButton,J=void 0!==H&&H,Q=e.groupBy,X=e.renderGroup,Y=e.disableFiltering,$=e.onCreate,ee=e.dropdownClassName,oe=e.popperProps,se=e.placeholder,ne=e.focusOnClear,ie=void 0===ne||ne,ce=e.listboxComponent,te=e.size,re=void 0===te?"small":te,ue=e.labelPlacement,le=void 0===ue?"top":ue,ae=e.elementsClassNames,pe=e.htmlAttributes,me=e.onOpen,de=e.onClose,je=e.type,Ie=e.spacing,qe=e.isNext,fe=c.useState(""),Oe=v.default(fe,2),be=Oe[0],Ce=Oe[1],ve=c.useState(!1),he=v.default(ve,2),ge=he[0],Ae=he[1],ye=c.useRef(""),xe=c.useCallback((function(){Ae(!0),null==me||me()}),[me]),Pe=c.useCallback((function(e,o){Ae(!1),null==de||de(o)}),[de]),Me=c.useMemo((function(){return new Map(n.map((function(e){return[e.id,e]})))}),[n]),ke=c.useMemo((function(){if(void 0===t||t instanceof Array&&0===t.length)return g?[]:null;var e=t instanceof Array?t:[t];return g?e.map((function(e){return"object"===C.default(e)?{id:e.id,title:e.title}:Me.get(e)})).filter((function(e){return void 0!==e})):"object"===C.default(e[0])?e[0]:n.find((function(o){return e[0]===o.id}))||null}),[g,t,n,Me]),Fe=ke instanceof Array&&ke.length>0,De=ke instanceof Array&&ke.length===n.length,Se=R?"Loading ...":"No options",Re=!S||!ke||ke instanceof Array&&!(null!=ke&&ke.length),Ne=c.useCallback((function(e,o,s){if("clear"!==s||ie||(e.stopPropagation(),e.preventDefault()),$&&o){var i=(o instanceof Array?o:[o]).find((function(e){return!p.isRealOption(e)&&!!e[p.CreateOptionMark]}));if(i)return Pe(void 0,"select-option"),void $(i.newOptionTitle||"")}if(g&&o instanceof Array&&o.some((function(e){return!p.isRealOption(e)&&!!e[p.AllOptionMark]})))return void(ke instanceof Array&&ke.length<n.length?null==f||f(n.filter(p.isRealOption),s,e):null==f||f([],s,e));null==f||f(o||void 0,s,e)}),[ie,$,g,f,ke,n,Pe]),we=c.useCallback((function(e,o){return null==f?void 0:f([e],"select-only-option",o)}),[f]),ze=c.useCallback((function(e,o){var s=o.selected;return p.isRealOption(e)?q.jsx(m.AutocompleteMenuItem,{size:M,selected:s,prefix:e.prefix,multiple:g,useOnlyButton:J,option:e,onSelectOnly:we,children:x(e)}):e[p.AllOptionMark]?q.jsxs("div",{className:j.allOptionContainer,children:[q.jsx(m.AutocompleteMenuItem,{size:M,selected:Fe,indeterminate:Fe&&!De,multiple:!0,children:e.title}),q.jsx(I.Menu.Divider,{className:j.allOptionDivider})]}):q.jsx(m.AutocompleteMenuItem,{size:M,selected:Fe,children:e.title})}),[M,g,J,we,x,Fe,De]),Te=c.useCallback((function(e,o){var s,n=w?w(e,o.inputValue):i.createFilterOptions()(e,o),c=Z&&g&&n.length&&e.length>1?[O.default({title:"All"},p.AllOptionMark,!0)].concat(b.default(n)):n;return $&&""!==o.inputValue.trim()?[].concat(b.default(c),[(s={title:'Add "'.concat(o.inputValue,'"')},O.default(s,p.CreateOptionMark,!0),O.default(s,"newOptionTitle",o.inputValue),s)]):c}),[w,$,Z,g]),Ve=c.useCallback((function(e){return p.isRealOption(e)&&!(null==V||!V(e))}),[V]),Be=c.useCallback((function(e){return e.title}),[]),Ee=c.useCallback((function(e,o){var s=e.filter(p.isRealOption).map((function(e,s){return{option:e,onDelete:o({index:s}).onDelete}}));return E(s,{useAllOption:Z,allOptions:n})}),[E,Z,n]),Le=c.useCallback((function(e,o,s){e&&"blur"===e.type?(Ce(""),ye.current=o):"reset"!==s&&(Ce(o),ye.current=o),"reset"!==s&&(null==L||L(o,e))}),[L]),Ge=c.useMemo((function(){if(Q)return function(e){return p.isRealOption(e)?Q(e):""}}),[Q]),Ue=c.useMemo((function(){return{paper:ee}}),[ee]),Ke=c.useCallback((function(e,o){return!(!p.isRealOption(e)||!p.isRealOption(o))&&e.id===o.id}),[]),We=i.Autocomplete,_e=c.useCallback((function(e){return q.jsx(r.Popper,A(A(A({},e),oe),{},{className:h.default(null==e?void 0:e.className,null==oe?void 0:oe.className)}))}),[oe]),Ze=c.useCallback((function(e){if("Enter"===e.code&&$){var o,s,i=Te(n,{inputValue:ye.current,getOptionLabel:Be});if(1===i.length&&!p.isRealOption(i[0])&&i[0][p.CreateOptionMark])Pe(void 0,"select-option"),$(i[0].newOptionTitle||""),null===(o=document.activeElement)||void 0===o||null===(s=o.blur)||void 0===s||s.call(o)}}),[$,Te,Be,Pe,n]),He=c.useCallback((function(e){return q.jsx(l.AutocompleteInput,A(A({},e),{},{label:o,loading:R,prefix:z,status:K,message:W,readOnly:Y,placeholder:se,size:re,labelPlacement:le,elementsClassNames:ae,htmlAttributes:pe,type:je,spacing:Ie,isNext:qe,onKeyUp:Ze}))}),[o,R,z,K,W,Y,se,re,le,ae,pe,je,Ie,qe,Ze]);return q.jsx("div",{className:h.default(j.root,F&&j.withArrow,!Re&&j.withClear,G),"data-testid":U,children:q.jsx(We,{value:ke,options:n,getOptionLabel:Be,renderInput:He,PopperComponent:_e,PaperComponent:a.AutocompletePaper,multiple:g,disableCloseOnSelect:g,blurOnSelect:!g,onChange:Ne,renderOption:ze,popupIcon:q.jsx(u.DownIcon,{size:16}),forcePopupIcon:F,closeIcon:q.jsx(u.CloseSmallIcon,{size:16}),disableClearable:Re,clearText:"",noOptionsText:N||Se,filterOptions:Te,disabled:T,getOptionDisabled:Ve,renderTags:Ee,inputValue:g?be:void 0,onInputChange:Le,groupBy:Ge,renderGroup:X,clearOnBlur:!0,selectOnFocus:!Y,classes:Ue,getOptionSelected:Ke,ListboxComponent:null!=ce?ce:d.AutocompleteListBox,onOpen:xe,onClose:Pe,open:ge})})},x=function(e){return y(A(A({},e),{},{isNext:!0}))};x.selectedValueRenderers={default:p.renderSelectedValue,chipsMultiline:p.renderSelectedValueChips},exports.Autocomplete=function(e){return y(A(A({},e),{},{isNext:!1}))},exports.AutocompleteNext=x;
|
|
2
2
|
//# sourceMappingURL=Autocomplete.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Autocomplete.js","sources":["../../../../src/componentsV2/Autocomplete/Autocomplete.tsx"],"sourcesContent":["import {\n Autocomplete as MuiAutocomplete,\n AutocompleteChangeReason as MuiAutocompleteChangeReason,\n AutocompleteCloseReason as MuiAutocompleteCloseReason,\n AutocompleteProps as MuiAutocompleteBaseProps,\n AutocompleteRenderGroupParams,\n AutocompleteRenderInputParams,\n createFilterOptions,\n} from '@material-ui/lab';\nimport {\n ChangeEvent,\n ComponentType,\n HTMLAttributes,\n MouseEventHandler,\n ReactNode,\n useCallback,\n useMemo,\n useState,\n} from 'react';\nimport classNames from 'classnames';\n\nimport { Popper, PopperProps } from '../Popper';\nimport { MenuItemProps } from '../Menu/MenuItem';\nimport { CloseSmallIcon, DownIcon } from '../../icons';\nimport { TextInputNextProps } from '../TextInputNext';\nimport { TextInputProps } from '../TextInput';\n\nimport { AutocompleteInput } from './AutocompleteInput';\nimport { AutocompletePaper } from './AutocompletePaper';\nimport {\n AllOptionMark,\n AutocompleteOption,\n CreateOptionMark,\n InternalOption,\n isRealOption,\n OwnAddedOption,\n renderOptionDefault,\n renderSelectedValue,\n renderSelectedValueChips,\n} from './utils';\nimport { AutocompleteMenuItem } from './AutocompleteMenuItem';\nimport { AutocompleteListBox } from './AutocompleteListBox';\n\nimport styles from './Autocomplete.scss';\nimport { Menu } from '../Menu';\n\ntype MuiAutocompleteProps<T extends AutocompleteOption> = Required<\n MuiAutocompleteBaseProps<InternalOption<T>, boolean, false, false>\n>;\n\ntype ChangeReason =\n | MuiAutocompleteChangeReason\n | 'select-option-all'\n | 'remove-option-all'\n | 'select-only-option';\ntype AutocompletePopperProps = Omit<PopperProps, 'open' | 'anchorEl' | 'children'>;\n\ntype AutocompleteBaseProps<\n T extends AutocompleteOption = AutocompleteOption,\n Multiple extends boolean | undefined = false\n> = {\n /**\n * Options to allow selection from. Has to be assignable to `{ id: string | number; title: string; prefix?: ReactNode; }[]`\n */\n options?: T[];\n /**\n * Selected value. If `multiple` is `false | undefined`, and the value is an array, only the first element will be used\n *\n * There's a [bug in TS](https://github.com/microsoft/TypeScript/issues/47599) which causes `onChange` prop\n * to have incorrect typing if we mix T and T['id'] in `value`. Therefore, we can't use the \"correct\" typing\n * ```\n * value?: T['id'] | T | (T['id'] | T)[];\n * ```\n *\n * You may need to provide additional typings\n */\n value?: string | number | T | (string | number | T)[];\n /**\n * If `true`, the component will support multiple selection\n */\n multiple?: Multiple;\n /**\n * Selection change handler\n * Receives an array of options if `multiple` is `true`, a single selected option or `undefined` otherwise\n */\n onChange?: (\n value: Multiple extends undefined | false ? T | undefined : T[],\n reason: ChangeReason,\n event?: ChangeEvent<unknown>\n ) => void;\n label?: ReactNode;\n placeholder?: string;\n /**\n * Controls the size of the options rendered\n */\n optionSize?: MenuItemProps['size'];\n disabled?: boolean;\n /**\n * If exists - allows user to create own options. Called when 'Add \"whatever\"' option is selected\n */\n onCreate?: (title: string) => void;\n\n prefix?: ReactNode;\n loading?: boolean;\n showPopupIcon?: boolean;\n /**\n * Controls the \"Clear\" button that's shown to the right if there is a value\n */\n clearable?: boolean;\n /**\n * Controls if the field should keep/gain focus after \"Clear\" button is clicked\n */\n focusOnClear?: boolean;\n /**\n * Triggered when user types something\n */\n onInputChange?: (value: string, event: ChangeEvent<HTMLInputElement>) => void;\n status?: TextInputNextProps['status'];\n message?: TextInputNextProps['message'];\n size?: TextInputNextProps['size'];\n labelPlacement?: TextInputNextProps['labelPlacement'];\n /**\n * Makes internal text field readonly, effectively turning component into a simple `<select/>`\n */\n disableFiltering?: boolean;\n\n renderOption?: (item: T) => ReactNode;\n /**\n * Message to show when there are no options\n */\n noOptionsMessage?: ReactNode;\n spacing?: TextInputProps['spacing'];\n /**\n * Function that filters options based on input value\n */\n filterOptions?: (options: T[], inputValue: string) => T[];\n /**\n * Function that determines if an option is disabled. Used to override the default\n * @param option\n */\n getOptionDisabled?: (option: T) => boolean;\n /**\n * If `multiple === true` shows an \"All\" option that selects/deselects all options\n */\n useAllOption?: boolean;\n /**\n * If `multiple === true` shows a \"Select Only\" button on option that selects only the corresponding option\n */\n useOnlyOptionButton?: boolean;\n\n /**\n * Used to render selected values when `multiple === true`\n */\n renderSelected?: (\n data: { option: T; onDelete: MouseEventHandler }[],\n options: { useAllOption: boolean; allOptions: T[] }\n ) => ReactNode;\n\n /**\n * Defines option grouping\n */\n groupBy?: (option: T) => string;\n /**\n * Group render override\n */\n renderGroup?: (props: AutocompleteRenderGroupParams) => ReactNode;\n\n /**\n * A classname that will be applied to dropdown (`<Paper/>` component)\n */\n dropdownClassName?: string;\n /**\n * Escape hatch to customize dropdown popper behavior.\n * `open`, `anchorEl`, and `children` are controlled internally.\n */\n popperProps?: Partial<AutocompletePopperProps>;\n\n type?: 'default' | 'search';\n\n className?: string;\n testId?: string;\n\n /**\n * Called when the dropdown is opened\n */\n onOpen?: () => void;\n /**\n * Called when the dropdown is closed\n */\n onClose?: (reason: MuiAutocompleteCloseReason) => void;\n\n /**\n * Escape hatch to fine-tune the styling of underlying elements\n */\n elementsClassNames?: TextInputNextProps['elementsClassNames'];\n\n /** HTML attributes forwarded to the underlying input. */\n htmlAttributes?: TextInputNextProps['htmlAttributes'];\n\n /**\n * Custom listbox component for rendering options (e.g., virtualized list)\n */\n listboxComponent?: ComponentType<HTMLAttributes<HTMLElement>>;\n\n // TODO Remove when making next a new baseline\n isNext?: boolean;\n};\n\nexport type AutocompleteChangeHandler<\n Option extends AutocompleteOption = AutocompleteOption,\n Multiple extends boolean | undefined = false\n> = Required<AutocompleteBaseProps<Option, Multiple>>['onChange'];\n\nconst AutocompleteBase = <\n T extends AutocompleteOption,\n Multiple extends boolean | undefined = false\n>({\n label,\n options = [],\n value,\n onChange,\n multiple,\n renderOption = renderOptionDefault,\n optionSize = 'medium',\n showPopupIcon = true,\n clearable = true,\n loading,\n noOptionsMessage,\n filterOptions,\n prefix,\n disabled,\n getOptionDisabled,\n renderSelected = renderSelectedValue,\n onInputChange,\n className,\n testId,\n status,\n message,\n useAllOption = false,\n useOnlyOptionButton = false,\n groupBy,\n renderGroup,\n disableFiltering,\n onCreate,\n dropdownClassName,\n popperProps,\n placeholder,\n focusOnClear = true,\n listboxComponent,\n size = 'small',\n labelPlacement = 'top',\n elementsClassNames,\n htmlAttributes,\n onOpen,\n onClose,\n\n // Old props\n type,\n spacing,\n isNext,\n}: AutocompleteBaseProps<T, Multiple>) => {\n const [inputValue, setInputValue] = useState('');\n\n const muiValue = useMemo(() => {\n if (value === undefined || (value instanceof Array && value.length === 0)) {\n return multiple ? [] : null;\n }\n\n // Array of either ids or actual values\n const mixedValues = value instanceof Array ? value : [value];\n\n if (multiple) {\n const valuesArray = mixedValues.filter(value => typeof value !== 'object');\n const objectValues = mixedValues\n .filter(value => typeof value === 'object')\n // MUI Autocomplete doesn't like react nodes in value, so we strip everything from the object to the bare minimum\n .map(({ id, title }) => ({ id, title }));\n const optionsById = options.filter(option => valuesArray.includes(option.id));\n\n return [...optionsById, ...objectValues];\n } else {\n return typeof mixedValues[0] === 'object'\n ? mixedValues[0]\n : options.find(option => mixedValues[0] === option.id) || null;\n }\n }, [multiple, value, options]) as MuiAutocompleteBaseProps<T, Multiple, false, false>['value'];\n\n const hasMultiSelected = muiValue instanceof Array && muiValue.length > 0;\n const hasAllMultiSelected = muiValue instanceof Array && muiValue.length === options.length;\n const defaultNoOptionsText = loading ? 'Loading ...' : 'No options';\n const disableClearable =\n !clearable || !muiValue || (muiValue instanceof Array && !muiValue?.length);\n\n const renderInput = useCallback(\n (inputProps: AutocompleteRenderInputParams) => (\n <AutocompleteInput\n {...inputProps}\n label={label}\n loading={loading}\n prefix={prefix}\n status={status}\n message={message}\n readOnly={disableFiltering}\n placeholder={placeholder}\n size={size}\n labelPlacement={labelPlacement}\n elementsClassNames={elementsClassNames}\n htmlAttributes={htmlAttributes}\n // Old props\n type={type}\n spacing={spacing}\n isNext={isNext}\n />\n ),\n [\n label,\n loading,\n prefix,\n status,\n message,\n disableFiltering,\n placeholder,\n size,\n labelPlacement,\n elementsClassNames,\n htmlAttributes,\n type,\n spacing,\n isNext,\n ]\n );\n\n const actualOnChange = useCallback<MuiAutocompleteProps<T>['onChange']>(\n (event, optionOrArray, reason) => {\n if (reason === 'clear' && !focusOnClear) {\n event.stopPropagation();\n event.preventDefault();\n }\n\n // Handling of \"Add\" option\n if (onCreate && optionOrArray) {\n const optionArray = optionOrArray instanceof Array ? optionOrArray : [optionOrArray];\n const foundAddOption: OwnAddedOption | undefined = optionArray.find(\n option => !isRealOption(option) && !!option[CreateOptionMark]\n );\n\n if (foundAddOption) {\n onCreate(foundAddOption.newOptionTitle || '');\n return;\n }\n }\n\n // Handling of \"All\" option - only multiselect\n if (multiple && optionOrArray instanceof Array) {\n const allOptionExists = optionOrArray.some(\n option => !isRealOption(option) && !!option[AllOptionMark]\n );\n\n if (allOptionExists) {\n // Selecting \"All\"\n if (muiValue instanceof Array && muiValue.length < options.length) {\n onChange?.(options.filter(isRealOption) as never, reason, event);\n }\n // Deselecting \"All\"\n else {\n onChange?.([] as never, reason, event);\n }\n return;\n }\n }\n\n onChange?.((optionOrArray || undefined) as never, reason, event);\n },\n [focusOnClear, onCreate, multiple, onChange, muiValue, options]\n );\n\n const onSelectOnly = useCallback(\n (option: T, event: ChangeEvent<object>) =>\n onChange?.([option] as never, 'select-only-option', event),\n [onChange]\n );\n\n const actualRenderOption = useCallback<MuiAutocompleteProps<T>['renderOption']>(\n (option: InternalOption<T>, { selected }) => {\n if (isRealOption(option)) {\n return (\n <AutocompleteMenuItem\n size={optionSize}\n selected={selected}\n prefix={option.prefix}\n multiple={multiple}\n useOnlyButton={useOnlyOptionButton}\n option={option}\n onSelectOnly={onSelectOnly}\n >\n {renderOption(option)}\n </AutocompleteMenuItem>\n );\n } else if (option[AllOptionMark]) {\n return (\n <div className={styles.allOptionContainer}>\n <AutocompleteMenuItem\n size={optionSize}\n selected={hasMultiSelected}\n indeterminate={hasMultiSelected && !hasAllMultiSelected}\n multiple\n >\n {option.title}\n </AutocompleteMenuItem>\n <Menu.Divider className={styles.allOptionDivider} />\n </div>\n );\n } else {\n return (\n <AutocompleteMenuItem size={optionSize} selected={hasMultiSelected}>\n {option.title}\n </AutocompleteMenuItem>\n );\n }\n },\n [\n optionSize,\n multiple,\n useOnlyOptionButton,\n onSelectOnly,\n renderOption,\n hasMultiSelected,\n hasAllMultiSelected,\n ]\n );\n\n const actualFilterOptions = useCallback<MuiAutocompleteProps<T>['filterOptions']>(\n (options, params): InternalOption<T>[] => {\n const filteredOptions = filterOptions\n ? filterOptions(options as T[], params.inputValue)\n : createFilterOptions<T>()(options as T[], params);\n\n // Adding \"All\" option if needed\n const optionsWithAll =\n useAllOption && multiple && filteredOptions.length && options.length > 1\n ? [{ title: 'All', [AllOptionMark]: true }, ...filteredOptions]\n : filteredOptions;\n\n // Adding \"Add\" option if needed\n return onCreate && params.inputValue.trim() !== ''\n ? [\n ...optionsWithAll,\n {\n title: `Add \"${params.inputValue}\"`,\n [CreateOptionMark]: true,\n newOptionTitle: params.inputValue,\n },\n ]\n : optionsWithAll;\n },\n [filterOptions, onCreate, useAllOption, multiple]\n );\n\n const actualGetOptionDisabled = useCallback<MuiAutocompleteProps<T>['getOptionDisabled']>(\n option => isRealOption(option) && !!getOptionDisabled?.(option),\n [getOptionDisabled]\n );\n\n const getOptionLabel = useCallback<MuiAutocompleteProps<T>['getOptionLabel']>(\n option => option.title,\n []\n );\n\n const renderTags = useCallback<MuiAutocompleteProps<T>['renderTags']>(\n (tags, getTagProps) => {\n const tagsArray = tags.filter(isRealOption).map((option, index) => {\n // Untyped in MUI, so we have to do it ourselves\n const { onDelete } = getTagProps({ index }) as { onDelete: MouseEventHandler };\n return { option, onDelete };\n });\n\n return renderSelected(tagsArray, { useAllOption, allOptions: options });\n },\n [renderSelected, useAllOption, options]\n );\n\n const actualOnInputChange = useCallback<MuiAutocompleteProps<T>['onInputChange']>(\n (event, value, reason) => {\n if (event && event.type === 'blur') {\n setInputValue('');\n } else if (reason !== 'reset') {\n setInputValue(value);\n }\n\n if (reason !== 'reset') {\n onInputChange?.(value, event as ChangeEvent<HTMLInputElement>);\n }\n },\n [onInputChange]\n );\n\n const actualGroupBy = useMemo<MuiAutocompleteProps<T>['groupBy'] | undefined>(() => {\n if (groupBy) {\n return option => {\n if (isRealOption(option)) {\n return groupBy(option);\n }\n\n return '';\n };\n }\n\n return undefined;\n }, [groupBy]);\n\n const classes = useMemo(() => ({ paper: dropdownClassName }), [dropdownClassName]);\n\n const getOptionSelected = useCallback((a: InternalOption<T>, b: InternalOption<T>) => {\n return isRealOption(a) && isRealOption(b) ? a.id === b.id : false;\n }, []);\n\n const Component = MuiAutocomplete<InternalOption<T>, Multiple, boolean, false>;\n\n const PopperComponent = useCallback(\n (props: PopperProps) => (\n <Popper\n {...props}\n {...popperProps}\n className={classNames(props?.className, popperProps?.className)}\n />\n ),\n [popperProps]\n ) as NonNullable<MuiAutocompleteProps<T>['PopperComponent']>;\n\n const actualOnOpen = useCallback<MuiAutocompleteProps<T>['onOpen']>(() => {\n onOpen?.();\n }, [onOpen]);\n\n const actualOnClose = useCallback<MuiAutocompleteProps<T>['onClose']>(\n (_e, reason) => {\n onClose?.(reason);\n },\n [onClose]\n );\n\n return (\n <div\n className={classNames(\n styles.root,\n showPopupIcon && styles.withArrow,\n !disableClearable && styles.withClear,\n className\n )}\n data-testid={testId}\n >\n <Component\n value={muiValue}\n options={options}\n getOptionLabel={getOptionLabel}\n renderInput={renderInput}\n PopperComponent={PopperComponent}\n PaperComponent={AutocompletePaper}\n multiple={multiple}\n disableCloseOnSelect={multiple}\n blurOnSelect={!multiple}\n onChange={actualOnChange}\n renderOption={actualRenderOption}\n popupIcon={<DownIcon size={16} />}\n forcePopupIcon={!!showPopupIcon}\n closeIcon={<CloseSmallIcon size={16} />}\n disableClearable={disableClearable}\n clearText=\"\"\n noOptionsText={noOptionsMessage || defaultNoOptionsText}\n filterOptions={actualFilterOptions}\n disabled={disabled}\n getOptionDisabled={actualGetOptionDisabled}\n renderTags={renderTags}\n inputValue={multiple ? inputValue : undefined}\n onInputChange={actualOnInputChange}\n groupBy={actualGroupBy}\n renderGroup={renderGroup}\n clearOnBlur\n selectOnFocus={!disableFiltering}\n classes={classes}\n getOptionSelected={getOptionSelected}\n ListboxComponent={listboxComponent ?? AutocompleteListBox}\n onOpen={actualOnOpen}\n onClose={actualOnClose}\n />\n </div>\n );\n};\n\n// Old version\n/**\n * @deprecated use `AutocompleteNext`, and see migration guide for `TextInputNext` for details\n */\nexport type AutocompleteProps<\n T extends AutocompleteOption = AutocompleteOption,\n Multiple extends boolean | undefined = false\n> = Omit<\n AutocompleteBaseProps<T, Multiple>,\n 'size' | 'labelPlacement' | 'elementsClassNames' | 'htmlAttributes' | 'isNext'\n>;\n\n/**\n * @deprecated use `AutocompleteNext`, and see migration guide for `TextInputNext` for details\n */\nexport const Autocomplete = <\n T extends AutocompleteOption,\n Multiple extends boolean | undefined = false\n>(\n props: AutocompleteProps<T, Multiple>\n) => AutocompleteBase<T, Multiple>({ ...props, isNext: false });\n\n// New version\nexport type AutocompleteNextProps<\n T extends AutocompleteOption = AutocompleteOption,\n Multiple extends boolean | undefined = false\n> = Omit<AutocompleteBaseProps<T, Multiple>, 'type' | 'spacing' | 'isNext'>;\n\nexport const AutocompleteNext = <\n T extends AutocompleteOption,\n Multiple extends boolean | undefined = false\n>(\n props: AutocompleteNextProps<T, Multiple>\n) => AutocompleteBase<T, Multiple>({ ...props, isNext: true });\n\nAutocompleteNext.selectedValueRenderers = {\n default: renderSelectedValue,\n chipsMultiline: renderSelectedValueChips,\n};\n"],"names":["AutocompleteBase","_ref","label","_ref$options","options","value","onChange","multiple","_ref$renderOption","renderOption","renderOptionDefault","_ref$optionSize","optionSize","_ref$showPopupIcon","showPopupIcon","_ref$clearable","clearable","loading","noOptionsMessage","filterOptions","prefix","disabled","getOptionDisabled","_ref$renderSelected","renderSelected","renderSelectedValue","onInputChange","className","testId","status","message","_ref$useAllOption","useAllOption","_ref$useOnlyOptionBut","useOnlyOptionButton","groupBy","renderGroup","disableFiltering","onCreate","dropdownClassName","popperProps","placeholder","_ref$focusOnClear","focusOnClear","listboxComponent","_ref$size","size","_ref$labelPlacement","labelPlacement","elementsClassNames","htmlAttributes","onOpen","onClose","type","spacing","isNext","useState","_useState2","_slicedToArray","_useState","inputValue","setInputValue","muiValue","useMemo","undefined","Array","length","mixedValues","valuesArray","filter","_typeof","objectValues","map","_ref2","id","title","optionsById","option","includes","find","hasMultiSelected","hasAllMultiSelected","defaultNoOptionsText","disableClearable","renderInput","useCallback","inputProps","_jsx","AutocompleteInput","_objectSpread","readOnly","actualOnChange","event","optionOrArray","reason","stopPropagation","preventDefault","foundAddOption","isRealOption","CreateOptionMark","newOptionTitle","some","AllOptionMark","onSelectOnly","actualRenderOption","_ref3","selected","AutocompleteMenuItem","useOnlyButton","children","_jsxs","styles","allOptionContainer","indeterminate","Menu","Divider","allOptionDivider","actualFilterOptions","params","_ref5","filteredOptions","createFilterOptions","optionsWithAll","_defineProperty","trim","concat","_toConsumableArray","actualGetOptionDisabled","getOptionLabel","renderTags","tags","getTagProps","tagsArray","index","onDelete","allOptions","actualOnInputChange","actualGroupBy","classes","paper","getOptionSelected","a","b","Component","MuiAutocomplete","PopperComponent","props","Popper","classNames","actualOnOpen","actualOnClose","_e","root","withArrow","withClear","PaperComponent","AutocompletePaper","disableCloseOnSelect","blurOnSelect","popupIcon","DownIcon","forcePopupIcon","closeIcon","CloseSmallIcon","clearText","noOptionsText","clearOnBlur","selectOnFocus","ListboxComponent","AutocompleteListBox","AutocompleteNext","selectedValueRenderers","default","chipsMultiline","renderSelectedValueChips"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Autocomplete.js","sources":["../../../../src/componentsV2/Autocomplete/Autocomplete.tsx"],"sourcesContent":["import {\n Autocomplete as MuiAutocomplete,\n AutocompleteChangeReason as MuiAutocompleteChangeReason,\n AutocompleteCloseReason as MuiAutocompleteCloseReason,\n AutocompleteProps as MuiAutocompleteBaseProps,\n AutocompleteRenderGroupParams,\n AutocompleteRenderInputParams,\n createFilterOptions,\n} from '@material-ui/lab';\nimport {\n ChangeEvent,\n ComponentType,\n HTMLAttributes,\n KeyboardEventHandler,\n MouseEventHandler,\n ReactNode,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport classNames from 'classnames';\n\nimport { Popper, PopperProps } from '../Popper';\nimport { MenuItemProps } from '../Menu/MenuItem';\nimport { CloseSmallIcon, DownIcon } from '../../icons';\nimport { TextInputNextProps } from '../TextInputNext';\nimport { TextInputProps } from '../TextInput';\n\nimport { AutocompleteInput } from './AutocompleteInput';\nimport { AutocompletePaper } from './AutocompletePaper';\nimport {\n AllOptionMark,\n AutocompleteOption,\n CreateOptionMark,\n InternalOption,\n isRealOption,\n OwnAddedOption,\n renderOptionDefault,\n renderSelectedValue,\n renderSelectedValueChips,\n} from './utils';\nimport { AutocompleteMenuItem } from './AutocompleteMenuItem';\nimport { AutocompleteListBox } from './AutocompleteListBox';\n\nimport styles from './Autocomplete.scss';\nimport { Menu } from '../Menu';\n\ntype MuiAutocompleteProps<T extends AutocompleteOption> = Required<\n MuiAutocompleteBaseProps<InternalOption<T>, boolean, false, false>\n>;\n\ntype ChangeReason =\n | MuiAutocompleteChangeReason\n | 'select-option-all'\n | 'remove-option-all'\n | 'select-only-option';\ntype AutocompletePopperProps = Omit<PopperProps, 'open' | 'anchorEl' | 'children'>;\n\ntype AutocompleteBaseProps<\n T extends AutocompleteOption = AutocompleteOption,\n Multiple extends boolean | undefined = false\n> = {\n /**\n * Options to allow selection from. Has to be assignable to `{ id: string | number; title: string; prefix?: ReactNode; }[]`\n */\n options?: T[];\n /**\n * Selected value. If `multiple` is `false | undefined`, and the value is an array, only the first element will be used\n *\n * There's a [bug in TS](https://github.com/microsoft/TypeScript/issues/47599) which causes `onChange` prop\n * to have incorrect typing if we mix T and T['id'] in `value`. Therefore, we can't use the \"correct\" typing\n * ```\n * value?: T['id'] | T | (T['id'] | T)[];\n * ```\n *\n * You may need to provide additional typings\n */\n value?: string | number | T | (string | number | T)[];\n /**\n * If `true`, the component will support multiple selection\n */\n multiple?: Multiple;\n /**\n * Selection change handler\n * Receives an array of options if `multiple` is `true`, a single selected option or `undefined` otherwise\n */\n onChange?: (\n value: Multiple extends undefined | false ? T | undefined : T[],\n reason: ChangeReason,\n event?: ChangeEvent<unknown>\n ) => void;\n label?: ReactNode;\n placeholder?: string;\n /**\n * Controls the size of the options rendered\n */\n optionSize?: MenuItemProps['size'];\n disabled?: boolean;\n /**\n * If exists - allows user to create own options. Called when 'Add \"whatever\"' option is selected\n */\n onCreate?: (title: string) => void;\n\n prefix?: ReactNode;\n loading?: boolean;\n showPopupIcon?: boolean;\n /**\n * Controls the \"Clear\" button that's shown to the right if there is a value\n */\n clearable?: boolean;\n /**\n * Controls if the field should keep/gain focus after \"Clear\" button is clicked\n */\n focusOnClear?: boolean;\n /**\n * Triggered when user types something\n */\n onInputChange?: (value: string, event: ChangeEvent<HTMLInputElement>) => void;\n status?: TextInputNextProps['status'];\n message?: TextInputNextProps['message'];\n size?: TextInputNextProps['size'];\n labelPlacement?: TextInputNextProps['labelPlacement'];\n /**\n * Makes internal text field readonly, effectively turning component into a simple `<select/>`\n */\n disableFiltering?: boolean;\n\n renderOption?: (item: T) => ReactNode;\n /**\n * Message to show when there are no options\n */\n noOptionsMessage?: ReactNode;\n spacing?: TextInputProps['spacing'];\n /**\n * Function that filters options based on input value\n */\n filterOptions?: (options: T[], inputValue: string) => T[];\n /**\n * Function that determines if an option is disabled. Used to override the default\n * @param option\n */\n getOptionDisabled?: (option: T) => boolean;\n /**\n * If `multiple === true` shows an \"All\" option that selects/deselects all options\n */\n useAllOption?: boolean;\n /**\n * If `multiple === true` shows a \"Select Only\" button on option that selects only the corresponding option\n */\n useOnlyOptionButton?: boolean;\n\n /**\n * Used to render selected values when `multiple === true`\n */\n renderSelected?: (\n data: { option: T; onDelete: MouseEventHandler }[],\n options: { useAllOption: boolean; allOptions: T[] }\n ) => ReactNode;\n\n /**\n * Defines option grouping\n */\n groupBy?: (option: T) => string;\n /**\n * Group render override\n */\n renderGroup?: (props: AutocompleteRenderGroupParams) => ReactNode;\n\n /**\n * A classname that will be applied to dropdown (`<Paper/>` component)\n */\n dropdownClassName?: string;\n /**\n * Escape hatch to customize dropdown popper behavior.\n * `open`, `anchorEl`, and `children` are controlled internally.\n */\n popperProps?: Partial<AutocompletePopperProps>;\n\n type?: 'default' | 'search';\n\n className?: string;\n testId?: string;\n\n /**\n * Called when the dropdown is opened\n */\n onOpen?: () => void;\n /**\n * Called when the dropdown is closed\n */\n onClose?: (reason: MuiAutocompleteCloseReason) => void;\n\n /**\n * Escape hatch to fine-tune the styling of underlying elements\n */\n elementsClassNames?: TextInputNextProps['elementsClassNames'];\n\n /** HTML attributes forwarded to the underlying input. */\n htmlAttributes?: TextInputNextProps['htmlAttributes'];\n\n /**\n * Custom listbox component for rendering options (e.g., virtualized list)\n */\n listboxComponent?: ComponentType<HTMLAttributes<HTMLElement>>;\n\n // TODO Remove when making next a new baseline\n isNext?: boolean;\n};\n\nexport type AutocompleteChangeHandler<\n Option extends AutocompleteOption = AutocompleteOption,\n Multiple extends boolean | undefined = false\n> = Required<AutocompleteBaseProps<Option, Multiple>>['onChange'];\n\nconst AutocompleteBase = <\n T extends AutocompleteOption,\n Multiple extends boolean | undefined = false\n>({\n label,\n options = [],\n value,\n onChange,\n multiple,\n renderOption = renderOptionDefault,\n optionSize = 'medium',\n showPopupIcon = true,\n clearable = true,\n loading,\n noOptionsMessage,\n filterOptions,\n prefix,\n disabled,\n getOptionDisabled,\n renderSelected = renderSelectedValue,\n onInputChange,\n className,\n testId,\n status,\n message,\n useAllOption = false,\n useOnlyOptionButton = false,\n groupBy,\n renderGroup,\n disableFiltering,\n onCreate,\n dropdownClassName,\n popperProps,\n placeholder,\n focusOnClear = true,\n listboxComponent,\n size = 'small',\n labelPlacement = 'top',\n elementsClassNames,\n htmlAttributes,\n onOpen,\n onClose,\n\n // Old props\n type,\n spacing,\n isNext,\n}: AutocompleteBaseProps<T, Multiple>) => {\n const [inputValue, setInputValue] = useState('');\n const [isOpen, setIsOpen] = useState(false);\n const inputValueRef = useRef('');\n\n const actualOnOpen = useCallback<MuiAutocompleteProps<T>['onOpen']>(() => {\n setIsOpen(true);\n onOpen?.();\n }, [onOpen]);\n\n const actualOnClose = useCallback<(event: unknown, reason: MuiAutocompleteCloseReason) => void>(\n (_e, reason) => {\n setIsOpen(false);\n onClose?.(reason);\n },\n [onClose]\n );\n\n const optionsById = useMemo(() => new Map(options.map(option => [option.id, option])), [options]);\n\n const muiValue = useMemo(() => {\n if (value === undefined || (value instanceof Array && value.length === 0)) {\n return multiple ? [] : null;\n }\n\n // Array of either ids or actual values\n const mixedValues = value instanceof Array ? value : [value];\n\n if (multiple) {\n return mixedValues\n .map(objOrId => {\n if (typeof objOrId === 'object') {\n // MUI Autocomplete doesn't like react nodes in value, so we strip everything from the object to the bare minimum\n const { id, title } = objOrId;\n return { id, title };\n } else {\n return optionsById.get(objOrId);\n }\n })\n .filter(item => item !== undefined);\n } else {\n return typeof mixedValues[0] === 'object'\n ? mixedValues[0]\n : options.find(option => mixedValues[0] === option.id) || null;\n }\n }, [multiple, value, options, optionsById]) as MuiAutocompleteBaseProps<\n T,\n Multiple,\n false,\n false\n >['value'];\n\n const hasMultiSelected = muiValue instanceof Array && muiValue.length > 0;\n const hasAllMultiSelected = muiValue instanceof Array && muiValue.length === options.length;\n const defaultNoOptionsText = loading ? 'Loading ...' : 'No options';\n const disableClearable =\n !clearable || !muiValue || (muiValue instanceof Array && !muiValue?.length);\n\n const actualOnChange = useCallback<MuiAutocompleteProps<T>['onChange']>(\n (event, optionOrArray, reason) => {\n if (reason === 'clear' && !focusOnClear) {\n event.stopPropagation();\n event.preventDefault();\n }\n\n // Handling of \"Add\" option\n if (onCreate && optionOrArray) {\n const optionArray = optionOrArray instanceof Array ? optionOrArray : [optionOrArray];\n const foundAddOption: OwnAddedOption | undefined = optionArray.find(\n option => !isRealOption(option) && !!option[CreateOptionMark]\n );\n\n if (foundAddOption) {\n actualOnClose(undefined, 'select-option');\n onCreate(foundAddOption.newOptionTitle || '');\n return;\n }\n }\n\n // Handling of \"All\" option - only multiselect\n if (multiple && optionOrArray instanceof Array) {\n const allOptionExists = optionOrArray.some(\n option => !isRealOption(option) && !!option[AllOptionMark]\n );\n\n if (allOptionExists) {\n // Selecting \"All\"\n if (muiValue instanceof Array && muiValue.length < options.length) {\n onChange?.(options.filter(isRealOption) as never, reason, event);\n }\n // Deselecting \"All\"\n else {\n onChange?.([] as never, reason, event);\n }\n return;\n }\n }\n\n onChange?.((optionOrArray || undefined) as never, reason, event);\n },\n [focusOnClear, onCreate, multiple, onChange, muiValue, options, actualOnClose]\n );\n\n const onSelectOnly = useCallback(\n (option: T, event: ChangeEvent<object>) =>\n onChange?.([option] as never, 'select-only-option', event),\n [onChange]\n );\n\n const actualRenderOption = useCallback<MuiAutocompleteProps<T>['renderOption']>(\n (option: InternalOption<T>, { selected }) => {\n if (isRealOption(option)) {\n return (\n <AutocompleteMenuItem\n size={optionSize}\n selected={selected}\n prefix={option.prefix}\n multiple={multiple}\n useOnlyButton={useOnlyOptionButton}\n option={option}\n onSelectOnly={onSelectOnly}\n >\n {renderOption(option)}\n </AutocompleteMenuItem>\n );\n } else if (option[AllOptionMark]) {\n return (\n <div className={styles.allOptionContainer}>\n <AutocompleteMenuItem\n size={optionSize}\n selected={hasMultiSelected}\n indeterminate={hasMultiSelected && !hasAllMultiSelected}\n multiple\n >\n {option.title}\n </AutocompleteMenuItem>\n <Menu.Divider className={styles.allOptionDivider} />\n </div>\n );\n } else {\n return (\n <AutocompleteMenuItem size={optionSize} selected={hasMultiSelected}>\n {option.title}\n </AutocompleteMenuItem>\n );\n }\n },\n [\n optionSize,\n multiple,\n useOnlyOptionButton,\n onSelectOnly,\n renderOption,\n hasMultiSelected,\n hasAllMultiSelected,\n ]\n );\n\n const actualFilterOptions = useCallback<MuiAutocompleteProps<T>['filterOptions']>(\n (options, params): InternalOption<T>[] => {\n const filteredOptions = filterOptions\n ? filterOptions(options as T[], params.inputValue)\n : createFilterOptions<T>()(options as T[], params);\n\n // Adding \"All\" option if needed\n const optionsWithAll =\n useAllOption && multiple && filteredOptions.length && options.length > 1\n ? [{ title: 'All', [AllOptionMark]: true }, ...filteredOptions]\n : filteredOptions;\n\n // Adding \"Add\" option if needed\n return onCreate && params.inputValue.trim() !== ''\n ? [\n ...optionsWithAll,\n {\n title: `Add \"${params.inputValue}\"`,\n [CreateOptionMark]: true,\n newOptionTitle: params.inputValue,\n },\n ]\n : optionsWithAll;\n },\n [filterOptions, onCreate, useAllOption, multiple]\n );\n\n const actualGetOptionDisabled = useCallback<MuiAutocompleteProps<T>['getOptionDisabled']>(\n option => isRealOption(option) && !!getOptionDisabled?.(option),\n [getOptionDisabled]\n );\n\n const getOptionLabel = useCallback<MuiAutocompleteProps<T>['getOptionLabel']>(\n option => option.title,\n []\n );\n\n const renderTags = useCallback<MuiAutocompleteProps<T>['renderTags']>(\n (tags, getTagProps) => {\n const tagsArray = tags.filter(isRealOption).map((option, index) => {\n // Untyped in MUI, so we have to do it ourselves\n const { onDelete } = getTagProps({ index }) as { onDelete: MouseEventHandler };\n return { option, onDelete };\n });\n\n return renderSelected(tagsArray, { useAllOption, allOptions: options });\n },\n [renderSelected, useAllOption, options]\n );\n\n const actualOnInputChange = useCallback<MuiAutocompleteProps<T>['onInputChange']>(\n (event, newInputValue, reason) => {\n if (event && event.type === 'blur') {\n setInputValue('');\n inputValueRef.current = newInputValue;\n } else if (reason !== 'reset') {\n setInputValue(newInputValue);\n inputValueRef.current = newInputValue;\n }\n\n if (reason !== 'reset') {\n onInputChange?.(newInputValue, event as ChangeEvent<HTMLInputElement>);\n }\n },\n [onInputChange]\n );\n\n const actualGroupBy = useMemo<MuiAutocompleteProps<T>['groupBy'] | undefined>(() => {\n if (groupBy) {\n return option => {\n if (isRealOption(option)) {\n return groupBy(option);\n }\n\n return '';\n };\n }\n\n return undefined;\n }, [groupBy]);\n\n const classes = useMemo(() => ({ paper: dropdownClassName }), [dropdownClassName]);\n\n const getOptionSelected = useCallback((a: InternalOption<T>, b: InternalOption<T>) => {\n return isRealOption(a) && isRealOption(b) ? a.id === b.id : false;\n }, []);\n\n const Component = MuiAutocomplete<InternalOption<T>, Multiple, boolean, false>;\n\n const PopperComponent = useCallback(\n (props: PopperProps) => (\n <Popper\n {...props}\n {...popperProps}\n className={classNames(props?.className, popperProps?.className)}\n />\n ),\n [popperProps]\n ) as NonNullable<MuiAutocompleteProps<T>['PopperComponent']>;\n\n const onKey = useCallback<KeyboardEventHandler>(\n e => {\n if (e.code === 'Enter' && onCreate) {\n const filteredOptions = actualFilterOptions(options, {\n inputValue: inputValueRef.current,\n getOptionLabel,\n });\n\n if (\n filteredOptions.length === 1 &&\n !isRealOption(filteredOptions[0]) &&\n filteredOptions[0][CreateOptionMark]\n ) {\n actualOnClose(undefined, 'select-option');\n onCreate(filteredOptions[0].newOptionTitle || '');\n (document.activeElement as HTMLInputElement)?.blur?.();\n }\n }\n },\n [onCreate, actualFilterOptions, getOptionLabel, actualOnClose, options]\n );\n\n const renderInput = useCallback(\n (inputProps: AutocompleteRenderInputParams) => (\n <AutocompleteInput\n {...inputProps}\n label={label}\n loading={loading}\n prefix={prefix}\n status={status}\n message={message}\n readOnly={disableFiltering}\n placeholder={placeholder}\n size={size}\n labelPlacement={labelPlacement}\n elementsClassNames={elementsClassNames}\n htmlAttributes={htmlAttributes}\n // Old props\n type={type}\n spacing={spacing}\n isNext={isNext}\n onKeyUp={onKey}\n />\n ),\n [\n label,\n loading,\n prefix,\n status,\n message,\n disableFiltering,\n placeholder,\n size,\n labelPlacement,\n elementsClassNames,\n htmlAttributes,\n type,\n spacing,\n isNext,\n onKey,\n ]\n );\n\n return (\n <div\n className={classNames(\n styles.root,\n showPopupIcon && styles.withArrow,\n !disableClearable && styles.withClear,\n className\n )}\n data-testid={testId}\n >\n <Component\n value={muiValue}\n options={options}\n getOptionLabel={getOptionLabel}\n renderInput={renderInput}\n PopperComponent={PopperComponent}\n PaperComponent={AutocompletePaper}\n multiple={multiple}\n disableCloseOnSelect={multiple}\n blurOnSelect={!multiple}\n onChange={actualOnChange}\n renderOption={actualRenderOption}\n popupIcon={<DownIcon size={16} />}\n forcePopupIcon={showPopupIcon}\n closeIcon={<CloseSmallIcon size={16} />}\n disableClearable={disableClearable}\n clearText=\"\"\n noOptionsText={noOptionsMessage || defaultNoOptionsText}\n filterOptions={actualFilterOptions}\n disabled={disabled}\n getOptionDisabled={actualGetOptionDisabled}\n renderTags={renderTags}\n inputValue={multiple ? inputValue : undefined}\n onInputChange={actualOnInputChange}\n groupBy={actualGroupBy}\n renderGroup={renderGroup}\n clearOnBlur\n selectOnFocus={!disableFiltering}\n classes={classes}\n getOptionSelected={getOptionSelected}\n ListboxComponent={listboxComponent ?? AutocompleteListBox}\n onOpen={actualOnOpen}\n onClose={actualOnClose}\n open={isOpen}\n />\n </div>\n );\n};\n\n// Old version\n/**\n * @deprecated use `AutocompleteNext`, and see migration guide for `TextInputNext` for details\n */\nexport type AutocompleteProps<\n T extends AutocompleteOption = AutocompleteOption,\n Multiple extends boolean | undefined = false\n> = Omit<\n AutocompleteBaseProps<T, Multiple>,\n 'size' | 'labelPlacement' | 'elementsClassNames' | 'htmlAttributes' | 'isNext'\n>;\n\n/**\n * @deprecated use `AutocompleteNext`, and see migration guide for `TextInputNext` for details\n */\nexport const Autocomplete = <\n T extends AutocompleteOption,\n Multiple extends boolean | undefined = false\n>(\n props: AutocompleteProps<T, Multiple>\n) => AutocompleteBase<T, Multiple>({ ...props, isNext: false });\n\n// New version\nexport type AutocompleteNextProps<\n T extends AutocompleteOption = AutocompleteOption,\n Multiple extends boolean | undefined = false\n> = Omit<AutocompleteBaseProps<T, Multiple>, 'type' | 'spacing' | 'isNext'>;\n\nexport const AutocompleteNext = <\n T extends AutocompleteOption,\n Multiple extends boolean | undefined = false\n>(\n props: AutocompleteNextProps<T, Multiple>\n) => AutocompleteBase<T, Multiple>({ ...props, isNext: true });\n\nAutocompleteNext.selectedValueRenderers = {\n default: renderSelectedValue,\n chipsMultiline: renderSelectedValueChips,\n};\n"],"names":["AutocompleteBase","_ref","label","_ref$options","options","value","onChange","multiple","_ref$renderOption","renderOption","renderOptionDefault","_ref$optionSize","optionSize","_ref$showPopupIcon","showPopupIcon","_ref$clearable","clearable","loading","noOptionsMessage","filterOptions","prefix","disabled","getOptionDisabled","_ref$renderSelected","renderSelected","renderSelectedValue","onInputChange","className","testId","status","message","_ref$useAllOption","useAllOption","_ref$useOnlyOptionBut","useOnlyOptionButton","groupBy","renderGroup","disableFiltering","onCreate","dropdownClassName","popperProps","placeholder","_ref$focusOnClear","focusOnClear","listboxComponent","_ref$size","size","_ref$labelPlacement","labelPlacement","elementsClassNames","htmlAttributes","onOpen","onClose","type","spacing","isNext","useState","_useState2","_slicedToArray","_useState","inputValue","setInputValue","_useState4","_useState3","isOpen","setIsOpen","inputValueRef","useRef","actualOnOpen","useCallback","actualOnClose","_e","reason","optionsById","useMemo","Map","map","option","id","muiValue","undefined","Array","length","mixedValues","objOrId","_typeof","title","get","filter","item","find","hasMultiSelected","hasAllMultiSelected","defaultNoOptionsText","disableClearable","actualOnChange","event","optionOrArray","stopPropagation","preventDefault","foundAddOption","isRealOption","CreateOptionMark","newOptionTitle","some","AllOptionMark","onSelectOnly","actualRenderOption","_ref2","selected","_jsx","AutocompleteMenuItem","useOnlyButton","children","_jsxs","styles","allOptionContainer","indeterminate","Menu","Divider","allOptionDivider","actualFilterOptions","params","_ref4","filteredOptions","createFilterOptions","optionsWithAll","_defineProperty","trim","concat","_toConsumableArray","actualGetOptionDisabled","getOptionLabel","renderTags","tags","getTagProps","tagsArray","index","onDelete","allOptions","actualOnInputChange","newInputValue","current","actualGroupBy","classes","paper","getOptionSelected","a","b","Component","MuiAutocomplete","PopperComponent","props","Popper","classNames","onKey","e","code","_document$activeEleme","_document$activeEleme2","document","activeElement","blur","call","renderInput","inputProps","AutocompleteInput","_objectSpread","readOnly","onKeyUp","root","withArrow","withClear","PaperComponent","AutocompletePaper","disableCloseOnSelect","blurOnSelect","popupIcon","DownIcon","forcePopupIcon","closeIcon","CloseSmallIcon","clearText","noOptionsText","clearOnBlur","selectOnFocus","ListboxComponent","AutocompleteListBox","open","AutocompleteNext","selectedValueRenderers","default","chipsMultiline","renderSelectedValueChips"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),t=require("@babel/runtime/helpers/objectWithoutProperties"),n=require("react"),r=require("classnames"),u=require("../../TextInputNext/TextInputNext.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),t=require("@babel/runtime/helpers/objectWithoutProperties"),n=require("react"),r=require("classnames"),u=require("../../TextInputNext/TextInputNext.js"),o=require("../../TextInput/TextInput.js"),i=require("../Autocomplete.scss.js"),l=require("react/jsx-runtime");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=s(e),p=s(t),f=s(r),c=["inputProps","disabled","InputProps","prefix","loading","status","isNext"];function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function b(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?d(Object(n),!0).forEach((function(t){a.default(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}exports.AutocompleteInput=function(e){var t=e.inputProps,r=e.disabled,s=e.InputProps,a=e.prefix,d=e.loading,x=e.status,m=e.isNext,j=p.default(e,c),y=j.label,O=j.size,P=j.labelPlacement,g=j.elementsClassNames,v=j.htmlAttributes,h=j.readOnly,C=j.placeholder,I=j.onKeyDown,w=j.onKeyUp,q=t.onChange,A=t.onBlur,D=t.onFocus,N=t.onMouseDown,T=t.ref,k=t.value,F=t.id,K=n.useCallback((function(e,t,n){null==q||q(n,e)}),[q]),M=n.useCallback((function(e,t){null==q||q(t,e)}),[q]),B=n.useCallback((function(e){if(D(e),N(e),h){var t=e.target;t.selectionStart=t.selectionEnd}}),[D,N,h]),E=(a||s.startAdornment)&&l.jsxs(l.Fragment,{children:[a,s.startAdornment]}),R=n.useMemo((function(){return b(b({},g),{},{input:f.default(i.input,null==g?void 0:g.input,h&&i.readOnlyInput),prefix:f.default(i.prefix,null==g?void 0:g.prefix),suffix:f.default(i.suffix,null==g?void 0:g.suffix),inputContainer:f.default(i.inputContainer,null==g?void 0:g.inputContainer)})}),[g,h]),S=n.useMemo((function(){return b(b({},v),{},{id:F})}),[v,F]);return m?l.jsx(u.TextInputNext,{disabled:r,prefix:E,suffix:s.endAdornment,onBlur:A,onChange:K,onFocus:B,inputRef:T,value:k,inputContainerRef:s.ref,status:d?"loading":x,label:y,size:O,labelPlacement:P,elementsClassNames:R,htmlAttributes:S,readOnly:h,placeholder:C,onKeyUp:w,onKeyDown:I}):l.jsx(o.TextInput,b({disabled:r,prefix:E,suffix:s.endAdornment,onBlur:A,onChange:M,onFocus:B,inputRef:T,value:k,ref:s.ref,status:d?"loading":x},j))};
|
|
2
2
|
//# sourceMappingURL=AutocompleteInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutocompleteInput.js","sources":["../../../../../src/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.tsx"],"sourcesContent":["import { AutocompleteRenderInputParams } from '@material-ui/lab';\nimport { useCallback, useMemo } from 'react';\nimport classNames from 'classnames';\n\nimport { TextInputNext, TextInputNextProps } from '../../TextInputNext';\nimport { TextInput, TextInputProps } from '../../TextInput';\n\nimport styles from '../Autocomplete.scss';\n\nexport type AutocompleteInputProps = Omit<AutocompleteRenderInputParams, 'size'> &\n TextInputNextProps &\n TextInputProps & {\n // This property is essentially untyped in AutocompleteRenderInputParams\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n inputProps: any;\n loading?: boolean;\n isNext?: boolean;\n };\n\nexport const AutocompleteInput = ({\n inputProps,\n disabled,\n InputProps,\n prefix,\n loading,\n status,\n isNext,\n ...rest\n}: AutocompleteInputProps) => {\n const {
|
|
1
|
+
{"version":3,"file":"AutocompleteInput.js","sources":["../../../../../src/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.tsx"],"sourcesContent":["import { AutocompleteRenderInputParams } from '@material-ui/lab';\nimport { useCallback, useMemo } from 'react';\nimport classNames from 'classnames';\n\nimport { TextInputNext, TextInputNextProps } from '../../TextInputNext';\nimport { TextInput, TextInputProps } from '../../TextInput';\n\nimport styles from '../Autocomplete.scss';\n\nexport type AutocompleteInputProps = Omit<AutocompleteRenderInputParams, 'size'> &\n TextInputNextProps &\n TextInputProps & {\n // This property is essentially untyped in AutocompleteRenderInputParams\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n inputProps: any;\n loading?: boolean;\n isNext?: boolean;\n };\n\nexport const AutocompleteInput = ({\n inputProps,\n disabled,\n InputProps,\n prefix,\n loading,\n status,\n isNext,\n ...rest\n}: AutocompleteInputProps) => {\n const {\n label,\n size,\n labelPlacement,\n elementsClassNames,\n htmlAttributes,\n readOnly,\n placeholder,\n onKeyDown,\n onKeyUp,\n } = rest;\n const {\n onChange: muiOnChange,\n onBlur,\n onFocus: muiOnFocus,\n onMouseDown,\n ref,\n value,\n id,\n } = inputProps;\n\n const onChange = useCallback<Required<TextInputNextProps>['onChange']>(\n (value, _reason, event) => {\n muiOnChange?.(event, value);\n },\n [muiOnChange]\n );\n\n const onChangeOld = useCallback<Required<TextInputProps>['onChange']>(\n (value, event) => {\n muiOnChange?.(event, value);\n },\n [muiOnChange]\n );\n\n const onFocus = useCallback<Required<TextInputNextProps>['onFocus']>(\n event => {\n muiOnFocus(event);\n onMouseDown(event);\n\n // Clearing autoselect on focus for readonly field to cover tab navigation which selects everything by default\n if (readOnly) {\n const input = event.target as HTMLInputElement;\n input.selectionStart = input.selectionEnd;\n }\n },\n [muiOnFocus, onMouseDown, readOnly]\n );\n\n const actualPrefix = (prefix || InputProps.startAdornment) && (\n <>\n {prefix}\n {InputProps.startAdornment}\n </>\n );\n\n const ownElementsClassNames = useMemo<TextInputNextProps['elementsClassNames']>(\n () => ({\n ...elementsClassNames,\n input: classNames(styles.input, elementsClassNames?.input, readOnly && styles.readOnlyInput),\n prefix: classNames(styles.prefix, elementsClassNames?.prefix),\n suffix: classNames(styles.suffix, elementsClassNames?.suffix),\n inputContainer: classNames(styles.inputContainer, elementsClassNames?.inputContainer),\n }),\n [elementsClassNames, readOnly]\n );\n\n const fieldHtmlAttributes = useMemo(() => ({ ...htmlAttributes, id }), [htmlAttributes, id]);\n\n if (isNext) {\n return (\n <TextInputNext\n disabled={disabled}\n // InputProps.startAdornment - \"tags\" for multiselect, prefix\n prefix={actualPrefix}\n // InputProps.endAdornment - \"dropdown\" icon, close icon, loader\n suffix={InputProps.endAdornment}\n onBlur={onBlur}\n onChange={onChange}\n onFocus={onFocus}\n inputRef={ref}\n value={value}\n inputContainerRef={InputProps.ref}\n status={loading ? 'loading' : status}\n label={label}\n size={size}\n labelPlacement={labelPlacement}\n elementsClassNames={ownElementsClassNames}\n htmlAttributes={fieldHtmlAttributes}\n readOnly={readOnly}\n placeholder={placeholder}\n onKeyUp={onKeyUp}\n onKeyDown={onKeyDown}\n />\n );\n }\n\n return (\n <TextInput\n disabled={disabled}\n // InputProps.startAdornment - \"tags\" for multiselect, prefix\n prefix={actualPrefix}\n // InputProps.endAdornment - \"dropdown\" icon, close icon, loader\n suffix={InputProps.endAdornment}\n onBlur={onBlur}\n onChange={onChangeOld}\n onFocus={onFocus}\n inputRef={ref}\n value={value}\n ref={InputProps.ref}\n status={loading ? 'loading' : status}\n {...rest}\n />\n );\n};\n"],"names":["_ref","inputProps","disabled","InputProps","prefix","loading","status","isNext","rest","_objectWithoutProperties","_excluded","label","size","labelPlacement","elementsClassNames","htmlAttributes","readOnly","placeholder","onKeyDown","onKeyUp","muiOnChange","onChange","onBlur","muiOnFocus","onFocus","onMouseDown","ref","value","id","useCallback","_reason","event","onChangeOld","input","target","selectionStart","selectionEnd","actualPrefix","startAdornment","_jsxs","jsxs","_Fragment","children","ownElementsClassNames","useMemo","_objectSpread","classNames","styles","readOnlyInput","suffix","inputContainer","fieldHtmlAttributes","_jsx","TextInputNext","endAdornment","inputRef","inputContainerRef","TextInput"],"mappings":"kpCAmBiC,SASHA,GAAA,IAR5BC,IAAAA,WACAC,IAAAA,SACAC,IAAAA,WACAC,IAAAA,OACAC,IAAAA,QACAC,IAAAA,OACAC,IAAAA,OACGC,EAAIC,EAAA,QAAAT,EAAAU,GAGLC,EASEH,EATFG,MACAC,EAQEJ,EARFI,KACAC,EAOEL,EAPFK,eACAC,EAMEN,EANFM,mBACAC,EAKEP,EALFO,eACAC,EAIER,EAJFQ,SACAC,EAGET,EAHFS,YACAC,EAEEV,EAFFU,UACAC,EACEX,EADFW,QAGUC,EAORnB,EAPFoB,SACAC,EAMErB,EANFqB,OACSC,EAKPtB,EALFuB,QACAC,EAIExB,EAJFwB,YACAC,EAGEzB,EAHFyB,IACAC,EAEE1B,EAFF0B,MACAC,EACE3B,EADF2B,GAGIP,EAAWQ,EAAWA,aAC1B,SAACF,EAAOG,EAASC,GACfX,SAAAA,EAAcW,EAAOJ,EACvB,GACA,CAACP,IAGGY,EAAcH,EAAAA,aAClB,SAACF,EAAOI,GACNX,SAAAA,EAAcW,EAAOJ,EACvB,GACA,CAACP,IAGGI,EAAUK,eACd,SAAAE,GAKE,GAJAR,EAAWQ,GACXN,EAAYM,GAGRf,EAAU,CACZ,IAAMiB,EAAQF,EAAMG,OACpBD,EAAME,eAAiBF,EAAMG,YAC/B,CACD,GACD,CAACb,EAAYE,EAAaT,IAGtBqB,GAAgBjC,GAAUD,EAAWmC,iBACzCC,EAAAC,KAAAC,WAAA,CAAAC,SAAA,CACGtC,EACAD,EAAWmC,kBAIVK,EAAwBC,EAAAA,SAC5B,WAAA,OAAAC,EAAAA,EAAA,CAAA,EACK/B,GAAkB,CAAA,EAAA,CACrBmB,MAAOa,EAAU,QAACC,EAAOd,MAAOnB,eAAAA,EAAoBmB,MAAOjB,GAAY+B,EAAOC,eAC9E5C,OAAQ0C,EAAU,QAACC,EAAO3C,OAAQU,aAAkB,EAAlBA,EAAoBV,QACtD6C,OAAQH,EAAU,QAACC,EAAOE,OAAQnC,aAAkB,EAAlBA,EAAoBmC,QACtDC,eAAgBJ,EAAU,QAACC,EAAOG,eAAgBpC,aAAAA,EAAAA,EAAoBoC,iBAAe,GAEvF,CAACpC,EAAoBE,IAGjBmC,EAAsBP,EAAAA,SAAQ,WAAA,OAAAC,EAAAA,EAAA,CAAA,EAAY9B,GAAc,CAAA,EAAA,CAAEa,GAAAA,GAAE,GAAK,CAACb,EAAgBa,IAExF,OAAIrB,EAEA6C,EAAAA,IAACC,EAAAA,cAAa,CACZnD,SAAUA,EAEVE,OAAQiC,EAERY,OAAQ9C,EAAWmD,aACnBhC,OAAQA,EACRD,SAAUA,EACVG,QAASA,EACT+B,SAAU7B,EACVC,MAAOA,EACP6B,kBAAmBrD,EAAWuB,IAC9BpB,OAAQD,EAAU,UAAYC,EAC9BK,MAAOA,EACPC,KAAMA,EACNC,eAAgBA,EAChBC,mBAAoB6B,EACpB5B,eAAgBoC,EAChBnC,SAAUA,EACVC,YAAaA,EACbE,QAASA,EACTD,UAAWA,IAMfkC,MAACK,EAASA,UAAAZ,EAAA,CACR3C,SAAUA,EAEVE,OAAQiC,EAERY,OAAQ9C,EAAWmD,aACnBhC,OAAQA,EACRD,SAAUW,EACVR,QAASA,EACT+B,SAAU7B,EACVC,MAAOA,EACPD,IAAKvB,EAAWuB,IAChBpB,OAAQD,EAAU,UAAYC,GAC1BE,GAGV"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/slicedToArray"),o=require("@babel/runtime/helpers/defineProperty"),s=require("classnames"),n=require("react"),c=require("react-color"),i=require("lodash"),r=require("uuid"),t=require("../TextInputNext/TextInputNext.js"),u=require("../Popover/Popover.js"),a=require("../ButtonIcon/ButtonIcon.js"),l=require("../Tooltip/Tooltip.js"),m=require("../Popper/Popper.js"),d=require("./Swatches/Swatches.js"),p=require("./utils.js"),j=require("./OpacityDragtracker/OpacityDragtracker.js"),q=require("./useChromePickerAccessibility.js"),f=require("./ColorPicker.scss.js"),I=require("../../icons/iconParkIcons.js");require("../../icons/customIcons/icons/AddMessage.js"),require("../../icons/customIcons/icons/DragOne.js"),require("../../icons/customIcons/icons/Attention.js"),require("../../icons/customIcons/icons/Collapse.js"),require("../../icons/customIcons/icons/Dashboard.js"),require("../../icons/customIcons/icons/Expand.js"),require("../../icons/customIcons/icons/FolderClosed.js"),require("../../icons/customIcons/icons/FolderClosedFilled.js"),require("../../icons/customIcons/icons/FolderOpened.js"),require("../../icons/customIcons/icons/GreaterOrEqual.js"),require("../../icons/customIcons/icons/LessOrEqual.js"),require("../../icons/customIcons/icons/Search.js"),require("../../icons/customIcons/icons/SearchOne.js"),require("../../icons/customIcons/icons/Wellhub.js"),require("../../icons/customIcons/icons/MultiRuler.js"),require("../../icons/customIcons/icons/Checkbox.js"),require("../../icons/customIcons/icons/CheckboxChecked.js"),require("../../icons/customIcons/icons/CheckboxIndeterminate.js"),require("../../icons/customIcons/icons/Radio.js"),require("../../icons/customIcons/icons/RadioChecked.js"),require("../../icons/customIcons/icons/SimulFrac.js"),require("../../icons/customIcons/icons/ZipperFrac.js"),require("../../icons/customIcons/icons/CautionFilled.js"),require("../../icons/customIcons/icons/InfoRounded.js"),require("../../icons/customIcons/icons/FlameFilled.js"),require("../../icons/customIcons/icons/MoreApp.js"),require("../../icons/customIcons/icons/Pad.js"),require("../../icons/customIcons/icons/DrilloutUnit.js"),require("../../icons/customIcons/icons/FracFleet.js"),require("../../icons/customIcons/icons/Global.js"),require("../../icons/customIcons/icons/Program.js"),require("../../icons/customIcons/icons/Rig.js"),require("../../icons/customIcons/icons/Well.js"),require("../../icons/customIcons/icons/Gap.js"),require("../../icons/customIcons/icons/Pin.js"),require("../../icons/customIcons/icons/PinOne.js"),require("../../icons/customIcons/icons/PinOneCrossed.js"),require("../../icons/customIcons/icons/CloseOneFilled.js"),require("../../icons/customIcons/icons/AttentionFilled.js"),require("../../icons/customIcons/icons/CheckOneFilled.js"),require("../../icons/customIcons/icons/Archive.js"),require("../../icons/customIcons/icons/ArchiveCancel.js"),require("../../icons/customIcons/icons/Unarchive.js"),require("../../icons/customIcons/icons/Archived.js"),require("../../icons/customIcons/icons/InterventionUnit.js"),require("../../icons/customIcons/icons/CloudDelete.js"),require("../../icons/customIcons/icons/Lasso.js"),require("../../icons/customIcons/icons/Radius.js"),require("../../icons/customIcons/icons/ErrorOps.js"),require("../../icons/customIcons/icons/DataTypeOps.js"),require("../../icons/customIcons/icons/FalsePositiveOps.js"),require("../../icons/customIcons/icons/CalibrationOps.js"),require("../../icons/customIcons/icons/CriticalOps.js"),require("../../icons/customIcons/icons/Company.js"),require("../../icons/customIcons/icons/ArchiveOne.js"),require("../../icons/customIcons/icons/ParseBotFusion.js"),require("../../icons/customIcons/icons/Connect.js"),require("../../icons/customIcons/icons/PuzzleOne.js"),require("../../icons/customIcons/icons/Feed.js"),require("../../icons/customIcons/icons/Prompt.js"),require("../../icons/customIcons/icons/Companies.js"),require("../../icons/customIcons/icons/ClipboardAi.js"),require("../../icons/customIcons/icons/Key.js"),require("../../icons/customIcons/icons/AtSignCrossed.js"),require("../../icons/customIcons/icons/MappingManual.js"),require("../../icons/customIcons/icons/Mapping.js"),require("../../icons/customIcons/icons/Metrics.js"),require("../../icons/customIcons/icons/Drops.js"),require("../../icons/customIcons/icons/ClipboardSearch.js"),require("../../icons/customIcons/icons/Template.js"),require("../../icons/customIcons/icons/ClipboardMetrics.js"),require("../../icons/customIcons/icons/ClipboardBuilder.js"),require("../../icons/customIcons/icons/UnitConversion.js"),require("../../icons/customIcons/icons/NPT.js"),require("../../icons/customIcons/icons/GuidedFrac.js");var b=require("react/jsx-runtime");function h(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var v=h(e),C=h(o),k=h(s);function x(e,o){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);o&&(n=n.filter((function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable}))),s.push.apply(s,n)}return s}function y(e){for(var o=1;o<arguments.length;o++){var s=null!=arguments[o]?arguments[o]:{};o%2?x(Object(s),!0).forEach((function(o){C.default(e,o,s[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(s)):x(Object(s)).forEach((function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(s,o))}))}return e}var g={small:f.small,medium:f.medium,large:f.large};exports.ColorPicker=function(e){var o=e.format,s=void 0===o?"hex":o,h=e.className,C=e.label,x=e.labelPlacement,O=void 0===x?"top":x,P=e.popoverPlacement,D=void 0===P?"bottom-start":P,F=e.testId,N=e.disabled,S=e.size,T=void 0===S?"small":S,A=e.onOpen,w=e.onClose,M=e.value,E=void 0===M?p.defaultColor:M,R=e.onChange,B=e.disableOpacityDrag,z=e.enableAlpha,W=void 0!==z&&z,L=e.elementsClassNames,G=void 0===L?{}:L,K=n.useMemo((function(){return{input:k.default(f.input,G.input),inputContainer:k.default(f.inputContainer,G.inputContainer),label:k.default(f.label,G.label),prefix:f.prefixContainer,suffix:f.suffixContainer,numberStepButtons:f.numberStepButtons}}),[G.input,G.inputContainer,G.label]),U=n.useMemo((function(){try{var e=p.parseColor(E);return y(y({},e),{},{a:W?e.a:1})}catch(e){return p.parseColor(p.defaultColor)}}),[E,W]),H=n.useState(!1),V=v.default(H,2),_=V[0],Z=V[1],J=n.useRef(null),Q=n.useRef(null),X=n.useState(!0),Y=v.default(X,2),$=Y[0],ee=Y[1],oe=n.useState(null),se=v.default(oe,2),ne=se[0],ce=se[1],ie=n.useState(U),re=v.default(ie,2),te=re[0],ue=re[1],ae=n.useRef(null),le=n.useMemo((function(){return"corva-color-picker-".concat(r.v4())}),[]),me="".concat(le,"-opacity-input"),de="".concat(le,"-label"),pe="".concat(le,"-opacity-label"),je=Boolean(C),qe=n.useCallback((function(){Z(!0),null==A||A()}),[A]),fe=n.useCallback((function(e){e.preventDefault(),ce(null),qe()}),[qe]),Ie=n.useCallback((function(){ce(null),qe()}),[qe]),be=n.useCallback((function(e){N||"Enter"!==e.key&&" "!==e.key&&"ArrowDown"!==e.key||(e.preventDefault(),ce("palette"),qe())}),[N,qe]),he=n.useCallback((function(){var e,o,s=!(null===(e=ae.current)||void 0===e||!e.contains(document.activeElement));(ce(null),Z(!1),null==w||w(),s)&&(null===(o=Q.current)||void 0===o||o.focus({preventScroll:!0}))}),[w]),ve=n.useCallback((function(e){ce(0===e.detail?"palette":null),ee(!0)}),[]),Ce=n.useCallback((function(e){ce(0===e.detail?"picker":null),ee(!1)}),[]),ke=n.useCallback((function(){return ce(null)}),[]),xe=n.useCallback((function(e){return ue(e.rgb)}),[]),ye=n.useCallback((function(e){var o="hex"===s?p.channelsToHex(e,W):p.channelsToRgba(e,W);null==R||R(o)}),[s,R,W]),ge=n.useCallback((function(e){ue(e),ye(e)}),[ye]),Oe=q.useChromePickerAccessibility({color:te,enableAlpha:W,isActive:!$,onChange:ge}),Pe=Oe.pickerRef,De=Oe.onKeyDown;n.useEffect((function(){var e;if("picker"===ne&&!$){var o=null===(e=Pe.current)||void 0===e?void 0:e.querySelector('[data-color-picker-control="saturation"]');o&&(o.focus({preventScroll:!0}),ke())}}),[ke,ne,$,Pe]);var Fe=n.useCallback((function(e){var o=Number(e);if(!(Number.isNaN(o)||o<0||o>100)){var s=y(y({},U),{},{a:o/100});ye(s)}}),[U,ye]),Ne=n.useCallback((function(e){ye(e.rgb)}),[ye]),Se=n.useCallback((function(e){var o=U.a||1,s=W&&0===e.a?0:o;ye(y(y({},e),{},{a:s}))}),[ye,U.a,W]),Te=n.useCallback((function(){setTimeout((function(){var e,o;Z(!1),null===(e=document.activeElement)||void 0===e||null===(o=e.blur)||void 0===o||o.call(e)}),0)}),[]),Ae=n.useMemo((function(){return i.throttle((function(e){var o=String(Math.round(e));Fe(o)}),100)}),[Fe]);n.useEffect((function(){ue(U)}),[U]),n.useEffect((function(){_&&ee(!0)}),[_]);var we=String(Math.round(100*te.a)),Me=(null==D?void 0:D.startsWith("top"))||(null==D?void 0:D.startsWith("bottom")),Ee=(null==D?void 0:D.startsWith("left"))||(null==D?void 0:D.startsWith("right")),Re=je?b.jsxs(b.Fragment,{children:[b.jsx("label",{id:de,htmlFor:me,children:"string"==typeof C?b.jsx(t.TextInputNext.Label,{children:C}):C}),b.jsx("span",{id:pe,hidden:!0,children:"Opacity"})]}):void 0,Be=n.useMemo((function(){return je?{id:me,"aria-labelledby":"".concat(de," ").concat(pe)}:{id:me,"aria-label":"Opacity"}}),[je,me,de,pe]);return b.jsxs(b.Fragment,{children:[b.jsx(t.TextInputNext,{label:Re,labelPlacement:O,disabled:N,size:T,rootTagName:"div",prefix:b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:f.fakeValue,children:[we,b.jsx("span",{className:f.fakeValuePercent,children:"%"})]}),b.jsx("div",{ref:Q,className:k.default(f.indicator,0===te.a&&f.transparent,G.indicator),style:{"--corvaui-colorpicker-indicatorcolor":p.channelsToHex(te,!1)},onClick:N?void 0:fe,onKeyDown:be,role:"button","aria-label":je?void 0:"Color picker","aria-labelledby":je?de:void 0,"aria-expanded":_,"aria-disabled":N,tabIndex:N?-1:0})]}),suffix:!_&&W&&!B&&!N&&b.jsx(j.OpacityDragTracker,{value:Number(we),onDrag:Ae,onDragEnd:Te}),className:k.default(f.root,g[T],!W&&f.noAlpha,h),testId:F,inputContainerRef:J,value:we,onChange:Fe,onFocus:Ie,inputType:"number",inputMode:"numeric",htmlAttributes:Be,elementsClassNames:K}),b.jsxs(u.Popover,{ref:ae,anchorEl:J.current,open:_,onClose:he,placement:D,className:k.default(f.popover,Me&&f.marginVertical,Ee&&f.marginHorizontal,0===te.a&&f.isTransparent,G.popover),children:[$?b.jsx(d.Swatches,{onChange:Se,value:U,addTransparent:W,autoFocus:"palette"===ne,onAutoFocus:ke}):b.jsx("div",{ref:Pe,className:f.pickerContainer,onKeyDown:De,children:b.jsx(c.ChromePicker,{color:te,onChange:xe,onChangeComplete:Ne,disableAlpha:!W,className:f.picker})}),b.jsxs("div",{className:f.switchButtons,children:[b.jsx(l.Tooltip,{title:"Palette",children:b.jsx(a.ButtonIcon,{ariaLabel:"Show color palette",size:"medium",type:$?"secondary":"tertiary",onClick:ve,children:b.jsx(I.PaletteIcon,{})})}),b.jsx(l.Tooltip,{title:"Pick your own",children:b.jsx(a.ButtonIcon,{ariaLabel:"Show custom color picker",size:"medium",type:$?"tertiary":"secondary",onClick:Ce,children:b.jsx(I.PickerIcon,{})})})]})]}),_&&W&&!B&&b.jsx(m.Popper,{open:_,anchorEl:J.current,className:f.dragTrackerPopper,placement:"right",children:b.jsx(j.OpacityDragTracker,{onDrag:Ae,onDragEnd:Te})})]})};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/slicedToArray"),o=require("@babel/runtime/helpers/defineProperty"),s=require("classnames"),n=require("react"),c=require("react-color"),r=require("lodash"),i=require("uuid"),t=require("../TextInputNext/TextInputNext.js"),u=require("../Popover/Popover.js"),a=require("../ButtonIcon/ButtonIcon.js"),l=require("../Tooltip/Tooltip.js"),m=require("../Popper/Popper.js"),d=require("./Swatches/Swatches.js"),p=require("./utils.js"),j=require("./OpacityDragtracker/OpacityDragtracker.js"),q=require("./useChromePickerAccessibility.js"),f=require("./ColorPicker.scss.js"),I=require("../../icons/iconParkIcons.js");require("../../icons/customIcons/icons/AddMessage.js"),require("../../icons/customIcons/icons/DragOne.js"),require("../../icons/customIcons/icons/Attention.js"),require("../../icons/customIcons/icons/Collapse.js"),require("../../icons/customIcons/icons/Dashboard.js"),require("../../icons/customIcons/icons/Expand.js"),require("../../icons/customIcons/icons/FolderClosed.js"),require("../../icons/customIcons/icons/FolderClosedFilled.js"),require("../../icons/customIcons/icons/FolderOpened.js"),require("../../icons/customIcons/icons/GreaterOrEqual.js"),require("../../icons/customIcons/icons/LessOrEqual.js"),require("../../icons/customIcons/icons/Search.js"),require("../../icons/customIcons/icons/SearchOne.js"),require("../../icons/customIcons/icons/Wellhub.js"),require("../../icons/customIcons/icons/MultiRuler.js"),require("../../icons/customIcons/icons/Checkbox.js"),require("../../icons/customIcons/icons/CheckboxChecked.js"),require("../../icons/customIcons/icons/CheckboxIndeterminate.js"),require("../../icons/customIcons/icons/Radio.js"),require("../../icons/customIcons/icons/RadioChecked.js"),require("../../icons/customIcons/icons/SimulFrac.js"),require("../../icons/customIcons/icons/ZipperFrac.js"),require("../../icons/customIcons/icons/CautionFilled.js"),require("../../icons/customIcons/icons/InfoRounded.js"),require("../../icons/customIcons/icons/FlameFilled.js"),require("../../icons/customIcons/icons/MoreApp.js"),require("../../icons/customIcons/icons/Pad.js"),require("../../icons/customIcons/icons/DrilloutUnit.js"),require("../../icons/customIcons/icons/FracFleet.js"),require("../../icons/customIcons/icons/Global.js"),require("../../icons/customIcons/icons/Program.js"),require("../../icons/customIcons/icons/Rig.js"),require("../../icons/customIcons/icons/Well.js"),require("../../icons/customIcons/icons/Gap.js"),require("../../icons/customIcons/icons/Pin.js"),require("../../icons/customIcons/icons/PinOne.js"),require("../../icons/customIcons/icons/PinOneCrossed.js"),require("../../icons/customIcons/icons/CloseOneFilled.js"),require("../../icons/customIcons/icons/AttentionFilled.js"),require("../../icons/customIcons/icons/CheckOneFilled.js"),require("../../icons/customIcons/icons/Archive.js"),require("../../icons/customIcons/icons/ArchiveCancel.js"),require("../../icons/customIcons/icons/Unarchive.js"),require("../../icons/customIcons/icons/Archived.js"),require("../../icons/customIcons/icons/InterventionUnit.js"),require("../../icons/customIcons/icons/CloudDelete.js"),require("../../icons/customIcons/icons/Lasso.js"),require("../../icons/customIcons/icons/Radius.js"),require("../../icons/customIcons/icons/ErrorOps.js"),require("../../icons/customIcons/icons/DataTypeOps.js"),require("../../icons/customIcons/icons/FalsePositiveOps.js"),require("../../icons/customIcons/icons/CalibrationOps.js"),require("../../icons/customIcons/icons/CriticalOps.js"),require("../../icons/customIcons/icons/Company.js"),require("../../icons/customIcons/icons/ArchiveOne.js"),require("../../icons/customIcons/icons/ParseBotFusion.js"),require("../../icons/customIcons/icons/Connect.js"),require("../../icons/customIcons/icons/PuzzleOne.js"),require("../../icons/customIcons/icons/Feed.js"),require("../../icons/customIcons/icons/Prompt.js"),require("../../icons/customIcons/icons/Companies.js"),require("../../icons/customIcons/icons/ClipboardAi.js"),require("../../icons/customIcons/icons/Key.js"),require("../../icons/customIcons/icons/AtSignCrossed.js"),require("../../icons/customIcons/icons/MappingManual.js"),require("../../icons/customIcons/icons/Mapping.js"),require("../../icons/customIcons/icons/Metrics.js"),require("../../icons/customIcons/icons/Drops.js"),require("../../icons/customIcons/icons/ClipboardSearch.js"),require("../../icons/customIcons/icons/Template.js"),require("../../icons/customIcons/icons/ClipboardMetrics.js"),require("../../icons/customIcons/icons/ClipboardBuilder.js"),require("../../icons/customIcons/icons/UnitConversion.js"),require("../../icons/customIcons/icons/NPT.js"),require("../../icons/customIcons/icons/GuidedFrac.js");var b=require("react/jsx-runtime");function h(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var v=h(e),C=h(o),k=h(s);function x(e,o){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);o&&(n=n.filter((function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable}))),s.push.apply(s,n)}return s}function y(e){for(var o=1;o<arguments.length;o++){var s=null!=arguments[o]?arguments[o]:{};o%2?x(Object(s),!0).forEach((function(o){C.default(e,o,s[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(s)):x(Object(s)).forEach((function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(s,o))}))}return e}var g={small:f.small,medium:f.medium,large:f.large},O={inputContainer:f.inputContainer,numberStepButtons:f.numberStepButtons,prefix:f.prefixContainer,suffix:f.suffixContainer,input:f.input,label:f.label};exports.ColorPicker=function(e){var o=e.format,s=void 0===o?"hex":o,h=e.className,x=e.label,P=e.labelPlacement,D=void 0===P?"top":P,F=e.popoverPlacement,N=void 0===F?"bottom-start":F,S=e.testId,T=e.disabled,A=e.size,w=void 0===A?"small":A,M=e.onOpen,E=e.onClose,R=e.value,B=void 0===R?p.defaultColor:R,z=e.onChange,W=e.disableOpacityDrag,L=e.enableAlpha,G=void 0!==L&&L,K=e.elementsClassNames,U=n.useMemo((function(){try{var e=p.parseColor(B);return y(y({},e),{},{a:G?e.a:1})}catch(e){return p.parseColor(p.defaultColor)}}),[B,G]),H=n.useMemo((function(){return K?Object.entries(K).reduce((function(e,o){var s=o,n=v.default(s,2),c=n[0],r=n[1];return y(y({},e),{},C.default({},c,e[c]?k.default(e[c],r):r))}),y({},O)):O}),[K]),V=n.useState(!1),_=v.default(V,2),Z=_[0],J=_[1],Q=n.useRef(null),X=n.useRef(null),Y=n.useState(!0),$=v.default(Y,2),ee=$[0],oe=$[1],se=n.useState(null),ne=v.default(se,2),ce=ne[0],re=ne[1],ie=n.useState(U),te=v.default(ie,2),ue=te[0],ae=te[1],le=n.useRef(null),me=n.useMemo((function(){return"corva-color-picker-".concat(i.v4())}),[]),de="".concat(me,"-opacity-input"),pe="".concat(me,"-label"),je="".concat(me,"-opacity-label"),qe=Boolean(x),fe=n.useCallback((function(){J(!0),null==M||M()}),[M]),Ie=n.useCallback((function(e){e.preventDefault(),re(null),fe()}),[fe]),be=n.useCallback((function(){re(null),fe()}),[fe]),he=n.useCallback((function(e){T||"Enter"!==e.key&&" "!==e.key&&"ArrowDown"!==e.key||(e.preventDefault(),re("palette"),fe())}),[T,fe]),ve=n.useCallback((function(){var e,o,s=!(null===(e=le.current)||void 0===e||!e.contains(document.activeElement));(re(null),J(!1),null==E||E(),s)&&(null===(o=X.current)||void 0===o||o.focus({preventScroll:!0}))}),[E]),Ce=n.useCallback((function(e){re(0===e.detail?"palette":null),oe(!0)}),[]),ke=n.useCallback((function(e){re(0===e.detail?"picker":null),oe(!1)}),[]),xe=n.useCallback((function(){return re(null)}),[]),ye=n.useCallback((function(e){return ae(e.rgb)}),[]),ge=n.useCallback((function(e){var o="hex"===s?p.channelsToHex(e,G):p.channelsToRgba(e,G);null==z||z(o)}),[s,z,G]),Oe=n.useCallback((function(e){ae(e),ge(e)}),[ge]),Pe=q.useChromePickerAccessibility({color:ue,enableAlpha:G,isActive:!ee,onChange:Oe}),De=Pe.pickerRef,Fe=Pe.onKeyDown;n.useEffect((function(){var e;if("picker"===ce&&!ee){var o=null===(e=De.current)||void 0===e?void 0:e.querySelector('[data-color-picker-control="saturation"]');o&&(o.focus({preventScroll:!0}),xe())}}),[xe,ce,ee,De]);var Ne=n.useCallback((function(e){var o=Number(e);if(!(Number.isNaN(o)||o<0||o>100)){var s=y(y({},U),{},{a:o/100});ge(s)}}),[U,ge]),Se=n.useCallback((function(e){ge(e.rgb)}),[ge]),Te=n.useCallback((function(e){var o=U.a||1,s=G&&0===e.a?0:o;ge(y(y({},e),{},{a:s}))}),[ge,U.a,G]),Ae=n.useCallback((function(){setTimeout((function(){var e,o;J(!1),null===(e=document.activeElement)||void 0===e||null===(o=e.blur)||void 0===o||o.call(e)}),0)}),[]),we=n.useMemo((function(){return r.throttle((function(e){var o=String(Math.round(e));Ne(o)}),100)}),[Ne]);n.useEffect((function(){ae(U)}),[U]),n.useEffect((function(){Z&&oe(!0)}),[Z]);var Me=String(Math.round(100*ue.a)),Ee=(null==N?void 0:N.startsWith("top"))||(null==N?void 0:N.startsWith("bottom")),Re=(null==N?void 0:N.startsWith("left"))||(null==N?void 0:N.startsWith("right")),Be=qe?b.jsxs(b.Fragment,{children:[b.jsx("label",{id:pe,htmlFor:de,children:"string"==typeof x?b.jsx(t.TextInputNext.Label,{children:x}):x}),b.jsx("span",{id:je,hidden:!0,children:"Opacity"})]}):void 0,ze=n.useMemo((function(){return qe?{id:de,"aria-labelledby":"".concat(pe," ").concat(je)}:{id:de,"aria-label":"Opacity"}}),[qe,de,pe,je]);return b.jsxs(b.Fragment,{children:[b.jsx(t.TextInputNext,{label:Be,labelPlacement:D,disabled:T,size:w,rootTagName:"div",prefix:b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:f.fakeValue,children:[Me,b.jsx("span",{className:f.fakeValuePercent,children:"%"})]}),b.jsx("div",{ref:X,className:k.default(f.indicator,0===ue.a&&f.transparent,H.indicator),style:{"--corvaui-colorpicker-indicatorcolor":p.channelsToHex(ue,!1)},onClick:T?void 0:Ie,onKeyDown:he,role:"button","aria-label":qe?void 0:"Color picker","aria-labelledby":qe?pe:void 0,"aria-expanded":Z,"aria-disabled":T,tabIndex:T?-1:0})]}),suffix:!Z&&G&&!W&&!T&&b.jsx(j.OpacityDragTracker,{value:Number(Me),onDrag:we,onDragEnd:Ae}),className:k.default(f.root,g[w],!G&&f.noAlpha,h),testId:S,inputContainerRef:Q,value:Me,onChange:Ne,onFocus:be,inputType:"number",inputMode:"numeric",elementsClassNames:H,htmlAttributes:ze}),b.jsxs(u.Popover,{ref:le,anchorEl:Q.current,open:Z,onClose:ve,placement:N,className:k.default(f.popover,Ee&&f.marginVertical,Re&&f.marginHorizontal,0===ue.a&&f.isTransparent,H.popover),children:[ee?b.jsx(d.Swatches,{onChange:Te,value:U,addTransparent:G,autoFocus:"palette"===ce,onAutoFocus:xe}):b.jsx("div",{ref:De,className:f.pickerContainer,onKeyDown:Fe,children:b.jsx(c.ChromePicker,{color:ue,onChange:ye,onChangeComplete:Se,disableAlpha:!G,className:f.picker})}),b.jsxs("div",{className:f.switchButtons,children:[b.jsx(l.Tooltip,{title:"Palette",children:b.jsx(a.ButtonIcon,{ariaLabel:"Show color palette",size:"medium",type:ee?"secondary":"tertiary",onClick:Ce,children:b.jsx(I.PaletteIcon,{})})}),b.jsx(l.Tooltip,{title:"Pick your own",children:b.jsx(a.ButtonIcon,{ariaLabel:"Show custom color picker",size:"medium",type:ee?"tertiary":"secondary",onClick:ke,children:b.jsx(I.PickerIcon,{})})})]})]}),Z&&G&&!W&&b.jsx(m.Popper,{open:Z,anchorEl:Q.current,className:f.dragTrackerPopper,placement:"right",children:b.jsx(j.OpacityDragTracker,{onDrag:we,onDragEnd:Ae})})]})};
|
|
2
2
|
//# sourceMappingURL=ColorPicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorPicker.js","sources":["../../../../src/componentsV2/ColorPicker/ColorPicker.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport {\n CSSProperties,\n KeyboardEventHandler,\n MouseEventHandler,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { ChromePicker, ColorResult } from 'react-color';\nimport { throttle } from 'lodash';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { TextInputNext, TextInputNextProps } from '../TextInputNext';\nimport { Popover, PopoverProps } from '../Popover';\nimport { ButtonIcon } from '../ButtonIcon';\nimport { Tooltip } from '../Tooltip';\nimport { Popper } from '../Popper';\n\nimport { Swatches } from './Swatches';\nimport { channelsToHex, channelsToRgba, ColorChannels, defaultColor, parseColor } from './utils';\nimport { OpacityDragTracker } from './OpacityDragtracker';\nimport { useChromePickerAccessibility } from './useChromePickerAccessibility';\n\nimport styles from './ColorPicker.scss';\n\nimport { PaletteIcon, PickerIcon } from '~/icons';\n\nexport type ColorPickerProps = {\n value?: string;\n onChange?: (value: string) => void;\n\n size?: TextInputNextProps['size'];\n label?: TextInputNextProps['label'];\n labelPlacement?: TextInputNextProps['labelPlacement'];\n disabled?: boolean;\n /**\n * Disables drag to change opacity functinality\n */\n disableOpacityDrag?: boolean;\n /**\n * Determines base format of the colour `rgb(RRR, GGG, BBB[, AAA])` or `#RRGGBB[AA]`\n */\n format?: 'rgb' | 'hex';\n /**\n * Allows user to control color's opacity, adds alpha channel to resulting color string\n */\n enableAlpha?: boolean;\n\n popoverPlacement?: PopoverProps['placement'];\n\n onOpen?: () => void;\n onClose?: () => void;\n\n elementsClassNames?: Partial<\n Omit<\n Required<TextInputNextProps>['elementsClassNames'],\n 'message' | 'numberStepButtons' | 'prefix' | 'suffix'\n > &\n Record<'indicator' | 'popover', string>\n >;\n\n className?: string;\n testId?: string;\n};\n\nconst SizeToClassMap: Record<Required<ColorPickerProps>['size'], string> = {\n small: styles.small,\n medium: styles.medium,\n large: styles.large,\n};\n\ntype FocusTarget = 'palette' | 'picker';\n\nexport const ColorPicker = ({\n format = 'hex',\n className,\n label,\n labelPlacement = 'top',\n popoverPlacement = 'bottom-start',\n testId,\n disabled,\n size = 'small',\n onOpen,\n onClose,\n value = defaultColor,\n onChange,\n disableOpacityDrag,\n enableAlpha = false,\n elementsClassNames = {},\n}: ColorPickerProps) => {\n const inputElementsClassNames = useMemo<TextInputNextProps['elementsClassNames']>(\n () => ({\n input: classNames(styles.input, elementsClassNames.input),\n inputContainer: classNames(styles.inputContainer, elementsClassNames.inputContainer),\n label: classNames(styles.label, elementsClassNames.label),\n prefix: styles.prefixContainer,\n suffix: styles.suffixContainer,\n numberStepButtons: styles.numberStepButtons,\n }),\n [elementsClassNames.input, elementsClassNames.inputContainer, elementsClassNames.label]\n );\n\n const valueChannels = useMemo(() => {\n try {\n const channels = parseColor(value);\n\n return { ...channels, a: enableAlpha ? channels.a : 1 };\n } catch (_) {\n return parseColor(defaultColor);\n }\n }, [value, enableAlpha]);\n\n const [isMenuOpen, setIsOpen] = useState(false);\n const inputContainerRef = useRef<HTMLDivElement>(null);\n const indicatorRef = useRef<HTMLDivElement>(null);\n const [isSwatches, setIsSwatches] = useState(true);\n const [focusTarget, setFocusTarget] = useState<FocusTarget | null>(null);\n const [internalValue, setInternalValue] = useState<ColorChannels>(valueChannels);\n const popoverRef = useRef<HTMLDivElement>(null);\n const accessibilityId = useMemo(() => `corva-color-picker-${uuidv4()}`, []);\n const inputId = `${accessibilityId}-opacity-input`;\n const labelId = `${accessibilityId}-label`;\n const opacityLabelId = `${accessibilityId}-opacity-label`;\n const hasLabel = Boolean(label);\n\n const openMenu = useCallback(() => {\n setIsOpen(true);\n onOpen?.();\n }, [onOpen]);\n\n const openMenuSwatch = useCallback<MouseEventHandler>(\n e => {\n e.preventDefault();\n setFocusTarget(null);\n openMenu();\n },\n [openMenu]\n );\n\n const openMenuFocus = useCallback(() => {\n setFocusTarget(null);\n openMenu();\n }, [openMenu]);\n\n const openMenuKeyDown = useCallback<KeyboardEventHandler<HTMLDivElement>>(\n event => {\n if (!disabled && (event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown')) {\n event.preventDefault();\n setFocusTarget('palette');\n openMenu();\n }\n },\n [disabled, openMenu]\n );\n\n const closeMenu = useCallback(() => {\n const isFocusInPopover = !!popoverRef.current?.contains(document.activeElement);\n\n setFocusTarget(null);\n setIsOpen(false);\n onClose?.();\n\n // Return focus to the trigger so keyboard flow is not lost after Escape/outside dismiss\n if (isFocusInPopover) {\n indicatorRef.current?.focus({ preventScroll: true });\n }\n }, [onClose]);\n\n const setSwatches = useCallback<MouseEventHandler<HTMLButtonElement>>(event => {\n setFocusTarget(event.detail === 0 ? 'palette' : null);\n setIsSwatches(true);\n }, []);\n\n const setPicker = useCallback<MouseEventHandler<HTMLButtonElement>>(event => {\n setFocusTarget(event.detail === 0 ? 'picker' : null);\n setIsSwatches(false);\n }, []);\n\n const clearFocusTarget = useCallback(() => setFocusTarget(null), []);\n\n const onInternalValueChange = useCallback(\n (color: ColorResult) => setInternalValue(color.rgb),\n []\n );\n\n const onActualChange = useCallback(\n (color: ColorChannels) => {\n const formatted =\n format === 'hex' ? channelsToHex(color, enableAlpha) : channelsToRgba(color, enableAlpha);\n onChange?.(formatted);\n },\n [format, onChange, enableAlpha]\n );\n\n const onKeyboardPickerChange = useCallback(\n (color: ColorChannels) => {\n setInternalValue(color);\n onActualChange(color);\n },\n [onActualChange]\n );\n\n const { pickerRef, onKeyDown: onPickerKeyDown } = useChromePickerAccessibility({\n color: internalValue,\n enableAlpha,\n isActive: !isSwatches,\n onChange: onKeyboardPickerChange,\n });\n\n useEffect(() => {\n if (focusTarget !== 'picker' || isSwatches) {\n return;\n }\n\n const firstControl = pickerRef.current?.querySelector<HTMLElement>(\n '[data-color-picker-control=\"saturation\"]'\n );\n\n if (firstControl) {\n firstControl.focus({ preventScroll: true });\n clearFocusTarget();\n }\n }, [clearFocusTarget, focusTarget, isSwatches, pickerRef]);\n\n const onOpacityInputChange = useCallback(\n (opacityString: string) => {\n const opacityNumber = Number(opacityString);\n\n if (Number.isNaN(opacityNumber) || opacityNumber < 0 || opacityNumber > 100) {\n return;\n }\n\n const color = { ...valueChannels, a: opacityNumber / 100 };\n onActualChange(color);\n },\n [valueChannels, onActualChange]\n );\n\n const pickerOnChange = useCallback(\n (color: ColorResult) => {\n onActualChange(color.rgb);\n },\n [onActualChange]\n );\n\n const swatchOnChange = useCallback(\n (color: ColorChannels) => {\n const nonZeroAlpha = valueChannels.a || 1;\n const alpha = enableAlpha && color.a === 0 ? 0 : nonZeroAlpha;\n onActualChange({ ...color, a: alpha });\n },\n [onActualChange, valueChannels.a, enableAlpha]\n );\n\n // Prevents focus on opacity drag end\n const onOpacityDragEnd = useCallback(() => {\n setTimeout(() => {\n setIsOpen(false);\n (document.activeElement as HTMLElement | null)?.blur?.();\n }, 0);\n }, []);\n\n const onOpacityDrag = useMemo(\n () =>\n throttle((percent: number) => {\n const newFieldValue = String(Math.round(percent));\n onOpacityInputChange(newFieldValue);\n }, 100),\n [onOpacityInputChange]\n );\n\n useEffect(() => {\n setInternalValue(valueChannels);\n }, [valueChannels]);\n\n useEffect(() => {\n if (isMenuOpen) {\n setIsSwatches(true);\n }\n }, [isMenuOpen]);\n\n const inputValue = String(Math.round(internalValue.a * 100));\n\n const hasVerticalMargin =\n popoverPlacement?.startsWith('top') || popoverPlacement?.startsWith('bottom');\n const hasHorizontalMargin =\n popoverPlacement?.startsWith('left') || popoverPlacement?.startsWith('right');\n const accessibleLabel = hasLabel ? (\n <>\n <label id={labelId} htmlFor={inputId}>\n {typeof label === 'string' ? <TextInputNext.Label>{label}</TextInputNext.Label> : label}\n </label>\n <span id={opacityLabelId} hidden>\n Opacity\n </span>\n </>\n ) : undefined;\n const inputHtmlAttributes: TextInputNextProps['htmlAttributes'] = useMemo(\n () =>\n hasLabel\n ? {\n id: inputId,\n 'aria-labelledby': `${labelId} ${opacityLabelId}`,\n }\n : {\n id: inputId,\n 'aria-label': 'Opacity',\n },\n [hasLabel, inputId, labelId, opacityLabelId]\n );\n\n return (\n <>\n <TextInputNext\n label={accessibleLabel}\n labelPlacement={labelPlacement}\n disabled={disabled}\n size={size}\n rootTagName=\"div\"\n prefix={\n <>\n <div className={styles.fakeValue}>\n {inputValue}\n <span className={styles.fakeValuePercent}>%</span>\n </div>\n\n <div\n ref={indicatorRef}\n className={classNames(\n styles.indicator,\n internalValue.a === 0 && styles.transparent,\n elementsClassNames.indicator\n )}\n style={\n {\n '--corvaui-colorpicker-indicatorcolor': channelsToHex(internalValue, false),\n } as CSSProperties\n }\n onClick={disabled ? undefined : openMenuSwatch}\n onKeyDown={openMenuKeyDown}\n role=\"button\"\n aria-label={hasLabel ? undefined : 'Color picker'}\n aria-labelledby={hasLabel ? labelId : undefined}\n aria-expanded={isMenuOpen}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n />\n </>\n }\n suffix={\n !isMenuOpen &&\n enableAlpha &&\n !disableOpacityDrag &&\n !disabled && (\n <OpacityDragTracker\n value={Number(inputValue)}\n onDrag={onOpacityDrag}\n onDragEnd={onOpacityDragEnd}\n />\n )\n }\n className={classNames(\n styles.root,\n SizeToClassMap[size],\n !enableAlpha && styles.noAlpha,\n className\n )}\n testId={testId}\n inputContainerRef={inputContainerRef}\n value={inputValue}\n onChange={onOpacityInputChange}\n onFocus={openMenuFocus}\n inputType=\"number\"\n inputMode=\"numeric\"\n htmlAttributes={inputHtmlAttributes}\n elementsClassNames={inputElementsClassNames}\n />\n\n {/* Popover backdrop is needed for ColorPicker to work better in popovers: click outside will close the ColorPicker but not the popover */}\n <Popover\n ref={popoverRef}\n anchorEl={inputContainerRef.current}\n open={isMenuOpen}\n onClose={closeMenu}\n placement={popoverPlacement}\n className={classNames(\n styles.popover,\n hasVerticalMargin && styles.marginVertical,\n hasHorizontalMargin && styles.marginHorizontal,\n internalValue.a === 0 && styles.isTransparent,\n elementsClassNames.popover\n )}\n >\n {isSwatches ? (\n <Swatches\n onChange={swatchOnChange}\n value={valueChannels}\n addTransparent={enableAlpha}\n autoFocus={focusTarget === 'palette'}\n onAutoFocus={clearFocusTarget}\n />\n ) : (\n <div ref={pickerRef} className={styles.pickerContainer} onKeyDown={onPickerKeyDown}>\n <ChromePicker\n color={internalValue}\n onChange={onInternalValueChange}\n onChangeComplete={pickerOnChange}\n disableAlpha={!enableAlpha}\n className={styles.picker}\n />\n </div>\n )}\n <div className={styles.switchButtons}>\n <Tooltip title=\"Palette\">\n <ButtonIcon\n ariaLabel=\"Show color palette\"\n size=\"medium\"\n type={isSwatches ? 'secondary' : 'tertiary'}\n onClick={setSwatches}\n >\n <PaletteIcon />\n </ButtonIcon>\n </Tooltip>\n <Tooltip title=\"Pick your own\">\n <ButtonIcon\n ariaLabel=\"Show custom color picker\"\n size=\"medium\"\n type={!isSwatches ? 'secondary' : 'tertiary'}\n onClick={setPicker}\n >\n <PickerIcon />\n </ButtonIcon>\n </Tooltip>\n </div>\n </Popover>\n\n {/* Opacity Drag Tracker should work even with popover open with a backdrop */}\n {isMenuOpen && enableAlpha && !disableOpacityDrag && (\n <Popper\n open={isMenuOpen}\n anchorEl={inputContainerRef.current}\n className={styles.dragTrackerPopper}\n placement=\"right\"\n >\n <OpacityDragTracker onDrag={onOpacityDrag} onDragEnd={onOpacityDragEnd} />\n </Popper>\n )}\n </>\n );\n};\n"],"names":["SizeToClassMap","small","styles","medium","large","_ref","_ref$format","format","className","label","_ref$labelPlacement","labelPlacement","_ref$popoverPlacement","popoverPlacement","testId","disabled","_ref$size","size","onOpen","onClose","_ref$value","value","defaultColor","onChange","disableOpacityDrag","_ref$enableAlpha","enableAlpha","_ref$elementsClassNam","elementsClassNames","inputElementsClassNames","useMemo","input","classNames","inputContainer","prefix","prefixContainer","suffix","suffixContainer","numberStepButtons","valueChannels","channels","parseColor","_objectSpread","a","_","useState","_useState2","_slicedToArray","_useState","isMenuOpen","setIsOpen","inputContainerRef","useRef","indicatorRef","_useState4","_useState3","isSwatches","setIsSwatches","_useState6","_useState5","focusTarget","setFocusTarget","_useState8","_useState7","internalValue","setInternalValue","popoverRef","accessibilityId","concat","uuidv4","v4","inputId","labelId","opacityLabelId","hasLabel","Boolean","openMenu","useCallback","openMenuSwatch","e","preventDefault","openMenuFocus","openMenuKeyDown","event","key","closeMenu","_popoverRef$current","_indicatorRef$current","isFocusInPopover","current","contains","document","activeElement","focus","preventScroll","setSwatches","detail","setPicker","clearFocusTarget","onInternalValueChange","color","rgb","onActualChange","formatted","channelsToHex","channelsToRgba","onKeyboardPickerChange","_useChromePickerAcces","useChromePickerAccessibility","isActive","pickerRef","onPickerKeyDown","onKeyDown","useEffect","_pickerRef$current","firstControl","querySelector","onOpacityInputChange","opacityString","opacityNumber","Number","isNaN","pickerOnChange","swatchOnChange","nonZeroAlpha","alpha","onOpacityDragEnd","setTimeout","_document$activeEleme","_document$activeEleme2","blur","call","onOpacityDrag","throttle","percent","newFieldValue","String","Math","round","inputValue","hasVerticalMargin","startsWith","hasHorizontalMargin","accessibleLabel","_jsxs","jsxs","_Fragment","children","_jsx","jsx","id","htmlFor","TextInputNext","Label","hidden","undefined","inputHtmlAttributes","rootTagName","fakeValue","fakeValuePercent","ref","indicator","transparent","style","onClick","role","tabIndex","OpacityDragTracker","onDrag","onDragEnd","root","noAlpha","onFocus","inputType","inputMode","htmlAttributes","Popover","anchorEl","open","placement","popover","marginVertical","marginHorizontal","isTransparent","Swatches","addTransparent","autoFocus","onAutoFocus","pickerContainer","ChromePicker","onChangeComplete","disableAlpha","picker","switchButtons","Tooltip","title","ButtonIcon","ariaLabel","type","PaletteIcon","PickerIcon","Popper","dragTrackerPopper"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ColorPicker.js","sources":["../../../../src/componentsV2/ColorPicker/ColorPicker.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport {\n CSSProperties,\n KeyboardEventHandler,\n MouseEventHandler,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { ChromePicker, ColorResult } from 'react-color';\nimport { throttle } from 'lodash';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { TextInputNext, TextInputNextProps } from '../TextInputNext';\nimport { Popover, PopoverProps } from '../Popover';\nimport { ButtonIcon } from '../ButtonIcon';\nimport { Tooltip } from '../Tooltip';\nimport { Popper } from '../Popper';\n\nimport { Swatches } from './Swatches';\nimport { channelsToHex, channelsToRgba, ColorChannels, defaultColor, parseColor } from './utils';\nimport { OpacityDragTracker } from './OpacityDragtracker';\nimport { useChromePickerAccessibility } from './useChromePickerAccessibility';\n\nimport styles from './ColorPicker.scss';\n\nimport { PaletteIcon, PickerIcon } from '~/icons';\n\nexport type ColorPickerProps = {\n value?: string;\n onChange?: (value: string) => void;\n\n size?: TextInputNextProps['size'];\n label?: TextInputNextProps['label'];\n labelPlacement?: TextInputNextProps['labelPlacement'];\n disabled?: boolean;\n /**\n * Disables drag to change opacity functinality\n */\n disableOpacityDrag?: boolean;\n /**\n * Determines base format of the colour `rgb(RRR, GGG, BBB[, AAA])` or `#RRGGBB[AA]`\n */\n format?: 'rgb' | 'hex';\n /**\n * Allows user to control color's opacity, adds alpha channel to resulting color string\n */\n enableAlpha?: boolean;\n\n popoverPlacement?: PopoverProps['placement'];\n\n onOpen?: () => void;\n onClose?: () => void;\n\n /**\n * An escape hatch to tweak styling of internal elements\n */\n elementsClassNames?: Partial<\n Omit<\n Required<TextInputNextProps>['elementsClassNames'],\n 'message' | 'numberStepButtons' | 'prefix' | 'suffix'\n > &\n Record<'indicator' | 'popover', string>\n >;\n\n className?: string;\n testId?: string;\n};\n\nconst SizeToClassMap: Record<Required<ColorPickerProps>['size'], string> = {\n small: styles.small,\n medium: styles.medium,\n large: styles.large,\n};\n\nconst ownInputElementsClassNames: TextInputNextProps['elementsClassNames'] = {\n inputContainer: styles.inputContainer,\n numberStepButtons: styles.numberStepButtons,\n prefix: styles.prefixContainer,\n suffix: styles.suffixContainer,\n input: styles.input,\n label: styles.label,\n};\n\ntype FocusTarget = 'palette' | 'picker';\n\nexport const ColorPicker = ({\n format = 'hex',\n className,\n label,\n labelPlacement = 'top',\n popoverPlacement = 'bottom-start',\n testId,\n disabled,\n size = 'small',\n onOpen,\n onClose,\n value = defaultColor,\n onChange,\n disableOpacityDrag,\n enableAlpha = false,\n elementsClassNames,\n}: ColorPickerProps) => {\n const valueChannels = useMemo(() => {\n try {\n const channels = parseColor(value);\n\n return { ...channels, a: enableAlpha ? channels.a : 1 };\n } catch (_) {\n return parseColor(defaultColor);\n }\n }, [value, enableAlpha]);\n\n const realElementsClassNames = useMemo((): Required<ColorPickerProps>['elementsClassNames'] => {\n return elementsClassNames\n ? Object.entries(elementsClassNames).reduce<Required<ColorPickerProps>['elementsClassNames']>(\n (acc, pair) => {\n const [key, value] = pair as [\n keyof Required<ColorPickerProps>['elementsClassNames'],\n string\n ];\n return {\n ...acc,\n [key]: acc[key] ? classNames(acc[key], value) : value,\n };\n },\n {\n ...ownInputElementsClassNames,\n }\n )\n : ownInputElementsClassNames;\n }, [elementsClassNames]);\n\n const [isMenuOpen, setIsOpen] = useState(false);\n const inputContainerRef = useRef<HTMLDivElement>(null);\n const indicatorRef = useRef<HTMLDivElement>(null);\n const [isSwatches, setIsSwatches] = useState(true);\n const [focusTarget, setFocusTarget] = useState<FocusTarget | null>(null);\n const [internalValue, setInternalValue] = useState<ColorChannels>(valueChannels);\n const popoverRef = useRef<HTMLDivElement>(null);\n const accessibilityId = useMemo(() => `corva-color-picker-${uuidv4()}`, []);\n const inputId = `${accessibilityId}-opacity-input`;\n const labelId = `${accessibilityId}-label`;\n const opacityLabelId = `${accessibilityId}-opacity-label`;\n const hasLabel = Boolean(label);\n\n const openMenu = useCallback(() => {\n setIsOpen(true);\n onOpen?.();\n }, [onOpen]);\n\n const openMenuSwatch = useCallback<MouseEventHandler>(\n e => {\n e.preventDefault();\n setFocusTarget(null);\n openMenu();\n },\n [openMenu]\n );\n\n const openMenuFocus = useCallback(() => {\n setFocusTarget(null);\n openMenu();\n }, [openMenu]);\n\n const openMenuKeyDown = useCallback<KeyboardEventHandler<HTMLDivElement>>(\n event => {\n if (!disabled && (event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown')) {\n event.preventDefault();\n setFocusTarget('palette');\n openMenu();\n }\n },\n [disabled, openMenu]\n );\n\n const closeMenu = useCallback(() => {\n const isFocusInPopover = !!popoverRef.current?.contains(document.activeElement);\n\n setFocusTarget(null);\n setIsOpen(false);\n onClose?.();\n\n // Return focus to the trigger so keyboard flow is not lost after Escape/outside dismiss\n if (isFocusInPopover) {\n indicatorRef.current?.focus({ preventScroll: true });\n }\n }, [onClose]);\n\n const setSwatches = useCallback<MouseEventHandler<HTMLButtonElement>>(event => {\n setFocusTarget(event.detail === 0 ? 'palette' : null);\n setIsSwatches(true);\n }, []);\n\n const setPicker = useCallback<MouseEventHandler<HTMLButtonElement>>(event => {\n setFocusTarget(event.detail === 0 ? 'picker' : null);\n setIsSwatches(false);\n }, []);\n\n const clearFocusTarget = useCallback(() => setFocusTarget(null), []);\n\n const onInternalValueChange = useCallback(\n (color: ColorResult) => setInternalValue(color.rgb),\n []\n );\n\n const onActualChange = useCallback(\n (color: ColorChannels) => {\n const formatted =\n format === 'hex' ? channelsToHex(color, enableAlpha) : channelsToRgba(color, enableAlpha);\n onChange?.(formatted);\n },\n [format, onChange, enableAlpha]\n );\n\n const onKeyboardPickerChange = useCallback(\n (color: ColorChannels) => {\n setInternalValue(color);\n onActualChange(color);\n },\n [onActualChange]\n );\n\n const { pickerRef, onKeyDown: onPickerKeyDown } = useChromePickerAccessibility({\n color: internalValue,\n enableAlpha,\n isActive: !isSwatches,\n onChange: onKeyboardPickerChange,\n });\n\n useEffect(() => {\n if (focusTarget !== 'picker' || isSwatches) {\n return;\n }\n\n const firstControl = pickerRef.current?.querySelector<HTMLElement>(\n '[data-color-picker-control=\"saturation\"]'\n );\n\n if (firstControl) {\n firstControl.focus({ preventScroll: true });\n clearFocusTarget();\n }\n }, [clearFocusTarget, focusTarget, isSwatches, pickerRef]);\n\n const onOpacityInputChange = useCallback(\n (opacityString: string) => {\n const opacityNumber = Number(opacityString);\n\n if (Number.isNaN(opacityNumber) || opacityNumber < 0 || opacityNumber > 100) {\n return;\n }\n\n const color = { ...valueChannels, a: opacityNumber / 100 };\n onActualChange(color);\n },\n [valueChannels, onActualChange]\n );\n\n const pickerOnChange = useCallback(\n (color: ColorResult) => {\n onActualChange(color.rgb);\n },\n [onActualChange]\n );\n\n const swatchOnChange = useCallback(\n (color: ColorChannels) => {\n const nonZeroAlpha = valueChannels.a || 1;\n const alpha = enableAlpha && color.a === 0 ? 0 : nonZeroAlpha;\n onActualChange({ ...color, a: alpha });\n },\n [onActualChange, valueChannels.a, enableAlpha]\n );\n\n // Prevents focus on opacity drag end\n const onOpacityDragEnd = useCallback(() => {\n setTimeout(() => {\n setIsOpen(false);\n (document.activeElement as HTMLElement | null)?.blur?.();\n }, 0);\n }, []);\n\n const onOpacityDrag = useMemo(\n () =>\n throttle((percent: number) => {\n const newFieldValue = String(Math.round(percent));\n onOpacityInputChange(newFieldValue);\n }, 100),\n [onOpacityInputChange]\n );\n\n useEffect(() => {\n setInternalValue(valueChannels);\n }, [valueChannels]);\n\n useEffect(() => {\n if (isMenuOpen) {\n setIsSwatches(true);\n }\n }, [isMenuOpen]);\n\n const inputValue = String(Math.round(internalValue.a * 100));\n\n const hasVerticalMargin =\n popoverPlacement?.startsWith('top') || popoverPlacement?.startsWith('bottom');\n const hasHorizontalMargin =\n popoverPlacement?.startsWith('left') || popoverPlacement?.startsWith('right');\n const accessibleLabel = hasLabel ? (\n <>\n <label id={labelId} htmlFor={inputId}>\n {typeof label === 'string' ? <TextInputNext.Label>{label}</TextInputNext.Label> : label}\n </label>\n <span id={opacityLabelId} hidden>\n Opacity\n </span>\n </>\n ) : undefined;\n const inputHtmlAttributes: TextInputNextProps['htmlAttributes'] = useMemo(\n () =>\n hasLabel\n ? {\n id: inputId,\n 'aria-labelledby': `${labelId} ${opacityLabelId}`,\n }\n : {\n id: inputId,\n 'aria-label': 'Opacity',\n },\n [hasLabel, inputId, labelId, opacityLabelId]\n );\n\n return (\n <>\n <TextInputNext\n label={accessibleLabel}\n labelPlacement={labelPlacement}\n disabled={disabled}\n size={size}\n rootTagName=\"div\"\n prefix={\n <>\n <div className={styles.fakeValue}>\n {inputValue}\n <span className={styles.fakeValuePercent}>%</span>\n </div>\n\n <div\n ref={indicatorRef}\n className={classNames(\n styles.indicator,\n internalValue.a === 0 && styles.transparent,\n realElementsClassNames.indicator\n )}\n style={\n {\n '--corvaui-colorpicker-indicatorcolor': channelsToHex(internalValue, false),\n } as CSSProperties\n }\n onClick={disabled ? undefined : openMenuSwatch}\n onKeyDown={openMenuKeyDown}\n role=\"button\"\n aria-label={hasLabel ? undefined : 'Color picker'}\n aria-labelledby={hasLabel ? labelId : undefined}\n aria-expanded={isMenuOpen}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n />\n </>\n }\n suffix={\n !isMenuOpen &&\n enableAlpha &&\n !disableOpacityDrag &&\n !disabled && (\n <OpacityDragTracker\n value={Number(inputValue)}\n onDrag={onOpacityDrag}\n onDragEnd={onOpacityDragEnd}\n />\n )\n }\n className={classNames(\n styles.root,\n SizeToClassMap[size],\n !enableAlpha && styles.noAlpha,\n className\n )}\n testId={testId}\n inputContainerRef={inputContainerRef}\n value={inputValue}\n onChange={onOpacityInputChange}\n onFocus={openMenuFocus}\n inputType=\"number\"\n inputMode=\"numeric\"\n elementsClassNames={realElementsClassNames}\n htmlAttributes={inputHtmlAttributes}\n />\n\n {/* Popover backdrop is needed for ColorPicker to work better in popovers: click outside will close the ColorPicker but not the popover */}\n <Popover\n ref={popoverRef}\n anchorEl={inputContainerRef.current}\n open={isMenuOpen}\n onClose={closeMenu}\n placement={popoverPlacement}\n className={classNames(\n styles.popover,\n hasVerticalMargin && styles.marginVertical,\n hasHorizontalMargin && styles.marginHorizontal,\n internalValue.a === 0 && styles.isTransparent,\n realElementsClassNames.popover\n )}\n >\n {isSwatches ? (\n <Swatches\n onChange={swatchOnChange}\n value={valueChannels}\n addTransparent={enableAlpha}\n autoFocus={focusTarget === 'palette'}\n onAutoFocus={clearFocusTarget}\n />\n ) : (\n <div ref={pickerRef} className={styles.pickerContainer} onKeyDown={onPickerKeyDown}>\n <ChromePicker\n color={internalValue}\n onChange={onInternalValueChange}\n onChangeComplete={pickerOnChange}\n disableAlpha={!enableAlpha}\n className={styles.picker}\n />\n </div>\n )}\n <div className={styles.switchButtons}>\n <Tooltip title=\"Palette\">\n <ButtonIcon\n ariaLabel=\"Show color palette\"\n size=\"medium\"\n type={isSwatches ? 'secondary' : 'tertiary'}\n onClick={setSwatches}\n >\n <PaletteIcon />\n </ButtonIcon>\n </Tooltip>\n <Tooltip title=\"Pick your own\">\n <ButtonIcon\n ariaLabel=\"Show custom color picker\"\n size=\"medium\"\n type={!isSwatches ? 'secondary' : 'tertiary'}\n onClick={setPicker}\n >\n <PickerIcon />\n </ButtonIcon>\n </Tooltip>\n </div>\n </Popover>\n\n {/* Opacity Drag Tracker should work even with popover open with a backdrop */}\n {isMenuOpen && enableAlpha && !disableOpacityDrag && (\n <Popper\n open={isMenuOpen}\n anchorEl={inputContainerRef.current}\n className={styles.dragTrackerPopper}\n placement=\"right\"\n >\n <OpacityDragTracker onDrag={onOpacityDrag} onDragEnd={onOpacityDragEnd} />\n </Popper>\n )}\n </>\n );\n};\n"],"names":["SizeToClassMap","small","styles","medium","large","ownInputElementsClassNames","inputContainer","numberStepButtons","prefix","prefixContainer","suffix","suffixContainer","input","label","_ref","_ref$format","format","className","_ref$labelPlacement","labelPlacement","_ref$popoverPlacement","popoverPlacement","testId","disabled","_ref$size","size","onOpen","onClose","_ref$value","value","defaultColor","onChange","disableOpacityDrag","_ref$enableAlpha","enableAlpha","elementsClassNames","valueChannels","useMemo","channels","parseColor","_objectSpread","a","_","realElementsClassNames","Object","entries","reduce","acc","pair","_ref2","_ref3","_slicedToArray","key","classNames","useState","_useState2","_useState","isMenuOpen","setIsOpen","inputContainerRef","useRef","indicatorRef","_useState4","_useState3","isSwatches","setIsSwatches","_useState6","_useState5","focusTarget","setFocusTarget","_useState8","_useState7","internalValue","setInternalValue","popoverRef","accessibilityId","concat","uuidv4","v4","inputId","labelId","opacityLabelId","hasLabel","Boolean","openMenu","useCallback","openMenuSwatch","e","preventDefault","openMenuFocus","openMenuKeyDown","event","closeMenu","_popoverRef$current","_indicatorRef$current","isFocusInPopover","current","contains","document","activeElement","focus","preventScroll","setSwatches","detail","setPicker","clearFocusTarget","onInternalValueChange","color","rgb","onActualChange","formatted","channelsToHex","channelsToRgba","onKeyboardPickerChange","_useChromePickerAcces","useChromePickerAccessibility","isActive","pickerRef","onPickerKeyDown","onKeyDown","useEffect","_pickerRef$current","firstControl","querySelector","onOpacityInputChange","opacityString","opacityNumber","Number","isNaN","pickerOnChange","swatchOnChange","nonZeroAlpha","alpha","onOpacityDragEnd","setTimeout","_document$activeEleme","_document$activeEleme2","blur","call","onOpacityDrag","throttle","percent","newFieldValue","String","Math","round","inputValue","hasVerticalMargin","startsWith","hasHorizontalMargin","accessibleLabel","_jsxs","jsxs","_Fragment","children","_jsx","jsx","id","htmlFor","TextInputNext","Label","hidden","undefined","inputHtmlAttributes","rootTagName","fakeValue","fakeValuePercent","ref","indicator","transparent","style","onClick","role","tabIndex","OpacityDragTracker","onDrag","onDragEnd","root","noAlpha","onFocus","inputType","inputMode","htmlAttributes","Popover","anchorEl","open","placement","popover","marginVertical","marginHorizontal","isTransparent","Swatches","addTransparent","autoFocus","onAutoFocus","pickerContainer","ChromePicker","onChangeComplete","disableAlpha","picker","switchButtons","Tooltip","title","ButtonIcon","ariaLabel","type","PaletteIcon","PickerIcon","Popper","dragTrackerPopper"],"mappings":"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"}
|