@niledatabase/react 2.4.2-alpha.4 → 2.5.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -0
- package/dist/react.cjs.development.js +7 -0
- package/dist/react.cjs.development.js.map +1 -1
- package/dist/react.cjs.production.min.js +1 -1
- package/dist/react.cjs.production.min.js.map +1 -1
- package/dist/react.esm.d.ts +1 -0
- package/dist/react.esm.js +1 -0
- package/dist/react.esm.js.map +1 -1
- package/package.json +4 -3
package/dist/index.d.ts
CHANGED
|
@@ -10,3 +10,4 @@ export { default as UserTenantList } from './UserTenantList';
|
|
|
10
10
|
export * from './SSO';
|
|
11
11
|
export { default as SSOForm } from './SSO';
|
|
12
12
|
export { Attribute as FormAttribute, AttributeType as FormAttributeType, } from './lib/SimpleForm/types';
|
|
13
|
+
export * from 'next-auth/react';
|
|
@@ -29,6 +29,7 @@ var xDataGrid = require('@mui/x-data-grid');
|
|
|
29
29
|
var Add = require('@mui/icons-material/Add');
|
|
30
30
|
var CopyAll = require('@mui/icons-material/CopyAll');
|
|
31
31
|
var CheckCircleOutlined = require('@mui/icons-material/CheckCircleOutlined');
|
|
32
|
+
var react = require('next-auth/react');
|
|
32
33
|
|
|
33
34
|
function _interopNamespaceDefault(e) {
|
|
34
35
|
var n = Object.create(null);
|
|
@@ -1227,4 +1228,10 @@ exports.SingleSignOnForm = SingleSignOnForm;
|
|
|
1227
1228
|
exports.UserLoginForm = LoginForm;
|
|
1228
1229
|
exports.UserSignupForm = SignUpForm;
|
|
1229
1230
|
exports.UserTenantList = UserList;
|
|
1231
|
+
Object.keys(react).forEach(function (k) {
|
|
1232
|
+
if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
|
|
1233
|
+
enumerable: true,
|
|
1234
|
+
get: function () { return react[k]; }
|
|
1235
|
+
});
|
|
1236
|
+
});
|
|
1230
1237
|
//# sourceMappingURL=react.cjs.development.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.cjs.development.js","sources":["../src/context/theme.tsx","../src/context/index.tsx","../src/GoogleLoginButton/google.svg","../src/GoogleLoginButton/GoogleLoginButton.tsx","../src/lib/SimpleForm/CheckGroup/index.tsx","../src/lib/SimpleForm/types.ts","../src/lib/SimpleForm/index.tsx","../src/SignUpForm/SignUpForm.tsx","../src/LoginForm/LoginForm.tsx","../src/LoginForm/SingleSignOn.tsx","../src/UserTenantList/UserModal.tsx","../src/UserTenantList/CreateUser.tsx","../src/utils/getColumnSize.ts","../src/hooks/useTextSizer.ts","../src/UserTenantList/useDataParser.ts","../src/UserTenantList/UserList.tsx","../src/SSO/BaseSSOForm.tsx","../src/SSO/Okta.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\nimport React from 'react';\nimport CssBaseline from '@mui/material/CssBaseline';\nimport { Theme } from '@mui/joy/styles';\nimport { CssVarsProvider as JoyCssVarsProvider } from '@mui/joy/styles';\n\nexport default function Themer({\n theme,\n children,\n slotProps,\n}: {\n theme?: Theme;\n children: JSX.Element;\n slotProps?: Record<string, string>;\n}) {\n return (\n <JoyCssVarsProvider {...slotProps} theme={theme}>\n <CssBaseline enableColorScheme />\n {children}\n </JoyCssVarsProvider>\n );\n}\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\nimport React, { useMemo, createContext, useContext } from 'react';\nimport Browser from '@niledatabase/browser';\nimport { QueryClientProvider, QueryClient } from '@tanstack/react-query';\n\nimport ThemeProvider from './theme';\nimport { NileContext, NileProviderProps, NileReactConfig } from './types';\n\nconst queryClient = new QueryClient();\n\nconst defaultContext: NileContext = {\n api: new Browser({\n basePath: 'https://api.thenile.dev',\n credentials: 'include',\n }),\n apiUrl: '',\n};\n\nconst context = createContext<NileContext>(defaultContext);\n\nconst { Provider } = context;\n\nexport const BaseQueryProvider = ({\n children,\n}: {\n children: JSX.Element;\n}): JSX.Element => {\n return (\n <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>\n );\n};\n\nexport const NileProvider = (props: NileProviderProps) => {\n const {\n children,\n theme,\n slotProps,\n tenantId,\n QueryProvider = BaseQueryProvider,\n appUrl,\n apiUrl = 'https://api.thenile.dev',\n api,\n } = props;\n\n const values = useMemo<NileContext>((): NileContext => {\n return {\n api:\n api ??\n new Browser({\n basePath: appUrl,\n credentials: 'include',\n }),\n tenantId: String(tenantId),\n apiUrl,\n };\n }, [api, apiUrl, appUrl, tenantId]);\n\n return (\n <QueryProvider>\n <ThemeProvider slotProps={slotProps?.provider} theme={theme}>\n <Provider value={values}>{children}</Provider>\n </ThemeProvider>\n </QueryProvider>\n );\n};\n\nconst useNileContext = (): NileContext => {\n return useContext(context);\n};\n\nexport const useNileConfig = (): NileReactConfig => {\n const { apiUrl, tenantId, appUrl } = useNileContext();\n return useMemo(\n () => ({\n tenantId,\n apiUrl,\n appUrl,\n }),\n [apiUrl, tenantId, appUrl]\n );\n};\n\nexport const useApi = (): Browser => {\n return useNileContext().api;\n};\n","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\">\n <g fill=\"#000\" fill-rule=\"evenodd\">\n <path d=\"M9 3.48c1.69 0 2.83.73 3.48 1.34l2.54-2.48C13.46.89 11.43 0 9 0 5.48 0 2.44 2.02.96 4.96l2.91 2.26C4.6 5.05 6.62 3.48 9 3.48z\" fill=\"#EA4335\" />\n <path d=\"M17.64 9.2c0-.74-.06-1.28-.19-1.84H9v3.34h4.96c-.1.83-.64 2.08-1.84 2.92l2.84 2.2c1.7-1.57 2.68-3.88 2.68-6.62z\" fill=\"#4285F4\" />\n <path d=\"M3.88 10.78A5.54 5.54 0 0 1 3.58 9c0-.62.11-1.22.29-1.78L.96 4.96A9.008 9.008 0 0 0 0 9c0 1.45.35 2.82.96 4.04l2.92-2.26z\" fill=\"#FBBC05\" />\n <path d=\"M9 18c2.43 0 4.47-.8 5.96-2.18l-2.84-2.2c-.76.53-1.78.9-3.12.9-2.38 0-4.4-1.57-5.12-3.74L.97 13.04C2.45 15.98 5.48 18 9 18z\" fill=\"#34A853\" />\n <path fill=\"none\" d=\"M0 0h18v18H0z\" />\n </g>\n</svg>","import React from 'react';\nimport Box from '@mui/joy/Box';\nimport Button from '@mui/joy/Button';\nimport Stack from '@mui/joy/Stack';\nimport Typography from '@mui/joy/Typography';\n\nimport { useNileConfig } from '../context';\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport GoogleLogo from './google.svg';\n\nconst LOGIN_PATH = 'users/oidc/google/login';\n\n/**\n * A component for a Google login button, according to their design language.\n * This works when an identity provider is configured in the admin dashboard.\n * @param props href: a string to override the URL provided by the context\n * @returns a JSX.Element to render\n */\nexport default function GoogleSSOButton(props: { newTenantName?: string }) {\n const { newTenantName } = props;\n const { apiUrl } = useNileConfig();\n if (!apiUrl) {\n // eslint-disable-next-line no-console\n console.error('apiUrl is missing from <NileProvider />');\n }\n const contextHref = `${apiUrl}/${LOGIN_PATH}`;\n const query = newTenantName\n ? '?newTenant=' + encodeURIComponent(newTenantName)\n : '';\n const href = contextHref + query;\n return (\n <Box\n component=\"a\"\n href={href}\n display=\"flex\"\n flex={1}\n sx={{ textDecoration: 'none' }}\n >\n <Box>\n <Button\n sx={{ padding: 0, textTransform: 'initial', flex: 1 }}\n aria-label=\"log in with google\"\n >\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n p={0}\n flex={1}\n fontFamily=\"Roboto, sans-serif\"\n fontSize=\"14px\"\n display=\"inline-flex\"\n color=\"rgb(255 255, 255)\"\n boxShadow=\"rgb(0 0 0 / 24%) 0px 2px 2px 0px rgb(0 0 0 / 24%) 0px 0px 1px 0px\"\n borderRadius=\"4px\"\n border=\"1px solid transparent\"\n fontWeight=\"500\"\n sx={{\n backgroundColor: 'rgb(66 133, 244)',\n }}\n >\n <Box\n padding=\"11px\"\n display=\"flex\"\n border=\"1px solid rgb(66, 133, 244)\"\n borderRadius=\"4px\"\n sx={{\n background: 'rgb(255, 255, 255)',\n }}\n >\n <GoogleLogo aria-hidden=\"true\" />\n </Box>\n <Box padding=\"10px\" flex={1}>\n <Typography\n sx={{ color: 'white' }}\n fontWeight={700}\n fontFamily=\"Roboto, sans-serif\"\n fontSize=\"14px\"\n height=\"20px\"\n >\n Continue with Google\n </Typography>\n </Box>\n </Stack>\n </Button>\n </Box>\n </Box>\n );\n}\n","import * as React from 'react';\nimport Box from '@mui/joy/Box';\nimport Checkbox from '@mui/joy/Checkbox';\nimport List from '@mui/joy/List';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport Stack from '@mui/joy/Stack';\nimport FormLabel from '@mui/joy/FormLabel';\nimport ListItem from '@mui/joy/ListItem';\nimport Typography from '@mui/joy/Typography';\n\nimport { Attribute, DisplayProps, Options } from '../types';\n\ntype Props = {\n attribute: Attribute;\n display: DisplayProps;\n options: Options;\n helperText: string;\n};\nexport default function CheckGroup(props: Props) {\n const { options, attribute, display, helperText } = props;\n const { watch, control } = useFormContext();\n const currentVals = watch(attribute.name);\n const checkProps: { color?: 'danger'; id?: string } = {};\n if (helperText) {\n checkProps.color = 'danger';\n }\n return (\n <Controller\n name={attribute.name}\n rules={{ required: Boolean(attribute.required) }}\n control={control}\n render={({ field }) => {\n return (\n <Stack>\n <FormLabel htmlFor={`${field.name}`}>{display.label}</FormLabel>\n <Box\n role=\"group\"\n aria-labelledby={attribute.name}\n sx={{\n borderRadius: 'var(--joy-radius-sm)',\n p: 0.5,\n border: helperText\n ? '1px solid var(--joy-palette-danger-outlinedBorder)'\n : 'none',\n }}\n >\n <List\n orientation=\"horizontal\"\n wrap\n sx={{\n '--List-gap': '8px',\n }}\n >\n {options.map((item) => {\n checkProps.id = String(item.value);\n return (\n <ListItem key={`${item.value}-${item.label}`}>\n <Checkbox\n overlay={options.length > 1}\n {...checkProps}\n checked={currentVals.includes(item.value)}\n disableIcon={options.length > 1}\n variant=\"soft\"\n label={item.label}\n onChange={(event) => {\n if (attribute.allowMultiple) {\n if (event.target.checked) {\n if (!currentVals) {\n field.onChange([item.value]);\n } else {\n field.onChange(currentVals.concat(item.value));\n }\n } else {\n const remaining = currentVals.filter(\n (val: string | number) => val !== item.value\n );\n if (remaining.length > 0) {\n field.onChange(remaining);\n } else {\n field.onChange('');\n }\n }\n } else {\n if (event.target.checked) {\n field.onChange(item.value);\n } else {\n field.onChange('');\n }\n }\n }}\n />\n </ListItem>\n );\n })}\n </List>\n </Box>\n <Typography\n sx={{ color: 'var(--joy-palette-danger-500)' }}\n level=\"body-sm\"\n >\n {helperText}\n </Typography>\n </Stack>\n );\n }}\n />\n );\n}\n","export enum AttributeType {\n Text = 'text',\n Password = 'password',\n Select = 'select',\n Number = 'number',\n Float = 'float',\n Checkbox = 'checkbox',\n Switch = 'switch',\n}\ntype SimplePrimitive = number | string | boolean;\n\n// possibly no value for `<Switch/>`\nexport type Options = { label: string; value?: SimplePrimitive }[];\nexport type Attribute = {\n name: string;\n type?: AttributeType;\n defaultValue?: SimplePrimitive;\n options?: Options;\n allowMultiple?: boolean;\n label?: string;\n required?: boolean;\n placeholder?: string;\n helpText?: string;\n disabled?: boolean;\n};\n\nexport type DisplayProps = {\n key: string;\n id: string;\n label: string;\n placeholder: string;\n error?: boolean;\n color?: 'danger';\n disabled?: boolean;\n};\n","import React from 'react';\nimport Button from '@mui/joy/Button';\nimport { Controller, FormProvider, useForm } from 'react-hook-form';\nimport Stack from '@mui/joy/Stack';\nimport Input from '@mui/joy/Input';\nimport FormControl from '@mui/joy/FormControl';\nimport FormHelperText from '@mui/joy/FormHelperText';\nimport Error from '@mui/icons-material/Error';\nimport FormLabel from '@mui/joy/FormLabel';\nimport Select from '@mui/joy/Select';\nimport Option from '@mui/joy/Option';\nimport Box from '@mui/joy/Box';\nimport Tooltip from '@mui/joy/Tooltip';\nimport { Switch } from '@mui/joy';\n\nimport CheckGroup from './CheckGroup';\nimport { Attribute, AttributeType, DisplayProps } from './types';\n\ntype AttrMap = {\n [key: string]: string | number | boolean | string[] | number[];\n};\n\ntype FieldConfig = {\n required?: boolean;\n};\n\nexport const getAttributeDefault = (\n attribute: Attribute\n): string | number | boolean | string[] | number[] => {\n // have to look to see if it is an enum\n if (attribute.allowMultiple === true) {\n if (!Array.isArray(attribute.defaultValue) && attribute.defaultValue) {\n if (typeof attribute.defaultValue === 'number') {\n return [attribute.defaultValue];\n }\n return [String(attribute.defaultValue)];\n }\n }\n return attribute.defaultValue ?? '';\n};\n\nfunction Labler(props: { error?: string; attr: Attribute }) {\n const { error, attr } = props;\n if (error) {\n return (\n <Tooltip title={error} color=\"danger\" sx={{ cursor: 'pointer' }}>\n <FormLabel>\n {attr.label ?? attr.name}\n <Error sx={{ ml: 0.5, '--Icon-color': '#c41c1c' }} fontSize=\"small\" />\n </FormLabel>\n </Tooltip>\n );\n }\n return <FormLabel>{attr.label ?? attr.name}</FormLabel>;\n}\nexport default function SimpleForm(props: {\n buttonText: string;\n cancelButton?: React.ReactNode;\n attributes: Attribute[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n mutation: any;\n loading?: boolean;\n successMessage?: JSX.Element;\n}) {\n const {\n mutation,\n buttonText,\n attributes,\n cancelButton,\n loading,\n successMessage,\n } = props;\n\n const defaultValues = React.useMemo(\n () =>\n attributes.reduce((accum: AttrMap, attr: Attribute) => {\n accum[attr.name] = getAttributeDefault(attr);\n return accum;\n }, {}),\n [attributes]\n );\n\n const methods = useForm({\n defaultValues,\n });\n\n const {\n register,\n control,\n handleSubmit,\n formState: { errors },\n } = methods;\n const onSubmit = React.useCallback(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (data: any) => {\n mutation.mutate(data);\n },\n [mutation]\n );\n\n return (\n <FormProvider {...methods}>\n <Stack\n component=\"form\"\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onSubmit={handleSubmit((data) => onSubmit(data as any))}\n spacing={2}\n >\n {attributes.map((attr: Attribute): React.ReactNode => {\n const fieldConfig: FieldConfig = {};\n const display: DisplayProps = {\n key: attr.name,\n label: attr.label ?? attr.name,\n id: attr.label ?? attr.name,\n placeholder: attr.placeholder ?? attr.label ?? attr.name,\n error: Boolean(errors[attr.name]),\n disabled: Boolean(attr.disabled),\n };\n const options = attr.options ?? [];\n const helperText = attr.helpText ?? '';\n let error = '';\n\n if (attr.required) {\n error = errors[attr.name]\n ? `${attr.label ?? attr.name} is required`\n : '';\n fieldConfig.required = true;\n }\n\n switch (attr.type) {\n case AttributeType.Switch:\n return (\n <FormControl\n key={display.key}\n id={display.id}\n orientation=\"horizontal\"\n sx={{ alignItems: 'center' }}\n >\n <Box>\n <Labler error={error} attr={attr} />\n <FormHelperText id={`${attr.name}-helper-text`}>\n {helperText}\n </FormHelperText>\n </Box>\n <Controller\n control={control}\n rules={{ required: Boolean(attr.required) }}\n name={attr.name}\n render={({ field }) => {\n const color: { color?: 'danger' } = {};\n if (errors[attr.name]) {\n color.color = 'danger';\n }\n return (\n <Switch\n id={`switch-field-${attr.name}`}\n {...color}\n {...field}\n checked={Boolean(field.value)}\n onChange={(event) => {\n field.onChange(event.target.checked);\n }}\n color={field.value ? 'success' : 'neutral'}\n endDecorator={\n field.value ? options[0].label : options[1].label\n }\n />\n );\n }}\n />\n </FormControl>\n );\n case AttributeType.Checkbox:\n return (\n <CheckGroup\n key={display.key}\n attribute={attr}\n display={display}\n options={options}\n helperText={helperText}\n />\n );\n case AttributeType.Select:\n return (\n <FormControl key={display.key} id={display.id}>\n <Labler error={error} attr={attr} />\n <Controller\n control={control}\n rules={{ required: Boolean(attr.required) }}\n name={attr.name}\n render={({ field }) => {\n const color: { color?: 'danger' } = {};\n if (errors[attr.name]) {\n color.color = 'danger';\n }\n const value = String(field.value);\n return (\n <Stack>\n <Select\n id={`select-field-${attr.name}`}\n placeholder={`${display.placeholder}...`}\n {...color}\n {...field}\n value={value}\n onChange={(_, newValue) => {\n field.onChange(newValue);\n }}\n >\n {options.map((option) => {\n return (\n <Option\n key={String(option.value ?? '')}\n value={option.value}\n >\n {option.label}\n </Option>\n );\n })}\n </Select>\n <FormHelperText id={`${attr.name}-helper-text`}>\n {helperText}\n </FormHelperText>\n </Stack>\n );\n }}\n />\n </FormControl>\n );\n case AttributeType.Password:\n return (\n <FormControl key={display.key} id={display.id}>\n <Labler error={error} attr={attr} />\n <Input\n {...display}\n {...register(attr.name, fieldConfig)}\n type={AttributeType.Password}\n />\n <FormHelperText id={`${attr.name}-helper-text`}>\n {helperText}\n </FormHelperText>\n </FormControl>\n );\n case AttributeType.Number:\n return (\n <FormControl key={display.key} id={display.id}>\n <Labler error={error} attr={attr} />\n <Input\n {...display}\n {...register(attr.name, fieldConfig)}\n type={AttributeType.Number}\n />\n <FormHelperText id={`${attr.name}-helper-text`}>\n {helperText}\n </FormHelperText>\n </FormControl>\n );\n\n case AttributeType.Text:\n default:\n return (\n <FormControl key={display.key} id={display.id}>\n <Labler error={error} attr={attr} />\n <Input {...display} {...register(attr.name, fieldConfig)} />\n <FormHelperText id={`${attr.name}-helper-text`}>\n {helperText}\n </FormHelperText>\n </FormControl>\n );\n }\n })}\n {cancelButton ? (\n <Stack spacing={2} direction=\"row\">\n {cancelButton}\n <Box>\n <Button type=\"submit\">{buttonText}</Button>\n </Box>\n </Stack>\n ) : (\n <Box>\n <Stack direction=\"row\" gap={2}>\n <Button type=\"submit\" loading={loading}>\n {buttonText}\n </Button>\n {successMessage}\n </Stack>\n </Box>\n )}\n </Stack>\n </FormProvider>\n );\n}\n","import React from 'react';\nimport { useMutation } from '@tanstack/react-query';\nimport Stack from '@mui/joy/Stack';\nimport Alert from '@mui/joy/Alert';\n\nimport UserForm from '../lib/SimpleForm';\nimport { Attribute, AttributeType } from '../lib/SimpleForm/types';\nimport { useApi } from '../context';\n\nimport { Props, LoginInfo } from './types';\n\nexport default function SignUpForm(props: Props) {\n const [error, setError] = React.useState<string | void>();\n const {\n buttonText = 'Sign up',\n onSuccess,\n onError,\n attributes,\n beforeMutate,\n } = props;\n const api = useApi();\n const mutation = useMutation(\n async (_data: LoginInfo) => {\n setError(undefined);\n const possibleData = beforeMutate && beforeMutate(_data);\n const data = possibleData ?? _data;\n const { email, password, preferredName, newTenant, ...metadata } = data;\n if (Object.keys(metadata).length > 0) {\n // eslint-disable-next-line no-console\n console.warn('additional metadata not supported yet.');\n }\n return api.auth.signUp({\n signUpRequest: { email, password, preferredName, newTenant },\n });\n },\n {\n onSuccess,\n onError: (e: Error, vars) => {\n setError(e.message);\n onError && onError(e as Error, vars);\n },\n }\n );\n\n const completeAttributes = React.useMemo(() => {\n const mainAttributes: Attribute[] = [\n {\n name: 'email',\n label: 'Email',\n type: AttributeType.Text,\n defaultValue: '',\n required: true,\n },\n {\n name: 'password',\n label: 'Password',\n type: AttributeType.Password,\n defaultValue: '',\n required: true,\n },\n ];\n if (attributes && attributes.length > 0) {\n return mainAttributes.concat(attributes);\n }\n return mainAttributes;\n }, [attributes]);\n\n return (\n <Stack gap={2}>\n {error ? <Alert color=\"danger\">{error}</Alert> : null}\n <UserForm\n mutation={mutation}\n buttonText={buttonText}\n attributes={completeAttributes}\n />\n </Stack>\n );\n}\n","import React from 'react';\nimport { useMutation } from '@tanstack/react-query';\nimport Alert from '@mui/joy/Alert';\nimport Stack from '@mui/joy/Stack';\n\nimport { Attribute } from '../lib/SimpleForm/types';\nimport { useApi } from '../context';\nimport SimpleForm from '../lib/SimpleForm';\nimport { AttributeType } from '../lib/SimpleForm/types';\n\nimport { Props, LoginInfo } from './types';\n\nexport default function LoginForm(props: Props) {\n const [error, setError] = React.useState<string | void>();\n const { attributes, onSuccess, onError, beforeMutate } = props;\n const api = useApi();\n\n const mutation = useMutation(\n async (_data: LoginInfo) => {\n setError(undefined);\n const possibleData = beforeMutate && beforeMutate(_data);\n const data = possibleData ?? _data;\n return await api.auth.login({\n loginRequest: data,\n });\n },\n {\n onSuccess,\n onError,\n }\n );\n\n const completeAttributes = React.useMemo(() => {\n const mainAttributes: Attribute[] = [\n {\n name: 'email',\n label: 'Email',\n type: AttributeType.Text,\n defaultValue: '',\n required: true,\n },\n {\n name: 'password',\n label: 'Password',\n type: AttributeType.Password,\n defaultValue: '',\n required: true,\n },\n ];\n if (attributes && attributes.length > 0) {\n return mainAttributes.concat(attributes);\n }\n return mainAttributes;\n }, [attributes]);\n\n return (\n <Stack gap={2}>\n {error ? <Alert color=\"danger\">{error}</Alert> : null}\n <SimpleForm\n mutation={mutation}\n buttonText=\"Log in\"\n attributes={completeAttributes}\n />\n </Stack>\n );\n}\n","import React from 'react';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { Attribute } from '../lib/SimpleForm/types';\nimport { useApi } from '../context';\nimport SimpleForm from '../lib/SimpleForm';\nimport { AttributeType } from '../lib/SimpleForm/types';\n\nimport { Props, LoginInfo } from './types';\n\nexport default function SingleSignOnForm(\n props: Props & {\n nextButtonText?: string;\n loginButtonText?: string;\n onSuccess: () => void;\n }\n) {\n const {\n attributes,\n onSuccess,\n onError,\n beforeMutate,\n nextButtonText = 'Next',\n loginButtonText = 'Log in',\n disableSSO = false,\n } = props;\n const api = useApi();\n const [buttonText, setButtonText] = React.useState(\n disableSSO ? loginButtonText : nextButtonText\n );\n\n const mutation = useMutation(\n async (_data: LoginInfo) => {\n const possibleData = beforeMutate && beforeMutate(_data);\n const data = possibleData ?? _data;\n return await api.auth.login({\n loginRequest: { email: data.email, password: data.password },\n sso: !disableSSO,\n });\n },\n {\n onSuccess: (token, data) => {\n if (token) {\n if (token?.redirectURI) {\n window.location.href = token.redirectURI;\n } else if (buttonText !== loginButtonText) {\n setButtonText(loginButtonText);\n } else {\n onSuccess && onSuccess(token, data);\n }\n }\n },\n onError: (error, data) => {\n // it is possible SSO failed, so only show errors on if the password is available\n if (buttonText === loginButtonText) {\n onError && onError(error as Error, data);\n } else {\n setButtonText(loginButtonText);\n }\n },\n }\n );\n\n const completeAttributes = React.useMemo(() => {\n const mainAttributes: Attribute[] = [\n {\n name: 'email',\n label: 'Email',\n type: AttributeType.Text,\n defaultValue: '',\n required: true,\n },\n ];\n if (buttonText === loginButtonText) {\n mainAttributes.push({\n name: 'password',\n label: 'Password',\n type: AttributeType.Password,\n defaultValue: '',\n required: true,\n });\n }\n if (attributes && attributes.length > 0) {\n return mainAttributes.concat(attributes);\n }\n return mainAttributes;\n }, [attributes, buttonText, loginButtonText]);\n\n return (\n <SimpleForm\n mutation={mutation}\n buttonText={buttonText}\n attributes={completeAttributes}\n />\n );\n}\n","import React from 'react';\nimport {\n Button,\n Stack,\n Typography,\n FormControl,\n FormLabel,\n Input,\n Modal,\n ModalDialog,\n} from '@mui/joy';\nimport { useForm } from 'react-hook-form';\nimport { useMutation } from '@tanstack/react-query';\nimport { SignUp201Response, SignUpRequest } from '@niledatabase/browser';\n\nimport { useApi, useNileConfig } from '../context';\n\nexport type UserFormProps = {\n open: boolean;\n setOpen: (open: boolean) => void;\n refetch?: (user: SignUp201Response) => void;\n};\n\nexport default function AddUser(props: UserFormProps) {\n const { open, setOpen, refetch } = props;\n const { tenantId } = useNileConfig();\n const api = useApi();\n const [errorText, setErrorText] = React.useState<void | string>();\n const { watch, register, handleSubmit } = useForm<SignUpRequest>();\n const email = watch('email');\n\n React.useEffect(() => {\n if (errorText != null) {\n setErrorText();\n }\n // if email changes, no more error\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [email]);\n\n const mutation = useMutation(\n (data: SignUpRequest) =>\n api.users.createTenantUser({\n signUpRequest: data,\n tenantId: String(tenantId),\n }),\n {\n onSuccess(data) {\n refetch && refetch(data);\n setOpen(false);\n },\n onError(e) {\n if (e instanceof Error) {\n setErrorText(e.message);\n }\n },\n }\n );\n\n const handleUpdate = React.useCallback(\n async (data: SignUpRequest) => {\n setErrorText('');\n mutation.mutate(data);\n },\n [mutation]\n );\n\n return (\n <Modal open={open}>\n <ModalDialog>\n <Stack spacing={2}>\n <Typography level=\"h4\">Create user</Typography>\n <>\n {errorText && <Typography color=\"danger\">{errorText}</Typography>}\n </>\n <Stack\n component=\"form\"\n sx={{\n width: '40ch',\n }}\n spacing={1}\n onSubmit={handleSubmit((data) =>\n handleUpdate(data as SignUpRequest)\n )}\n >\n <FormControl\n sx={{\n '--FormHelperText-color': 'var(--joy-palette-danger-500)',\n }}\n >\n <FormLabel htmlFor=\"email\">Email</FormLabel>\n <Input\n {...register('email')}\n fullWidth\n size=\"lg\"\n id=\"email\"\n name=\"email\"\n autoComplete=\"current-email\"\n required\n error={Boolean(errorText)}\n />\n </FormControl>\n <FormControl\n sx={{\n '--FormHelperText-color': 'var(--joy-palette-danger-500)',\n }}\n >\n <FormLabel htmlFor=\"password\">Password</FormLabel>\n <Input\n {...register('password')}\n fullWidth\n size=\"lg\"\n id=\"password\"\n autoComplete=\"current-password\"\n type=\"password\"\n required\n />\n </FormControl>\n <Stack direction=\"row\" sx={{ pt: 2 }} spacing={2}>\n <Button onClick={() => setOpen(false)} variant=\"plain\">\n Cancel\n </Button>\n <Button type=\"submit\">Create</Button>\n </Stack>\n </Stack>\n </Stack>\n </ModalDialog>\n </Modal>\n );\n}\n","import React from 'react';\nimport Button from '@mui/joy/Button';\nimport Stack from '@mui/joy/Stack';\nimport { useState } from 'react';\nimport Add from '@mui/icons-material/Add';\nimport { SignUp201Response } from '@niledatabase/browser';\n\nimport UserModal from './UserModal';\n\ntype Props = {\n allowCreation: boolean;\n buttonText: string;\n onUserCreateSuccess?: (user: SignUp201Response) => void;\n};\nexport default function CreateUser(props: Props) {\n const { allowCreation, buttonText, onUserCreateSuccess } = props;\n const [open, setOpen] = useState(false);\n if (!allowCreation) {\n return null;\n }\n\n return (\n <Stack alignItems=\"flex-end\" gap={1}>\n <UserModal open={open} setOpen={setOpen} refetch={onUserCreateSuccess} />\n <Button startDecorator={<Add />} size=\"sm\" onClick={() => setOpen(true)}>\n {buttonText}\n </Button>\n </Stack>\n );\n}\n","import { GridRowsProp } from '@mui/x-data-grid';\n\nexport default function getColumnSize(\n column: unknown,\n rows: GridRowsProp,\n canvasContext: void | CanvasRenderingContext2D\n) {\n const dataWidthReducer = (\n longest: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextRow: { [key: string]: any }\n ) => {\n let value = nextRow[String(column)];\n if (value == null) {\n value = '';\n }\n value = value?.toString();\n return longest.length > value.length ? longest : value;\n };\n\n let columnHeaderLen =\n canvasContext && column\n ? canvasContext.measureText(String(column)).width\n : 50;\n /* padding 12, icon-width 15 */\n columnHeaderLen += 15 + 12;\n\n let width = columnHeaderLen;\n width =\n 16 +\n Math.ceil(\n canvasContext\n ? canvasContext.measureText(rows.reduce(dataWidthReducer, '')).width\n : 50\n );\n if (width < columnHeaderLen) {\n width = columnHeaderLen;\n }\n /* Gracefull */\n width += 8;\n return width;\n}\n","import { useEffect, useState } from 'react';\n\nexport default function useTextSizer() {\n const [ctx, setCtx] = useState<CanvasRenderingContext2D>();\n useEffect(() => {\n const canvas = document.createElement('canvas');\n const canvasContext = canvas.getContext('2d');\n if (canvasContext) {\n canvasContext.font = '18px Roboto';\n setCtx(canvasContext);\n }\n }, []);\n return ctx;\n}\n","import { useMemo } from 'react';\nimport { GridColDef, GridRowsProp } from '@mui/x-data-grid';\nimport { User } from '@niledatabase/browser';\n\nimport getColumnSize from '../utils/getColumnSize';\nimport useTextSizer from '../hooks/useTextSizer';\n\nexport const internalRowId = '_nile_data_grid_identifier';\n\ntype Cleaned = { [key: string]: string | Set<string> };\n\nconst makeRenderable = (vals: User) => {\n return Object.keys(vals).reduce((cleaned: Cleaned, key) => {\n const val = (vals as Cleaned)[key];\n if (val instanceof Set) {\n cleaned[key] = Array.from(val).join(', ');\n } else if (Array.isArray(val)) {\n cleaned[key] = val.join(', ');\n } else {\n cleaned[key] = val;\n }\n return cleaned;\n }, {});\n};\n\nconst parseResults = (\n data: void | User[],\n ctx: CanvasRenderingContext2D | void,\n include: string[]\n): [GridColDef[], GridRowsProp] => {\n if (!data) {\n return [[], []];\n }\n const rows = data.map(makeRenderable);\n const fields = Object.keys(rows[0]);\n\n const existentCols: { [key: string]: number } = {};\n\n const mapCols = (col: string): GridColDef | void => {\n const width = getColumnSize(col, rows, ctx);\n const name = col.slice();\n if (include.includes(name)) {\n // add spaces to the end of column names so they are not duplicated in the UI\n if (existentCols[name] == null) {\n existentCols[name] = name.length;\n } else {\n existentCols[name] += 1;\n }\n return {\n field: name.padEnd(existentCols[name]),\n headerName: name.padEnd(existentCols[name]),\n width,\n };\n }\n };\n const cols = fields?.map(mapCols).filter(Boolean) ?? [];\n\n return [cols as GridColDef[], rows];\n};\n\nexport default function useDataParser(\n data: void | User[],\n include: string[]\n): [GridColDef[], GridRowsProp] {\n const ctx = useTextSizer();\n const [cols, rows] = useMemo(\n () => parseResults(data, ctx, include),\n [data, ctx, include]\n );\n return [cols, rows];\n}\n","import { DataGrid } from '@mui/x-data-grid';\nimport React from 'react';\nimport Stack from '@mui/joy/Stack';\nimport { SxProps } from '@mui/system/styleFunctionSx/styleFunctionSx';\nimport { Theme } from '@mui/system/createTheme';\nimport { SignUp201Response, User } from '@niledatabase/browser';\n\nimport CreateUser from './CreateUser';\nimport useDataParser from './useDataParser';\n\ntype ColumnNames = string;\n\ntype Props = {\n data: void | User[];\n allowCreation?: boolean;\n buttonText?: string;\n onUserCreateSuccess?: (user: SignUp201Response) => void;\n slots?: {\n dataGrid?: SxProps<Theme>;\n };\n // white list of columns to show\n include?: ColumnNames[];\n};\n\nexport default function UserList(props: Props) {\n const {\n data,\n allowCreation = true,\n buttonText = 'Add a user',\n onUserCreateSuccess,\n slots,\n include = ['email', 'preferedName'],\n } = props;\n\n const dataGridSx = {\n width: '100%',\n height: '100%',\n ...(slots?.dataGrid ?? {}),\n };\n\n const [columns, rows] = useDataParser(data, include);\n return (\n <Stack flex={1}>\n <CreateUser\n allowCreation={allowCreation}\n buttonText={buttonText}\n onUserCreateSuccess={onUserCreateSuccess}\n />\n <DataGrid\n sx={dataGridSx}\n rows={rows}\n columns={columns}\n hideFooter={true}\n />\n </Stack>\n );\n}\n","import React from 'react';\nimport { useMutation } from '@tanstack/react-query';\nimport { UpdateProviderRequest, SSOProvider } from '@niledatabase/browser';\nimport Stack from '@mui/joy/Stack';\nimport Typography from '@mui/joy/Typography';\nimport Alert from '@mui/joy/Alert';\nimport CheckCircleOutlined from '@mui/icons-material/CheckCircleOutlined';\n\nimport SimpleForm from '../lib/SimpleForm';\nimport { useApi } from '../context';\nimport { Attribute, AttributeType } from '../lib/SimpleForm/types';\n\nimport { OktaProps } from './types';\n\ntype SSOFormRequest = Omit<UpdateProviderRequest, 'emailDomains'> & {\n emailDomains: string;\n};\nexport default function BaseSSOForm(\n props: Omit<OktaProps, 'callbackUrl' | 'providers'> & {\n providerName: string;\n configurationGuide?: JSX.Element;\n config?: SSOProvider;\n }\n) {\n const {\n config,\n providerName,\n onSuccess,\n onError,\n allowEdit = true,\n configurationGuide,\n } = props;\n\n const api = useApi();\n const [loading, setLoading] = React.useState(false);\n const [success, setSuccess] = React.useState(false);\n const [optimisticConfig, setConfig] = React.useState<SSOProvider | void>(\n config\n );\n const timer = React.useRef<NodeJS.Timeout>();\n const attributes = React.useMemo(() => {\n const attributes: Attribute[] = [\n {\n name: 'enabled',\n label: 'Allow Okta logins',\n type: AttributeType.Switch,\n defaultValue: optimisticConfig?.enabled === true,\n options: [\n {\n label: 'Enabled',\n },\n {\n label: 'Disabled',\n },\n ],\n disabled: !allowEdit,\n },\n {\n name: 'clientId',\n label: 'Client id',\n type: AttributeType.Text,\n defaultValue: optimisticConfig?.clientId ?? '',\n required: true,\n disabled: !allowEdit,\n },\n {\n name: 'configUrl',\n label: 'Config url',\n type: AttributeType.Text,\n defaultValue: optimisticConfig?.configUrl ?? '',\n helpText:\n 'The URL of the .well-known/openid-configuration for the identity provider',\n required: true,\n disabled: !allowEdit,\n },\n {\n name: 'emailDomains',\n label: 'Email domains',\n type: AttributeType.Text,\n defaultValue: optimisticConfig?.emailDomains?.join(', ') ?? '',\n required: true,\n helpText:\n 'A comma seperated list of email domains (yourDomain.com) to be used',\n disabled: !allowEdit,\n },\n ];\n if (!optimisticConfig?.clientId) {\n attributes.splice(2, 0, {\n name: 'clientSecret',\n label: 'Client secret',\n type: AttributeType.Password,\n defaultValue: '',\n required: true,\n disabled: !allowEdit,\n });\n }\n return attributes;\n }, [\n allowEdit,\n optimisticConfig?.clientId,\n optimisticConfig?.configUrl,\n optimisticConfig?.emailDomains,\n optimisticConfig?.enabled,\n ]);\n\n const handleTimer = () => {\n if (timer.current) {\n clearTimeout(timer.current);\n }\n\n timer.current = setTimeout(() => {\n setSuccess(false);\n }, 3000);\n };\n\n const mutation = useMutation(\n (ssoRequest: SSOFormRequest) => {\n setLoading(true);\n const payload = {\n providerName: providerName.toLowerCase(),\n updateProviderRequest: {\n ...ssoRequest,\n emailDomains: ssoRequest.emailDomains.split(','),\n },\n };\n if (optimisticConfig != null) {\n return api.auth.updateProvider(payload);\n } else {\n return api.auth.createProvider(payload);\n }\n },\n {\n onSuccess: (data, vars) => {\n setConfig(data);\n setSuccess(true);\n onSuccess && onSuccess(data, vars);\n },\n onError,\n onSettled: (data, error, vars) => {\n setLoading(false);\n handleTimer();\n if (!data) {\n if (!error || error?.message.includes('Unterminated string')) {\n // something unexpected happened on the BE, but it's non-fatal\n setConfig({\n enabled: vars.enabled,\n clientId: vars.clientId,\n configUrl: vars.configUrl,\n emailDomains: vars.emailDomains.split(', '),\n } as SSOProvider);\n }\n setSuccess(true);\n onSuccess && onSuccess(data, vars);\n }\n },\n }\n );\n\n React.useEffect(() => {\n () => {\n clearTimeout(timer.current);\n };\n });\n\n return (\n <Stack gap={2} position=\"relative\">\n <Typography level=\"h4\">Step 1</Typography>\n {configurationGuide}\n <Typography level=\"h4\">Step 2</Typography>\n <SimpleForm\n mutation={mutation}\n buttonText=\"Update\"\n attributes={attributes}\n loading={loading}\n successMessage={\n <Alert\n color=\"success\"\n sx={{\n opacity: success ? 1 : 0,\n transition: 'opacity 200ms',\n height: '0.9rem',\n }}\n startDecorator={<CheckCircleOutlined />}\n >\n <Typography textAlign=\"center\" fontSize=\"sm\">\n Provider updated\n </Typography>\n </Alert>\n }\n />\n </Stack>\n );\n}\n","import React from 'react';\nimport Stack from '@mui/joy/Stack';\nimport Typography from '@mui/joy/Typography';\nimport Box from '@mui/joy/Box';\nimport Input from '@mui/joy/Input';\nimport CopyAll from '@mui/icons-material/CopyAll';\nimport { Theme } from '@mui/joy/styles';\nimport Tooltip from '@mui/joy/Tooltip';\nimport CheckCircleOutlined from '@mui/icons-material/CheckCircleOutlined';\nimport { SSOProvider } from '@niledatabase/browser';\n\nimport BaseSSOForm from './BaseSSOForm';\nimport { OktaProps } from './types';\n\nfunction ConfigGuide({ callbackUrl }: { callbackUrl?: string }) {\n const [copied, setCopied] = React.useState(false);\n\n const timer = React.useRef<NodeJS.Timeout>();\n React.useEffect(() => {\n if (timer.current) {\n clearTimeout(timer.current);\n }\n timer.current = setTimeout(() => {\n setCopied(false);\n }, 3250);\n () => {\n clearTimeout(timer.current);\n };\n }, [copied]);\n return (\n <Stack gap={2}>\n <Typography>\n In order for Okta to redirect properly, provide the following URL as the{' '}\n <Box component=\"span\" sx={{ fontFamily: 'monospace' }}>\n Sign-in redirect URIs\n </Box>{' '}\n in the admin configuration of your application.\n </Typography>\n <Input\n onClick={async () => {\n if (callbackUrl) {\n await navigator.clipboard.writeText(callbackUrl);\n setCopied(true);\n }\n }}\n sx={(theme: Theme) => ({\n input: {\n cursor: 'pointer',\n },\n span: {\n cursor: 'pointer',\n },\n '&:hover svg': {\n '--Icon-color': theme.palette.primary[500],\n },\n })}\n value={callbackUrl}\n readOnly={true}\n endDecorator={\n <Tooltip title=\"Copy Okta redirect URL\">\n <Box\n position=\"relative\"\n width={copied ? '82px' : '24px'}\n height=\"24px\"\n >\n <Box\n position=\"absolute\"\n top=\"0\"\n left=\"0\"\n sx={{\n opacity: copied ? 0 : 1,\n transition: 'opacity 300ms',\n }}\n >\n <CopyAll />\n </Box>\n <Box\n position=\"absolute\"\n top=\"0\"\n left=\"0\"\n sx={{ opacity: !copied ? 0 : 1, transition: 'opacity 300ms' }}\n >\n <Stack direction=\"row\" gap={1}>\n <CheckCircleOutlined />\n <Typography color=\"primary\">Copied!</Typography>\n </Stack>\n </Box>\n </Box>\n </Tooltip>\n }\n />\n </Stack>\n );\n}\n\nexport default function Okta(props: OktaProps) {\n const { callbackUrl, providers, ...remaining } = props;\n if (!providers) {\n return null;\n }\n const config = providers?.find((provider) => provider.provider === 'okta');\n return (\n <BaseSSOForm\n {...remaining}\n config={config as SSOProvider}\n providerName=\"Okta\"\n configurationGuide={<ConfigGuide callbackUrl={callbackUrl} />}\n />\n );\n}\n"],"names":["Themer","theme","children","slotProps","React","JoyCssVarsProvider","createElement","CssBaseline","enableColorScheme","queryClient","QueryClient","defaultContext","api","Browser","basePath","credentials","apiUrl","context","createContext","Provider","BaseQueryProvider","QueryClientProvider","client","NileProvider","props","tenantId","QueryProvider","appUrl","values","useMemo","String","ThemeProvider","provider","value","useNileContext","useContext","useNileConfig","useApi","LOGIN_PATH","GoogleSSOButton","newTenantName","console","error","contextHref","query","encodeURIComponent","href","Box","component","display","flex","sx","textDecoration","Button","padding","textTransform","Stack","direction","alignItems","p","fontFamily","fontSize","color","boxShadow","borderRadius","border","fontWeight","backgroundColor","background","GoogleLogo","Typography","height","CheckGroup","options","attribute","helperText","watch","control","useFormContext","currentVals","name","checkProps","Controller","rules","required","Boolean","render","field","FormLabel","htmlFor","label","role","List","orientation","wrap","map","item","id","ListItem","key","Checkbox","overlay","length","checked","includes","disableIcon","variant","onChange","event","allowMultiple","target","concat","remaining","filter","val","level","AttributeType","getAttributeDefault","Array","isArray","defaultValue","Labler","attr","Tooltip","title","cursor","Error","ml","SimpleForm","mutation","buttonText","attributes","cancelButton","loading","successMessage","defaultValues","reduce","accum","methods","useForm","register","handleSubmit","formState","errors","onSubmit","useCallback","data","mutate","FormProvider","spacing","fieldConfig","placeholder","disabled","helpText","type","Switch","FormControl","FormHelperText","endDecorator","Select","_","newValue","option","Option","Password","Input","Number","Text","gap","SignUpForm","setError","useState","onSuccess","onError","beforeMutate","useMutation","_data","undefined","possibleData","email","password","preferredName","newTenant","metadata","Object","keys","warn","auth","signUp","signUpRequest","e","vars","message","completeAttributes","mainAttributes","Alert","UserForm","LoginForm","login","loginRequest","SingleSignOnForm","nextButtonText","loginButtonText","disableSSO","setButtonText","sso","token","redirectURI","window","location","push","AddUser","open","setOpen","refetch","errorText","setErrorText","useEffect","users","createTenantUser","handleUpdate","Modal","ModalDialog","Fragment","width","fullWidth","size","autoComplete","pt","onClick","CreateUser","allowCreation","onUserCreateSuccess","UserModal","startDecorator","Add","getColumnSize","column","rows","canvasContext","dataWidthReducer","longest","nextRow","toString","columnHeaderLen","measureText","Math","ceil","useTextSizer","ctx","setCtx","canvas","document","getContext","font","makeRenderable","vals","cleaned","Set","from","join","parseResults","include","fields","existentCols","mapCols","col","slice","padEnd","headerName","cols","useDataParser","UserList","slots","dataGridSx","dataGrid","columns","DataGrid","hideFooter","BaseSSOForm","config","providerName","allowEdit","configurationGuide","setLoading","success","setSuccess","optimisticConfig","setConfig","timer","useRef","enabled","clientId","configUrl","emailDomains","splice","handleTimer","current","clearTimeout","setTimeout","ssoRequest","payload","toLowerCase","updateProviderRequest","split","updateProvider","createProvider","onSettled","position","opacity","transition","CheckCircleOutlined","textAlign","ConfigGuide","callbackUrl","copied","setCopied","navigator","clipboard","writeText","input","span","palette","primary","readOnly","top","left","CopyAll","Okta","providers","find"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"react.cjs.development.js","sources":["../src/context/theme.tsx","../src/context/index.tsx","../src/GoogleLoginButton/google.svg","../src/GoogleLoginButton/GoogleLoginButton.tsx","../src/lib/SimpleForm/CheckGroup/index.tsx","../src/lib/SimpleForm/types.ts","../src/lib/SimpleForm/index.tsx","../src/SignUpForm/SignUpForm.tsx","../src/LoginForm/LoginForm.tsx","../src/LoginForm/SingleSignOn.tsx","../src/UserTenantList/UserModal.tsx","../src/UserTenantList/CreateUser.tsx","../src/utils/getColumnSize.ts","../src/hooks/useTextSizer.ts","../src/UserTenantList/useDataParser.ts","../src/UserTenantList/UserList.tsx","../src/SSO/BaseSSOForm.tsx","../src/SSO/Okta.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\nimport React from 'react';\nimport CssBaseline from '@mui/material/CssBaseline';\nimport { Theme } from '@mui/joy/styles';\nimport { CssVarsProvider as JoyCssVarsProvider } from '@mui/joy/styles';\n\nexport default function Themer({\n theme,\n children,\n slotProps,\n}: {\n theme?: Theme;\n children: JSX.Element;\n slotProps?: Record<string, string>;\n}) {\n return (\n <JoyCssVarsProvider {...slotProps} theme={theme}>\n <CssBaseline enableColorScheme />\n {children}\n </JoyCssVarsProvider>\n );\n}\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\nimport React, { useMemo, createContext, useContext } from 'react';\nimport Browser from '@niledatabase/browser';\nimport { QueryClientProvider, QueryClient } from '@tanstack/react-query';\n\nimport ThemeProvider from './theme';\nimport { NileContext, NileProviderProps, NileReactConfig } from './types';\n\nconst queryClient = new QueryClient();\n\nconst defaultContext: NileContext = {\n api: new Browser({\n basePath: 'https://api.thenile.dev',\n credentials: 'include',\n }),\n apiUrl: '',\n};\n\nconst context = createContext<NileContext>(defaultContext);\n\nconst { Provider } = context;\n\nexport const BaseQueryProvider = ({\n children,\n}: {\n children: JSX.Element;\n}): JSX.Element => {\n return (\n <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>\n );\n};\n\nexport const NileProvider = (props: NileProviderProps) => {\n const {\n children,\n theme,\n slotProps,\n tenantId,\n QueryProvider = BaseQueryProvider,\n appUrl,\n apiUrl = 'https://api.thenile.dev',\n api,\n } = props;\n\n const values = useMemo<NileContext>((): NileContext => {\n return {\n api:\n api ??\n new Browser({\n basePath: appUrl,\n credentials: 'include',\n }),\n tenantId: String(tenantId),\n apiUrl,\n };\n }, [api, apiUrl, appUrl, tenantId]);\n\n return (\n <QueryProvider>\n <ThemeProvider slotProps={slotProps?.provider} theme={theme}>\n <Provider value={values}>{children}</Provider>\n </ThemeProvider>\n </QueryProvider>\n );\n};\n\nconst useNileContext = (): NileContext => {\n return useContext(context);\n};\n\nexport const useNileConfig = (): NileReactConfig => {\n const { apiUrl, tenantId, appUrl } = useNileContext();\n return useMemo(\n () => ({\n tenantId,\n apiUrl,\n appUrl,\n }),\n [apiUrl, tenantId, appUrl]\n );\n};\n\nexport const useApi = (): Browser => {\n return useNileContext().api;\n};\n","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\">\n <g fill=\"#000\" fill-rule=\"evenodd\">\n <path d=\"M9 3.48c1.69 0 2.83.73 3.48 1.34l2.54-2.48C13.46.89 11.43 0 9 0 5.48 0 2.44 2.02.96 4.96l2.91 2.26C4.6 5.05 6.62 3.48 9 3.48z\" fill=\"#EA4335\" />\n <path d=\"M17.64 9.2c0-.74-.06-1.28-.19-1.84H9v3.34h4.96c-.1.83-.64 2.08-1.84 2.92l2.84 2.2c1.7-1.57 2.68-3.88 2.68-6.62z\" fill=\"#4285F4\" />\n <path d=\"M3.88 10.78A5.54 5.54 0 0 1 3.58 9c0-.62.11-1.22.29-1.78L.96 4.96A9.008 9.008 0 0 0 0 9c0 1.45.35 2.82.96 4.04l2.92-2.26z\" fill=\"#FBBC05\" />\n <path d=\"M9 18c2.43 0 4.47-.8 5.96-2.18l-2.84-2.2c-.76.53-1.78.9-3.12.9-2.38 0-4.4-1.57-5.12-3.74L.97 13.04C2.45 15.98 5.48 18 9 18z\" fill=\"#34A853\" />\n <path fill=\"none\" d=\"M0 0h18v18H0z\" />\n </g>\n</svg>","import React from 'react';\nimport Box from '@mui/joy/Box';\nimport Button from '@mui/joy/Button';\nimport Stack from '@mui/joy/Stack';\nimport Typography from '@mui/joy/Typography';\n\nimport { useNileConfig } from '../context';\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport GoogleLogo from './google.svg';\n\nconst LOGIN_PATH = 'users/oidc/google/login';\n\n/**\n * A component for a Google login button, according to their design language.\n * This works when an identity provider is configured in the admin dashboard.\n * @param props href: a string to override the URL provided by the context\n * @returns a JSX.Element to render\n */\nexport default function GoogleSSOButton(props: { newTenantName?: string }) {\n const { newTenantName } = props;\n const { apiUrl } = useNileConfig();\n if (!apiUrl) {\n // eslint-disable-next-line no-console\n console.error('apiUrl is missing from <NileProvider />');\n }\n const contextHref = `${apiUrl}/${LOGIN_PATH}`;\n const query = newTenantName\n ? '?newTenant=' + encodeURIComponent(newTenantName)\n : '';\n const href = contextHref + query;\n return (\n <Box\n component=\"a\"\n href={href}\n display=\"flex\"\n flex={1}\n sx={{ textDecoration: 'none' }}\n >\n <Box>\n <Button\n sx={{ padding: 0, textTransform: 'initial', flex: 1 }}\n aria-label=\"log in with google\"\n >\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n p={0}\n flex={1}\n fontFamily=\"Roboto, sans-serif\"\n fontSize=\"14px\"\n display=\"inline-flex\"\n color=\"rgb(255 255, 255)\"\n boxShadow=\"rgb(0 0 0 / 24%) 0px 2px 2px 0px rgb(0 0 0 / 24%) 0px 0px 1px 0px\"\n borderRadius=\"4px\"\n border=\"1px solid transparent\"\n fontWeight=\"500\"\n sx={{\n backgroundColor: 'rgb(66 133, 244)',\n }}\n >\n <Box\n padding=\"11px\"\n display=\"flex\"\n border=\"1px solid rgb(66, 133, 244)\"\n borderRadius=\"4px\"\n sx={{\n background: 'rgb(255, 255, 255)',\n }}\n >\n <GoogleLogo aria-hidden=\"true\" />\n </Box>\n <Box padding=\"10px\" flex={1}>\n <Typography\n sx={{ color: 'white' }}\n fontWeight={700}\n fontFamily=\"Roboto, sans-serif\"\n fontSize=\"14px\"\n height=\"20px\"\n >\n Continue with Google\n </Typography>\n </Box>\n </Stack>\n </Button>\n </Box>\n </Box>\n );\n}\n","import * as React from 'react';\nimport Box from '@mui/joy/Box';\nimport Checkbox from '@mui/joy/Checkbox';\nimport List from '@mui/joy/List';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport Stack from '@mui/joy/Stack';\nimport FormLabel from '@mui/joy/FormLabel';\nimport ListItem from '@mui/joy/ListItem';\nimport Typography from '@mui/joy/Typography';\n\nimport { Attribute, DisplayProps, Options } from '../types';\n\ntype Props = {\n attribute: Attribute;\n display: DisplayProps;\n options: Options;\n helperText: string;\n};\nexport default function CheckGroup(props: Props) {\n const { options, attribute, display, helperText } = props;\n const { watch, control } = useFormContext();\n const currentVals = watch(attribute.name);\n const checkProps: { color?: 'danger'; id?: string } = {};\n if (helperText) {\n checkProps.color = 'danger';\n }\n return (\n <Controller\n name={attribute.name}\n rules={{ required: Boolean(attribute.required) }}\n control={control}\n render={({ field }) => {\n return (\n <Stack>\n <FormLabel htmlFor={`${field.name}`}>{display.label}</FormLabel>\n <Box\n role=\"group\"\n aria-labelledby={attribute.name}\n sx={{\n borderRadius: 'var(--joy-radius-sm)',\n p: 0.5,\n border: helperText\n ? '1px solid var(--joy-palette-danger-outlinedBorder)'\n : 'none',\n }}\n >\n <List\n orientation=\"horizontal\"\n wrap\n sx={{\n '--List-gap': '8px',\n }}\n >\n {options.map((item) => {\n checkProps.id = String(item.value);\n return (\n <ListItem key={`${item.value}-${item.label}`}>\n <Checkbox\n overlay={options.length > 1}\n {...checkProps}\n checked={currentVals.includes(item.value)}\n disableIcon={options.length > 1}\n variant=\"soft\"\n label={item.label}\n onChange={(event) => {\n if (attribute.allowMultiple) {\n if (event.target.checked) {\n if (!currentVals) {\n field.onChange([item.value]);\n } else {\n field.onChange(currentVals.concat(item.value));\n }\n } else {\n const remaining = currentVals.filter(\n (val: string | number) => val !== item.value\n );\n if (remaining.length > 0) {\n field.onChange(remaining);\n } else {\n field.onChange('');\n }\n }\n } else {\n if (event.target.checked) {\n field.onChange(item.value);\n } else {\n field.onChange('');\n }\n }\n }}\n />\n </ListItem>\n );\n })}\n </List>\n </Box>\n <Typography\n sx={{ color: 'var(--joy-palette-danger-500)' }}\n level=\"body-sm\"\n >\n {helperText}\n </Typography>\n </Stack>\n );\n }}\n />\n );\n}\n","export enum AttributeType {\n Text = 'text',\n Password = 'password',\n Select = 'select',\n Number = 'number',\n Float = 'float',\n Checkbox = 'checkbox',\n Switch = 'switch',\n}\ntype SimplePrimitive = number | string | boolean;\n\n// possibly no value for `<Switch/>`\nexport type Options = { label: string; value?: SimplePrimitive }[];\nexport type Attribute = {\n name: string;\n type?: AttributeType;\n defaultValue?: SimplePrimitive;\n options?: Options;\n allowMultiple?: boolean;\n label?: string;\n required?: boolean;\n placeholder?: string;\n helpText?: string;\n disabled?: boolean;\n};\n\nexport type DisplayProps = {\n key: string;\n id: string;\n label: string;\n placeholder: string;\n error?: boolean;\n color?: 'danger';\n disabled?: boolean;\n};\n","import React from 'react';\nimport Button from '@mui/joy/Button';\nimport { Controller, FormProvider, useForm } from 'react-hook-form';\nimport Stack from '@mui/joy/Stack';\nimport Input from '@mui/joy/Input';\nimport FormControl from '@mui/joy/FormControl';\nimport FormHelperText from '@mui/joy/FormHelperText';\nimport Error from '@mui/icons-material/Error';\nimport FormLabel from '@mui/joy/FormLabel';\nimport Select from '@mui/joy/Select';\nimport Option from '@mui/joy/Option';\nimport Box from '@mui/joy/Box';\nimport Tooltip from '@mui/joy/Tooltip';\nimport { Switch } from '@mui/joy';\n\nimport CheckGroup from './CheckGroup';\nimport { Attribute, AttributeType, DisplayProps } from './types';\n\ntype AttrMap = {\n [key: string]: string | number | boolean | string[] | number[];\n};\n\ntype FieldConfig = {\n required?: boolean;\n};\n\nexport const getAttributeDefault = (\n attribute: Attribute\n): string | number | boolean | string[] | number[] => {\n // have to look to see if it is an enum\n if (attribute.allowMultiple === true) {\n if (!Array.isArray(attribute.defaultValue) && attribute.defaultValue) {\n if (typeof attribute.defaultValue === 'number') {\n return [attribute.defaultValue];\n }\n return [String(attribute.defaultValue)];\n }\n }\n return attribute.defaultValue ?? '';\n};\n\nfunction Labler(props: { error?: string; attr: Attribute }) {\n const { error, attr } = props;\n if (error) {\n return (\n <Tooltip title={error} color=\"danger\" sx={{ cursor: 'pointer' }}>\n <FormLabel>\n {attr.label ?? attr.name}\n <Error sx={{ ml: 0.5, '--Icon-color': '#c41c1c' }} fontSize=\"small\" />\n </FormLabel>\n </Tooltip>\n );\n }\n return <FormLabel>{attr.label ?? attr.name}</FormLabel>;\n}\nexport default function SimpleForm(props: {\n buttonText: string;\n cancelButton?: React.ReactNode;\n attributes: Attribute[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n mutation: any;\n loading?: boolean;\n successMessage?: JSX.Element;\n}) {\n const {\n mutation,\n buttonText,\n attributes,\n cancelButton,\n loading,\n successMessage,\n } = props;\n\n const defaultValues = React.useMemo(\n () =>\n attributes.reduce((accum: AttrMap, attr: Attribute) => {\n accum[attr.name] = getAttributeDefault(attr);\n return accum;\n }, {}),\n [attributes]\n );\n\n const methods = useForm({\n defaultValues,\n });\n\n const {\n register,\n control,\n handleSubmit,\n formState: { errors },\n } = methods;\n const onSubmit = React.useCallback(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (data: any) => {\n mutation.mutate(data);\n },\n [mutation]\n );\n\n return (\n <FormProvider {...methods}>\n <Stack\n component=\"form\"\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onSubmit={handleSubmit((data) => onSubmit(data as any))}\n spacing={2}\n >\n {attributes.map((attr: Attribute): React.ReactNode => {\n const fieldConfig: FieldConfig = {};\n const display: DisplayProps = {\n key: attr.name,\n label: attr.label ?? attr.name,\n id: attr.label ?? attr.name,\n placeholder: attr.placeholder ?? attr.label ?? attr.name,\n error: Boolean(errors[attr.name]),\n disabled: Boolean(attr.disabled),\n };\n const options = attr.options ?? [];\n const helperText = attr.helpText ?? '';\n let error = '';\n\n if (attr.required) {\n error = errors[attr.name]\n ? `${attr.label ?? attr.name} is required`\n : '';\n fieldConfig.required = true;\n }\n\n switch (attr.type) {\n case AttributeType.Switch:\n return (\n <FormControl\n key={display.key}\n id={display.id}\n orientation=\"horizontal\"\n sx={{ alignItems: 'center' }}\n >\n <Box>\n <Labler error={error} attr={attr} />\n <FormHelperText id={`${attr.name}-helper-text`}>\n {helperText}\n </FormHelperText>\n </Box>\n <Controller\n control={control}\n rules={{ required: Boolean(attr.required) }}\n name={attr.name}\n render={({ field }) => {\n const color: { color?: 'danger' } = {};\n if (errors[attr.name]) {\n color.color = 'danger';\n }\n return (\n <Switch\n id={`switch-field-${attr.name}`}\n {...color}\n {...field}\n checked={Boolean(field.value)}\n onChange={(event) => {\n field.onChange(event.target.checked);\n }}\n color={field.value ? 'success' : 'neutral'}\n endDecorator={\n field.value ? options[0].label : options[1].label\n }\n />\n );\n }}\n />\n </FormControl>\n );\n case AttributeType.Checkbox:\n return (\n <CheckGroup\n key={display.key}\n attribute={attr}\n display={display}\n options={options}\n helperText={helperText}\n />\n );\n case AttributeType.Select:\n return (\n <FormControl key={display.key} id={display.id}>\n <Labler error={error} attr={attr} />\n <Controller\n control={control}\n rules={{ required: Boolean(attr.required) }}\n name={attr.name}\n render={({ field }) => {\n const color: { color?: 'danger' } = {};\n if (errors[attr.name]) {\n color.color = 'danger';\n }\n const value = String(field.value);\n return (\n <Stack>\n <Select\n id={`select-field-${attr.name}`}\n placeholder={`${display.placeholder}...`}\n {...color}\n {...field}\n value={value}\n onChange={(_, newValue) => {\n field.onChange(newValue);\n }}\n >\n {options.map((option) => {\n return (\n <Option\n key={String(option.value ?? '')}\n value={option.value}\n >\n {option.label}\n </Option>\n );\n })}\n </Select>\n <FormHelperText id={`${attr.name}-helper-text`}>\n {helperText}\n </FormHelperText>\n </Stack>\n );\n }}\n />\n </FormControl>\n );\n case AttributeType.Password:\n return (\n <FormControl key={display.key} id={display.id}>\n <Labler error={error} attr={attr} />\n <Input\n {...display}\n {...register(attr.name, fieldConfig)}\n type={AttributeType.Password}\n />\n <FormHelperText id={`${attr.name}-helper-text`}>\n {helperText}\n </FormHelperText>\n </FormControl>\n );\n case AttributeType.Number:\n return (\n <FormControl key={display.key} id={display.id}>\n <Labler error={error} attr={attr} />\n <Input\n {...display}\n {...register(attr.name, fieldConfig)}\n type={AttributeType.Number}\n />\n <FormHelperText id={`${attr.name}-helper-text`}>\n {helperText}\n </FormHelperText>\n </FormControl>\n );\n\n case AttributeType.Text:\n default:\n return (\n <FormControl key={display.key} id={display.id}>\n <Labler error={error} attr={attr} />\n <Input {...display} {...register(attr.name, fieldConfig)} />\n <FormHelperText id={`${attr.name}-helper-text`}>\n {helperText}\n </FormHelperText>\n </FormControl>\n );\n }\n })}\n {cancelButton ? (\n <Stack spacing={2} direction=\"row\">\n {cancelButton}\n <Box>\n <Button type=\"submit\">{buttonText}</Button>\n </Box>\n </Stack>\n ) : (\n <Box>\n <Stack direction=\"row\" gap={2}>\n <Button type=\"submit\" loading={loading}>\n {buttonText}\n </Button>\n {successMessage}\n </Stack>\n </Box>\n )}\n </Stack>\n </FormProvider>\n );\n}\n","import React from 'react';\nimport { useMutation } from '@tanstack/react-query';\nimport Stack from '@mui/joy/Stack';\nimport Alert from '@mui/joy/Alert';\n\nimport UserForm from '../lib/SimpleForm';\nimport { Attribute, AttributeType } from '../lib/SimpleForm/types';\nimport { useApi } from '../context';\n\nimport { Props, LoginInfo } from './types';\n\nexport default function SignUpForm(props: Props) {\n const [error, setError] = React.useState<string | void>();\n const {\n buttonText = 'Sign up',\n onSuccess,\n onError,\n attributes,\n beforeMutate,\n } = props;\n const api = useApi();\n const mutation = useMutation(\n async (_data: LoginInfo) => {\n setError(undefined);\n const possibleData = beforeMutate && beforeMutate(_data);\n const data = possibleData ?? _data;\n const { email, password, preferredName, newTenant, ...metadata } = data;\n if (Object.keys(metadata).length > 0) {\n // eslint-disable-next-line no-console\n console.warn('additional metadata not supported yet.');\n }\n return api.auth.signUp({\n signUpRequest: { email, password, preferredName, newTenant },\n });\n },\n {\n onSuccess,\n onError: (e: Error, vars) => {\n setError(e.message);\n onError && onError(e as Error, vars);\n },\n }\n );\n\n const completeAttributes = React.useMemo(() => {\n const mainAttributes: Attribute[] = [\n {\n name: 'email',\n label: 'Email',\n type: AttributeType.Text,\n defaultValue: '',\n required: true,\n },\n {\n name: 'password',\n label: 'Password',\n type: AttributeType.Password,\n defaultValue: '',\n required: true,\n },\n ];\n if (attributes && attributes.length > 0) {\n return mainAttributes.concat(attributes);\n }\n return mainAttributes;\n }, [attributes]);\n\n return (\n <Stack gap={2}>\n {error ? <Alert color=\"danger\">{error}</Alert> : null}\n <UserForm\n mutation={mutation}\n buttonText={buttonText}\n attributes={completeAttributes}\n />\n </Stack>\n );\n}\n","import React from 'react';\nimport { useMutation } from '@tanstack/react-query';\nimport Alert from '@mui/joy/Alert';\nimport Stack from '@mui/joy/Stack';\n\nimport { Attribute } from '../lib/SimpleForm/types';\nimport { useApi } from '../context';\nimport SimpleForm from '../lib/SimpleForm';\nimport { AttributeType } from '../lib/SimpleForm/types';\n\nimport { Props, LoginInfo } from './types';\n\nexport default function LoginForm(props: Props) {\n const [error, setError] = React.useState<string | void>();\n const { attributes, onSuccess, onError, beforeMutate } = props;\n const api = useApi();\n\n const mutation = useMutation(\n async (_data: LoginInfo) => {\n setError(undefined);\n const possibleData = beforeMutate && beforeMutate(_data);\n const data = possibleData ?? _data;\n return await api.auth.login({\n loginRequest: data,\n });\n },\n {\n onSuccess,\n onError,\n }\n );\n\n const completeAttributes = React.useMemo(() => {\n const mainAttributes: Attribute[] = [\n {\n name: 'email',\n label: 'Email',\n type: AttributeType.Text,\n defaultValue: '',\n required: true,\n },\n {\n name: 'password',\n label: 'Password',\n type: AttributeType.Password,\n defaultValue: '',\n required: true,\n },\n ];\n if (attributes && attributes.length > 0) {\n return mainAttributes.concat(attributes);\n }\n return mainAttributes;\n }, [attributes]);\n\n return (\n <Stack gap={2}>\n {error ? <Alert color=\"danger\">{error}</Alert> : null}\n <SimpleForm\n mutation={mutation}\n buttonText=\"Log in\"\n attributes={completeAttributes}\n />\n </Stack>\n );\n}\n","import React from 'react';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { Attribute } from '../lib/SimpleForm/types';\nimport { useApi } from '../context';\nimport SimpleForm from '../lib/SimpleForm';\nimport { AttributeType } from '../lib/SimpleForm/types';\n\nimport { Props, LoginInfo } from './types';\n\nexport default function SingleSignOnForm(\n props: Props & {\n nextButtonText?: string;\n loginButtonText?: string;\n onSuccess: () => void;\n }\n) {\n const {\n attributes,\n onSuccess,\n onError,\n beforeMutate,\n nextButtonText = 'Next',\n loginButtonText = 'Log in',\n disableSSO = false,\n } = props;\n const api = useApi();\n const [buttonText, setButtonText] = React.useState(\n disableSSO ? loginButtonText : nextButtonText\n );\n\n const mutation = useMutation(\n async (_data: LoginInfo) => {\n const possibleData = beforeMutate && beforeMutate(_data);\n const data = possibleData ?? _data;\n return await api.auth.login({\n loginRequest: { email: data.email, password: data.password },\n sso: !disableSSO,\n });\n },\n {\n onSuccess: (token, data) => {\n if (token) {\n if (token?.redirectURI) {\n window.location.href = token.redirectURI;\n } else if (buttonText !== loginButtonText) {\n setButtonText(loginButtonText);\n } else {\n onSuccess && onSuccess(token, data);\n }\n }\n },\n onError: (error, data) => {\n // it is possible SSO failed, so only show errors on if the password is available\n if (buttonText === loginButtonText) {\n onError && onError(error as Error, data);\n } else {\n setButtonText(loginButtonText);\n }\n },\n }\n );\n\n const completeAttributes = React.useMemo(() => {\n const mainAttributes: Attribute[] = [\n {\n name: 'email',\n label: 'Email',\n type: AttributeType.Text,\n defaultValue: '',\n required: true,\n },\n ];\n if (buttonText === loginButtonText) {\n mainAttributes.push({\n name: 'password',\n label: 'Password',\n type: AttributeType.Password,\n defaultValue: '',\n required: true,\n });\n }\n if (attributes && attributes.length > 0) {\n return mainAttributes.concat(attributes);\n }\n return mainAttributes;\n }, [attributes, buttonText, loginButtonText]);\n\n return (\n <SimpleForm\n mutation={mutation}\n buttonText={buttonText}\n attributes={completeAttributes}\n />\n );\n}\n","import React from 'react';\nimport {\n Button,\n Stack,\n Typography,\n FormControl,\n FormLabel,\n Input,\n Modal,\n ModalDialog,\n} from '@mui/joy';\nimport { useForm } from 'react-hook-form';\nimport { useMutation } from '@tanstack/react-query';\nimport { SignUp201Response, SignUpRequest } from '@niledatabase/browser';\n\nimport { useApi, useNileConfig } from '../context';\n\nexport type UserFormProps = {\n open: boolean;\n setOpen: (open: boolean) => void;\n refetch?: (user: SignUp201Response) => void;\n};\n\nexport default function AddUser(props: UserFormProps) {\n const { open, setOpen, refetch } = props;\n const { tenantId } = useNileConfig();\n const api = useApi();\n const [errorText, setErrorText] = React.useState<void | string>();\n const { watch, register, handleSubmit } = useForm<SignUpRequest>();\n const email = watch('email');\n\n React.useEffect(() => {\n if (errorText != null) {\n setErrorText();\n }\n // if email changes, no more error\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [email]);\n\n const mutation = useMutation(\n (data: SignUpRequest) =>\n api.users.createTenantUser({\n signUpRequest: data,\n tenantId: String(tenantId),\n }),\n {\n onSuccess(data) {\n refetch && refetch(data);\n setOpen(false);\n },\n onError(e) {\n if (e instanceof Error) {\n setErrorText(e.message);\n }\n },\n }\n );\n\n const handleUpdate = React.useCallback(\n async (data: SignUpRequest) => {\n setErrorText('');\n mutation.mutate(data);\n },\n [mutation]\n );\n\n return (\n <Modal open={open}>\n <ModalDialog>\n <Stack spacing={2}>\n <Typography level=\"h4\">Create user</Typography>\n <>\n {errorText && <Typography color=\"danger\">{errorText}</Typography>}\n </>\n <Stack\n component=\"form\"\n sx={{\n width: '40ch',\n }}\n spacing={1}\n onSubmit={handleSubmit((data) =>\n handleUpdate(data as SignUpRequest)\n )}\n >\n <FormControl\n sx={{\n '--FormHelperText-color': 'var(--joy-palette-danger-500)',\n }}\n >\n <FormLabel htmlFor=\"email\">Email</FormLabel>\n <Input\n {...register('email')}\n fullWidth\n size=\"lg\"\n id=\"email\"\n name=\"email\"\n autoComplete=\"current-email\"\n required\n error={Boolean(errorText)}\n />\n </FormControl>\n <FormControl\n sx={{\n '--FormHelperText-color': 'var(--joy-palette-danger-500)',\n }}\n >\n <FormLabel htmlFor=\"password\">Password</FormLabel>\n <Input\n {...register('password')}\n fullWidth\n size=\"lg\"\n id=\"password\"\n autoComplete=\"current-password\"\n type=\"password\"\n required\n />\n </FormControl>\n <Stack direction=\"row\" sx={{ pt: 2 }} spacing={2}>\n <Button onClick={() => setOpen(false)} variant=\"plain\">\n Cancel\n </Button>\n <Button type=\"submit\">Create</Button>\n </Stack>\n </Stack>\n </Stack>\n </ModalDialog>\n </Modal>\n );\n}\n","import React from 'react';\nimport Button from '@mui/joy/Button';\nimport Stack from '@mui/joy/Stack';\nimport { useState } from 'react';\nimport Add from '@mui/icons-material/Add';\nimport { SignUp201Response } from '@niledatabase/browser';\n\nimport UserModal from './UserModal';\n\ntype Props = {\n allowCreation: boolean;\n buttonText: string;\n onUserCreateSuccess?: (user: SignUp201Response) => void;\n};\nexport default function CreateUser(props: Props) {\n const { allowCreation, buttonText, onUserCreateSuccess } = props;\n const [open, setOpen] = useState(false);\n if (!allowCreation) {\n return null;\n }\n\n return (\n <Stack alignItems=\"flex-end\" gap={1}>\n <UserModal open={open} setOpen={setOpen} refetch={onUserCreateSuccess} />\n <Button startDecorator={<Add />} size=\"sm\" onClick={() => setOpen(true)}>\n {buttonText}\n </Button>\n </Stack>\n );\n}\n","import { GridRowsProp } from '@mui/x-data-grid';\n\nexport default function getColumnSize(\n column: unknown,\n rows: GridRowsProp,\n canvasContext: void | CanvasRenderingContext2D\n) {\n const dataWidthReducer = (\n longest: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextRow: { [key: string]: any }\n ) => {\n let value = nextRow[String(column)];\n if (value == null) {\n value = '';\n }\n value = value?.toString();\n return longest.length > value.length ? longest : value;\n };\n\n let columnHeaderLen =\n canvasContext && column\n ? canvasContext.measureText(String(column)).width\n : 50;\n /* padding 12, icon-width 15 */\n columnHeaderLen += 15 + 12;\n\n let width = columnHeaderLen;\n width =\n 16 +\n Math.ceil(\n canvasContext\n ? canvasContext.measureText(rows.reduce(dataWidthReducer, '')).width\n : 50\n );\n if (width < columnHeaderLen) {\n width = columnHeaderLen;\n }\n /* Gracefull */\n width += 8;\n return width;\n}\n","import { useEffect, useState } from 'react';\n\nexport default function useTextSizer() {\n const [ctx, setCtx] = useState<CanvasRenderingContext2D>();\n useEffect(() => {\n const canvas = document.createElement('canvas');\n const canvasContext = canvas.getContext('2d');\n if (canvasContext) {\n canvasContext.font = '18px Roboto';\n setCtx(canvasContext);\n }\n }, []);\n return ctx;\n}\n","import { useMemo } from 'react';\nimport { GridColDef, GridRowsProp } from '@mui/x-data-grid';\nimport { User } from '@niledatabase/browser';\n\nimport getColumnSize from '../utils/getColumnSize';\nimport useTextSizer from '../hooks/useTextSizer';\n\nexport const internalRowId = '_nile_data_grid_identifier';\n\ntype Cleaned = { [key: string]: string | Set<string> };\n\nconst makeRenderable = (vals: User) => {\n return Object.keys(vals).reduce((cleaned: Cleaned, key) => {\n const val = (vals as Cleaned)[key];\n if (val instanceof Set) {\n cleaned[key] = Array.from(val).join(', ');\n } else if (Array.isArray(val)) {\n cleaned[key] = val.join(', ');\n } else {\n cleaned[key] = val;\n }\n return cleaned;\n }, {});\n};\n\nconst parseResults = (\n data: void | User[],\n ctx: CanvasRenderingContext2D | void,\n include: string[]\n): [GridColDef[], GridRowsProp] => {\n if (!data) {\n return [[], []];\n }\n const rows = data.map(makeRenderable);\n const fields = Object.keys(rows[0]);\n\n const existentCols: { [key: string]: number } = {};\n\n const mapCols = (col: string): GridColDef | void => {\n const width = getColumnSize(col, rows, ctx);\n const name = col.slice();\n if (include.includes(name)) {\n // add spaces to the end of column names so they are not duplicated in the UI\n if (existentCols[name] == null) {\n existentCols[name] = name.length;\n } else {\n existentCols[name] += 1;\n }\n return {\n field: name.padEnd(existentCols[name]),\n headerName: name.padEnd(existentCols[name]),\n width,\n };\n }\n };\n const cols = fields?.map(mapCols).filter(Boolean) ?? [];\n\n return [cols as GridColDef[], rows];\n};\n\nexport default function useDataParser(\n data: void | User[],\n include: string[]\n): [GridColDef[], GridRowsProp] {\n const ctx = useTextSizer();\n const [cols, rows] = useMemo(\n () => parseResults(data, ctx, include),\n [data, ctx, include]\n );\n return [cols, rows];\n}\n","import { DataGrid } from '@mui/x-data-grid';\nimport React from 'react';\nimport Stack from '@mui/joy/Stack';\nimport { SxProps } from '@mui/system/styleFunctionSx/styleFunctionSx';\nimport { Theme } from '@mui/system/createTheme';\nimport { SignUp201Response, User } from '@niledatabase/browser';\n\nimport CreateUser from './CreateUser';\nimport useDataParser from './useDataParser';\n\ntype ColumnNames = string;\n\ntype Props = {\n data: void | User[];\n allowCreation?: boolean;\n buttonText?: string;\n onUserCreateSuccess?: (user: SignUp201Response) => void;\n slots?: {\n dataGrid?: SxProps<Theme>;\n };\n // white list of columns to show\n include?: ColumnNames[];\n};\n\nexport default function UserList(props: Props) {\n const {\n data,\n allowCreation = true,\n buttonText = 'Add a user',\n onUserCreateSuccess,\n slots,\n include = ['email', 'preferedName'],\n } = props;\n\n const dataGridSx = {\n width: '100%',\n height: '100%',\n ...(slots?.dataGrid ?? {}),\n };\n\n const [columns, rows] = useDataParser(data, include);\n return (\n <Stack flex={1}>\n <CreateUser\n allowCreation={allowCreation}\n buttonText={buttonText}\n onUserCreateSuccess={onUserCreateSuccess}\n />\n <DataGrid\n sx={dataGridSx}\n rows={rows}\n columns={columns}\n hideFooter={true}\n />\n </Stack>\n );\n}\n","import React from 'react';\nimport { useMutation } from '@tanstack/react-query';\nimport { UpdateProviderRequest, SSOProvider } from '@niledatabase/browser';\nimport Stack from '@mui/joy/Stack';\nimport Typography from '@mui/joy/Typography';\nimport Alert from '@mui/joy/Alert';\nimport CheckCircleOutlined from '@mui/icons-material/CheckCircleOutlined';\n\nimport SimpleForm from '../lib/SimpleForm';\nimport { useApi } from '../context';\nimport { Attribute, AttributeType } from '../lib/SimpleForm/types';\n\nimport { OktaProps } from './types';\n\ntype SSOFormRequest = Omit<UpdateProviderRequest, 'emailDomains'> & {\n emailDomains: string;\n};\nexport default function BaseSSOForm(\n props: Omit<OktaProps, 'callbackUrl' | 'providers'> & {\n providerName: string;\n configurationGuide?: JSX.Element;\n config?: SSOProvider;\n }\n) {\n const {\n config,\n providerName,\n onSuccess,\n onError,\n allowEdit = true,\n configurationGuide,\n } = props;\n\n const api = useApi();\n const [loading, setLoading] = React.useState(false);\n const [success, setSuccess] = React.useState(false);\n const [optimisticConfig, setConfig] = React.useState<SSOProvider | void>(\n config\n );\n const timer = React.useRef<NodeJS.Timeout>();\n const attributes = React.useMemo(() => {\n const attributes: Attribute[] = [\n {\n name: 'enabled',\n label: 'Allow Okta logins',\n type: AttributeType.Switch,\n defaultValue: optimisticConfig?.enabled === true,\n options: [\n {\n label: 'Enabled',\n },\n {\n label: 'Disabled',\n },\n ],\n disabled: !allowEdit,\n },\n {\n name: 'clientId',\n label: 'Client id',\n type: AttributeType.Text,\n defaultValue: optimisticConfig?.clientId ?? '',\n required: true,\n disabled: !allowEdit,\n },\n {\n name: 'configUrl',\n label: 'Config url',\n type: AttributeType.Text,\n defaultValue: optimisticConfig?.configUrl ?? '',\n helpText:\n 'The URL of the .well-known/openid-configuration for the identity provider',\n required: true,\n disabled: !allowEdit,\n },\n {\n name: 'emailDomains',\n label: 'Email domains',\n type: AttributeType.Text,\n defaultValue: optimisticConfig?.emailDomains?.join(', ') ?? '',\n required: true,\n helpText:\n 'A comma seperated list of email domains (yourDomain.com) to be used',\n disabled: !allowEdit,\n },\n ];\n if (!optimisticConfig?.clientId) {\n attributes.splice(2, 0, {\n name: 'clientSecret',\n label: 'Client secret',\n type: AttributeType.Password,\n defaultValue: '',\n required: true,\n disabled: !allowEdit,\n });\n }\n return attributes;\n }, [\n allowEdit,\n optimisticConfig?.clientId,\n optimisticConfig?.configUrl,\n optimisticConfig?.emailDomains,\n optimisticConfig?.enabled,\n ]);\n\n const handleTimer = () => {\n if (timer.current) {\n clearTimeout(timer.current);\n }\n\n timer.current = setTimeout(() => {\n setSuccess(false);\n }, 3000);\n };\n\n const mutation = useMutation(\n (ssoRequest: SSOFormRequest) => {\n setLoading(true);\n const payload = {\n providerName: providerName.toLowerCase(),\n updateProviderRequest: {\n ...ssoRequest,\n emailDomains: ssoRequest.emailDomains.split(','),\n },\n };\n if (optimisticConfig != null) {\n return api.auth.updateProvider(payload);\n } else {\n return api.auth.createProvider(payload);\n }\n },\n {\n onSuccess: (data, vars) => {\n setConfig(data);\n setSuccess(true);\n onSuccess && onSuccess(data, vars);\n },\n onError,\n onSettled: (data, error, vars) => {\n setLoading(false);\n handleTimer();\n if (!data) {\n if (!error || error?.message.includes('Unterminated string')) {\n // something unexpected happened on the BE, but it's non-fatal\n setConfig({\n enabled: vars.enabled,\n clientId: vars.clientId,\n configUrl: vars.configUrl,\n emailDomains: vars.emailDomains.split(', '),\n } as SSOProvider);\n }\n setSuccess(true);\n onSuccess && onSuccess(data, vars);\n }\n },\n }\n );\n\n React.useEffect(() => {\n () => {\n clearTimeout(timer.current);\n };\n });\n\n return (\n <Stack gap={2} position=\"relative\">\n <Typography level=\"h4\">Step 1</Typography>\n {configurationGuide}\n <Typography level=\"h4\">Step 2</Typography>\n <SimpleForm\n mutation={mutation}\n buttonText=\"Update\"\n attributes={attributes}\n loading={loading}\n successMessage={\n <Alert\n color=\"success\"\n sx={{\n opacity: success ? 1 : 0,\n transition: 'opacity 200ms',\n height: '0.9rem',\n }}\n startDecorator={<CheckCircleOutlined />}\n >\n <Typography textAlign=\"center\" fontSize=\"sm\">\n Provider updated\n </Typography>\n </Alert>\n }\n />\n </Stack>\n );\n}\n","import React from 'react';\nimport Stack from '@mui/joy/Stack';\nimport Typography from '@mui/joy/Typography';\nimport Box from '@mui/joy/Box';\nimport Input from '@mui/joy/Input';\nimport CopyAll from '@mui/icons-material/CopyAll';\nimport { Theme } from '@mui/joy/styles';\nimport Tooltip from '@mui/joy/Tooltip';\nimport CheckCircleOutlined from '@mui/icons-material/CheckCircleOutlined';\nimport { SSOProvider } from '@niledatabase/browser';\n\nimport BaseSSOForm from './BaseSSOForm';\nimport { OktaProps } from './types';\n\nfunction ConfigGuide({ callbackUrl }: { callbackUrl?: string }) {\n const [copied, setCopied] = React.useState(false);\n\n const timer = React.useRef<NodeJS.Timeout>();\n React.useEffect(() => {\n if (timer.current) {\n clearTimeout(timer.current);\n }\n timer.current = setTimeout(() => {\n setCopied(false);\n }, 3250);\n () => {\n clearTimeout(timer.current);\n };\n }, [copied]);\n return (\n <Stack gap={2}>\n <Typography>\n In order for Okta to redirect properly, provide the following URL as the{' '}\n <Box component=\"span\" sx={{ fontFamily: 'monospace' }}>\n Sign-in redirect URIs\n </Box>{' '}\n in the admin configuration of your application.\n </Typography>\n <Input\n onClick={async () => {\n if (callbackUrl) {\n await navigator.clipboard.writeText(callbackUrl);\n setCopied(true);\n }\n }}\n sx={(theme: Theme) => ({\n input: {\n cursor: 'pointer',\n },\n span: {\n cursor: 'pointer',\n },\n '&:hover svg': {\n '--Icon-color': theme.palette.primary[500],\n },\n })}\n value={callbackUrl}\n readOnly={true}\n endDecorator={\n <Tooltip title=\"Copy Okta redirect URL\">\n <Box\n position=\"relative\"\n width={copied ? '82px' : '24px'}\n height=\"24px\"\n >\n <Box\n position=\"absolute\"\n top=\"0\"\n left=\"0\"\n sx={{\n opacity: copied ? 0 : 1,\n transition: 'opacity 300ms',\n }}\n >\n <CopyAll />\n </Box>\n <Box\n position=\"absolute\"\n top=\"0\"\n left=\"0\"\n sx={{ opacity: !copied ? 0 : 1, transition: 'opacity 300ms' }}\n >\n <Stack direction=\"row\" gap={1}>\n <CheckCircleOutlined />\n <Typography color=\"primary\">Copied!</Typography>\n </Stack>\n </Box>\n </Box>\n </Tooltip>\n }\n />\n </Stack>\n );\n}\n\nexport default function Okta(props: OktaProps) {\n const { callbackUrl, providers, ...remaining } = props;\n if (!providers) {\n return null;\n }\n const config = providers?.find((provider) => provider.provider === 'okta');\n return (\n <BaseSSOForm\n {...remaining}\n config={config as SSOProvider}\n providerName=\"Okta\"\n configurationGuide={<ConfigGuide callbackUrl={callbackUrl} />}\n />\n );\n}\n"],"names":["Themer","theme","children","slotProps","React","JoyCssVarsProvider","createElement","CssBaseline","enableColorScheme","queryClient","QueryClient","defaultContext","api","Browser","basePath","credentials","apiUrl","context","createContext","Provider","BaseQueryProvider","QueryClientProvider","client","NileProvider","props","tenantId","QueryProvider","appUrl","values","useMemo","String","ThemeProvider","provider","value","useNileContext","useContext","useNileConfig","useApi","LOGIN_PATH","GoogleSSOButton","newTenantName","console","error","contextHref","query","encodeURIComponent","href","Box","component","display","flex","sx","textDecoration","Button","padding","textTransform","Stack","direction","alignItems","p","fontFamily","fontSize","color","boxShadow","borderRadius","border","fontWeight","backgroundColor","background","GoogleLogo","Typography","height","CheckGroup","options","attribute","helperText","watch","control","useFormContext","currentVals","name","checkProps","Controller","rules","required","Boolean","render","field","FormLabel","htmlFor","label","role","List","orientation","wrap","map","item","id","ListItem","key","Checkbox","overlay","length","checked","includes","disableIcon","variant","onChange","event","allowMultiple","target","concat","remaining","filter","val","level","AttributeType","getAttributeDefault","Array","isArray","defaultValue","Labler","attr","Tooltip","title","cursor","Error","ml","SimpleForm","mutation","buttonText","attributes","cancelButton","loading","successMessage","defaultValues","reduce","accum","methods","useForm","register","handleSubmit","formState","errors","onSubmit","useCallback","data","mutate","FormProvider","spacing","fieldConfig","placeholder","disabled","helpText","type","Switch","FormControl","FormHelperText","endDecorator","Select","_","newValue","option","Option","Password","Input","Number","Text","gap","SignUpForm","setError","useState","onSuccess","onError","beforeMutate","useMutation","_data","undefined","possibleData","email","password","preferredName","newTenant","metadata","Object","keys","warn","auth","signUp","signUpRequest","e","vars","message","completeAttributes","mainAttributes","Alert","UserForm","LoginForm","login","loginRequest","SingleSignOnForm","nextButtonText","loginButtonText","disableSSO","setButtonText","sso","token","redirectURI","window","location","push","AddUser","open","setOpen","refetch","errorText","setErrorText","useEffect","users","createTenantUser","handleUpdate","Modal","ModalDialog","Fragment","width","fullWidth","size","autoComplete","pt","onClick","CreateUser","allowCreation","onUserCreateSuccess","UserModal","startDecorator","Add","getColumnSize","column","rows","canvasContext","dataWidthReducer","longest","nextRow","toString","columnHeaderLen","measureText","Math","ceil","useTextSizer","ctx","setCtx","canvas","document","getContext","font","makeRenderable","vals","cleaned","Set","from","join","parseResults","include","fields","existentCols","mapCols","col","slice","padEnd","headerName","cols","useDataParser","UserList","slots","dataGridSx","dataGrid","columns","DataGrid","hideFooter","BaseSSOForm","config","providerName","allowEdit","configurationGuide","setLoading","success","setSuccess","optimisticConfig","setConfig","timer","useRef","enabled","clientId","configUrl","emailDomains","splice","handleTimer","current","clearTimeout","setTimeout","ssoRequest","payload","toLowerCase","updateProviderRequest","split","updateProvider","createProvider","onSettled","position","opacity","transition","CheckCircleOutlined","textAlign","ConfigGuide","callbackUrl","copied","setCopied","navigator","clipboard","writeText","input","span","palette","primary","readOnly","top","left","CopyAll","Okta","providers","find"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("@niledatabase/browser"),r=require("@tanstack/react-query"),n=require("@mui/material/CssBaseline"),a=require("@mui/joy/styles"),o=require("@mui/joy/Box"),l=require("@mui/joy/Button"),i=require("@mui/joy/Stack"),c=require("@mui/joy/Typography"),s=require("@mui/joy/Alert"),u=require("react-hook-form"),m=require("@mui/joy/Input"),d=require("@mui/joy/FormControl"),p=require("@mui/joy/FormHelperText"),b=require("@mui/icons-material/Error"),g=require("@mui/joy/FormLabel"),f=require("@mui/joy/Select"),E=require("@mui/joy/Option"),h=require("@mui/joy/Tooltip"),x=require("@mui/joy"),y=require("@mui/joy/Checkbox"),w=require("@mui/joy/List"),v=require("@mui/joy/ListItem"),T=require("@mui/x-data-grid"),S=require("@mui/icons-material/Add"),C=require("@mui/icons-material/CopyAll"),q=require("@mui/icons-material/CheckCircleOutlined");function k(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,t}var F=k(e);function A({theme:t,children:r,slotProps:o}){return e.createElement(a.CssVarsProvider,{...o,theme:t},e.createElement(n,{enableColorScheme:!0}),r)}const U=new r.QueryClient,j=e.createContext({api:new t({basePath:"https://api.thenile.dev",credentials:"include"}),apiUrl:""}),{Provider:P}=j,M=({children:t})=>e.createElement(r.QueryClientProvider,{client:U},t),I=()=>e.useContext(j),O=()=>{const{apiUrl:t,tenantId:r,appUrl:n}=I();return e.useMemo((()=>({tenantId:r,apiUrl:t,appUrl:n})),[t,r,n])},R=()=>I().api;var B;function V(){return V=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},V.apply(this,arguments)}var D,L=function(e){return F.createElement("svg",V({xmlns:"http://www.w3.org/2000/svg",width:18,height:18},e),B||(B=F.createElement("g",{fillRule:"evenodd"},F.createElement("path",{fill:"#EA4335",d:"M9 3.48c1.69 0 2.83.73 3.48 1.34l2.54-2.48C13.46.89 11.43 0 9 0 5.48 0 2.44 2.02.96 4.96l2.91 2.26C4.6 5.05 6.62 3.48 9 3.48"}),F.createElement("path",{fill:"#4285F4",d:"M17.64 9.2c0-.74-.06-1.28-.19-1.84H9v3.34h4.96c-.1.83-.64 2.08-1.84 2.92l2.84 2.2c1.7-1.57 2.68-3.88 2.68-6.62"}),F.createElement("path",{fill:"#FBBC05",d:"M3.88 10.78A5.5 5.5 0 0 1 3.58 9c0-.62.11-1.22.29-1.78L.96 4.96A9 9 0 0 0 0 9c0 1.45.35 2.82.96 4.04z"}),F.createElement("path",{fill:"#34A853",d:"M9 18c2.43 0 4.47-.8 5.96-2.18l-2.84-2.2c-.76.53-1.78.9-3.12.9-2.38 0-4.4-1.57-5.12-3.74L.97 13.04C2.45 15.98 5.48 18 9 18"}),F.createElement("path",{fill:"none",d:"M0 0h18v18H0z"}))))};function N(e){const{options:t,attribute:r,display:n,helperText:a}=e,{watch:l,control:s}=u.useFormContext(),m=l(r.name),d={};return a&&(d.color="danger"),F.createElement(u.Controller,{name:r.name,rules:{required:Boolean(r.required)},control:s,render:({field:e})=>F.createElement(i,null,F.createElement(g,{htmlFor:`${e.name}`},n.label),F.createElement(o,{role:"group","aria-labelledby":r.name,sx:{borderRadius:"var(--joy-radius-sm)",p:.5,border:a?"1px solid var(--joy-palette-danger-outlinedBorder)":"none"}},F.createElement(w,{orientation:"horizontal",wrap:!0,sx:{"--List-gap":"8px"}},t.map((n=>(d.id=String(n.value),F.createElement(v,{key:`${n.value}-${n.label}`},F.createElement(y,{overlay:t.length>1,...d,checked:m.includes(n.value),disableIcon:t.length>1,variant:"soft",label:n.label,onChange:t=>{if(r.allowMultiple)if(t.target.checked)e.onChange(m?m.concat(n.value):[n.value]);else{const t=m.filter((e=>e!==n.value));e.onChange(t.length>0?t:"")}else e.onChange(t.target.checked?n.value:"")}}))))))),F.createElement(c,{sx:{color:"var(--joy-palette-danger-500)"},level:"body-sm"},a))})}exports.FormAttributeType=void 0,(D=exports.FormAttributeType||(exports.FormAttributeType={})).Text="text",D.Password="password",D.Select="select",D.Number="number",D.Float="float",D.Checkbox="checkbox",D.Switch="switch";const $=e=>!0===e.allowMultiple&&!Array.isArray(e.defaultValue)&&e.defaultValue?"number"==typeof e.defaultValue?[e.defaultValue]:[String(e.defaultValue)]:e.defaultValue??"";function z(t){const{error:r,attr:n}=t;return r?e.createElement(h,{title:r,color:"danger",sx:{cursor:"pointer"}},e.createElement(g,null,n.label??n.name,e.createElement(b,{sx:{ml:.5,"--Icon-color":"#c41c1c"},fontSize:"small"}))):e.createElement(g,null,n.label??n.name)}function G(t){const{mutation:r,buttonText:n,attributes:a,cancelButton:c,loading:s,successMessage:b}=t,g=e.useMemo((()=>a.reduce(((e,t)=>(e[t.name]=$(t),e)),{})),[a]),h=u.useForm({defaultValues:g}),{register:y,control:w,handleSubmit:v,formState:{errors:T}}=h,S=e.useCallback((e=>{r.mutate(e)}),[r]);return e.createElement(u.FormProvider,{...h},e.createElement(i,{component:"form",onSubmit:v((e=>S(e))),spacing:2},a.map((t=>{const r={},n={key:t.name,label:t.label??t.name,id:t.label??t.name,placeholder:t.placeholder??t.label??t.name,error:Boolean(T[t.name]),disabled:Boolean(t.disabled)},a=t.options??[],l=t.helpText??"";let c="";switch(t.required&&(c=T[t.name]?`${t.label??t.name} is required`:"",r.required=!0),t.type){case exports.FormAttributeType.Switch:return e.createElement(d,{key:n.key,id:n.id,orientation:"horizontal",sx:{alignItems:"center"}},e.createElement(o,null,e.createElement(z,{error:c,attr:t}),e.createElement(p,{id:`${t.name}-helper-text`},l)),e.createElement(u.Controller,{control:w,rules:{required:Boolean(t.required)},name:t.name,render:({field:r})=>{const n={};return T[t.name]&&(n.color="danger"),e.createElement(x.Switch,{id:`switch-field-${t.name}`,...n,...r,checked:Boolean(r.value),onChange:e=>{r.onChange(e.target.checked)},color:r.value?"success":"neutral",endDecorator:r.value?a[0].label:a[1].label})}}));case exports.FormAttributeType.Checkbox:return e.createElement(N,{key:n.key,attribute:t,display:n,options:a,helperText:l});case exports.FormAttributeType.Select:return e.createElement(d,{key:n.key,id:n.id},e.createElement(z,{error:c,attr:t}),e.createElement(u.Controller,{control:w,rules:{required:Boolean(t.required)},name:t.name,render:({field:r})=>{const o={};T[t.name]&&(o.color="danger");const c=String(r.value);return e.createElement(i,null,e.createElement(f,{id:`select-field-${t.name}`,placeholder:`${n.placeholder}...`,...o,...r,value:c,onChange:(e,t)=>{r.onChange(t)}},a.map((t=>e.createElement(E,{key:String(t.value??""),value:t.value},t.label)))),e.createElement(p,{id:`${t.name}-helper-text`},l))}}));case exports.FormAttributeType.Password:return e.createElement(d,{key:n.key,id:n.id},e.createElement(z,{error:c,attr:t}),e.createElement(m,{...n,...y(t.name,r),type:exports.FormAttributeType.Password}),e.createElement(p,{id:`${t.name}-helper-text`},l));case exports.FormAttributeType.Number:return e.createElement(d,{key:n.key,id:n.id},e.createElement(z,{error:c,attr:t}),e.createElement(m,{...n,...y(t.name,r),type:exports.FormAttributeType.Number}),e.createElement(p,{id:`${t.name}-helper-text`},l));case exports.FormAttributeType.Text:default:return e.createElement(d,{key:n.key,id:n.id},e.createElement(z,{error:c,attr:t}),e.createElement(m,{...n,...y(t.name,r)}),e.createElement(p,{id:`${t.name}-helper-text`},l))}})),c?e.createElement(i,{spacing:2,direction:"row"},c,e.createElement(o,null,e.createElement(l,{type:"submit"},n))):e.createElement(o,null,e.createElement(i,{direction:"row",gap:2},e.createElement(l,{type:"submit",loading:s},n),b))))}function H(t){const{open:n,setOpen:a,refetch:o}=t,{tenantId:l}=O(),i=R(),[c,s]=e.useState(),{watch:m,register:d,handleSubmit:p}=u.useForm(),b=m("email");e.useEffect((()=>{null!=c&&s()}),[b]);const g=r.useMutation((e=>i.users.createTenantUser({signUpRequest:e,tenantId:String(l)})),{onSuccess(e){o&&o(e),a(!1)},onError(e){e instanceof Error&&s(e.message)}}),f=e.useCallback((async e=>{s(""),g.mutate(e)}),[g]);return e.createElement(x.Modal,{open:n},e.createElement(x.ModalDialog,null,e.createElement(x.Stack,{spacing:2},e.createElement(x.Typography,{level:"h4"},"Create user"),e.createElement(e.Fragment,null,c&&e.createElement(x.Typography,{color:"danger"},c)),e.createElement(x.Stack,{component:"form",sx:{width:"40ch"},spacing:1,onSubmit:p((e=>f(e)))},e.createElement(x.FormControl,{sx:{"--FormHelperText-color":"var(--joy-palette-danger-500)"}},e.createElement(x.FormLabel,{htmlFor:"email"},"Email"),e.createElement(x.Input,{...d("email"),fullWidth:!0,size:"lg",id:"email",name:"email",autoComplete:"current-email",required:!0,error:Boolean(c)})),e.createElement(x.FormControl,{sx:{"--FormHelperText-color":"var(--joy-palette-danger-500)"}},e.createElement(x.FormLabel,{htmlFor:"password"},"Password"),e.createElement(x.Input,{...d("password"),fullWidth:!0,size:"lg",id:"password",autoComplete:"current-password",type:"password",required:!0})),e.createElement(x.Stack,{direction:"row",sx:{pt:2},spacing:2},e.createElement(x.Button,{onClick:()=>a(!1),variant:"plain"},"Cancel"),e.createElement(x.Button,{type:"submit"},"Create"))))))}function W(t){const{allowCreation:r,buttonText:n,onUserCreateSuccess:a}=t,[o,c]=e.useState(!1);return r?e.createElement(i,{alignItems:"flex-end",gap:1},e.createElement(H,{open:o,setOpen:c,refetch:a}),e.createElement(l,{startDecorator:e.createElement(S,null),size:"sm",onClick:()=>c(!0)},n)):null}const Q=e=>Object.keys(e).reduce(((t,r)=>{const n=e[r];return t[r]=n instanceof Set?Array.from(n).join(", "):Array.isArray(n)?n.join(", "):n,t}),{});function _(t){const{config:n,providerName:a,onSuccess:o,onError:l,allowEdit:u=!0,configurationGuide:m}=t,d=R(),[p,b]=e.useState(!1),[g,f]=e.useState(!1),[E,h]=e.useState(n),x=e.useRef(),y=e.useMemo((()=>{const e=[{name:"enabled",label:"Allow Okta logins",type:exports.FormAttributeType.Switch,defaultValue:!0===E?.enabled,options:[{label:"Enabled"},{label:"Disabled"}],disabled:!u},{name:"clientId",label:"Client id",type:exports.FormAttributeType.Text,defaultValue:E?.clientId??"",required:!0,disabled:!u},{name:"configUrl",label:"Config url",type:exports.FormAttributeType.Text,defaultValue:E?.configUrl??"",helpText:"The URL of the .well-known/openid-configuration for the identity provider",required:!0,disabled:!u},{name:"emailDomains",label:"Email domains",type:exports.FormAttributeType.Text,defaultValue:E?.emailDomains?.join(", ")??"",required:!0,helpText:"A comma seperated list of email domains (yourDomain.com) to be used",disabled:!u}];return E?.clientId||e.splice(2,0,{name:"clientSecret",label:"Client secret",type:exports.FormAttributeType.Password,defaultValue:"",required:!0,disabled:!u}),e}),[u,E?.clientId,E?.configUrl,E?.emailDomains,E?.enabled]),w=r.useMutation((e=>{b(!0);const t={providerName:a.toLowerCase(),updateProviderRequest:{...e,emailDomains:e.emailDomains.split(",")}};return null!=E?d.auth.updateProvider(t):d.auth.createProvider(t)}),{onSuccess:(e,t)=>{h(e),f(!0),o&&o(e,t)},onError:l,onSettled:(e,t,r)=>{b(!1),x.current&&clearTimeout(x.current),x.current=setTimeout((()=>{f(!1)}),3e3),e||(t&&!t?.message.includes("Unterminated string")||h({enabled:r.enabled,clientId:r.clientId,configUrl:r.configUrl,emailDomains:r.emailDomains.split(", ")}),f(!0),o&&o(e,r))}});return e.useEffect((()=>{})),e.createElement(i,{gap:2,position:"relative"},e.createElement(c,{level:"h4"},"Step 1"),m,e.createElement(c,{level:"h4"},"Step 2"),e.createElement(G,{mutation:w,buttonText:"Update",attributes:y,loading:p,successMessage:e.createElement(s,{color:"success",sx:{opacity:g?1:0,transition:"opacity 200ms",height:"0.9rem"},startDecorator:e.createElement(q,null)},e.createElement(c,{textAlign:"center",fontSize:"sm"},"Provider updated"))}))}function J({callbackUrl:t}){const[r,n]=e.useState(!1),a=e.useRef();return e.useEffect((()=>{a.current&&clearTimeout(a.current),a.current=setTimeout((()=>{n(!1)}),3250)}),[r]),e.createElement(i,{gap:2},e.createElement(c,null,"In order for Okta to redirect properly, provide the following URL as the"," ",e.createElement(o,{component:"span",sx:{fontFamily:"monospace"}},"Sign-in redirect URIs")," ","in the admin configuration of your application."),e.createElement(m,{onClick:async()=>{t&&(await navigator.clipboard.writeText(t),n(!0))},sx:e=>({input:{cursor:"pointer"},span:{cursor:"pointer"},"&:hover svg":{"--Icon-color":e.palette.primary[500]}}),value:t,readOnly:!0,endDecorator:e.createElement(h,{title:"Copy Okta redirect URL"},e.createElement(o,{position:"relative",width:r?"82px":"24px",height:"24px"},e.createElement(o,{position:"absolute",top:"0",left:"0",sx:{opacity:r?0:1,transition:"opacity 300ms"}},e.createElement(C,null)),e.createElement(o,{position:"absolute",top:"0",left:"0",sx:{opacity:r?1:0,transition:"opacity 300ms"}},e.createElement(i,{direction:"row",gap:1},e.createElement(q,null),e.createElement(c,{color:"primary"},"Copied!")))))}))}exports.GoogleLoginButton=function(t){const{newTenantName:r}=t,{apiUrl:n}=O();n||console.error("apiUrl is missing from <NileProvider />");const a=`${n}/users/oidc/google/login`,s=r?"?newTenant="+encodeURIComponent(r):"";return e.createElement(o,{component:"a",href:a+s,display:"flex",flex:1,sx:{textDecoration:"none"}},e.createElement(o,null,e.createElement(l,{sx:{padding:0,textTransform:"initial",flex:1},"aria-label":"log in with google"},e.createElement(i,{direction:"row",alignItems:"center",p:0,flex:1,fontFamily:"Roboto, sans-serif",fontSize:"14px",display:"inline-flex",color:"rgb(255 255, 255)",boxShadow:"rgb(0 0 0 / 24%) 0px 2px 2px 0px rgb(0 0 0 / 24%) 0px 0px 1px 0px",borderRadius:"4px",border:"1px solid transparent",fontWeight:"500",sx:{backgroundColor:"rgb(66 133, 244)"}},e.createElement(o,{padding:"11px",display:"flex",border:"1px solid rgb(66, 133, 244)",borderRadius:"4px",sx:{background:"rgb(255, 255, 255)"}},e.createElement(L,{"aria-hidden":"true"})),e.createElement(o,{padding:"10px",flex:1},e.createElement(c,{sx:{color:"white"},fontWeight:700,fontFamily:"Roboto, sans-serif",fontSize:"14px",height:"20px"},"Continue with Google"))))))},exports.NileProvider=r=>{const{children:n,theme:a,slotProps:o,tenantId:l,QueryProvider:i=M,appUrl:c,apiUrl:s="https://api.thenile.dev",api:u}=r,m=e.useMemo((()=>({api:u??new t({basePath:c,credentials:"include"}),tenantId:String(l),apiUrl:s})),[u,s,c,l]);return e.createElement(i,null,e.createElement(A,{slotProps:o?.provider,theme:a},e.createElement(P,{value:m},n)))},exports.Okta=function(t){const{callbackUrl:r,providers:n,...a}=t;if(!n)return null;const o=n?.find((e=>"okta"===e.provider));return e.createElement(_,{...a,config:o,providerName:"Okta",configurationGuide:e.createElement(J,{callbackUrl:r})})},exports.SSOForm=_,exports.SingleSignOnForm=function(t){const{attributes:n,onSuccess:a,onError:o,beforeMutate:l,nextButtonText:i="Next",loginButtonText:c="Log in",disableSSO:s=!1}=t,u=R(),[m,d]=e.useState(s?c:i),p=r.useMutation((async e=>{const t=(l&&l(e))??e;return await u.auth.login({loginRequest:{email:t.email,password:t.password},sso:!s})}),{onSuccess:(e,t)=>{e&&(e?.redirectURI?window.location.href=e.redirectURI:m!==c?d(c):a&&a(e,t))},onError:(e,t)=>{m===c?o&&o(e,t):d(c)}}),b=e.useMemo((()=>{const e=[{name:"email",label:"Email",type:exports.FormAttributeType.Text,defaultValue:"",required:!0}];return m===c&&e.push({name:"password",label:"Password",type:exports.FormAttributeType.Password,defaultValue:"",required:!0}),n&&n.length>0?e.concat(n):e}),[n,m,c]);return e.createElement(G,{mutation:p,buttonText:m,attributes:b})},exports.UserLoginForm=function(t){const[n,a]=e.useState(),{attributes:o,onSuccess:l,onError:c,beforeMutate:u}=t,m=R(),d=r.useMutation((async e=>{a(void 0);const t=(u&&u(e))??e;return await m.auth.login({loginRequest:t})}),{onSuccess:l,onError:c}),p=e.useMemo((()=>{const e=[{name:"email",label:"Email",type:exports.FormAttributeType.Text,defaultValue:"",required:!0},{name:"password",label:"Password",type:exports.FormAttributeType.Password,defaultValue:"",required:!0}];return o&&o.length>0?e.concat(o):e}),[o]);return e.createElement(i,{gap:2},n?e.createElement(s,{color:"danger"},n):null,e.createElement(G,{mutation:d,buttonText:"Log in",attributes:p}))},exports.UserSignupForm=function(t){const[n,a]=e.useState(),{buttonText:o="Sign up",onSuccess:l,onError:c,attributes:u,beforeMutate:m}=t,d=R(),p=r.useMutation((async e=>{a(void 0);const t=(m&&m(e))??e,{email:r,password:n,preferredName:o,newTenant:l,...i}=t;return Object.keys(i).length>0&&console.warn("additional metadata not supported yet."),d.auth.signUp({signUpRequest:{email:r,password:n,preferredName:o,newTenant:l}})}),{onSuccess:l,onError:(e,t)=>{a(e.message),c&&c(e,t)}}),b=e.useMemo((()=>{const e=[{name:"email",label:"Email",type:exports.FormAttributeType.Text,defaultValue:"",required:!0},{name:"password",label:"Password",type:exports.FormAttributeType.Password,defaultValue:"",required:!0}];return u&&u.length>0?e.concat(u):e}),[u]);return e.createElement(i,{gap:2},n?e.createElement(s,{color:"danger"},n):null,e.createElement(G,{mutation:p,buttonText:o,attributes:b}))},exports.UserTenantList=function(t){const{data:r,allowCreation:n=!0,buttonText:a="Add a user",onUserCreateSuccess:o,slots:l,include:c=["email","preferedName"]}=t,s={width:"100%",height:"100%",...l?.dataGrid??{}},[u,m]=function(t,r){const n=function(){const[t,r]=e.useState();return e.useEffect((()=>{const e=document.createElement("canvas").getContext("2d");e&&(e.font="18px Roboto",r(e))}),[]),t}(),[a,o]=e.useMemo((()=>((e,t,r)=>{if(!e)return[[],[]];const n=e.map(Q),a=Object.keys(n[0]),o={},l=a?.map((e=>{const a=function(e,t,r){let n=r&&e?r.measureText(String(e)).width:50;n+=27;let a=n;return a=16+Math.ceil(r?r.measureText(t.reduce(((t,r)=>{let n=r[String(e)];return null==n&&(n=""),n=n?.toString(),t.length>n.length?t:n}),"")).width:50),a<n&&(a=n),a+=8,a}(e,n,t),l=e.slice();if(r.includes(l))return null==o[l]?o[l]=l.length:o[l]+=1,{field:l.padEnd(o[l]),headerName:l.padEnd(o[l]),width:a}})).filter(Boolean)??[];return[l,n]})(t,n,r)),[t,n,r]);return[a,o]}(r,c);return e.createElement(i,{flex:1},e.createElement(W,{allowCreation:n,buttonText:a,onUserCreateSuccess:o}),e.createElement(T.DataGrid,{sx:s,rows:m,columns:u,hideFooter:!0}))};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("@niledatabase/browser"),r=require("@tanstack/react-query"),n=require("@mui/material/CssBaseline"),a=require("@mui/joy/styles"),o=require("@mui/joy/Box"),l=require("@mui/joy/Button"),i=require("@mui/joy/Stack"),c=require("@mui/joy/Typography"),s=require("@mui/joy/Alert"),u=require("react-hook-form"),m=require("@mui/joy/Input"),d=require("@mui/joy/FormControl"),p=require("@mui/joy/FormHelperText"),b=require("@mui/icons-material/Error"),f=require("@mui/joy/FormLabel"),g=require("@mui/joy/Select"),E=require("@mui/joy/Option"),h=require("@mui/joy/Tooltip"),x=require("@mui/joy"),y=require("@mui/joy/Checkbox"),w=require("@mui/joy/List"),v=require("@mui/joy/ListItem"),T=require("@mui/x-data-grid"),S=require("@mui/icons-material/Add"),C=require("@mui/icons-material/CopyAll"),q=require("@mui/icons-material/CheckCircleOutlined"),k=require("next-auth/react");function F(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,t}var j=F(e);function A({theme:t,children:r,slotProps:o}){return e.createElement(a.CssVarsProvider,{...o,theme:t},e.createElement(n,{enableColorScheme:!0}),r)}const U=new r.QueryClient,P=e.createContext({api:new t({basePath:"https://api.thenile.dev",credentials:"include"}),apiUrl:""}),{Provider:O}=P,M=({children:t})=>e.createElement(r.QueryClientProvider,{client:U},t),I=()=>e.useContext(P),R=()=>{const{apiUrl:t,tenantId:r,appUrl:n}=I();return e.useMemo((()=>({tenantId:r,apiUrl:t,appUrl:n})),[t,r,n])},B=()=>I().api;var V;function D(){return D=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},D.apply(this,arguments)}var L,N=function(e){return j.createElement("svg",D({xmlns:"http://www.w3.org/2000/svg",width:18,height:18},e),V||(V=j.createElement("g",{fillRule:"evenodd"},j.createElement("path",{fill:"#EA4335",d:"M9 3.48c1.69 0 2.83.73 3.48 1.34l2.54-2.48C13.46.89 11.43 0 9 0 5.48 0 2.44 2.02.96 4.96l2.91 2.26C4.6 5.05 6.62 3.48 9 3.48"}),j.createElement("path",{fill:"#4285F4",d:"M17.64 9.2c0-.74-.06-1.28-.19-1.84H9v3.34h4.96c-.1.83-.64 2.08-1.84 2.92l2.84 2.2c1.7-1.57 2.68-3.88 2.68-6.62"}),j.createElement("path",{fill:"#FBBC05",d:"M3.88 10.78A5.5 5.5 0 0 1 3.58 9c0-.62.11-1.22.29-1.78L.96 4.96A9 9 0 0 0 0 9c0 1.45.35 2.82.96 4.04z"}),j.createElement("path",{fill:"#34A853",d:"M9 18c2.43 0 4.47-.8 5.96-2.18l-2.84-2.2c-.76.53-1.78.9-3.12.9-2.38 0-4.4-1.57-5.12-3.74L.97 13.04C2.45 15.98 5.48 18 9 18"}),j.createElement("path",{fill:"none",d:"M0 0h18v18H0z"}))))};function $(e){const{options:t,attribute:r,display:n,helperText:a}=e,{watch:l,control:s}=u.useFormContext(),m=l(r.name),d={};return a&&(d.color="danger"),j.createElement(u.Controller,{name:r.name,rules:{required:Boolean(r.required)},control:s,render:({field:e})=>j.createElement(i,null,j.createElement(f,{htmlFor:`${e.name}`},n.label),j.createElement(o,{role:"group","aria-labelledby":r.name,sx:{borderRadius:"var(--joy-radius-sm)",p:.5,border:a?"1px solid var(--joy-palette-danger-outlinedBorder)":"none"}},j.createElement(w,{orientation:"horizontal",wrap:!0,sx:{"--List-gap":"8px"}},t.map((n=>(d.id=String(n.value),j.createElement(v,{key:`${n.value}-${n.label}`},j.createElement(y,{overlay:t.length>1,...d,checked:m.includes(n.value),disableIcon:t.length>1,variant:"soft",label:n.label,onChange:t=>{if(r.allowMultiple)if(t.target.checked)e.onChange(m?m.concat(n.value):[n.value]);else{const t=m.filter((e=>e!==n.value));e.onChange(t.length>0?t:"")}else e.onChange(t.target.checked?n.value:"")}}))))))),j.createElement(c,{sx:{color:"var(--joy-palette-danger-500)"},level:"body-sm"},a))})}exports.FormAttributeType=void 0,(L=exports.FormAttributeType||(exports.FormAttributeType={})).Text="text",L.Password="password",L.Select="select",L.Number="number",L.Float="float",L.Checkbox="checkbox",L.Switch="switch";const z=e=>!0===e.allowMultiple&&!Array.isArray(e.defaultValue)&&e.defaultValue?"number"==typeof e.defaultValue?[e.defaultValue]:[String(e.defaultValue)]:e.defaultValue??"";function G(t){const{error:r,attr:n}=t;return r?e.createElement(h,{title:r,color:"danger",sx:{cursor:"pointer"}},e.createElement(f,null,n.label??n.name,e.createElement(b,{sx:{ml:.5,"--Icon-color":"#c41c1c"},fontSize:"small"}))):e.createElement(f,null,n.label??n.name)}function H(t){const{mutation:r,buttonText:n,attributes:a,cancelButton:c,loading:s,successMessage:b}=t,f=e.useMemo((()=>a.reduce(((e,t)=>(e[t.name]=z(t),e)),{})),[a]),h=u.useForm({defaultValues:f}),{register:y,control:w,handleSubmit:v,formState:{errors:T}}=h,S=e.useCallback((e=>{r.mutate(e)}),[r]);return e.createElement(u.FormProvider,{...h},e.createElement(i,{component:"form",onSubmit:v((e=>S(e))),spacing:2},a.map((t=>{const r={},n={key:t.name,label:t.label??t.name,id:t.label??t.name,placeholder:t.placeholder??t.label??t.name,error:Boolean(T[t.name]),disabled:Boolean(t.disabled)},a=t.options??[],l=t.helpText??"";let c="";switch(t.required&&(c=T[t.name]?`${t.label??t.name} is required`:"",r.required=!0),t.type){case exports.FormAttributeType.Switch:return e.createElement(d,{key:n.key,id:n.id,orientation:"horizontal",sx:{alignItems:"center"}},e.createElement(o,null,e.createElement(G,{error:c,attr:t}),e.createElement(p,{id:`${t.name}-helper-text`},l)),e.createElement(u.Controller,{control:w,rules:{required:Boolean(t.required)},name:t.name,render:({field:r})=>{const n={};return T[t.name]&&(n.color="danger"),e.createElement(x.Switch,{id:`switch-field-${t.name}`,...n,...r,checked:Boolean(r.value),onChange:e=>{r.onChange(e.target.checked)},color:r.value?"success":"neutral",endDecorator:r.value?a[0].label:a[1].label})}}));case exports.FormAttributeType.Checkbox:return e.createElement($,{key:n.key,attribute:t,display:n,options:a,helperText:l});case exports.FormAttributeType.Select:return e.createElement(d,{key:n.key,id:n.id},e.createElement(G,{error:c,attr:t}),e.createElement(u.Controller,{control:w,rules:{required:Boolean(t.required)},name:t.name,render:({field:r})=>{const o={};T[t.name]&&(o.color="danger");const c=String(r.value);return e.createElement(i,null,e.createElement(g,{id:`select-field-${t.name}`,placeholder:`${n.placeholder}...`,...o,...r,value:c,onChange:(e,t)=>{r.onChange(t)}},a.map((t=>e.createElement(E,{key:String(t.value??""),value:t.value},t.label)))),e.createElement(p,{id:`${t.name}-helper-text`},l))}}));case exports.FormAttributeType.Password:return e.createElement(d,{key:n.key,id:n.id},e.createElement(G,{error:c,attr:t}),e.createElement(m,{...n,...y(t.name,r),type:exports.FormAttributeType.Password}),e.createElement(p,{id:`${t.name}-helper-text`},l));case exports.FormAttributeType.Number:return e.createElement(d,{key:n.key,id:n.id},e.createElement(G,{error:c,attr:t}),e.createElement(m,{...n,...y(t.name,r),type:exports.FormAttributeType.Number}),e.createElement(p,{id:`${t.name}-helper-text`},l));case exports.FormAttributeType.Text:default:return e.createElement(d,{key:n.key,id:n.id},e.createElement(G,{error:c,attr:t}),e.createElement(m,{...n,...y(t.name,r)}),e.createElement(p,{id:`${t.name}-helper-text`},l))}})),c?e.createElement(i,{spacing:2,direction:"row"},c,e.createElement(o,null,e.createElement(l,{type:"submit"},n))):e.createElement(o,null,e.createElement(i,{direction:"row",gap:2},e.createElement(l,{type:"submit",loading:s},n),b))))}function W(t){const{open:n,setOpen:a,refetch:o}=t,{tenantId:l}=R(),i=B(),[c,s]=e.useState(),{watch:m,register:d,handleSubmit:p}=u.useForm(),b=m("email");e.useEffect((()=>{null!=c&&s()}),[b]);const f=r.useMutation((e=>i.users.createTenantUser({signUpRequest:e,tenantId:String(l)})),{onSuccess(e){o&&o(e),a(!1)},onError(e){e instanceof Error&&s(e.message)}}),g=e.useCallback((async e=>{s(""),f.mutate(e)}),[f]);return e.createElement(x.Modal,{open:n},e.createElement(x.ModalDialog,null,e.createElement(x.Stack,{spacing:2},e.createElement(x.Typography,{level:"h4"},"Create user"),e.createElement(e.Fragment,null,c&&e.createElement(x.Typography,{color:"danger"},c)),e.createElement(x.Stack,{component:"form",sx:{width:"40ch"},spacing:1,onSubmit:p((e=>g(e)))},e.createElement(x.FormControl,{sx:{"--FormHelperText-color":"var(--joy-palette-danger-500)"}},e.createElement(x.FormLabel,{htmlFor:"email"},"Email"),e.createElement(x.Input,{...d("email"),fullWidth:!0,size:"lg",id:"email",name:"email",autoComplete:"current-email",required:!0,error:Boolean(c)})),e.createElement(x.FormControl,{sx:{"--FormHelperText-color":"var(--joy-palette-danger-500)"}},e.createElement(x.FormLabel,{htmlFor:"password"},"Password"),e.createElement(x.Input,{...d("password"),fullWidth:!0,size:"lg",id:"password",autoComplete:"current-password",type:"password",required:!0})),e.createElement(x.Stack,{direction:"row",sx:{pt:2},spacing:2},e.createElement(x.Button,{onClick:()=>a(!1),variant:"plain"},"Cancel"),e.createElement(x.Button,{type:"submit"},"Create"))))))}function Q(t){const{allowCreation:r,buttonText:n,onUserCreateSuccess:a}=t,[o,c]=e.useState(!1);return r?e.createElement(i,{alignItems:"flex-end",gap:1},e.createElement(W,{open:o,setOpen:c,refetch:a}),e.createElement(l,{startDecorator:e.createElement(S,null),size:"sm",onClick:()=>c(!0)},n)):null}const _=e=>Object.keys(e).reduce(((t,r)=>{const n=e[r];return t[r]=n instanceof Set?Array.from(n).join(", "):Array.isArray(n)?n.join(", "):n,t}),{});function J(t){const{config:n,providerName:a,onSuccess:o,onError:l,allowEdit:u=!0,configurationGuide:m}=t,d=B(),[p,b]=e.useState(!1),[f,g]=e.useState(!1),[E,h]=e.useState(n),x=e.useRef(),y=e.useMemo((()=>{const e=[{name:"enabled",label:"Allow Okta logins",type:exports.FormAttributeType.Switch,defaultValue:!0===E?.enabled,options:[{label:"Enabled"},{label:"Disabled"}],disabled:!u},{name:"clientId",label:"Client id",type:exports.FormAttributeType.Text,defaultValue:E?.clientId??"",required:!0,disabled:!u},{name:"configUrl",label:"Config url",type:exports.FormAttributeType.Text,defaultValue:E?.configUrl??"",helpText:"The URL of the .well-known/openid-configuration for the identity provider",required:!0,disabled:!u},{name:"emailDomains",label:"Email domains",type:exports.FormAttributeType.Text,defaultValue:E?.emailDomains?.join(", ")??"",required:!0,helpText:"A comma seperated list of email domains (yourDomain.com) to be used",disabled:!u}];return E?.clientId||e.splice(2,0,{name:"clientSecret",label:"Client secret",type:exports.FormAttributeType.Password,defaultValue:"",required:!0,disabled:!u}),e}),[u,E?.clientId,E?.configUrl,E?.emailDomains,E?.enabled]),w=r.useMutation((e=>{b(!0);const t={providerName:a.toLowerCase(),updateProviderRequest:{...e,emailDomains:e.emailDomains.split(",")}};return null!=E?d.auth.updateProvider(t):d.auth.createProvider(t)}),{onSuccess:(e,t)=>{h(e),g(!0),o&&o(e,t)},onError:l,onSettled:(e,t,r)=>{b(!1),x.current&&clearTimeout(x.current),x.current=setTimeout((()=>{g(!1)}),3e3),e||(t&&!t?.message.includes("Unterminated string")||h({enabled:r.enabled,clientId:r.clientId,configUrl:r.configUrl,emailDomains:r.emailDomains.split(", ")}),g(!0),o&&o(e,r))}});return e.useEffect((()=>{})),e.createElement(i,{gap:2,position:"relative"},e.createElement(c,{level:"h4"},"Step 1"),m,e.createElement(c,{level:"h4"},"Step 2"),e.createElement(H,{mutation:w,buttonText:"Update",attributes:y,loading:p,successMessage:e.createElement(s,{color:"success",sx:{opacity:f?1:0,transition:"opacity 200ms",height:"0.9rem"},startDecorator:e.createElement(q,null)},e.createElement(c,{textAlign:"center",fontSize:"sm"},"Provider updated"))}))}function K({callbackUrl:t}){const[r,n]=e.useState(!1),a=e.useRef();return e.useEffect((()=>{a.current&&clearTimeout(a.current),a.current=setTimeout((()=>{n(!1)}),3250)}),[r]),e.createElement(i,{gap:2},e.createElement(c,null,"In order for Okta to redirect properly, provide the following URL as the"," ",e.createElement(o,{component:"span",sx:{fontFamily:"monospace"}},"Sign-in redirect URIs")," ","in the admin configuration of your application."),e.createElement(m,{onClick:async()=>{t&&(await navigator.clipboard.writeText(t),n(!0))},sx:e=>({input:{cursor:"pointer"},span:{cursor:"pointer"},"&:hover svg":{"--Icon-color":e.palette.primary[500]}}),value:t,readOnly:!0,endDecorator:e.createElement(h,{title:"Copy Okta redirect URL"},e.createElement(o,{position:"relative",width:r?"82px":"24px",height:"24px"},e.createElement(o,{position:"absolute",top:"0",left:"0",sx:{opacity:r?0:1,transition:"opacity 300ms"}},e.createElement(C,null)),e.createElement(o,{position:"absolute",top:"0",left:"0",sx:{opacity:r?1:0,transition:"opacity 300ms"}},e.createElement(i,{direction:"row",gap:1},e.createElement(q,null),e.createElement(c,{color:"primary"},"Copied!")))))}))}exports.GoogleLoginButton=function(t){const{newTenantName:r}=t,{apiUrl:n}=R();n||console.error("apiUrl is missing from <NileProvider />");const a=`${n}/users/oidc/google/login`,s=r?"?newTenant="+encodeURIComponent(r):"";return e.createElement(o,{component:"a",href:a+s,display:"flex",flex:1,sx:{textDecoration:"none"}},e.createElement(o,null,e.createElement(l,{sx:{padding:0,textTransform:"initial",flex:1},"aria-label":"log in with google"},e.createElement(i,{direction:"row",alignItems:"center",p:0,flex:1,fontFamily:"Roboto, sans-serif",fontSize:"14px",display:"inline-flex",color:"rgb(255 255, 255)",boxShadow:"rgb(0 0 0 / 24%) 0px 2px 2px 0px rgb(0 0 0 / 24%) 0px 0px 1px 0px",borderRadius:"4px",border:"1px solid transparent",fontWeight:"500",sx:{backgroundColor:"rgb(66 133, 244)"}},e.createElement(o,{padding:"11px",display:"flex",border:"1px solid rgb(66, 133, 244)",borderRadius:"4px",sx:{background:"rgb(255, 255, 255)"}},e.createElement(N,{"aria-hidden":"true"})),e.createElement(o,{padding:"10px",flex:1},e.createElement(c,{sx:{color:"white"},fontWeight:700,fontFamily:"Roboto, sans-serif",fontSize:"14px",height:"20px"},"Continue with Google"))))))},exports.NileProvider=r=>{const{children:n,theme:a,slotProps:o,tenantId:l,QueryProvider:i=M,appUrl:c,apiUrl:s="https://api.thenile.dev",api:u}=r,m=e.useMemo((()=>({api:u??new t({basePath:c,credentials:"include"}),tenantId:String(l),apiUrl:s})),[u,s,c,l]);return e.createElement(i,null,e.createElement(A,{slotProps:o?.provider,theme:a},e.createElement(O,{value:m},n)))},exports.Okta=function(t){const{callbackUrl:r,providers:n,...a}=t;if(!n)return null;const o=n?.find((e=>"okta"===e.provider));return e.createElement(J,{...a,config:o,providerName:"Okta",configurationGuide:e.createElement(K,{callbackUrl:r})})},exports.SSOForm=J,exports.SingleSignOnForm=function(t){const{attributes:n,onSuccess:a,onError:o,beforeMutate:l,nextButtonText:i="Next",loginButtonText:c="Log in",disableSSO:s=!1}=t,u=B(),[m,d]=e.useState(s?c:i),p=r.useMutation((async e=>{const t=(l&&l(e))??e;return await u.auth.login({loginRequest:{email:t.email,password:t.password},sso:!s})}),{onSuccess:(e,t)=>{e&&(e?.redirectURI?window.location.href=e.redirectURI:m!==c?d(c):a&&a(e,t))},onError:(e,t)=>{m===c?o&&o(e,t):d(c)}}),b=e.useMemo((()=>{const e=[{name:"email",label:"Email",type:exports.FormAttributeType.Text,defaultValue:"",required:!0}];return m===c&&e.push({name:"password",label:"Password",type:exports.FormAttributeType.Password,defaultValue:"",required:!0}),n&&n.length>0?e.concat(n):e}),[n,m,c]);return e.createElement(H,{mutation:p,buttonText:m,attributes:b})},exports.UserLoginForm=function(t){const[n,a]=e.useState(),{attributes:o,onSuccess:l,onError:c,beforeMutate:u}=t,m=B(),d=r.useMutation((async e=>{a(void 0);const t=(u&&u(e))??e;return await m.auth.login({loginRequest:t})}),{onSuccess:l,onError:c}),p=e.useMemo((()=>{const e=[{name:"email",label:"Email",type:exports.FormAttributeType.Text,defaultValue:"",required:!0},{name:"password",label:"Password",type:exports.FormAttributeType.Password,defaultValue:"",required:!0}];return o&&o.length>0?e.concat(o):e}),[o]);return e.createElement(i,{gap:2},n?e.createElement(s,{color:"danger"},n):null,e.createElement(H,{mutation:d,buttonText:"Log in",attributes:p}))},exports.UserSignupForm=function(t){const[n,a]=e.useState(),{buttonText:o="Sign up",onSuccess:l,onError:c,attributes:u,beforeMutate:m}=t,d=B(),p=r.useMutation((async e=>{a(void 0);const t=(m&&m(e))??e,{email:r,password:n,preferredName:o,newTenant:l,...i}=t;return Object.keys(i).length>0&&console.warn("additional metadata not supported yet."),d.auth.signUp({signUpRequest:{email:r,password:n,preferredName:o,newTenant:l}})}),{onSuccess:l,onError:(e,t)=>{a(e.message),c&&c(e,t)}}),b=e.useMemo((()=>{const e=[{name:"email",label:"Email",type:exports.FormAttributeType.Text,defaultValue:"",required:!0},{name:"password",label:"Password",type:exports.FormAttributeType.Password,defaultValue:"",required:!0}];return u&&u.length>0?e.concat(u):e}),[u]);return e.createElement(i,{gap:2},n?e.createElement(s,{color:"danger"},n):null,e.createElement(H,{mutation:p,buttonText:o,attributes:b}))},exports.UserTenantList=function(t){const{data:r,allowCreation:n=!0,buttonText:a="Add a user",onUserCreateSuccess:o,slots:l,include:c=["email","preferedName"]}=t,s={width:"100%",height:"100%",...l?.dataGrid??{}},[u,m]=function(t,r){const n=function(){const[t,r]=e.useState();return e.useEffect((()=>{const e=document.createElement("canvas").getContext("2d");e&&(e.font="18px Roboto",r(e))}),[]),t}(),[a,o]=e.useMemo((()=>((e,t,r)=>{if(!e)return[[],[]];const n=e.map(_),a=Object.keys(n[0]),o={},l=a?.map((e=>{const a=function(e,t,r){let n=r&&e?r.measureText(String(e)).width:50;n+=27;let a=n;return a=16+Math.ceil(r?r.measureText(t.reduce(((t,r)=>{let n=r[String(e)];return null==n&&(n=""),n=n?.toString(),t.length>n.length?t:n}),"")).width:50),a<n&&(a=n),a+=8,a}(e,n,t),l=e.slice();if(r.includes(l))return null==o[l]?o[l]=l.length:o[l]+=1,{field:l.padEnd(o[l]),headerName:l.padEnd(o[l]),width:a}})).filter(Boolean)??[];return[l,n]})(t,n,r)),[t,n,r]);return[a,o]}(r,c);return e.createElement(i,{flex:1},e.createElement(Q,{allowCreation:n,buttonText:a,onUserCreateSuccess:o}),e.createElement(T.DataGrid,{sx:s,rows:m,columns:u,hideFooter:!0}))},Object.keys(k).forEach((function(e){"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return k[e]}})}));
|
|
2
2
|
//# sourceMappingURL=react.cjs.production.min.js.map
|