iobroker.admin 7.4.4 → 7.4.8
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/README.md +10 -8
- package/adminWww/asset-manifest.json +37 -37
- package/adminWww/index.html +1 -1
- package/adminWww/static/js/1737.08641cc2.chunk.js +3 -0
- package/adminWww/static/js/1737.08641cc2.chunk.js.map +1 -0
- package/adminWww/static/js/1892.3c30ecff.chunk.js.map +1 -1
- package/adminWww/static/js/{288.20da45b9.chunk.js → 288.23e8413f.chunk.js} +2 -2
- package/adminWww/static/js/288.23e8413f.chunk.js.map +1 -0
- package/adminWww/static/js/2930.8e88fcf2.chunk.js.LICENSE.txt +1 -1
- package/adminWww/static/js/2930.8e88fcf2.chunk.js.map +1 -1
- package/adminWww/static/js/3363.a4c36649.chunk.js.map +1 -1
- package/adminWww/static/js/3834.d81ffc60.chunk.js +2 -0
- package/adminWww/static/js/3834.d81ffc60.chunk.js.map +1 -0
- package/adminWww/static/js/4289.cbde8e52.chunk.js +2 -0
- package/adminWww/static/js/4289.cbde8e52.chunk.js.map +1 -0
- package/adminWww/static/js/471.8a82d825.chunk.js.map +1 -1
- package/adminWww/static/js/4720.6112531a.chunk.js +2 -0
- package/adminWww/static/js/4720.6112531a.chunk.js.map +1 -0
- package/adminWww/static/js/5503.a4ce73d8.chunk.js +3 -0
- package/adminWww/static/js/5503.a4ce73d8.chunk.js.map +1 -0
- package/adminWww/static/js/5687.d7fa0a4e.chunk.js +2 -0
- package/adminWww/static/js/5687.d7fa0a4e.chunk.js.map +1 -0
- package/adminWww/static/js/{6361.48a28196.chunk.js → 6361.ec86271d.chunk.js} +2 -2
- package/adminWww/static/js/6361.ec86271d.chunk.js.map +1 -0
- package/adminWww/static/js/6603.ee9b0df5.chunk.js +3 -0
- package/adminWww/static/js/6603.ee9b0df5.chunk.js.map +1 -0
- package/adminWww/static/js/6853.ff130602.chunk.js +2 -0
- package/adminWww/static/js/6853.ff130602.chunk.js.map +1 -0
- package/adminWww/static/js/7137.7b5ca6b5.chunk.js.map +1 -1
- package/adminWww/static/js/7424.223daaa3.chunk.js +2 -0
- package/adminWww/static/js/7424.223daaa3.chunk.js.map +1 -0
- package/adminWww/static/js/{8144.ae502bba.chunk.js → 8144.5989b02c.chunk.js} +3 -3
- package/adminWww/static/js/8144.5989b02c.chunk.js.map +1 -0
- package/adminWww/static/js/8387.2cb15163.chunk.js.map +1 -1
- package/adminWww/static/js/9072.4505ce12.chunk.js +2 -0
- package/adminWww/static/js/9072.4505ce12.chunk.js.map +1 -0
- package/adminWww/static/js/9086.a4fdc813.chunk.js +2 -0
- package/adminWww/static/js/9086.a4fdc813.chunk.js.map +1 -0
- package/adminWww/static/js/9228.cf388444.chunk.js +3 -0
- package/adminWww/static/js/9228.cf388444.chunk.js.map +1 -0
- package/adminWww/static/js/9701.2178b9bd.chunk.js +2 -0
- package/adminWww/static/js/9701.2178b9bd.chunk.js.map +1 -0
- package/adminWww/static/js/9731.b09a7023.chunk.js +3 -0
- package/adminWww/static/js/{9731.f67b583c.chunk.js.LICENSE.txt → 9731.b09a7023.chunk.js.LICENSE.txt} +1 -1
- package/adminWww/static/js/9731.b09a7023.chunk.js.map +1 -0
- package/adminWww/static/js/main.a833ed54.js +2 -0
- package/adminWww/static/js/main.a833ed54.js.map +1 -0
- package/build-backend/main.js +1 -1
- package/build-backend/main.js.map +1 -1
- package/io-package.json +27 -27
- package/package.json +5 -5
- package/adminWww/static/js/288.20da45b9.chunk.js.map +0 -1
- package/adminWww/static/js/38.e125c16b.chunk.js +0 -3
- package/adminWww/static/js/38.e125c16b.chunk.js.map +0 -1
- package/adminWww/static/js/3834.2e04eb51.chunk.js +0 -2
- package/adminWww/static/js/3834.2e04eb51.chunk.js.map +0 -1
- package/adminWww/static/js/4289.e9a5790f.chunk.js +0 -2
- package/adminWww/static/js/4289.e9a5790f.chunk.js.map +0 -1
- package/adminWww/static/js/4720.4bbc23ec.chunk.js +0 -2
- package/adminWww/static/js/4720.4bbc23ec.chunk.js.map +0 -1
- package/adminWww/static/js/5503.751d48e4.chunk.js +0 -3
- package/adminWww/static/js/5503.751d48e4.chunk.js.map +0 -1
- package/adminWww/static/js/5687.c249e41f.chunk.js +0 -2
- package/adminWww/static/js/5687.c249e41f.chunk.js.map +0 -1
- package/adminWww/static/js/6361.48a28196.chunk.js.map +0 -1
- package/adminWww/static/js/6603.614b4df4.chunk.js +0 -3
- package/adminWww/static/js/6603.614b4df4.chunk.js.map +0 -1
- package/adminWww/static/js/6853.f9170a75.chunk.js +0 -2
- package/adminWww/static/js/6853.f9170a75.chunk.js.map +0 -1
- package/adminWww/static/js/7424.98e61818.chunk.js +0 -2
- package/adminWww/static/js/7424.98e61818.chunk.js.map +0 -1
- package/adminWww/static/js/7863.92e61020.chunk.js +0 -2
- package/adminWww/static/js/7863.92e61020.chunk.js.map +0 -1
- package/adminWww/static/js/8144.ae502bba.chunk.js.map +0 -1
- package/adminWww/static/js/9072.4eaaedc2.chunk.js +0 -2
- package/adminWww/static/js/9072.4eaaedc2.chunk.js.map +0 -1
- package/adminWww/static/js/9228.3ce3911c.chunk.js +0 -3
- package/adminWww/static/js/9228.3ce3911c.chunk.js.map +0 -1
- package/adminWww/static/js/9701.b2813984.chunk.js +0 -2
- package/adminWww/static/js/9701.b2813984.chunk.js.map +0 -1
- package/adminWww/static/js/9731.f67b583c.chunk.js +0 -3
- package/adminWww/static/js/9731.f67b583c.chunk.js.map +0 -1
- package/adminWww/static/js/main.11639e29.js +0 -2
- package/adminWww/static/js/main.11639e29.js.map +0 -1
- /package/adminWww/static/js/{38.e125c16b.chunk.js.LICENSE.txt → 1737.08641cc2.chunk.js.LICENSE.txt} +0 -0
- /package/adminWww/static/js/{5503.751d48e4.chunk.js.LICENSE.txt → 5503.a4ce73d8.chunk.js.LICENSE.txt} +0 -0
- /package/adminWww/static/js/{6603.614b4df4.chunk.js.LICENSE.txt → 6603.ee9b0df5.chunk.js.LICENSE.txt} +0 -0
- /package/adminWww/static/js/{8144.ae502bba.chunk.js.LICENSE.txt → 8144.5989b02c.chunk.js.LICENSE.txt} +0 -0
- /package/adminWww/static/js/{9228.3ce3911c.chunk.js.LICENSE.txt → 9228.cf388444.chunk.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static/js/5503.a4ce73d8.chunk.js","mappings":"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","sources":["../../../../node_modules/@mui/material/colors/amber.js","../../../../node_modules/@mui/material/colors/blueGrey.js","../../../../node_modules/@mui/material/styles/ThemeProviderNoVars.js","../../../../node_modules/@mui/material/styles/ThemeProvider.js","../../../../node_modules/@mui/system/esm/InitColorSchemeScript/InitColorSchemeScript.js","../../../../node_modules/@mui/system/esm/cssVars/useCurrentColorScheme.js","../../../../node_modules/@mui/material/InitColorSchemeScript/InitColorSchemeScript.js","../../../../node_modules/@mui/material/styles/ThemeProviderWithVars.js","../../../../node_modules/@mui/system/esm/cssVars/createCssVarsProvider.js","../../../../node_modules/@mui/private-theming/useTheme/ThemeContext.js","../../../../node_modules/@mui/private-theming/useTheme/useTheme.js","../../../../node_modules/@mui/styled-engine/GlobalStyles/GlobalStyles.js","../../../../node_modules/@mui/styled-engine/StyledEngineProvider/StyledEngineProvider.js","../../../../node_modules/@mui/system/esm/DefaultPropsProvider/DefaultPropsProvider.js","../../../../node_modules/@mui/private-theming/ThemeProvider/nested.js","../../../../node_modules/@mui/private-theming/ThemeProvider/ThemeProvider.js","../../../../node_modules/@mui/system/esm/ThemeProvider/ThemeProvider.js","../../../../node_modules/@mui/system/esm/useThemeWithoutDefault/useThemeWithoutDefault.js","../../../../node_modules/@mui/utils/esm/resolveProps/resolveProps.js","../../../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../../node_modules/react/jsx-runtime.js"],"sourcesContent":["const amber = {\n 50: '#fff8e1',\n 100: '#ffecb3',\n 200: '#ffe082',\n 300: '#ffd54f',\n 400: '#ffca28',\n 500: '#ffc107',\n 600: '#ffb300',\n 700: '#ffa000',\n 800: '#ff8f00',\n 900: '#ff6f00',\n A100: '#ffe57f',\n A200: '#ffd740',\n A400: '#ffc400',\n A700: '#ffab00'\n};\nexport default amber;","const blueGrey = {\n 50: '#eceff1',\n 100: '#cfd8dc',\n 200: '#b0bec5',\n 300: '#90a4ae',\n 400: '#78909c',\n 500: '#607d8b',\n 600: '#546e7a',\n 700: '#455a64',\n 800: '#37474f',\n 900: '#263238',\n A100: '#cfd8dc',\n A200: '#b0bec5',\n A400: '#78909c',\n A700: '#455a64'\n};\nexport default blueGrey;","'use client';\n\nimport * as React from 'react';\nimport { ThemeProvider as SystemThemeProvider } from '@mui/system';\nimport THEME_ID from \"./identifier.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function ThemeProviderNoVars({\n theme: themeInput,\n ...props\n}) {\n const scopedTheme = THEME_ID in themeInput ? themeInput[THEME_ID] : undefined;\n return /*#__PURE__*/_jsx(SystemThemeProvider, {\n ...props,\n themeId: scopedTheme ? THEME_ID : undefined,\n theme: scopedTheme || themeInput\n });\n}","'use client';\n\nimport * as React from 'react';\nimport ThemeProviderNoVars from \"./ThemeProviderNoVars.js\";\nimport { CssVarsProvider } from \"./ThemeProviderWithVars.js\";\nimport THEME_ID from \"./identifier.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function ThemeProvider({\n theme,\n ...props\n}) {\n if (typeof theme === 'function') {\n return /*#__PURE__*/_jsx(ThemeProviderNoVars, {\n theme: theme,\n ...props\n });\n }\n const muiTheme = THEME_ID in theme ? theme[THEME_ID] : theme;\n if (!('colorSchemes' in muiTheme)) {\n return /*#__PURE__*/_jsx(ThemeProviderNoVars, {\n theme: theme,\n ...props\n });\n }\n return /*#__PURE__*/_jsx(CssVarsProvider, {\n theme: theme,\n ...props\n });\n}","/**\n * Split this component for RSC import\n */\nimport * as React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const DEFAULT_MODE_STORAGE_KEY = 'mode';\nexport const DEFAULT_COLOR_SCHEME_STORAGE_KEY = 'color-scheme';\nexport const DEFAULT_ATTRIBUTE = 'data-color-scheme';\nexport default function InitColorSchemeScript(options) {\n const {\n defaultMode = 'system',\n defaultLightColorScheme = 'light',\n defaultDarkColorScheme = 'dark',\n modeStorageKey = DEFAULT_MODE_STORAGE_KEY,\n colorSchemeStorageKey = DEFAULT_COLOR_SCHEME_STORAGE_KEY,\n attribute: initialAttribute = DEFAULT_ATTRIBUTE,\n colorSchemeNode = 'document.documentElement',\n nonce\n } = options || {};\n let setter = '';\n let attribute = initialAttribute;\n if (initialAttribute === 'class') {\n attribute = '.%s';\n }\n if (initialAttribute === 'data') {\n attribute = '[data-%s]';\n }\n if (attribute.startsWith('.')) {\n const selector = attribute.substring(1);\n setter += `${colorSchemeNode}.classList.remove('${selector}'.replace('%s', light), '${selector}'.replace('%s', dark));\n ${colorSchemeNode}.classList.add('${selector}'.replace('%s', colorScheme));`;\n }\n const matches = attribute.match(/\\[([^\\]]+)\\]/); // case [data-color-scheme=%s] or [data-color-scheme]\n if (matches) {\n const [attr, value] = matches[1].split('=');\n if (!value) {\n setter += `${colorSchemeNode}.removeAttribute('${attr}'.replace('%s', light));\n ${colorSchemeNode}.removeAttribute('${attr}'.replace('%s', dark));`;\n }\n setter += `\n ${colorSchemeNode}.setAttribute('${attr}'.replace('%s', colorScheme), ${value ? `${value}.replace('%s', colorScheme)` : '\"\"'});`;\n } else {\n setter += `${colorSchemeNode}.setAttribute('${attribute}', colorScheme);`;\n }\n return /*#__PURE__*/_jsx(\"script\", {\n suppressHydrationWarning: true,\n nonce: typeof window === 'undefined' ? nonce : ''\n // eslint-disable-next-line react/no-danger\n ,\n dangerouslySetInnerHTML: {\n __html: `(function() {\ntry {\n let colorScheme = '';\n const mode = localStorage.getItem('${modeStorageKey}') || '${defaultMode}';\n const dark = localStorage.getItem('${colorSchemeStorageKey}-dark') || '${defaultDarkColorScheme}';\n const light = localStorage.getItem('${colorSchemeStorageKey}-light') || '${defaultLightColorScheme}';\n if (mode === 'system') {\n // handle system mode\n const mql = window.matchMedia('(prefers-color-scheme: dark)');\n if (mql.matches) {\n colorScheme = dark\n } else {\n colorScheme = light\n }\n }\n if (mode === 'light') {\n colorScheme = light;\n }\n if (mode === 'dark') {\n colorScheme = dark;\n }\n if (colorScheme) {\n ${setter}\n }\n} catch(e){}})();`\n }\n }, \"mui-color-scheme-init\");\n}","'use client';\n\nimport * as React from 'react';\nimport { DEFAULT_MODE_STORAGE_KEY, DEFAULT_COLOR_SCHEME_STORAGE_KEY } from \"../InitColorSchemeScript/InitColorSchemeScript.js\";\nexport function getSystemMode(mode) {\n if (typeof window !== 'undefined' && typeof window.matchMedia === 'function' && mode === 'system') {\n const mql = window.matchMedia('(prefers-color-scheme: dark)');\n if (mql.matches) {\n return 'dark';\n }\n return 'light';\n }\n return undefined;\n}\nfunction processState(state, callback) {\n if (state.mode === 'light' || state.mode === 'system' && state.systemMode === 'light') {\n return callback('light');\n }\n if (state.mode === 'dark' || state.mode === 'system' && state.systemMode === 'dark') {\n return callback('dark');\n }\n return undefined;\n}\nexport function getColorScheme(state) {\n return processState(state, mode => {\n if (mode === 'light') {\n return state.lightColorScheme;\n }\n if (mode === 'dark') {\n return state.darkColorScheme;\n }\n return undefined;\n });\n}\nfunction initializeValue(key, defaultValue) {\n if (typeof window === 'undefined') {\n return undefined;\n }\n let value;\n try {\n value = localStorage.getItem(key) || undefined;\n if (!value) {\n // the first time that user enters the site.\n localStorage.setItem(key, defaultValue);\n }\n } catch {\n // Unsupported\n }\n return value || defaultValue;\n}\nexport default function useCurrentColorScheme(options) {\n const {\n defaultMode = 'light',\n defaultLightColorScheme,\n defaultDarkColorScheme,\n supportedColorSchemes = [],\n modeStorageKey = DEFAULT_MODE_STORAGE_KEY,\n colorSchemeStorageKey = DEFAULT_COLOR_SCHEME_STORAGE_KEY,\n storageWindow = typeof window === 'undefined' ? undefined : window,\n noSsr = false\n } = options;\n const joinedColorSchemes = supportedColorSchemes.join(',');\n const isMultiSchemes = supportedColorSchemes.length > 1;\n const [state, setState] = React.useState(() => {\n const initialMode = initializeValue(modeStorageKey, defaultMode);\n const lightColorScheme = initializeValue(`${colorSchemeStorageKey}-light`, defaultLightColorScheme);\n const darkColorScheme = initializeValue(`${colorSchemeStorageKey}-dark`, defaultDarkColorScheme);\n return {\n mode: initialMode,\n systemMode: getSystemMode(initialMode),\n lightColorScheme,\n darkColorScheme\n };\n });\n const [isClient, setIsClient] = React.useState(noSsr || !isMultiSchemes);\n React.useEffect(() => {\n setIsClient(true); // to rerender the component after hydration\n }, []);\n const colorScheme = getColorScheme(state);\n const setMode = React.useCallback(mode => {\n setState(currentState => {\n if (mode === currentState.mode) {\n // do nothing if mode does not change\n return currentState;\n }\n const newMode = mode ?? defaultMode;\n try {\n localStorage.setItem(modeStorageKey, newMode);\n } catch {\n // Unsupported\n }\n return {\n ...currentState,\n mode: newMode,\n systemMode: getSystemMode(newMode)\n };\n });\n }, [modeStorageKey, defaultMode]);\n const setColorScheme = React.useCallback(value => {\n if (!value) {\n setState(currentState => {\n try {\n localStorage.setItem(`${colorSchemeStorageKey}-light`, defaultLightColorScheme);\n localStorage.setItem(`${colorSchemeStorageKey}-dark`, defaultDarkColorScheme);\n } catch {\n // Unsupported\n }\n return {\n ...currentState,\n lightColorScheme: defaultLightColorScheme,\n darkColorScheme: defaultDarkColorScheme\n };\n });\n } else if (typeof value === 'string') {\n if (value && !joinedColorSchemes.includes(value)) {\n console.error(`\\`${value}\\` does not exist in \\`theme.colorSchemes\\`.`);\n } else {\n setState(currentState => {\n const newState = {\n ...currentState\n };\n processState(currentState, mode => {\n try {\n localStorage.setItem(`${colorSchemeStorageKey}-${mode}`, value);\n } catch {\n // Unsupported\n }\n if (mode === 'light') {\n newState.lightColorScheme = value;\n }\n if (mode === 'dark') {\n newState.darkColorScheme = value;\n }\n });\n return newState;\n });\n }\n } else {\n setState(currentState => {\n const newState = {\n ...currentState\n };\n const newLightColorScheme = value.light === null ? defaultLightColorScheme : value.light;\n const newDarkColorScheme = value.dark === null ? defaultDarkColorScheme : value.dark;\n if (newLightColorScheme) {\n if (!joinedColorSchemes.includes(newLightColorScheme)) {\n console.error(`\\`${newLightColorScheme}\\` does not exist in \\`theme.colorSchemes\\`.`);\n } else {\n newState.lightColorScheme = newLightColorScheme;\n try {\n localStorage.setItem(`${colorSchemeStorageKey}-light`, newLightColorScheme);\n } catch (error) {\n // Unsupported\n }\n }\n }\n if (newDarkColorScheme) {\n if (!joinedColorSchemes.includes(newDarkColorScheme)) {\n console.error(`\\`${newDarkColorScheme}\\` does not exist in \\`theme.colorSchemes\\`.`);\n } else {\n newState.darkColorScheme = newDarkColorScheme;\n try {\n localStorage.setItem(`${colorSchemeStorageKey}-dark`, newDarkColorScheme);\n } catch (error) {\n // Unsupported\n }\n }\n }\n return newState;\n });\n }\n }, [joinedColorSchemes, colorSchemeStorageKey, defaultLightColorScheme, defaultDarkColorScheme]);\n const handleMediaQuery = React.useCallback(event => {\n if (state.mode === 'system') {\n setState(currentState => {\n const systemMode = event?.matches ? 'dark' : 'light';\n\n // Early exit, nothing changed.\n if (currentState.systemMode === systemMode) {\n return currentState;\n }\n return {\n ...currentState,\n systemMode\n };\n });\n }\n }, [state.mode]);\n\n // Ref hack to avoid adding handleMediaQuery as a dep\n const mediaListener = React.useRef(handleMediaQuery);\n mediaListener.current = handleMediaQuery;\n React.useEffect(() => {\n if (typeof window.matchMedia !== 'function' || !isMultiSchemes) {\n return undefined;\n }\n const handler = (...args) => mediaListener.current(...args);\n\n // Always listen to System preference\n const media = window.matchMedia('(prefers-color-scheme: dark)');\n\n // Intentionally use deprecated listener methods to support iOS & old browsers\n media.addListener(handler);\n handler(media);\n return () => {\n media.removeListener(handler);\n };\n }, [isMultiSchemes]);\n\n // Handle when localStorage has changed\n React.useEffect(() => {\n if (storageWindow && isMultiSchemes) {\n const handleStorage = event => {\n const value = event.newValue;\n if (typeof event.key === 'string' && event.key.startsWith(colorSchemeStorageKey) && (!value || joinedColorSchemes.match(value))) {\n // If the key is deleted, value will be null then reset color scheme to the default one.\n if (event.key.endsWith('light')) {\n setColorScheme({\n light: value\n });\n }\n if (event.key.endsWith('dark')) {\n setColorScheme({\n dark: value\n });\n }\n }\n if (event.key === modeStorageKey && (!value || ['light', 'dark', 'system'].includes(value))) {\n setMode(value || defaultMode);\n }\n };\n // For syncing color-scheme changes between iframes\n storageWindow.addEventListener('storage', handleStorage);\n return () => {\n storageWindow.removeEventListener('storage', handleStorage);\n };\n }\n return undefined;\n }, [setColorScheme, setMode, modeStorageKey, colorSchemeStorageKey, joinedColorSchemes, defaultMode, storageWindow, isMultiSchemes]);\n return {\n ...state,\n mode: isClient ? state.mode : undefined,\n systemMode: isClient ? state.systemMode : undefined,\n colorScheme: isClient ? colorScheme : undefined,\n setMode,\n setColorScheme\n };\n}","import * as React from 'react';\nimport SystemInitColorSchemeScript from '@mui/system/InitColorSchemeScript';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const defaultConfig = {\n attribute: 'data-mui-color-scheme',\n colorSchemeStorageKey: 'mui-color-scheme',\n defaultLightColorScheme: 'light',\n defaultDarkColorScheme: 'dark',\n modeStorageKey: 'mui-mode'\n};\nexport default (function InitColorSchemeScript(props) {\n return /*#__PURE__*/_jsx(SystemInitColorSchemeScript, {\n ...defaultConfig,\n ...props\n });\n});","'use client';\n\nimport * as React from 'react';\nimport styleFunctionSx from '@mui/system/styleFunctionSx';\nimport { unstable_createCssVarsProvider as createCssVarsProvider } from '@mui/system';\nimport createTheme from \"./createTheme.js\";\nimport createTypography from \"./createTypography.js\";\nimport THEME_ID from \"./identifier.js\";\nimport { defaultConfig } from \"../InitColorSchemeScript/InitColorSchemeScript.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst {\n CssVarsProvider: InternalCssVarsProvider,\n useColorScheme,\n getInitColorSchemeScript: deprecatedGetInitColorSchemeScript\n} = createCssVarsProvider({\n themeId: THEME_ID,\n // @ts-ignore ignore module augmentation tests\n theme: () => createTheme({\n cssVariables: true\n }),\n colorSchemeStorageKey: defaultConfig.colorSchemeStorageKey,\n modeStorageKey: defaultConfig.modeStorageKey,\n defaultColorScheme: {\n light: defaultConfig.defaultLightColorScheme,\n dark: defaultConfig.defaultDarkColorScheme\n },\n resolveTheme: theme => {\n const newTheme = {\n ...theme,\n typography: createTypography(theme.palette, theme.typography)\n };\n newTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return newTheme;\n }\n});\nlet warnedOnce = false;\n\n// TODO: remove in v7\n// eslint-disable-next-line @typescript-eslint/naming-convention\nfunction Experimental_CssVarsProvider(props) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n console.warn(['MUI: The Experimental_CssVarsProvider component has been ported into ThemeProvider.', '', \"You should use `import { ThemeProvider } from '@mui/material/styles'` instead.\", 'For more details, check out https://mui.com/material-ui/customization/css-theme-variables/usage/'].join('\\n'));\n warnedOnce = true;\n }\n }\n return /*#__PURE__*/_jsx(InternalCssVarsProvider, {\n ...props\n });\n}\nlet warnedInitScriptOnce = false;\n\n// TODO: remove in v7\nconst getInitColorSchemeScript = params => {\n if (!warnedInitScriptOnce) {\n console.warn(['MUI: The getInitColorSchemeScript function has been deprecated.', '', \"You should use `import InitColorSchemeScript from '@mui/material/InitColorSchemeScript'`\", 'and replace the function call with `<InitColorSchemeScript />` instead.'].join('\\n'));\n warnedInitScriptOnce = true;\n }\n return deprecatedGetInitColorSchemeScript(params);\n};\n\n/**\n * TODO: remove this export in v7\n * @deprecated\n * The `CssVarsProvider` component has been deprecated and ported into `ThemeProvider`.\n *\n * You should use `ThemeProvider` and `createTheme()` instead:\n *\n * ```diff\n * - import { CssVarsProvider, extendTheme } from '@mui/material/styles';\n * + import { ThemeProvider, createTheme } from '@mui/material/styles';\n *\n * - const theme = extendTheme();\n * + const theme = createTheme({\n * + cssVariables: true,\n * + colorSchemes: { light: true, dark: true },\n * + });\n *\n * - <CssVarsProvider theme={theme}>\n * + <ThemeProvider theme={theme}>\n * ```\n *\n * To see the full documentation, check out https://mui.com/material-ui/customization/css-theme-variables/usage/.\n */\nexport const CssVarsProvider = InternalCssVarsProvider;\nexport { useColorScheme, getInitColorSchemeScript, Experimental_CssVarsProvider };","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GlobalStyles } from '@mui/styled-engine';\nimport { useTheme as muiUseTheme } from '@mui/private-theming';\nimport ThemeProvider from \"../ThemeProvider/index.js\";\nimport InitColorSchemeScript, { DEFAULT_COLOR_SCHEME_STORAGE_KEY, DEFAULT_MODE_STORAGE_KEY } from \"../InitColorSchemeScript/InitColorSchemeScript.js\";\nimport useCurrentColorScheme from \"./useCurrentColorScheme.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const DISABLE_CSS_TRANSITION = '*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}';\nexport default function createCssVarsProvider(options) {\n const {\n themeId,\n /**\n * This `theme` object needs to follow a certain structure to\n * be used correctly by the finel `CssVarsProvider`. It should have a\n * `colorSchemes` key with the light and dark (and any other) palette.\n * It should also ideally have a vars object created using `prepareCssVars`.\n */\n theme: defaultTheme = {},\n modeStorageKey: defaultModeStorageKey = DEFAULT_MODE_STORAGE_KEY,\n colorSchemeStorageKey: defaultColorSchemeStorageKey = DEFAULT_COLOR_SCHEME_STORAGE_KEY,\n disableTransitionOnChange: designSystemTransitionOnChange = false,\n defaultColorScheme,\n resolveTheme\n } = options;\n const defaultContext = {\n allColorSchemes: [],\n colorScheme: undefined,\n darkColorScheme: undefined,\n lightColorScheme: undefined,\n mode: undefined,\n setColorScheme: () => {},\n setMode: () => {},\n systemMode: undefined\n };\n const ColorSchemeContext = /*#__PURE__*/React.createContext(undefined);\n if (process.env.NODE_ENV !== 'production') {\n ColorSchemeContext.displayName = 'ColorSchemeContext';\n }\n const useColorScheme = () => React.useContext(ColorSchemeContext) || defaultContext;\n function CssVarsProvider(props) {\n const {\n children,\n theme: themeProp,\n modeStorageKey = defaultModeStorageKey,\n colorSchemeStorageKey = defaultColorSchemeStorageKey,\n disableTransitionOnChange = designSystemTransitionOnChange,\n storageWindow = typeof window === 'undefined' ? undefined : window,\n documentNode = typeof document === 'undefined' ? undefined : document,\n colorSchemeNode = typeof document === 'undefined' ? undefined : document.documentElement,\n disableNestedContext = false,\n disableStyleSheetGeneration = false,\n defaultMode: initialMode = 'system',\n noSsr\n } = props;\n const hasMounted = React.useRef(false);\n const upperTheme = muiUseTheme();\n const ctx = React.useContext(ColorSchemeContext);\n const nested = !!ctx && !disableNestedContext;\n const initialTheme = React.useMemo(() => {\n if (themeProp) {\n return themeProp;\n }\n return typeof defaultTheme === 'function' ? defaultTheme() : defaultTheme;\n }, [themeProp]);\n const scopedTheme = initialTheme[themeId];\n const {\n colorSchemes = {},\n components = {},\n cssVarPrefix,\n ...restThemeProp\n } = scopedTheme || initialTheme;\n const joinedColorSchemes = Object.keys(colorSchemes).filter(k => !!colorSchemes[k]).join(',');\n const allColorSchemes = React.useMemo(() => joinedColorSchemes.split(','), [joinedColorSchemes]);\n const defaultLightColorScheme = typeof defaultColorScheme === 'string' ? defaultColorScheme : defaultColorScheme.light;\n const defaultDarkColorScheme = typeof defaultColorScheme === 'string' ? defaultColorScheme : defaultColorScheme.dark;\n const defaultMode = colorSchemes[defaultLightColorScheme] && colorSchemes[defaultDarkColorScheme] ? initialMode : colorSchemes[restThemeProp.defaultColorScheme]?.palette?.mode || restThemeProp.palette?.mode;\n\n // 1. Get the data about the `mode`, `colorScheme`, and setter functions.\n const {\n mode: stateMode,\n setMode,\n systemMode,\n lightColorScheme,\n darkColorScheme,\n colorScheme: stateColorScheme,\n setColorScheme\n } = useCurrentColorScheme({\n supportedColorSchemes: allColorSchemes,\n defaultLightColorScheme,\n defaultDarkColorScheme,\n modeStorageKey,\n colorSchemeStorageKey,\n defaultMode,\n storageWindow,\n noSsr\n });\n let mode = stateMode;\n let colorScheme = stateColorScheme;\n if (nested) {\n mode = ctx.mode;\n colorScheme = ctx.colorScheme;\n }\n\n // `colorScheme` is undefined on the server and hydration phase\n const calculatedColorScheme = colorScheme || restThemeProp.defaultColorScheme;\n\n // 2. get the `vars` object that refers to the CSS custom properties\n const themeVars = restThemeProp.generateThemeVars?.() || restThemeProp.vars;\n\n // 3. Start composing the theme object\n const theme = {\n ...restThemeProp,\n components,\n colorSchemes,\n cssVarPrefix,\n vars: themeVars\n };\n if (typeof theme.generateSpacing === 'function') {\n theme.spacing = theme.generateSpacing();\n }\n\n // 4. Resolve the color scheme and merge it to the theme\n if (calculatedColorScheme) {\n const scheme = colorSchemes[calculatedColorScheme];\n if (scheme && typeof scheme === 'object') {\n // 4.1 Merge the selected color scheme to the theme\n Object.keys(scheme).forEach(schemeKey => {\n if (scheme[schemeKey] && typeof scheme[schemeKey] === 'object') {\n // shallow merge the 1st level structure of the theme.\n theme[schemeKey] = {\n ...theme[schemeKey],\n ...scheme[schemeKey]\n };\n } else {\n theme[schemeKey] = scheme[schemeKey];\n }\n });\n }\n }\n\n // 5. Declaring effects\n // 5.1 Updates the selector value to use the current color scheme which tells CSS to use the proper stylesheet.\n const colorSchemeSelector = restThemeProp.colorSchemeSelector;\n React.useEffect(() => {\n if (colorScheme && colorSchemeNode && colorSchemeSelector && colorSchemeSelector !== 'media') {\n const selector = colorSchemeSelector;\n let rule = colorSchemeSelector;\n if (selector === 'class') {\n rule = `.%s`;\n }\n if (selector === 'data') {\n rule = `[data-%s]`;\n }\n if (selector?.startsWith('data-') && !selector.includes('%s')) {\n // 'data-mui-color-scheme' -> '[data-mui-color-scheme=\"%s\"]'\n rule = `[${selector}=\"%s\"]`;\n }\n if (rule.startsWith('.')) {\n colorSchemeNode.classList.remove(...allColorSchemes.map(scheme => rule.substring(1).replace('%s', scheme)));\n colorSchemeNode.classList.add(rule.substring(1).replace('%s', colorScheme));\n } else {\n const matches = rule.replace('%s', colorScheme).match(/\\[([^\\]]+)\\]/);\n if (matches) {\n const [attr, value] = matches[1].split('=');\n if (!value) {\n // for attributes like `data-theme-dark`, `data-theme-light`\n // remove all the existing data attributes before setting the new one\n allColorSchemes.forEach(scheme => {\n colorSchemeNode.removeAttribute(attr.replace(colorScheme, scheme));\n });\n }\n colorSchemeNode.setAttribute(attr, value ? value.replace(/\"|'/g, '') : '');\n } else {\n colorSchemeNode.setAttribute(rule, colorScheme);\n }\n }\n }\n }, [colorScheme, colorSchemeSelector, colorSchemeNode, allColorSchemes]);\n\n // 5.2 Remove the CSS transition when color scheme changes to create instant experience.\n // credit: https://github.com/pacocoursey/next-themes/blob/b5c2bad50de2d61ad7b52a9c5cdc801a78507d7a/index.tsx#L313\n React.useEffect(() => {\n let timer;\n if (disableTransitionOnChange && hasMounted.current && documentNode) {\n const css = documentNode.createElement('style');\n css.appendChild(documentNode.createTextNode(DISABLE_CSS_TRANSITION));\n documentNode.head.appendChild(css);\n\n // Force browser repaint\n (() => window.getComputedStyle(documentNode.body))();\n timer = setTimeout(() => {\n documentNode.head.removeChild(css);\n }, 1);\n }\n return () => {\n clearTimeout(timer);\n };\n }, [colorScheme, disableTransitionOnChange, documentNode]);\n React.useEffect(() => {\n hasMounted.current = true;\n return () => {\n hasMounted.current = false;\n };\n }, []);\n const contextValue = React.useMemo(() => ({\n allColorSchemes,\n colorScheme,\n darkColorScheme,\n lightColorScheme,\n mode,\n setColorScheme,\n setMode: process.env.NODE_ENV === 'production' ? setMode : newMode => {\n if (theme.colorSchemeSelector === 'media') {\n console.error(['MUI: The `setMode` function has no effect if `colorSchemeSelector` is `media` (`media` is the default value).', 'To toggle the mode manually, please configure `colorSchemeSelector` to use a class or data attribute.', 'To learn more, visit https://mui.com/material-ui/customization/css-theme-variables/configuration/#toggling-dark-mode-manually'].join('\\n'));\n }\n setMode(newMode);\n },\n systemMode\n }), [allColorSchemes, colorScheme, darkColorScheme, lightColorScheme, mode, setColorScheme, setMode, systemMode, theme.colorSchemeSelector]);\n let shouldGenerateStyleSheet = true;\n if (disableStyleSheetGeneration || restThemeProp.cssVariables === false || nested && upperTheme?.cssVarPrefix === cssVarPrefix) {\n shouldGenerateStyleSheet = false;\n }\n const element = /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(ThemeProvider, {\n themeId: scopedTheme ? themeId : undefined,\n theme: resolveTheme ? resolveTheme(theme) : theme,\n children: children\n }), shouldGenerateStyleSheet && /*#__PURE__*/_jsx(GlobalStyles, {\n styles: theme.generateStyleSheets?.() || []\n })]\n });\n if (nested) {\n return element;\n }\n return /*#__PURE__*/_jsx(ColorSchemeContext.Provider, {\n value: contextValue,\n children: element\n });\n }\n process.env.NODE_ENV !== \"production\" ? CssVarsProvider.propTypes = {\n /**\n * The component tree.\n */\n children: PropTypes.node,\n /**\n * The node used to attach the color-scheme attribute\n */\n colorSchemeNode: PropTypes.any,\n /**\n * localStorage key used to store `colorScheme`\n */\n colorSchemeStorageKey: PropTypes.string,\n /**\n * The default mode when the storage is empty,\n * require the theme to have `colorSchemes` with light and dark.\n */\n defaultMode: PropTypes.string,\n /**\n * If `true`, the provider creates its own context and generate stylesheet as if it is a root `CssVarsProvider`.\n */\n disableNestedContext: PropTypes.bool,\n /**\n * If `true`, the style sheet won't be generated.\n *\n * This is useful for controlling nested CssVarsProvider behavior.\n */\n disableStyleSheetGeneration: PropTypes.bool,\n /**\n * Disable CSS transitions when switching between modes or color schemes.\n */\n disableTransitionOnChange: PropTypes.bool,\n /**\n * The document to attach the attribute to.\n */\n documentNode: PropTypes.any,\n /**\n * The key in the local storage used to store current color scheme.\n */\n modeStorageKey: PropTypes.string,\n /**\n * If `true`, the mode will be the same value as the storage without an extra rerendering after the hydration.\n * You should use this option in conjuction with `InitColorSchemeScript` component.\n */\n noSsr: PropTypes.bool,\n /**\n * The window that attaches the 'storage' event listener.\n * @default window\n */\n storageWindow: PropTypes.any,\n /**\n * The calculated theme object that will be passed through context.\n */\n theme: PropTypes.object\n } : void 0;\n const defaultLightColorScheme = typeof defaultColorScheme === 'string' ? defaultColorScheme : defaultColorScheme.light;\n const defaultDarkColorScheme = typeof defaultColorScheme === 'string' ? defaultColorScheme : defaultColorScheme.dark;\n const getInitColorSchemeScript = params => InitColorSchemeScript({\n colorSchemeStorageKey: defaultColorSchemeStorageKey,\n defaultLightColorScheme,\n defaultDarkColorScheme,\n modeStorageKey: defaultModeStorageKey,\n ...params\n });\n return {\n CssVarsProvider,\n useColorScheme,\n getInitColorSchemeScript\n };\n}","import * as React from 'react';\nconst ThemeContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'ThemeContext';\n}\nexport default ThemeContext;","import * as React from 'react';\nimport ThemeContext from \"./ThemeContext.js\";\nexport default function useTheme() {\n const theme = React.useContext(ThemeContext);\n if (process.env.NODE_ENV !== 'production') {\n // TODO: uncomment once we enable eslint-plugin-react-compiler eslint-disable-next-line react-compiler/react-compiler\n // eslint-disable-next-line react-hooks/rules-of-hooks -- It's not required to run React.useDebugValue in production\n React.useDebugValue(theme);\n }\n return theme;\n}","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Global } from '@emotion/react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction isEmpty(obj) {\n return obj === undefined || obj === null || Object.keys(obj).length === 0;\n}\nexport default function GlobalStyles(props) {\n const {\n styles,\n defaultTheme = {}\n } = props;\n const globalStyles = typeof styles === 'function' ? themeInput => styles(isEmpty(themeInput) ? defaultTheme : themeInput) : styles;\n return /*#__PURE__*/_jsx(Global, {\n styles: globalStyles\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes = {\n defaultTheme: PropTypes.object,\n styles: PropTypes.oneOfType([PropTypes.array, PropTypes.string, PropTypes.object, PropTypes.func])\n} : void 0;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\nimport { StyleSheet } from '@emotion/sheet';\n\n// We might be able to remove this when this issue is fixed:\n// https://github.com/emotion-js/emotion/issues/2790\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst createEmotionCache = options => {\n const cache = createCache(options);\n\n /**\n * This is for client-side apps only.\n * A custom sheet is required to make the GlobalStyles API work with `prepend: true`.\n * This is because the [sheet](https://github.com/emotion-js/emotion/blob/main/packages/react/src/global.js#L94-L99) does not consume the options.\n */\n class MyStyleSheet extends StyleSheet {\n constructor(args) {\n super(args);\n this.prepend = cache.sheet.prepend;\n }\n }\n\n // Do the same as https://github.com/emotion-js/emotion/blob/main/packages/cache/src/index.js#L238-L245\n cache.sheet = new MyStyleSheet({\n key: cache.key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy,\n prepend: cache.sheet.prepend,\n insertionPoint: cache.sheet.insertionPoint\n });\n return cache;\n};\n\n// prepend: true moves MUI styles to the top of the <head> so they're loaded first.\n// It allows developers to easily override MUI styles with other styling solutions, like CSS modules.\nlet cache;\nif (typeof document === 'object') {\n cache = createEmotionCache({\n key: 'css',\n prepend: true\n });\n}\nexport default function StyledEngineProvider(props) {\n const {\n injectFirst,\n children\n } = props;\n return injectFirst && cache ? /*#__PURE__*/_jsx(CacheProvider, {\n value: cache,\n children: children\n }) : children;\n}\nprocess.env.NODE_ENV !== \"production\" ? StyledEngineProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node,\n /**\n * By default, the styles are injected last in the <head> element of the page.\n * As a result, they gain more specificity than any other style sheet.\n * If you want to override MUI's styles, set this prop.\n */\n injectFirst: PropTypes.bool\n} : void 0;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport resolveProps from '@mui/utils/resolveProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PropsContext = /*#__PURE__*/React.createContext(undefined);\nfunction DefaultPropsProvider({\n value,\n children\n}) {\n return /*#__PURE__*/_jsx(PropsContext.Provider, {\n value: value,\n children: children\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? DefaultPropsProvider.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * @ignore\n */\n value: PropTypes.object\n} : void 0;\nfunction getThemeProps(params) {\n const {\n theme,\n name,\n props\n } = params;\n if (!theme || !theme.components || !theme.components[name]) {\n return props;\n }\n const config = theme.components[name];\n if (config.defaultProps) {\n // compatible with v5 signature\n return resolveProps(config.defaultProps, props);\n }\n if (!config.styleOverrides && !config.variants) {\n // v6 signature, no property 'defaultProps'\n return resolveProps(config, props);\n }\n return props;\n}\nexport function useDefaultProps({\n props,\n name\n}) {\n const ctx = React.useContext(PropsContext);\n return getThemeProps({\n props,\n name,\n theme: {\n components: ctx\n }\n });\n}\nexport default DefaultPropsProvider;","const hasSymbol = typeof Symbol === 'function' && Symbol.for;\nexport default hasSymbol ? Symbol.for('mui.nested') : '__THEME_NESTED__';","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp } from '@mui/utils';\nimport ThemeContext from \"../useTheme/ThemeContext.js\";\nimport useTheme from \"../useTheme/index.js\";\nimport nested from \"./nested.js\";\n\n// To support composition of theme.\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction mergeOuterLocalTheme(outerTheme, localTheme) {\n if (typeof localTheme === 'function') {\n const mergedTheme = localTheme(outerTheme);\n if (process.env.NODE_ENV !== 'production') {\n if (!mergedTheme) {\n console.error(['MUI: You should return an object from your theme function, i.e.', '<ThemeProvider theme={() => ({})} />'].join('\\n'));\n }\n }\n return mergedTheme;\n }\n return {\n ...outerTheme,\n ...localTheme\n };\n}\n\n/**\n * This component takes a `theme` prop.\n * It makes the `theme` available down the React tree thanks to React context.\n * This component should preferably be used at **the root of your component tree**.\n */\nfunction ThemeProvider(props) {\n const {\n children,\n theme: localTheme\n } = props;\n const outerTheme = useTheme();\n if (process.env.NODE_ENV !== 'production') {\n if (outerTheme === null && typeof localTheme === 'function') {\n console.error(['MUI: You are providing a theme function prop to the ThemeProvider component:', '<ThemeProvider theme={outerTheme => outerTheme} />', '', 'However, no outer theme is present.', 'Make sure a theme is already injected higher in the React tree ' + 'or provide a theme object.'].join('\\n'));\n }\n }\n const theme = React.useMemo(() => {\n const output = outerTheme === null ? {\n ...localTheme\n } : mergeOuterLocalTheme(outerTheme, localTheme);\n if (output != null) {\n output[nested] = outerTheme !== null;\n }\n return output;\n }, [localTheme, outerTheme]);\n return /*#__PURE__*/_jsx(ThemeContext.Provider, {\n value: theme,\n children: children\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node,\n /**\n * A theme object. You can provide a function to extend the outer theme.\n */\n theme: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = exactProp(ThemeProvider.propTypes) : void 0;\n}\nexport default ThemeProvider;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { ThemeProvider as MuiThemeProvider, useTheme as usePrivateTheme } from '@mui/private-theming';\nimport exactProp from '@mui/utils/exactProp';\nimport { ThemeContext as StyledEngineThemeContext } from '@mui/styled-engine';\nimport useThemeWithoutDefault from \"../useThemeWithoutDefault/index.js\";\nimport RtlProvider from \"../RtlProvider/index.js\";\nimport DefaultPropsProvider from \"../DefaultPropsProvider/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst EMPTY_THEME = {};\nfunction useThemeScoping(themeId, upperTheme, localTheme, isPrivate = false) {\n return React.useMemo(() => {\n const resolvedTheme = themeId ? upperTheme[themeId] || upperTheme : upperTheme;\n if (typeof localTheme === 'function') {\n const mergedTheme = localTheme(resolvedTheme);\n const result = themeId ? {\n ...upperTheme,\n [themeId]: mergedTheme\n } : mergedTheme;\n // must return a function for the private theme to NOT merge with the upper theme.\n // see the test case \"use provided theme from a callback\" in ThemeProvider.test.js\n if (isPrivate) {\n return () => result;\n }\n return result;\n }\n return themeId ? {\n ...upperTheme,\n [themeId]: localTheme\n } : {\n ...upperTheme,\n ...localTheme\n };\n }, [themeId, upperTheme, localTheme, isPrivate]);\n}\n\n/**\n * This component makes the `theme` available down the React tree.\n * It should preferably be used at **the root of your component tree**.\n *\n * <ThemeProvider theme={theme}> // existing use case\n * <ThemeProvider theme={{ id: theme }}> // theme scoping\n */\nfunction ThemeProvider(props) {\n const {\n children,\n theme: localTheme,\n themeId\n } = props;\n const upperTheme = useThemeWithoutDefault(EMPTY_THEME);\n const upperPrivateTheme = usePrivateTheme() || EMPTY_THEME;\n if (process.env.NODE_ENV !== 'production') {\n if (upperTheme === null && typeof localTheme === 'function' || themeId && upperTheme && !upperTheme[themeId] && typeof localTheme === 'function') {\n console.error(['MUI: You are providing a theme function prop to the ThemeProvider component:', '<ThemeProvider theme={outerTheme => outerTheme} />', '', 'However, no outer theme is present.', 'Make sure a theme is already injected higher in the React tree ' + 'or provide a theme object.'].join('\\n'));\n }\n }\n const engineTheme = useThemeScoping(themeId, upperTheme, localTheme);\n const privateTheme = useThemeScoping(themeId, upperPrivateTheme, localTheme, true);\n const rtlValue = (themeId ? engineTheme[themeId] : engineTheme).direction === 'rtl';\n return /*#__PURE__*/_jsx(MuiThemeProvider, {\n theme: privateTheme,\n children: /*#__PURE__*/_jsx(StyledEngineThemeContext.Provider, {\n value: engineTheme,\n children: /*#__PURE__*/_jsx(RtlProvider, {\n value: rtlValue,\n children: /*#__PURE__*/_jsx(DefaultPropsProvider, {\n value: themeId ? engineTheme[themeId].components : engineTheme.components,\n children: children\n })\n })\n })\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Your component tree.\n */\n children: PropTypes.node,\n /**\n * A theme object. You can provide a function to extend the outer theme.\n */\n theme: PropTypes.oneOfType([PropTypes.func, PropTypes.object]).isRequired,\n /**\n * The design system's unique id for getting the corresponded theme when there are multiple design systems.\n */\n themeId: PropTypes.string\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = exactProp(ThemeProvider.propTypes) : void 0;\n}\nexport default ThemeProvider;","'use client';\n\nimport * as React from 'react';\nimport { ThemeContext } from '@mui/styled-engine';\nfunction isObjectEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n const contextTheme = React.useContext(ThemeContext);\n return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nexport default useTheme;","/**\n * Add keys, values of `defaultProps` that does not exist in `props`\n * @param defaultProps\n * @param props\n * @returns resolved props\n */\nexport default function resolveProps(defaultProps, props) {\n const output = {\n ...props\n };\n for (const key in defaultProps) {\n if (Object.prototype.hasOwnProperty.call(defaultProps, key)) {\n const propName = key;\n if (propName === 'components' || propName === 'slots') {\n output[propName] = {\n ...defaultProps[propName],\n ...output[propName]\n };\n } else if (propName === 'componentsProps' || propName === 'slotProps') {\n const defaultSlotProps = defaultProps[propName];\n const slotProps = props[propName];\n if (!slotProps) {\n output[propName] = defaultSlotProps || {};\n } else if (!defaultSlotProps) {\n output[propName] = slotProps;\n } else {\n output[propName] = {\n ...slotProps\n };\n for (const slotKey in defaultSlotProps) {\n if (Object.prototype.hasOwnProperty.call(defaultSlotProps, slotKey)) {\n const slotPropName = slotKey;\n output[propName][slotPropName] = resolveProps(defaultSlotProps[slotPropName], slotProps[slotPropName]);\n }\n }\n }\n } else if (output[propName] === undefined) {\n output[propName] = defaultProps[propName];\n }\n }\n }\n return output;\n}","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n"],"names":["A100","A200","A400","A700","_excluded","ThemeProviderNoVars","_ref","theme","themeInput","props","_objectWithoutProperties","scopedTheme","THEME_ID","undefined","_jsx","SystemThemeProvider","_objectSpread","themeId","ThemeProvider","CssVarsProvider","DEFAULT_MODE_STORAGE_KEY","DEFAULT_COLOR_SCHEME_STORAGE_KEY","DEFAULT_ATTRIBUTE","getSystemMode","mode","window","matchMedia","matches","processState","state","callback","systemMode","initializeValue","key","defaultValue","value","localStorage","getItem","setItem","_unused","useCurrentColorScheme","options","defaultMode","defaultLightColorScheme","defaultDarkColorScheme","supportedColorSchemes","modeStorageKey","colorSchemeStorageKey","storageWindow","noSsr","joinedColorSchemes","join","isMultiSchemes","length","setState","React","initialMode","lightColorScheme","concat","darkColorScheme","isClient","setIsClient","colorScheme","getColorScheme","setMode","currentState","newMode","_unused2","setColorScheme","includes","console","error","newState","_unused4","newLightColorScheme","light","newDarkColorScheme","dark","_unused3","handleMediaQuery","event","mediaListener","current","handler","arguments","media","addListener","removeListener","handleStorage","newValue","startsWith","match","endsWith","addEventListener","removeEventListener","defaultConfig","attribute","InternalCssVarsProvider","useColorScheme","getInitColorSchemeScript","deprecatedGetInitColorSchemeScript","defaultTheme","defaultModeStorageKey","defaultColorSchemeStorageKey","disableTransitionOnChange","designSystemTransitionOnChange","defaultColorScheme","resolveTheme","defaultContext","allColorSchemes","ColorSchemeContext","_colorSchemes$restThe","_restThemeProp$palett","_restThemeProp$genera","_theme$generateStyleS","children","themeProp","documentNode","document","colorSchemeNode","documentElement","disableNestedContext","disableStyleSheetGeneration","hasMounted","upperTheme","muiUseTheme","ctx","nested","initialTheme","colorSchemes","components","cssVarPrefix","restThemeProp","Object","keys","filter","k","split","palette","stateMode","stateColorScheme","calculatedColorScheme","themeVars","generateThemeVars","call","vars","generateSpacing","spacing","scheme","forEach","schemeKey","colorSchemeSelector","selector","rule","classList","remove","map","substring","replace","add","attr","removeAttribute","setAttribute","timer","css","createElement","appendChild","createTextNode","head","getComputedStyle","body","setTimeout","removeChild","clearTimeout","contextValue","shouldGenerateStyleSheet","cssVariables","element","_jsxs","GlobalStyles","styles","generateStyleSheets","Provider","params","initialAttribute","nonce","setter","suppressHydrationWarning","dangerouslySetInnerHTML","__html","InitColorSchemeScript","createCssVarsProvider","createTheme","newTheme","typography","createTypography","unstable_sx","styleFunctionSx","sx","this","Experimental_CssVarsProvider","warnedInitScriptOnce","warn","useTheme","ThemeContext","globalStyles","obj","Global","createEmotionCache","cache","createCache","MyStyleSheet","StyleSheet","constructor","args","super","prepend","sheet","container","speedy","isSpeedy","insertionPoint","StyledEngineProvider","injectFirst","CacheProvider","PropsContext","useDefaultProps","_ref2","name","config","defaultProps","resolveProps","styleOverrides","variants","getThemeProps","Symbol","for","localTheme","outerTheme","output","mergeOuterLocalTheme","EMPTY_THEME","useThemeScoping","isPrivate","resolvedTheme","mergedTheme","result","useThemeWithoutDefault","upperPrivateTheme","usePrivateTheme","engineTheme","privateTheme","rtlValue","direction","MuiThemeProvider","StyledEngineThemeContext","RtlProvider","DefaultPropsProvider","contextTheme","prototype","hasOwnProperty","propName","defaultSlotProps","slotProps","slotKey","slotPropName","f","require","l","m","n","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentOwner","p","ref","__self","__source","q","c","a","g","b","d","e","h","$$typeof","type","_owner","exports","Fragment","jsx","jsxs","module"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunksrc_rx=self.webpackChunksrc_rx||[]).push([[5687],{79313:(e,t,l)=>{l.d(t,{A:()=>d});var o=l(89379),i=l(28437),s=l(89303),n=l(32075),a=l(16904),r=l(70579);const c={modalDialog:{minWidth:400,maxWidth:800},overflowHidden:{display:"flex",overflow:"hidden"},titleIcon:{marginRight:5},content:{fontSize:16},languageButton:{position:"absolute",right:8,top:8},languageButtonActive:e=>({color:e.palette.primary.main})},d=e=>{let{toggleTranslation:t,noTranslation:l,title:d,fullWidth:u,help:p,maxWidth:h,progress:v,icon:f,disableApplyIfNotChanged:m,applyButton:w,onClose:g,children:y,titleButtonApply:x,titleButtonClose:j,onApply:b,textInput:C,defaultValue:A,overflowHidden:k,disableApply:S,theme:G}=e;const[T,F]=(0,i.useState)(A);(0,i.useEffect)((()=>{F(A)}),[A]);let I=null;f&&(I=f);const E=a.Utils.getStyle(G,c.languageButtonActive);return(0,r.jsxs)(s.Dialog,{open:!0,maxWidth:h||"md",fullWidth:!!u,disableEscapeKeyDown:!1,onClose:g,sx:{"& .MuiPaper-root":c.modalDialog},children:[d&&(0,r.jsxs)(s.DialogTitle,{children:[f?(0,r.jsx)(I,{style:c.titleIcon}):null,d,"en"!==a.I18n.getLanguage()&&t?(0,r.jsx)(s.IconButton,{size:"large",style:(0,o.A)((0,o.A)({},c.languageButton),l?E:void 0),onClick:()=>t(),title:a.I18n.t("Disable/Enable translation"),children:(0,r.jsx)(n.Language,{})}):null]}),(0,r.jsxs)(s.DialogContent,{style:(0,o.A)((0,o.A)((0,o.A)({},k?c.overflowHidden:void 0),c.content),{},{paddingTop:8}),children:[C&&(0,r.jsx)(s.TextField,{autoComplete:"off",fullWidth:!0,autoFocus:!0,variant:"standard",size:"medium",multiline:!0,value:T,onChange:e=>F(e.target.value),slotProps:{input:{endAdornment:T?(0,r.jsx)(s.InputAdornment,{position:"end",children:(0,r.jsx)(s.IconButton,{size:"small",onClick:()=>F(""),children:(0,r.jsx)(n.Close,{})})}):null}}}),y,p?(0,r.jsx)("div",{children:p}):null]}),(0,r.jsxs)(s.DialogActions,{children:[(void 0===w||w)&&(0,r.jsx)(s.Button,{startIcon:(0,r.jsx)(n.Check,{}),disabled:S||v||m&&A===T,onClick:()=>b&&b(C?T:""),variant:"contained",color:"primary",children:a.I18n.t(x||"Ok")}),(0,r.jsx)(s.Button,{color:"grey",onClick:g,disabled:v,variant:"contained",startIcon:(0,r.jsx)(n.Close,{}),children:a.I18n.t(j||"Cancel")})]})]})}},75687:(e,t,l)=>{l.r(t),l.d(t,{default:()=>C});var o=l(28437),i=l(89303),s=l(16904),n=l(26382),a=l(56603),r=(l(79335),l(46982)),c=l(70579);const d=a.require?a.require("ace/ext/modelist"):a.acequire("ace/ext/modelist");class u extends s.FileViewerClass{constructor(e){super(e),this.writeFile64=()=>{const e=this.props.href.split("/"),t=this.state.editingValue;e.splice(0,2);const l=e[0],o=e.splice(1).join("/");this.props.socket.writeFile64(l,o,n.hp.from(t).toString("base64")).then((()=>this.props.onClose())).catch((e=>window.alert("Cannot write file: ".concat(e))))},Object.assign(this.state,{editing:!!this.props.formatEditFile||!1})}static getEditFile(e){switch(e){case"json":return"json";case"json5":return"json5";case"js":return"javascript";case"html":case"txt":return"html";default:return d.getModeForPath("testFile.".concat(e)).mode.split("/").pop()}}getEditorOrViewer(){return(0,c.jsx)(r.A,{mode:u.getEditFile(this.props.formatEditFile),themeType:this.props.themeType,value:this.state.editingValue||this.state.code||this.state.text,onChange:this.state.editing?e=>this.setState({editingValue:e,changed:!0}):void 0})}onSave(){this.writeFile64()}}const p=(0,s.withWidth)()(u);var h=l(17774),v=l(79313);const f=[{Owner:[{name:"read",valueNum:1024,title:"read owner"},{name:"write",valueNum:512,title:"write owner"}]},{Group:[{name:"read",valueNum:64,title:"read group"},{name:"write",valueNum:32,title:"write group"}]},{Everyone:[{name:"read",valueNum:4,title:"read everyone"},{name:"write",valueNum:2,title:"write everyone"}]}],m=(e,t,l)=>(e|=t&l,e&=t|65535&~l),w=e=>{let{value:t,setValue:l,t:s,differentValues:n,applyToChildren:a,mask:r,setMask:d,disabled:u}=e;(0,o.useEffect)((()=>{if(a){let e=0;for(let l=0;l<n.length;l++)e|=t^n[l];d(e)}else d(0)}),[n,a,d,t]);let p=t;return(0,c.jsx)("div",{style:{display:"flex",width:"fit-content",margin:20,border:"1px solid",borderLeft:0},children:f.map((e=>{const o=Object.keys(e)[0];return(0,c.jsxs)("div",{style:{width:150,height:150,display:"flex",flexDirection:"column",alignItems:"center",borderLeft:"1px solid"},children:[(0,c.jsx)("div",{style:{height:50,display:"flex",alignItems:"center",fontSize:18,borderBottom:"1px solid silver",width:"100%",justifyContent:"center"},children:s(o)}),(0,c.jsx)("div",{style:{display:"flex",width:"100%"},children:e[o].map(((e,o)=>{let n=!1;const a=r&e.valueNum;return p-e.valueNum>=0&&(p-=e.valueNum,n=!0),(0,c.jsxs)("div",{style:{display:"flex",flexDirection:"column",flex:1,alignItems:"center",borderRight:0===o?"1px solid":0},children:[(0,c.jsx)("div",{style:{height:50,borderBottom:"1px solid",width:"100%",justifyContent:"center",display:"flex",alignItems:"center",color:"silver"},children:s(e.name)}),(0,c.jsx)("div",{style:{height:50,display:"flex"},children:(0,c.jsx)(i.Checkbox,{disabled:u,checked:n,color:a?"primary":"secondary",indeterminate:!!a,style:a?{opacity:.5}:void 0,onChange:o=>{a&&(r&=65535&~e.valueNum,d(r));let i=t;o.target.checked?i|=e.valueNum:i&=65535&~e.valueNum,l(i)}})})]},e.valueNum)}))})]},o)}))})};async function g(e,t,l){let o=t[e];if(!o){const i=e.split("/"),s=i.length,n=i.shift()||null,a=i.join("/"),r=await l.readDir(n,a);t[e]=[];for(let l=0;l<r.length;l++){const o=r[l],i={id:"".concat(e,"/").concat(o.file),ext:h.A.getFileExtension(o.file),folder:o.isDir,name:o.file,size:o.stats&&o.stats.size,modified:o.modifiedAt,acl:o.acl,level:s};t[e].push(i)}o=t[e]}for(let i=0;i<o.length;i++){const e=o[i];e.folder&&await g(e.id,t,l)}}async function y(e,t,l){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"",s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if("string"===typeof l&&(l=l.split("/"),s=0,o=l.shift()||"",i=""),!(l.length>=s))if(t[o+i]){if(l.length-1===s){const n="".concat(o+i,"/").concat(l[s]),a=t[o+i].find((e=>e.id===n));return void(a&&a.folder&&await g(o+i,t,e))}i+="/".concat(l[s]),await y(e,t,l,o,i,s+1)}else{const n=await e.readDir(o||null,i);t[o+i]=[],n.forEach((e=>{const l={id:"".concat(i,"/").concat(e.file),ext:h.A.getFileExtension(e.file),folder:e.isDir,name:e.file,size:e.stats&&e.stats.size,modified:e.modifiedAt,acl:e.acl,level:s};t[o+i].push(l)})),await y(e,t,l,o,i,s+1)}}const x="different",j=e=>{let{onClose:t,onApply:l,selected:n,applyChangesToObject:a,applyChangesToFile:r,objects:d,t:u,themeType:p,folders:h,socket:f,theme:g}=e;const j=n.substring(0,n.lastIndexOf("/"))||n,b=(1===n.split("/").length?h["/"].find((e=>{let{id:t}=e;return t===n})):h[j].find((e=>{let{id:t}=e;return t===n})))||{},[C,A]=(0,o.useState)(null),[k,S]=(0,o.useState)(null),[G,T]=(0,o.useState)([]),[F,I]=(0,o.useState)([]),[E,D]=(0,o.useState)(!1),[O,B]=(0,o.useState)(0),[N,W]=(0,o.useState)(null),[V,z]=(0,o.useState)(!1),[L,M]=(0,o.useState)(!1),[_,P]=(0,o.useState)([]),[H,q]=(0,o.useState)(0),[R,U]=(0,o.useState)([]),[K,Y]=(0,o.useState)(!0),[J,Q]=(0,o.useState)(!1),X=s.I18n.getLanguage();return(0,o.useEffect)((()=>{const e=[],t=b.id;let l=!1,o=!1,i=null,s=null,n=null;const a=[];let r=0;y(f,h,t).then((()=>{const c=function(e){const t={};return Object.keys(e).forEach((l=>{t[l]={folder:!0,id:l,level:0,name:l},e[l].forEach((e=>{t[e.id]=e}))})),t}(h),u="".concat(t,"/");Object.keys(c).forEach((p=>{if("/"!==p&&(p===t||p.startsWith(u)))if(!p.includes("/")&&d[p]){var h,v,f,m,w,g,y,x,j;const t=d[p];r++,a.push(t),null===n&&void 0!==(null===(h=t.acl)||void 0===h?void 0:h.file)&&(n=t.acl.file),null===i&&void 0!==(null===(v=t.acl)||void 0===v?void 0:v.owner)&&(i=t.acl.owner),null===s&&void 0!==(null===(f=t.acl)||void 0===f?void 0:f.ownerGroup)&&(s=t.acl.ownerGroup),V||i===(null===(m=t.acl)||void 0===m?void 0:m.owner)||void 0===(null===(w=t.acl)||void 0===w?void 0:w.owner)||(l=!0),L||s===(null===(g=t.acl)||void 0===g?void 0:g.ownerGroup)||void 0===(null===(y=t.acl)||void 0===y?void 0:y.ownerGroup)||(o=!0),void 0===(null===(x=t.acl)||void 0===x?void 0:x.file)||n===(null===(j=t.acl)||void 0===j?void 0:j.file)||e.includes(t.acl.file)||e.push(t.acl.file)}else if(!c[p].folder){r++;const t=c[p];a.push(t),null===n&&void 0!==t.acl.permissions&&(n=t.acl.permissions),null===i&&void 0!==t.acl.owner&&(i=t.acl.owner),null===s&&void 0!==t.acl.ownerGroup&&(s=t.acl.ownerGroup),V||i===t.acl.owner||void 0===t.acl.owner||(l=!0),L||s===t.acl.ownerGroup||void 0===t.acl.ownerGroup||(o=!0),void 0===t.acl.permissions||n===t.acl.permissions||e.includes(t.acl.permissions)||e.push(t.acl.permissions)}}));const p=[],v=[];Object.keys(d).forEach((e=>{const t=d[e];e.startsWith("system.group.")&&"group"===(null===t||void 0===t?void 0:t.type)?v.push(t):e.startsWith("system.user.")&&"user"===(null===t||void 0===t?void 0:t.type)&&p.push(t)}));const f=d["system.config"].common.defaultNewAcl;i=i||f.owner,s=s||f.ownerGroup,n=n||f.file,W(n),A(i),S(s),z(l),M(o),T(p),I(v),null!==b&&void 0!==b&&b.folder&&D(!0),B(r),P(e),U(a)}))}),[d,n]),(0,o.useEffect)((()=>{if(E)V&&C!==x&&A(x),L&&k!==x&&S(x);else{var e,t,l,o;if(C&&C===x)A((null===(e=d[n])||void 0===e||null===(t=e.acl)||void 0===t?void 0:t.owner)||null);if(k&&k===x)S((null===(l=d[n])||void 0===l||null===(o=l.acl)||void 0===o?void 0:o.ownerGroup)||null)}console.log("stateOwnerUser ".concat(C))}),[E,C,k,V,L]),R.length?(0,c.jsx)(v.A,{theme:g,titleButtonApply:"apply",overflowHidden:!0,disableApply:K,progress:J,onClose:t,onApply:()=>{Q(!0),setTimeout((async()=>{var e,t;const o=(null===(e=d["system.config"].common)||void 0===e||null===(t=e.defaultNewAcl)||void 0===t?void 0:t.file)||1636;if(E){const e=65535&~H;for(let t=0;t<R.length;t++){const l=R[t];let d=!1;const f=l,w=l;if(f._id){var i,s,n,c;const t=m((null===(i=f.acl)||void 0===i?void 0:i.file)||o,N,e);t!==(null===(s=f.acl)||void 0===s?void 0:s.file)&&(f.acl=f.acl||{},f.acl.file=t,d=!0),C!==x&&C!==(null===(n=f.acl)||void 0===n?void 0:n.owner)&&(f.acl=f.acl||{},f.acl.owner=C,d=!0),k!==x&&k!==(null===(c=f.acl)||void 0===c?void 0:c.ownerGroup)&&(f.acl=f.acl||{},f.acl.ownerGroup=k,d=!0);try{d&&await a(f)}catch(S){console.error(S)}}else if(w&&!w.folder){var u,p,h,v;const t={},l=m((null===(u=w.acl)||void 0===u?void 0:u.permissions)||o,N,e);if(l!==(null===(p=w.acl)||void 0===p?void 0:p.permissions)&&(t.permissions=l,d=!0),C!==x&&C!==(null===(h=w.acl)||void 0===h?void 0:h.owner)&&(t.owner=C,d=!0),k!==x&&k!==(null===(v=w.acl)||void 0===v?void 0:v.ownerGroup)&&(t.ownerGroup=k,d=!0),d){const e=w.id.split("/"),l=e.shift(),o=e.join("/");try{await r(l,o,t)}catch(S){console.error(S)}}}}}else{const e=b.id.split("/"),t=e.shift(),l=e.join("/"),o={};let i=!1;var f,w,g;if(b.folder){if(!e.length&&d[b.id]){var y,j,A;const e=d[b.id];(null===(y=e.acl)||void 0===y?void 0:y.file)!==N&&(e.acl=e.acl||{},e.acl.file=N,i=!0),(null===(j=e.acl)||void 0===j?void 0:j.owner)!==C&&(e.acl=e.acl||{},e.acl.owner=C,i=!0),(null===(A=e.acl)||void 0===A?void 0:A.ownerGroup)!==k&&(e.acl=e.acl||{},e.acl.ownerGroup=k,i=!0),i&&await a(e)}}else(null===(f=b.acl)||void 0===f?void 0:f.permissions)!==N&&(o.permissions=N,i=!0),(null===(w=b.acl)||void 0===w?void 0:w.owner)!==C&&(o.owner=C,i=!0),(null===(g=b.acl)||void 0===g?void 0:g.ownerGroup)!==k&&(o.ownerGroup=k,i=!0),i&&await r(t,l,o)}Q(!1),l()}),200)},children:(0,c.jsxs)("div",{style:{display:"flex",flexDirection:"column"},children:[(0,c.jsx)("div",{style:{margin:10,fontSize:20},children:u("Access control list: %s",n)}),(0,c.jsxs)("div",{style:{display:"flex"},children:[(0,c.jsx)(s.SelectWithIcon,{fullWidth:!0,style:{marginRight:10},label:u("Owner user"),lang:X,list:G,t:u,disabled:J,value:C||void 0,themeType:p,different:!!V&&x,onChange:e=>{z(!1),A(e),Y(!1)}}),(0,c.jsx)(s.SelectWithIcon,{fullWidth:!0,label:u("Owner group"),lang:X,list:F,t:u,disabled:J,value:k||void 0,themeType:p,different:!!L&&x,onChange:e=>{M(!1),S(e),Y(!1)}})]}),(0,c.jsxs)("div",{style:{display:"flex",margin:10,alignItems:"center",fontSize:10,marginLeft:0,color:"silver"},children:[(0,c.jsx)("div",{style:b.folder&&E?void 0:{color:"green"},children:u("to apply one item")}),(0,c.jsx)(i.Switch,{disabled:1===R.length||J,checked:!d[b.id]&&!!b.folder||E,onChange:e=>{D(e.target.checked),Y(!1)},color:"primary"}),(0,c.jsxs)("div",{style:b.folder||E?{color:"green"}:void 0,children:[u("to apply with children")," ",b.folder||O>1?"(".concat(O," ").concat(u("object(s)"),")"):""]})]}),J&&(0,c.jsx)(i.LinearProgress,{}),(0,c.jsx)("div",{style:{overflowY:"auto"},children:(0,c.jsxs)("div",{children:[(0,c.jsx)("h2",{children:u("File rights")}),(0,c.jsx)(w,{disabled:J,mask:H,setMask:q,applyToChildren:E,differentValues:_,t:u,setValue:e=>{W(e),Y(!1)},value:N})]})})]})}):(0,c.jsx)(i.LinearProgress,{})};class b extends o.Component{constructor(e){super(e),this.t=void 0,this.wordCache=void 0,this.objects=void 0,this.translate=(e,t,l)=>void 0!==t?this.props.t(e,t,l):(this.wordCache[e]||(this.wordCache[e]=this.props.t(e)),this.wordCache[e]),this.t=this.translate,this.wordCache={},this.objects={}}componentDidMount(){this.props.socket.getObjects(!0,!0).then((e=>this.objects=e))}renderAclDialog(e){return(0,c.jsx)(j,{theme:this.props.theme,themeType:this.props.themeType,applyChangesToObject:async t=>{const l=await this.props.socket.getObject(t._id);l.acl=t.acl,await this.props.socket.setObject(l._id,l);const o=l;null!==o&&void 0!==o&&o.acl&&e.updateItemsAcl([{id:o._id,acl:o.acl,level:0,name:o._id,folder:!1}])},applyChangesToFile:async(t,l,o)=>{let i;if((o.owner||o.ownerGroup)&&o.permissions?(await this.props.socket.chownFile(t,l,{owner:o.owner,ownerGroup:o.ownerGroup}),i=await this.props.socket.chmodFile(t,l,{mode:o.permissions})):o.permissions?i=await this.props.socket.chmodFile(t,l,{mode:o.permissions}):(o.owner||o.ownerGroup)&&(i=await this.props.socket.chownFile(t,l,{owner:o.owner,ownerGroup:o.ownerGroup})),Array.isArray(i))for(let s=0;s<i.length;s++){const l=i[s];l&&l.file&&l.acl&&e.updateItemsAcl([{id:"".concat(t,"/").concat(l.path?"".concat(l.path,"/"):"").concat(l.file),acl:l.acl,level:0,name:"",folder:!1}])}},selected:e.state.selected,folders:e.state.folders,objects:this.objects,socket:this.props.socket,t:this.t,onClose:()=>e.setState({modalEditOfAccess:!1}),onApply:()=>e.setState({modalEditOfAccess:!1})})}render(){return this.props.ready?(0,c.jsx)(s.TabContainer,{children:(0,c.jsx)(s.TabContent,{overflow:"auto",children:(0,c.jsx)(s.FileBrowser,{showViewTypeButton:!0,ready:this.props.ready,socket:this.props.socket,themeType:this.props.themeType,theme:this.props.theme,lang:this.props.lang,t:this.props.t,showToolbar:!0,allowUpload:!0,allowView:!0,allowDownload:!0,allowCreateFolder:!0,allowDelete:!0,expertMode:this.props.expertMode,modalEditOfAccessControl:e=>this.renderAclDialog(e),FileViewer:p})})}):(0,c.jsx)(i.LinearProgress,{})}}const C=b}}]);
|
|
2
|
+
//# sourceMappingURL=5687.d7fa0a4e.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static/js/5687.d7fa0a4e.chunk.js","mappings":"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","sources":["components/CustomModal.tsx","components/FileEditor.tsx","dialogs/FileEditOfAccessControl.tsx","tabs/Files.tsx"],"sourcesContent":["import React, { useEffect, useState, type JSX } from 'react';\n\nimport {\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n TextField,\n Button,\n InputAdornment,\n type Breakpoint,\n} from '@mui/material';\n\nimport { Check as CheckIcon, Close as CloseIcon, Language as LanguageIcon } from '@mui/icons-material';\n\nimport { I18n, type IobTheme, Utils } from '@iobroker/adapter-react-v5';\n\nconst styles: Record<string, any> = {\n modalDialog: {\n minWidth: 400,\n maxWidth: 800,\n },\n overflowHidden: {\n display: 'flex',\n overflow: 'hidden',\n },\n titleIcon: {\n marginRight: 5,\n },\n content: {\n fontSize: 16,\n },\n languageButton: {\n position: 'absolute',\n right: 8,\n top: 8,\n },\n languageButtonActive: (theme: IobTheme) => ({\n color: theme.palette.primary.main,\n }),\n};\n\ninterface CustomModalProps {\n icon?: React.FC<{ style?: React.CSSProperties }>;\n onClose: () => void;\n children?: JSX.Element | JSX.Element[];\n title?: string;\n titleButtonClose?: string;\n titleButtonApply?: string;\n onApply?: (value: string | number) => void;\n fullWidth?: boolean;\n maxWidth?: Breakpoint;\n applyButton?: boolean;\n disableApplyIfNotChanged?: boolean;\n overflowHidden?: boolean;\n help?: string;\n noTranslation?: boolean;\n toggleTranslation?: () => void;\n textInput?: boolean;\n defaultValue?: string | number;\n progress?: boolean;\n disableApply?: boolean;\n theme: IobTheme;\n}\n\nconst CustomModal = ({\n toggleTranslation,\n noTranslation,\n title,\n fullWidth,\n help,\n maxWidth,\n progress,\n icon,\n disableApplyIfNotChanged,\n applyButton,\n onClose,\n children,\n titleButtonApply,\n titleButtonClose,\n onApply,\n textInput,\n defaultValue,\n overflowHidden,\n disableApply,\n theme,\n}: CustomModalProps): JSX.Element => {\n const [value, setValue] = useState(defaultValue);\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n let Icon: React.FC<{ style?: React.CSSProperties }> | null = null;\n\n if (icon) {\n Icon = icon;\n }\n\n const languageButtonActive = Utils.getStyle(theme, styles.languageButtonActive);\n\n return (\n <Dialog\n open={!0}\n maxWidth={maxWidth || 'md'}\n fullWidth={!!fullWidth}\n disableEscapeKeyDown={false}\n onClose={onClose}\n sx={{ '& .MuiPaper-root': styles.modalDialog /* paper: classes.background */ }}\n >\n {title && (\n <DialogTitle>\n {icon ? <Icon style={styles.titleIcon} /> : null}\n {title}\n {I18n.getLanguage() !== 'en' && toggleTranslation ? (\n <IconButton\n size=\"large\"\n style={{ ...styles.languageButton, ...(noTranslation ? languageButtonActive : undefined) }}\n onClick={() => toggleTranslation()}\n title={I18n.t('Disable/Enable translation')}\n >\n <LanguageIcon />\n </IconButton>\n ) : null}\n </DialogTitle>\n )}\n <DialogContent\n style={{ ...(overflowHidden ? styles.overflowHidden : undefined), ...styles.content, paddingTop: 8 }}\n >\n {textInput && (\n <TextField\n // className={className}\n autoComplete=\"off\"\n fullWidth\n autoFocus\n variant=\"standard\"\n size=\"medium\"\n // rows={10}\n multiline\n value={value}\n onChange={e => setValue(e.target.value)}\n slotProps={{\n input: {\n endAdornment: value ? (\n <InputAdornment position=\"end\">\n <IconButton\n size=\"small\"\n onClick={() => setValue('')}\n >\n <CloseIcon />\n </IconButton>\n </InputAdornment>\n ) : null,\n },\n }}\n // customValue\n />\n )}\n {children}\n {help ? <div>{help}</div> : null}\n </DialogContent>\n <DialogActions>\n {(applyButton === undefined || applyButton) && (\n <Button\n startIcon={<CheckIcon />}\n disabled={disableApply || progress || (disableApplyIfNotChanged && defaultValue === value)}\n onClick={() => onApply && onApply(textInput ? value : '')}\n variant=\"contained\"\n color=\"primary\"\n >\n {I18n.t(titleButtonApply || 'Ok')}\n </Button>\n )}\n <Button\n color=\"grey\"\n onClick={onClose}\n disabled={progress}\n variant=\"contained\"\n startIcon={<CloseIcon />}\n >\n {I18n.t(titleButtonClose || 'Cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default CustomModal;\n","// File viewer in adapter-react does not support write\nimport { Buffer } from 'buffer';\nimport React, { type JSX } from 'react';\n\n// File viewer in adapter-react does not use ace editor\nimport * as ace from 'ace-builds';\nimport 'ace-builds/src-noconflict/ext-modelist';\n\nimport { withWidth, FileViewerClass, type FileViewerProps } from '@iobroker/adapter-react-v5';\n\nimport Editor from './Editor';\n\n// @ts-expect-error try this too\nconst modelist = ace.require ? ace.require('ace/ext/modelist') : ace.acequire('ace/ext/modelist');\n\nclass FileEditorClass extends FileViewerClass {\n constructor(props: FileViewerProps) {\n super(props);\n\n Object.assign(this.state, {\n // File viewer in adapter-react does not support write\n editing: !!this.props.formatEditFile || false,\n });\n }\n\n static getEditFile(ext: string | null): 'json' | 'json5' | 'javascript' | 'html' | 'text' {\n switch (ext) {\n case 'json':\n return 'json';\n case 'json5':\n return 'json5';\n case 'js':\n return 'javascript';\n case 'html':\n return 'html';\n case 'txt':\n return 'html';\n default:\n // e.g. ace/mode/text\n return modelist.getModeForPath(`testFile.${ext}`).mode.split('/').pop();\n }\n }\n\n writeFile64 = (): void => {\n // File viewer in adapter-react does not support write\n const parts = this.props.href.split('/');\n const data = this.state.editingValue;\n parts.splice(0, 2);\n const adapter = parts[0];\n const name = parts.splice(1).join('/');\n this.props.socket\n .writeFile64(adapter, name, Buffer.from(data).toString('base64'))\n .then(() => this.props.onClose())\n .catch(e => window.alert(`Cannot write file: ${e}`));\n };\n\n getEditorOrViewer(): JSX.Element {\n // File viewer in adapter-react does not support write\n return (\n <Editor\n mode={FileEditorClass.getEditFile(this.props.formatEditFile)}\n themeType={this.props.themeType}\n value={this.state.editingValue || this.state.code || this.state.text}\n onChange={\n this.state.editing\n ? newValue => this.setState({ editingValue: newValue, changed: true })\n : undefined\n }\n />\n );\n }\n\n onSave(): void {\n this.writeFile64();\n }\n}\n\nexport const FileEditor = withWidth()(FileEditorClass);\n","import React, { useEffect, useState, type JSX } from 'react';\nimport { Checkbox, LinearProgress, Switch } from '@mui/material';\n\nimport {\n I18n,\n SelectWithIcon,\n type AdminConnection,\n type ThemeType,\n type Translate,\n type IobTheme,\n type FolderOrFileItem,\n type Folders,\n type MetaACL,\n type MetaObject,\n} from '@iobroker/adapter-react-v5';\n\nimport AdminUtils from '../helpers/AdminUtils';\nimport CustomModal from '../components/CustomModal';\n\nconst readWriteArray: Record<string, { name: 'read' | 'write'; valueNum: number; title: string }[]>[] = [\n {\n Owner: [\n { name: 'read', valueNum: 0x400, title: 'read owner' },\n { name: 'write', valueNum: 0x200, title: 'write owner' },\n ],\n },\n {\n Group: [\n { name: 'read', valueNum: 0x40, title: 'read group' },\n { name: 'write', valueNum: 0x20, title: 'write group' },\n ],\n },\n {\n Everyone: [\n { name: 'read', valueNum: 0x4, title: 'read everyone' },\n { name: 'write', valueNum: 0x2, title: 'write everyone' },\n ],\n },\n];\n\nconst newValueAccessControl = (value: number, newValue: number, mask: number): number => {\n value |= newValue & mask;\n\n value &= newValue | (~mask & 0xffff);\n return value;\n};\n\ninterface ObjectRightsProps {\n value: number;\n setValue: (value: number) => void;\n t: Translate;\n differentValues: number[];\n applyToChildren: boolean;\n mask: number;\n setMask: (mask: number) => void;\n disabled: boolean;\n}\n\nconst ObjectRights: React.FC<ObjectRightsProps> = ({\n value,\n setValue,\n t,\n differentValues,\n applyToChildren,\n mask,\n setMask,\n disabled,\n}) => {\n useEffect(() => {\n if (applyToChildren) {\n let _checkDifferent = 0;\n for (let e = 0; e < differentValues.length; e++) {\n _checkDifferent |= value ^ differentValues[e];\n }\n setMask(_checkDifferent);\n } else {\n setMask(0);\n }\n }, [differentValues, applyToChildren, setMask, value]);\n\n let newSelected = value;\n\n return (\n <div\n style={{\n display: 'flex',\n width: 'fit-content',\n margin: 20,\n border: '1px solid',\n borderLeft: 0,\n }}\n >\n {readWriteArray.map(el => {\n const name = Object.keys(el)[0];\n\n return (\n <div\n style={{\n width: 150,\n height: 150,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n borderLeft: '1px solid',\n }}\n key={name}\n >\n <div\n style={{\n height: 50,\n display: 'flex',\n alignItems: 'center',\n fontSize: 18,\n borderBottom: '1px solid silver',\n width: '100%',\n justifyContent: 'center',\n }}\n >\n {t(name)}\n </div>\n <div\n style={{\n display: 'flex',\n width: '100%',\n }}\n >\n {el[name].map((obj, idx) => {\n let bool = false;\n\n const masked = mask & obj.valueNum;\n\n if (newSelected - obj.valueNum >= 0) {\n newSelected -= obj.valueNum;\n bool = true;\n }\n\n return (\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n alignItems: 'center',\n borderRight: idx === 0 ? '1px solid' : 0,\n }}\n key={obj.valueNum}\n >\n <div\n style={{\n height: 50,\n borderBottom: '1px solid',\n width: '100%',\n justifyContent: 'center',\n display: 'flex',\n alignItems: 'center',\n color: 'silver',\n }}\n >\n {t(obj.name)}\n </div>\n <div style={{ height: 50, display: 'flex' }}>\n <Checkbox\n disabled={disabled}\n checked={bool}\n color={masked ? 'primary' : 'secondary'}\n indeterminate={!!masked}\n style={masked ? { opacity: 0.5 } : undefined}\n onChange={e => {\n if (masked) {\n mask &= ~obj.valueNum & 0xffff;\n setMask(mask);\n }\n let newValue = value;\n if (!e.target.checked) {\n newValue &= ~obj.valueNum & 0xffff;\n } else {\n newValue |= obj.valueNum;\n }\n setValue(newValue);\n }}\n />\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n })}\n </div>\n );\n};\n\nasync function loadFolders(folderId: string, folders: Folders, socket: AdminConnection): Promise<void> {\n let files = folders[folderId];\n if (!files) {\n const parts = folderId.split('/');\n const level = parts.length;\n const adapter = parts.shift() || null;\n const relPath = parts.join('/');\n const dirFiles = await socket.readDir(adapter, relPath);\n folders[folderId] = [];\n for (let f = 0; f < dirFiles.length; f++) {\n const file = dirFiles[f];\n const item: FolderOrFileItem = {\n id: `${folderId}/${file.file}`,\n ext: AdminUtils.getFileExtension(file.file),\n folder: file.isDir,\n name: file.file,\n size: file.stats && file.stats.size,\n modified: file.modifiedAt,\n acl: file.acl,\n level,\n };\n folders[folderId].push(item);\n }\n files = folders[folderId];\n }\n\n for (let f = 0; f < files.length; f++) {\n const item = files[f];\n if (item.folder) {\n await loadFolders(item.id, folders, socket);\n }\n }\n}\n\nfunction flatList(folders: Folders): Record<string, FolderOrFileItem> {\n const list: Record<string, FolderOrFileItem> = {};\n\n Object.keys(folders).forEach(key => {\n list[key] = {\n folder: true,\n id: key, // unused\n level: 0, // unused\n name: key, // unused\n };\n folders[key].forEach(item => {\n list[item.id] = item;\n });\n });\n\n return list;\n}\n\nasync function loadPath(\n socket: AdminConnection,\n folders: Folders,\n path: string | string[],\n adapter: string = '',\n part: string = '',\n level: number = 0,\n): Promise<void> {\n if (typeof path === 'string') {\n path = path.split('/');\n level = 0;\n adapter = path.shift() || '';\n part = '';\n }\n\n if (path.length >= level) {\n return;\n }\n\n if (folders[adapter + part]) {\n if (path.length - 1 === level) {\n // try to find a file\n const aa = `${adapter + part}/${path[level]}`;\n const ff = folders[adapter + part].find(item => item.id === aa);\n if (ff && ff.folder) {\n // load all\n await loadFolders(adapter + part, folders, socket);\n }\n return;\n }\n part += `/${path[level]}`;\n\n await loadPath(socket, folders, path, adapter, part, level + 1);\n } else {\n // load path\n const files = await socket.readDir(adapter || null, part);\n folders[adapter + part] = [];\n files.forEach(file => {\n const item = {\n id: `${part}/${file.file}`,\n ext: AdminUtils.getFileExtension(file.file),\n folder: file.isDir,\n name: file.file,\n size: file.stats && file.stats.size,\n modified: file.modifiedAt,\n acl: file.acl,\n level,\n };\n\n folders[adapter + part].push(item);\n });\n\n await loadPath(socket, folders, path, adapter, part, level + 1);\n }\n}\n\nconst DIFFERENT = 'different';\n\ninterface FileEditOfAccessControlProps {\n onClose: () => void;\n onApply: () => void;\n selected: string;\n applyChangesToObject: (obj: MetaObject) => Promise<void>;\n applyChangesToFile: (adapter: string, filePath: string, acl?: Partial<ioBroker.FileACL>) => Promise<void>;\n objects: Record<string, ioBroker.Object>;\n t: Translate;\n themeType: ThemeType;\n theme: IobTheme;\n folders: Folders;\n socket: AdminConnection;\n}\n\nconst FileEditOfAccessControl: React.FC<FileEditOfAccessControlProps> = ({\n onClose,\n onApply,\n selected,\n applyChangesToObject,\n applyChangesToFile,\n objects,\n t,\n themeType,\n folders,\n socket,\n theme,\n}: FileEditOfAccessControlProps): JSX.Element => {\n const select = selected.substring(0, selected.lastIndexOf('/')) || selected;\n const object: FolderOrFileItem =\n (selected.split('/').length === 1\n ? folders['/'].find(({ id }) => id === selected)\n : folders[select].find(({ id }) => id === selected)) || ({} as FolderOrFileItem);\n const [stateOwnerUser, setStateOwnerUser] = useState<string | null>(null);\n const [stateOwnerGroup, setStateOwnerGroup] = useState<string | null>(null);\n const [users, setUsers] = useState<ioBroker.UserObject[]>([]);\n const [groups, setGroups] = useState<ioBroker.GroupObject[]>([]);\n const [applyToChildren, setApplyToChildren] = useState(false);\n const [childrenCount, setChildrenCount] = useState(0);\n const [valueFileAccessControl, setValueFileAccessControl] = useState<number | null>(null);\n const [differentOwner, setDifferentOwner] = useState(false);\n const [differentGroup, setDifferentGroup] = useState(false);\n const [differentObject, setDifferentObject] = useState<number[]>([]);\n const [maskObject, setMaskObject] = useState(0);\n const [ids, setIds] = useState<(MetaObject | FolderOrFileItem)[]>([]);\n const [disabledButton, setDisabledButton] = useState(true);\n const [progress, setProgress] = useState(false);\n\n const lang = I18n.getLanguage();\n\n useEffect(() => {\n const _differentObject: number[] = [];\n\n const id = object.id;\n\n let _differentOwner = false;\n let _differentGroup = false;\n let _stateOwnerUser: string | null = null;\n let _stateOwnerGroup: string | null = null;\n let _valueFileAccessControl: number = null;\n const _ids: (MetaObject | FolderOrFileItem)[] = [];\n let count = 0;\n\n void loadPath(socket, folders, id).then(() => {\n const list = flatList(folders);\n\n const idWithSlash = `${id}/`;\n\n Object.keys(list).forEach(key => {\n if (key === '/') {\n return;\n }\n\n if (key === id || key.startsWith(idWithSlash)) {\n if (!key.includes('/') && objects[key]) {\n // it is an object\n const objFolder = objects[key] as MetaObject;\n count++;\n _ids.push(objFolder);\n\n if (_valueFileAccessControl === null && objFolder.acl?.file !== undefined) {\n _valueFileAccessControl = objFolder.acl.file;\n }\n if (_stateOwnerUser === null && objFolder.acl?.owner !== undefined) {\n _stateOwnerUser = objFolder.acl.owner;\n }\n if (_stateOwnerGroup === null && objFolder.acl?.ownerGroup !== undefined) {\n _stateOwnerGroup = objFolder.acl.ownerGroup;\n }\n\n if (\n !differentOwner &&\n _stateOwnerUser !== objFolder.acl?.owner &&\n objFolder.acl?.owner !== undefined\n ) {\n _differentOwner = true;\n }\n if (\n !differentGroup &&\n _stateOwnerGroup !== objFolder.acl?.ownerGroup &&\n objFolder.acl?.ownerGroup !== undefined\n ) {\n _differentGroup = true;\n }\n if (\n objFolder.acl?.file !== undefined &&\n _valueFileAccessControl !== objFolder.acl?.file &&\n !_differentObject.includes(objFolder.acl.file)\n ) {\n _differentObject.push(objFolder.acl.file);\n }\n } else if (!list[key].folder) {\n count++;\n const keyFolder = list[key];\n _ids.push(keyFolder);\n if (\n _valueFileAccessControl === null &&\n (keyFolder.acl as ioBroker.EvaluatedFileACL).permissions !== undefined\n ) {\n _valueFileAccessControl = (keyFolder.acl as ioBroker.EvaluatedFileACL).permissions;\n }\n if (_stateOwnerUser === null && keyFolder.acl.owner !== undefined) {\n _stateOwnerUser = keyFolder.acl.owner;\n }\n if (_stateOwnerGroup === null && keyFolder.acl.ownerGroup !== undefined) {\n _stateOwnerGroup = keyFolder.acl.ownerGroup;\n }\n\n if (\n !differentOwner &&\n _stateOwnerUser !== keyFolder.acl.owner &&\n keyFolder.acl.owner !== undefined\n ) {\n _differentOwner = true;\n }\n if (\n !differentGroup &&\n _stateOwnerGroup !== keyFolder.acl.ownerGroup &&\n keyFolder.acl.ownerGroup !== undefined\n ) {\n _differentGroup = true;\n }\n if (\n (keyFolder.acl as ioBroker.EvaluatedFileACL).permissions !== undefined &&\n _valueFileAccessControl !== (keyFolder.acl as ioBroker.EvaluatedFileACL).permissions &&\n !_differentObject.includes((keyFolder.acl as ioBroker.EvaluatedFileACL).permissions)\n ) {\n _differentObject.push((keyFolder.acl as ioBroker.EvaluatedFileACL).permissions);\n }\n }\n }\n });\n\n const _users: ioBroker.UserObject[] = [];\n const _groups: ioBroker.GroupObject[] = [];\n // Get users and groups\n Object.keys(objects).forEach(_id => {\n const obj = objects[_id];\n if (_id.startsWith('system.group.') && obj?.type === 'group') {\n _groups.push(obj as ioBroker.GroupObject);\n } else if (_id.startsWith('system.user.') && obj?.type === 'user') {\n _users.push(obj as ioBroker.UserObject);\n }\n });\n\n const defaultAcl = objects['system.config'].common.defaultNewAcl;\n\n _stateOwnerUser = _stateOwnerUser || defaultAcl.owner;\n _stateOwnerGroup = _stateOwnerGroup || defaultAcl.ownerGroup;\n _valueFileAccessControl = _valueFileAccessControl || defaultAcl.file;\n setValueFileAccessControl(_valueFileAccessControl);\n\n setStateOwnerUser(_stateOwnerUser);\n setStateOwnerGroup(_stateOwnerGroup);\n\n setDifferentOwner(_differentOwner);\n setDifferentGroup(_differentGroup);\n\n setUsers(_users);\n setGroups(_groups);\n\n if (object?.folder) {\n setApplyToChildren(true);\n }\n setChildrenCount(count);\n\n setDifferentObject(_differentObject);\n\n setIds(_ids);\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [objects, selected]);\n\n useEffect(() => {\n if (applyToChildren) {\n if (differentOwner && stateOwnerUser !== DIFFERENT) {\n setStateOwnerUser(DIFFERENT);\n }\n\n if (differentGroup && stateOwnerGroup !== DIFFERENT) {\n setStateOwnerGroup(DIFFERENT);\n }\n } else {\n if (stateOwnerUser && stateOwnerUser === DIFFERENT) {\n setStateOwnerUser(objects[selected]?.acl?.owner || null);\n }\n if (stateOwnerGroup && stateOwnerGroup === DIFFERENT) {\n setStateOwnerGroup(objects[selected]?.acl?.ownerGroup || null);\n }\n }\n console.log(`stateOwnerUser ${stateOwnerUser}`);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [applyToChildren, stateOwnerUser, stateOwnerGroup, differentOwner, differentGroup]);\n\n if (!ids.length) {\n return <LinearProgress />;\n }\n return (\n <CustomModal\n theme={theme}\n titleButtonApply=\"apply\"\n overflowHidden\n disableApply={disabledButton}\n progress={progress}\n onClose={onClose}\n onApply={() => {\n setProgress(true);\n setTimeout(async () => {\n const defaultAclFile = objects['system.config'].common?.defaultNewAcl?.file || 0x664;\n\n if (!applyToChildren) {\n const parts = object.id.split('/');\n const adapter = parts.shift();\n const path = parts.join('/');\n const newAcl: Partial<ioBroker.FileACL> = {};\n let changed = false;\n if (!object.folder) {\n if ((object.acl as ioBroker.EvaluatedFileACL)?.permissions !== valueFileAccessControl) {\n newAcl.permissions = valueFileAccessControl;\n changed = true;\n }\n if (object.acl?.owner !== stateOwnerUser) {\n newAcl.owner = stateOwnerUser;\n changed = true;\n }\n if (object.acl?.ownerGroup !== stateOwnerGroup) {\n newAcl.ownerGroup = stateOwnerGroup;\n changed = true;\n }\n if (changed) {\n await applyChangesToFile(adapter, path, newAcl);\n }\n } else if (!parts.length && objects[object.id]) {\n // setObject(acl)\n const obj = objects[object.id] as MetaObject;\n if (obj.acl?.file !== valueFileAccessControl) {\n obj.acl = obj.acl || ({} as MetaACL);\n obj.acl.file = valueFileAccessControl;\n changed = true;\n }\n if (obj.acl?.owner !== stateOwnerUser) {\n obj.acl = obj.acl || ({} as MetaACL);\n obj.acl.owner = stateOwnerUser;\n changed = true;\n }\n if (obj.acl?.ownerGroup !== stateOwnerGroup) {\n obj.acl = obj.acl || ({} as MetaACL);\n obj.acl.ownerGroup = stateOwnerGroup;\n changed = true;\n }\n if (changed) {\n await applyChangesToObject(obj);\n }\n }\n } else {\n const _maskObject = ~maskObject & 0xffff;\n for (let i = 0; i < ids.length; i++) {\n const item = ids[i];\n let changed = false;\n const itemAsObject = item as MetaObject;\n const itemAsItem = item as FolderOrFileItem;\n\n if (itemAsObject._id) {\n // it is an object\n const permissions = newValueAccessControl(\n itemAsObject.acl?.file || defaultAclFile,\n valueFileAccessControl,\n _maskObject,\n );\n if (permissions !== itemAsObject.acl?.file) {\n itemAsObject.acl = itemAsObject.acl || ({} as MetaACL);\n itemAsObject.acl.file = permissions;\n changed = true;\n }\n if (stateOwnerUser !== DIFFERENT && stateOwnerUser !== itemAsObject.acl?.owner) {\n itemAsObject.acl = itemAsObject.acl || ({} as MetaACL);\n itemAsObject.acl.owner = stateOwnerUser;\n changed = true;\n }\n if (stateOwnerGroup !== DIFFERENT && stateOwnerGroup !== itemAsObject.acl?.ownerGroup) {\n itemAsObject.acl = itemAsObject.acl || ({} as MetaACL);\n itemAsObject.acl.ownerGroup = stateOwnerGroup;\n changed = true;\n }\n\n try {\n if (changed) {\n await applyChangesToObject(itemAsObject);\n }\n } catch (error) {\n console.error(error);\n }\n } else if (itemAsItem && !itemAsItem.folder) {\n const newAcl: Partial<ioBroker.FileACL> = {};\n const permissions = newValueAccessControl(\n (itemAsItem.acl as ioBroker.EvaluatedFileACL)?.permissions || defaultAclFile,\n valueFileAccessControl,\n _maskObject,\n );\n if (permissions !== (itemAsItem.acl as ioBroker.EvaluatedFileACL)?.permissions) {\n newAcl.permissions = permissions;\n changed = true;\n }\n if (stateOwnerUser !== DIFFERENT && stateOwnerUser !== itemAsItem.acl?.owner) {\n newAcl.owner = stateOwnerUser;\n changed = true;\n }\n if (stateOwnerGroup !== DIFFERENT && stateOwnerGroup !== itemAsItem.acl?.ownerGroup) {\n newAcl.ownerGroup = stateOwnerGroup;\n changed = true;\n }\n if (changed) {\n const parts = itemAsItem.id.split('/');\n const adapter = parts.shift();\n const path = parts.join('/');\n try {\n await applyChangesToFile(adapter, path, newAcl);\n } catch (error) {\n console.error(error);\n }\n }\n }\n }\n }\n\n setProgress(false);\n onApply();\n }, 200);\n }}\n >\n <div style={{ display: 'flex', flexDirection: 'column' }}>\n <div\n style={{\n margin: 10,\n fontSize: 20,\n }}\n >\n {t('Access control list: %s', selected)}\n </div>\n\n <div style={{ display: 'flex' }}>\n <SelectWithIcon\n fullWidth\n style={{ marginRight: 10 }}\n label={t('Owner user')}\n lang={lang}\n list={users as ioBroker.Object[]}\n t={t}\n disabled={progress}\n value={stateOwnerUser || undefined}\n themeType={themeType}\n different={differentOwner ? DIFFERENT : false}\n onChange={val => {\n setDifferentOwner(false);\n setStateOwnerUser(val);\n setDisabledButton(false);\n }}\n />\n <SelectWithIcon\n fullWidth\n label={t('Owner group')}\n lang={lang}\n list={groups as ioBroker.Object[]}\n t={t}\n disabled={progress}\n value={stateOwnerGroup || undefined}\n themeType={themeType}\n different={differentGroup ? DIFFERENT : false}\n onChange={val => {\n setDifferentGroup(false);\n setStateOwnerGroup(val);\n setDisabledButton(false);\n }}\n />\n </div>\n\n <div\n style={{\n display: 'flex',\n margin: 10,\n alignItems: 'center',\n fontSize: 10,\n marginLeft: 0,\n color: 'silver',\n }}\n >\n <div style={!object.folder || !applyToChildren ? { color: 'green' } : undefined}>\n {t('to apply one item')}\n </div>\n <Switch\n disabled={ids.length === 1 || progress}\n checked={(!objects[object.id] && !!object.folder) || applyToChildren}\n onChange={e => {\n setApplyToChildren(e.target.checked);\n setDisabledButton(false);\n }}\n color=\"primary\"\n />\n <div style={object.folder || applyToChildren ? { color: 'green' } : undefined}>\n {t('to apply with children')}{' '}\n {object.folder || childrenCount > 1 ? `(${childrenCount} ${t('object(s)')})` : ''}\n </div>\n </div>\n\n {progress && <LinearProgress />}\n\n <div style={{ overflowY: 'auto' }}>\n <div>\n <h2>{t('File rights')}</h2>\n <ObjectRights\n disabled={progress}\n mask={maskObject}\n setMask={setMaskObject}\n applyToChildren={applyToChildren}\n differentValues={differentObject}\n t={t}\n setValue={e => {\n setValueFileAccessControl(e);\n setDisabledButton(false);\n }}\n value={valueFileAccessControl}\n />\n </div>\n </div>\n </div>\n </CustomModal>\n );\n};\n\nexport default FileEditOfAccessControl;\n","import React, { Component, type JSX } from 'react';\n\nimport { LinearProgress } from '@mui/material';\n\nimport {\n type AdminConnection,\n type IobTheme,\n type ThemeType,\n type Translate,\n TabContainer,\n TabContent,\n FileBrowser,\n type FileBrowserClass,\n type MetaObject,\n} from '@iobroker/adapter-react-v5';\n\nimport { FileEditor } from '../components/FileEditor';\nimport FileEditOfAccessControl from '../dialogs/FileEditOfAccessControl';\n\ninterface FilesProps {\n t: Translate;\n lang: ioBroker.Languages;\n socket: AdminConnection;\n ready: boolean;\n expertMode: boolean;\n themeType: ThemeType;\n theme: IobTheme;\n}\n\nclass Files extends Component<FilesProps> {\n private readonly t: Translate;\n\n private readonly wordCache: Record<string, string>;\n\n private objects: Record<string, ioBroker.Object>;\n\n constructor(props: FilesProps) {\n super(props);\n this.t = this.translate;\n this.wordCache = {};\n this.objects = {};\n }\n\n componentDidMount(): void {\n void this.props.socket.getObjects(true, true).then(objects => (this.objects = objects));\n }\n\n translate = (word: string, arg1?: any, arg2?: any): string => {\n if (arg1 !== undefined) {\n return this.props.t(word, arg1, arg2);\n }\n\n if (!this.wordCache[word]) {\n this.wordCache[word] = this.props.t(word);\n }\n\n return this.wordCache[word];\n };\n\n renderAclDialog(context: FileBrowserClass): JSX.Element {\n return (\n <FileEditOfAccessControl\n theme={this.props.theme}\n themeType={this.props.themeType}\n applyChangesToObject={async (fileObj: MetaObject) => {\n // it is setObject\n const oldObj = (await this.props.socket.getObject(fileObj._id)) as MetaObject;\n oldObj.acl = fileObj.acl;\n await this.props.socket.setObject(oldObj._id, oldObj);\n const result: MetaObject = oldObj;\n\n if (result?.acl) {\n context.updateItemsAcl([\n {\n id: result._id,\n acl: result.acl,\n level: 0, // not used\n name: result._id, // not used\n folder: false, // not used\n },\n ]);\n }\n }}\n applyChangesToFile={async (adapter: string, file: string, data: Partial<ioBroker.FileACL>) => {\n let result: ioBroker.ChownFileResult[] | undefined;\n if ((data.owner || data.ownerGroup) && data.permissions) {\n await this.props.socket.chownFile(adapter, file, {\n owner: data.owner,\n ownerGroup: data.ownerGroup,\n });\n result = await this.props.socket.chmodFile(adapter, file, { mode: data.permissions });\n } else if (data.permissions) {\n result = await this.props.socket.chmodFile(adapter, file, { mode: data.permissions });\n } else if (data.owner || data.ownerGroup) {\n result = await this.props.socket.chownFile(adapter, file, {\n owner: data.owner,\n ownerGroup: data.ownerGroup,\n });\n }\n\n if (Array.isArray(result)) {\n for (let i = 0; i < result.length; i++) {\n const item = result[i];\n if (item && item.file && item.acl) {\n context.updateItemsAcl([\n {\n id: `${adapter}/${item.path ? `${item.path}/` : ''}${item.file}`,\n acl: item.acl as ioBroker.EvaluatedFileACL,\n level: 0, // not used\n name: '', // not used\n folder: false, // not used\n },\n ]);\n }\n }\n }\n // deprecated\n // } else if (result?.entries) {\n // for (let i = 0; i < result.entries.length; i++) {\n // const item = result.entries[i];\n // if (item && item.file && item.acl) {\n // context.updateItemsAcl([{ id: `${adapter}/${item.path ? `${item.path}/` : ''}${item.file}`, acl: item.acl }]);\n // }\n // }\n // }\n }}\n selected={context.state.selected}\n folders={context.state.folders}\n objects={this.objects}\n socket={this.props.socket}\n t={this.t}\n onClose={() => context.setState({ modalEditOfAccess: false })}\n onApply={() => context.setState({ modalEditOfAccess: false })}\n />\n );\n }\n\n render(): JSX.Element {\n if (!this.props.ready) {\n return <LinearProgress />;\n }\n\n return (\n <TabContainer>\n <TabContent overflow=\"auto\">\n <FileBrowser\n showViewTypeButton\n ready={this.props.ready}\n socket={this.props.socket}\n themeType={this.props.themeType}\n theme={this.props.theme}\n lang={this.props.lang}\n t={this.props.t}\n showToolbar\n allowUpload\n allowView\n allowDownload\n allowCreateFolder\n allowDelete\n expertMode={this.props.expertMode}\n modalEditOfAccessControl={(context: FileBrowserClass) => this.renderAclDialog(context)}\n FileViewer={FileEditor}\n />\n </TabContent>\n </TabContainer>\n );\n }\n}\n\nexport default Files;\n"],"names":["styles","modalDialog","minWidth","maxWidth","overflowHidden","display","overflow","titleIcon","marginRight","content","fontSize","languageButton","position","right","top","languageButtonActive","theme","color","palette","primary","main","_ref","toggleTranslation","noTranslation","title","fullWidth","help","progress","icon","disableApplyIfNotChanged","applyButton","onClose","children","titleButtonApply","titleButtonClose","onApply","textInput","defaultValue","disableApply","value","setValue","useState","useEffect","Icon","Utils","getStyle","_jsxs","Dialog","open","disableEscapeKeyDown","sx","DialogTitle","_jsx","style","I18n","getLanguage","IconButton","size","_objectSpread","undefined","onClick","t","LanguageIcon","DialogContent","paddingTop","TextField","autoComplete","autoFocus","variant","multiline","onChange","e","target","slotProps","input","endAdornment","InputAdornment","CloseIcon","DialogActions","Button","startIcon","CheckIcon","disabled","modelist","ace","require","acequire","FileEditorClass","FileViewerClass","constructor","props","super","writeFile64","parts","this","href","split","data","state","editingValue","splice","adapter","name","join","socket","Buffer","from","toString","then","catch","window","alert","concat","Object","assign","editing","formatEditFile","getEditFile","ext","getModeForPath","mode","pop","getEditorOrViewer","Editor","themeType","code","text","newValue","setState","changed","onSave","FileEditor","withWidth","readWriteArray","Owner","valueNum","Group","Everyone","newValueAccessControl","mask","ObjectRights","differentValues","applyToChildren","setMask","_checkDifferent","length","newSelected","width","margin","border","borderLeft","map","el","keys","height","flexDirection","alignItems","borderBottom","justifyContent","obj","idx","bool","masked","flex","borderRight","Checkbox","checked","indeterminate","opacity","async","loadFolders","folderId","folders","files","level","shift","relPath","dirFiles","readDir","f","file","item","id","AdminUtils","getFileExtension","folder","isDir","stats","modified","modifiedAt","acl","push","loadPath","path","arguments","part","aa","ff","find","forEach","DIFFERENT","_ref2","selected","applyChangesToObject","applyChangesToFile","objects","select","substring","lastIndexOf","object","_ref3","_ref4","stateOwnerUser","setStateOwnerUser","stateOwnerGroup","setStateOwnerGroup","users","setUsers","groups","setGroups","setApplyToChildren","childrenCount","setChildrenCount","valueFileAccessControl","setValueFileAccessControl","differentOwner","setDifferentOwner","differentGroup","setDifferentGroup","differentObject","setDifferentObject","maskObject","setMaskObject","ids","setIds","disabledButton","setDisabledButton","setProgress","lang","_differentObject","_differentOwner","_differentGroup","_stateOwnerUser","_stateOwnerGroup","_valueFileAccessControl","_ids","count","list","key","flatList","idWithSlash","startsWith","includes","_objFolder$acl","_objFolder$acl2","_objFolder$acl3","_objFolder$acl4","_objFolder$acl5","_objFolder$acl6","_objFolder$acl7","_objFolder$acl8","_objFolder$acl9","objFolder","owner","ownerGroup","keyFolder","permissions","_users","_groups","_id","type","defaultAcl","common","defaultNewAcl","_objects$selected","_objects$selected$acl","_objects$selected2","_objects$selected2$ac","console","log","CustomModal","setTimeout","_objects$systemConfi","_objects$systemConfi$","defaultAclFile","_maskObject","i","itemAsObject","itemAsItem","_itemAsObject$acl","_itemAsObject$acl2","_itemAsObject$acl3","_itemAsObject$acl4","error","_itemAsItem$acl","_itemAsItem$acl2","_itemAsItem$acl3","_itemAsItem$acl4","newAcl","_object$acl","_object$acl2","_object$acl3","_obj$acl","_obj$acl2","_obj$acl3","SelectWithIcon","label","different","val","marginLeft","Switch","LinearProgress","overflowY","Files","Component","wordCache","translate","word","arg1","arg2","componentDidMount","getObjects","renderAclDialog","context","FileEditOfAccessControl","oldObj","getObject","fileObj","setObject","result","updateItemsAcl","chownFile","chmodFile","Array","isArray","modalEditOfAccess","render","ready","TabContainer","TabContent","FileBrowser","showViewTypeButton","showToolbar","allowUpload","allowView","allowDownload","allowCreateFolder","allowDelete","expertMode","modalEditOfAccessControl","FileViewer"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunksrc_rx=self.webpackChunksrc_rx||[]).push([[6361],{16668:(e,t,s)=>{s.d(t,{K:()=>a,S:()=>c});var o=s(89379),i=(s(28437),s(89303)),r=s(32075),n=s(16904),l=s(70579);function a(e){const t=e.icon;return(0,l.jsxs)("div",{style:e.styles.formContainer,children:[t?(0,l.jsx)(t,{style:e.styles.formIcon}):null,(0,l.jsx)(i.FormControl,{style:e.styles.formControl,variant:"standard",children:(0,l.jsx)(i.TextField,{variant:"standard",label:e.t(e.label),autoComplete:e.autoComplete,error:!!e.error,helperText:e.error||"",value:e.value,onChange:t=>e.onChange(t.target.value),disabled:e.disabled,type:e.type,slotProps:{inputLabel:{shrink:!0},input:{readOnly:!1,endAdornment:e.value?(0,l.jsx)(i.InputAdornment,{position:"end",children:(0,l.jsx)(i.IconButton,{size:"small",onClick:()=>e.onChange(""),children:(0,l.jsx)(r.Close,{})})}):null}}})})]})}function c(e){const t=e.icon;return(0,l.jsxs)("div",{style:{width:"100%"},children:[t?(0,l.jsx)(t,{style:e.previewStyle||e.styles.formIcon}):null,(0,l.jsx)(n.ColorPicker,{style:(0,o.A)((0,o.A)({},e.style||void 0),{},{width:t?"calc(100% - 45px)":"100%",display:"inline-block",verticalAlign:"top"}),label:e.t(e.label),onChange:e.onChange,value:e.value||""})]})}},46361:(e,t,s)=>{s.r(t),s.d(t,{default:()=>re});var o=s(28437),i=s(16904),r=s(89379),n=s(30335),l=s(67537),a=s(28791),c=s(94343),d=s(89303),p=s(32075),h=s(17774),u=s(42734),m=s(27686),g=s(70579);const x=e=>{const t=e.isDragging?0:1,s=i.Utils.getInvertedColor(e.user.common.color,e.themeType,!0),o={cursor:"grab",opacity:t,overflow:"hidden",color:s};return e.user.common.color&&(o.backgroundColor=e.user.common.color),(0,g.jsx)(d.Card,{style:o,sx:e.styles.userGroupCard2,children:(0,g.jsxs)("div",{style:e.styles.userCardContent,children:[(0,g.jsxs)("div",{style:e.styles.right,children:[(0,g.jsx)(d.Checkbox,{checked:e.user.common.enabled,style:{color:s},disabled:e.user.common.dontDelete,onChange:()=>{e.socket.extendObject(e.user._id,{common:{enabled:!e.user.common.enabled}}).then((()=>e.updateData()))}}),(0,g.jsx)(d.IconButton,{size:"small",onClick:()=>e.showUserEditDialog(e.user,!1),children:(0,g.jsx)(p.Edit,{style:{color:s}})}),(0,g.jsx)(d.IconButton,{size:"small",onClick:()=>e.showUserDeleteDialog(e.user),disabled:e.user.common.dontDelete,children:(0,g.jsx)(p.Delete,{style:e.user.common.dontDelete?null:{color:s}})})]}),(0,g.jsxs)(d.CardContent,{children:[(0,g.jsxs)(d.Typography,{gutterBottom:!0,component:"div",style:e.styles.userGroupTitle,children:[e.user.common.icon?(0,g.jsx)(i.Icon,{style:e.styles.icon,src:e.user.common.icon}):(0,g.jsx)(p.Person,{style:e.styles.icon}),(0,g.jsxs)("div",{children:[(0,g.jsxs)("div",{children:[(0,g.jsx)("span",{style:e.styles.userGroupUserName,children:e.getText(e.user.common.name)}),(0,g.jsxs)("span",{style:e.styles.userGroupUserID,children:["[",e.user._id,"]"]})]}),(0,g.jsx)("span",{children:e.user.common.desc?(0,g.jsx)("div",{style:e.styles.description,children:e.getText(e.user.common.desc)}):null})]})]}),e.groups.find((t=>t.common.members&&t.common.members.includes(e.user._id)))?(0,g.jsxs)("div",{children:[e.t("In groups"),":"]}):null,(0,g.jsx)("div",{children:e.groups.map((t=>{var o,r;if(!t.common.members||!t.common.members.includes(e.user._id))return null;const n=t&&null!==(o=t.common)&&void 0!==o&&o.color?i.Utils.getInvertedColor(t.common.color,e.themeType,!0):s;return(0,g.jsxs)(d.Card,{variant:"outlined",sx:e.styles.userGroupMember,style:{color:n,borderColor:"".concat(n,"80"),background:(null===(r=t.common)||void 0===r?void 0:r.color)||"inherit"},children:[t.common.icon?(0,g.jsx)(i.Icon,{style:e.styles.icon,src:t.common.icon}):(0,g.jsx)(p.Group,{style:e.styles.icon}),e.getText(t.common.name),(0,g.jsx)(d.IconButton,{size:"small",onClick:()=>e.removeUserFromGroup(e.user._id,t._id),children:(0,g.jsx)(p.Clear,{style:{color:n}})})]},t._id)}))})]})]})})},y=e=>{const t=(0,o.useRef)(),[{isDragging:s},i,n]=(0,u.i)({type:"user",item:()=>{var s;return{userId:e.user._id,preview:(0,g.jsx)("div",{style:{width:null===(s=t.current)||void 0===s?void 0:s.offsetWidth},children:(0,g.jsx)(x,(0,r.A)({},e))})}},end:(t,s)=>{const o=s.getDropResult();t&&o&&e.addUserToGroup(t.userId,o.groupId)},collect:e=>({isDragging:e.isDragging(),handlerId:e.getHandlerId()})});return(0,o.useEffect)((()=>{n((0,m.n)(),{captureDraggingState:!0})}),[n]),(0,g.jsx)("div",{ref:i,children:(0,g.jsx)("div",{ref:t,children:(0,g.jsx)(x,(0,r.A)({isDragging:s},e))})})};var v=s(35964);const C=e=>{var t;const[{CanDrop:s,isOver:o},r]=(0,v.H)((()=>({accept:"user",drop:()=>({groupId:e.group._id}),canDrop:(t,s)=>function(e,t){return!t.group.common.members||!t.group.common.members.includes(e.getItem().userId)}(s,e),collect:e=>({isOver:e.isOver(),CanDrop:e.canDrop()})})),[e.group.common.members]);let n,l=.7;s&&o?(l=s?1:.125,n=e.styles.userGroupCardSecondary):s&&(l=s?.75:.25);const a=i.Utils.getInvertedColor(e.group.common.color,e.themeType,!0),c={opacity:l,overflow:"hidden",color:a};return e.group.common.color&&(c.backgroundColor=e.group.common.color),(0,g.jsxs)(d.Card,{style:c,ref:r,sx:i.Utils.getStyle(e.theme,e.styles.userGroupCard2,n),children:[(0,g.jsxs)("div",{style:e.styles.right,children:[(0,g.jsx)(d.IconButton,{size:"small",onClick:()=>e.showGroupEditDialog(e.group,!1),children:(0,g.jsx)(p.Edit,{style:{color:a}})}),(0,g.jsx)(d.IconButton,{size:"small",onClick:()=>e.showGroupDeleteDialog(e.group),disabled:e.group.common.dontDelete,children:(0,g.jsx)(p.Delete,{style:e.group.common.dontDelete?null:{color:a}})})]}),(0,g.jsxs)(d.CardContent,{children:[(0,g.jsxs)(d.Typography,{gutterBottom:!0,component:"div",style:e.styles.userGroupTitle,children:[e.group.common.icon?(0,g.jsx)(i.Icon,{style:e.styles.icon,src:e.group.common.icon}):(0,g.jsx)(p.Group,{style:e.styles.icon}),(0,g.jsxs)("div",{children:[(0,g.jsxs)("div",{children:[(0,g.jsx)("span",{style:e.styles.userGroupUserName,children:e.getText(e.group.common.name)}),(0,g.jsxs)("span",{children:["[",e.group._id,"]"]})]}),e.group.common.desc?(0,g.jsx)("div",{style:e.styles.description,children:e.getText(e.group.common.desc)}):null]})]}),null!==(t=e.group.common.members)&&void 0!==t&&t.length?(0,g.jsxs)("div",{children:[e.t("Group members"),":"]}):null,(0,g.jsx)("div",{children:(e.group.common.members||[]).map(((t,s)=>{var o,r;const n=e.users.find((e=>e._id===t)),l=n&&null!==(o=n.common)&&void 0!==o&&o.color?i.Utils.getInvertedColor(n.common.color,e.themeType,!0):a;return n?(0,g.jsxs)(d.Card,{variant:"outlined",sx:e.styles.userGroupMember,style:{color:l,borderColor:"".concat(l,"40"),background:(null===(r=n.common)||void 0===r?void 0:r.color)||"inherit"},children:[n.common.icon?(0,g.jsx)(i.Icon,{style:e.styles.icon,src:n.common.icon}):(0,g.jsx)(p.Person,{style:e.styles.icon}),e.getText(n.common.name),(0,g.jsx)(d.IconButton,{size:"small",onClick:()=>e.removeUserFromGroup(t,e.group._id),children:(0,g.jsx)(p.Clear,{style:{color:l}})})]},s):null}))})]})]})};var j=s(16668);const b="./static/media/user1.24fa2b07586d952c415397f499b50c49.svg";const f=s.p+"static/media/user2.c6b253a8208981fea9c70e282073c8ea.svg";const D=s.p+"static/media/user3.e838132e7f2d6d44d829d934daf96dbe.svg";const w=s.p+"static/media/user4.f66996c087a4247316e162b5ec54ff11.svg";const _=s.p+"static/media/user5.842fb6e5ac2067df7c241eb9e42a7ff6.svg";const k=s.p+"static/media/user6.f1589fc9f97a1e42a2a3dd62d18aee5e.svg";const G=s.p+"static/media/user7.773f25cff1c54afbc35bbd79455aa271.svg";const T=s.p+"static/media/user8.43bbbecca8ba97c5da0521bdc072ae1f.svg";const U=s.p+"static/media/user9.2a94bc8f32545bf549e96311624574c4.svg";const I=s.p+"static/media/user10.7b8712e8bbad287a584a0a26ac4cf23c.svg";const E=s.p+"static/media/user11.dfec7022ca4b81de158d5adf60571632.svg";const S=[b,f,D,w,_,k,G,T,U,I,E,s.p+"static/media/user12.67a70d9093f2e3aafdeddb5dc4f110df.svg"],A={padding:"16px 24px"};class P extends o.Component{constructor(e){super(e),this.state={originalId:e.user._id,passwordRepeat:e.user.common.password}}componentDidMount(){if(this.props.isNew){const e=S[Math.round(Math.random()*(S.length-1))];e&&i.Utils.getSvg(e).then((e=>{const t=i.Utils.clone(this.props.user);t.common.icon=e,this.props.onChange(t)}))}}render(){const e=this.props.users.find((e=>e._id===this.props.user._id)),t=this.props.user._id!==this.state.originalId,s=e=>e.replace(i.Utils.FORBIDDEN_CHARS,"_").replace(/\s/g,"_").replace(/\./g,"_").replace(/,/g,"_").replace(/__/g,"_").replace(/__/g,"_").toLowerCase(),o=(e,t)=>{const s=e.split(".");return s[s.length-1]=t,s.join(".")},n=this.props.getText(this.props.user.common.desc),l=this.props.getText(this.props.user.common.name),a=h.A.checkPassword(this.props.user.common.password),c=h.A.checkPassword(this.props.user.common.password,this.state.passwordRepeat);let u="system.user."!==this.props.user._id&&!a&&!c;return(this.props.isNew&&e||e&&t)&&(u=!1),(0,g.jsxs)(d.Dialog,{fullWidth:this.props.innerWidth<500,open:!0,onClose:(e,t)=>{"backdropClick"!==t&&"escapeKeyDown"!==t&&this.props.onClose()},children:[(0,g.jsx)(d.DialogTitle,{style:(0,r.A)((0,r.A)({},this.props.styles.dialogTitle),{},{padding:12}),children:this.props.t("User parameters")}),(0,g.jsx)(d.DialogContent,{sx:{"&.MuiDialogContent-root":(0,r.A)((0,r.A)({},this.props.innerWidth<500?this.props.styles.narrowContent:void 0),A)},children:(0,g.jsxs)(d.Grid2,{container:!0,spacing:this.props.innerWidth<500?1:4,style:this.props.styles.dialog,children:[(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(j.K,{label:"Name",t:this.props.t,value:l,onChange:e=>{const t=i.Utils.clone(this.props.user);this.props.user.common.dontDelete||s(this.props.getText(t.common.name))!==t._id.split(".").pop()||(t._id=o(t._id,s(e))),t.common.name=e,this.props.onChange(t)},autoComplete:"new-password",icon:p.TextFields,styles:this.props.styles})}),(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(j.K,{label:"ID edit",t:this.props.t,disabled:this.props.user.common.dontDelete,value:this.props.user._id.split(".")[this.props.user._id.split(".").length-1],onChange:e=>{const t=i.Utils.clone(this.props.user);t._id=o(t._id,s(e)),this.props.onChange(t)},icon:p.LocalOffer,styles:this.props.styles})}),(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(j.K,{label:"ID preview",t:this.props.t,disabled:!0,value:this.props.user._id,icon:p.Pageview,styles:this.props.styles})}),(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(j.K,{label:"Description",t:this.props.t,value:n,onChange:e=>{const t=i.Utils.clone(this.props.user);t.common.desc=e,this.props.onChange(t)},icon:p.Description,styles:this.props.styles})}),(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(j.K,{label:"Password",t:this.props.t,value:this.props.user.common.password,error:a?this.props.t(a):void 0,onChange:e=>{const t=i.Utils.clone(this.props.user);t.common.password=e,this.props.onChange(t)},type:"password",autoComplete:"new-password",icon:p.VpnKey,styles:this.props.styles})}),(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(j.K,{label:"Password repeat",t:this.props.t,value:this.state.passwordRepeat,error:c?this.props.t(c):void 0,onChange:e=>this.setState({passwordRepeat:e}),type:"password",autoComplete:"new-password",icon:p.VpnKey,styles:this.props.styles})}),(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(i.IconPicker,{icons:S,label:"Icon",value:this.props.user.common.icon,onChange:e=>{const t=i.Utils.clone(this.props.user);t.common.icon=e,this.props.onChange(t)},previewStyle:this.props.styles.iconPreview,icon:p.Image})}),(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(j.S,{label:"Color",t:this.props.t,value:this.props.user.common.color,previewStyle:this.props.styles.iconPreview,onChange:e=>{const t=i.Utils.clone(this.props.user);t.common.color=e,this.props.onChange(t)},icon:p.ColorLens,style:this.props.styles.colorPicker,styles:this.props.styles})})]})}),(0,g.jsxs)(d.DialogActions,{style:this.props.styles.dialogActions,children:[(0,g.jsx)(d.Button,{variant:"contained",color:"primary",autoFocus:!0,onClick:()=>this.props.saveData(this.props.isNew?null:this.state.originalId),disabled:!u,startIcon:(0,g.jsx)(p.Check,{}),children:this.props.t("Save")}),(0,g.jsx)(d.Button,{variant:"contained",color:"grey",onClick:this.props.onClose,startIcon:(0,g.jsx)(p.Close,{}),children:this.props.t("Cancel")})]})]})}}const F=P;const O=s.p+"static/media/group1.e4d9dfc6de58d318b9f8659b7bdf92c8.svg";const W=s.p+"static/media/group2.005a7b0a473ee5c6b4afa0f5a4bd399e.svg";const z=s.p+"static/media/group3.ee5e28d28f498bd44d945842ecc32110.svg";const N=s.p+"static/media/group4.d6b392ffee69d8a8efee376434f5cfba.svg";const B=s.p+"static/media/group5.68fdb9e99d289e9c014cc8ee4e9ae4bb.svg";const R=s.p+"static/media/group6.c7f286d197fb918b0d2b34944ec9ef6a.svg";const L=s.p+"static/media/group7.066f78d64741ca336b2137f9caf72133.svg";const M=s.p+"static/media/group8.25d573e553e37968d4e6babd06b36746.svg";const K=s.p+"static/media/group9.b7aae7b7185e989f91b749ff1758d49d.svg";const H=[O,W,z,N,B,R,L,M,K,s.p+"static/media/group10.250fd49c0c4d348815c639620bef3467.svg"];function q(e){const t=(e,t)=>Object.values(e).map(((s,o)=>{const i=Object.keys(e)[o];return t(s,i)}));let s=e.group.common.acl;return s=s||{},s.object=s.object||{read:!0,list:!0,write:!0,delete:!1,create:void 0},s.object=(0,r.A)({read:!0,list:!0,write:!0,delete:!1},s.object),s.state=s.state||{read:!0,list:!0,write:!0,delete:!1,create:void 0},s.state=(0,r.A)({read:!0,list:!0,write:!0,delete:!1},s.state),s.users=s.users||{write:!1,delete:!1,create:!1,list:void 0,read:void 0},s.users=(0,r.A)({write:!1,delete:!1,create:!1},s.users),s.other=s.other||{http:!1,execute:!1,sendto:!0},s.other=(0,r.A)({http:!1,execute:!1,sendto:!0},s.other),s.file=s.file||{read:!0,list:!0,write:!1,delete:!1,create:!1},s.file=(0,r.A)({read:!0,list:!0,write:!1,delete:!1,create:!1},s.file),(0,g.jsx)(d.Grid2,{container:!0,spacing:e.innerWidth<500?1:4,style:e.styles.dialog,children:t(e.group.common.acl||{},((s,o)=>(0,g.jsxs)(d.Grid2,{size:{xs:12,md:12},children:[(0,g.jsx)(d.Box,{component:"h2",sx:e.styles.permHeaders,children:e.t("group_acl_".concat(o))}),t(s,((t,s)=>(0,g.jsx)(d.FormControlLabel,{control:(0,g.jsx)(d.Checkbox,{disabled:"system.group.administrator"===e.group._id,checked:t,onChange:t=>{const r=i.Utils.clone(e.group);r.common.acl[o][s]=t.target.checked,e.onChange(r)}}),label:e.t("group_acl_".concat(s)),labelPlacement:"top"},s)))]},o)))},"PermissionsTab")}const Y={padding:"16px 24px"};class V extends o.Component{constructor(e){super(e),this.state={tab:0,originalId:e.group._id}}componentDidMount(){if(this.props.isNew){const e=H[Math.round(Math.random()*(H.length-1))];e&&i.Utils.getSvg(e).then((e=>{const t=i.Utils.clone(this.props.group);t.common.icon=e,this.props.onChange(t)}))}}render(){const e=this.props.groups.find((e=>e._id===this.props.group._id)),t=this.props.group._id!==this.state.originalId;let s="system.group."!==this.props.group._id&&this.props.group.common.password===this.props.group.common.passwordRepeat;const o=e=>e.replace(i.Utils.FORBIDDEN_CHARS,"_").replace(/\s/g,"_").replace(/\./g,"_").toLowerCase(),n=(e,t)=>{const s=e.split(".");return s[s.length-1]=t,s.join(".")};this.props.isNew?e&&(s=!1):e&&t&&(s=!1);const l=this.props.getText(this.props.group.common.desc),a=this.props.getText(this.props.group.common.name),c=[(0,g.jsxs)(d.Grid2,{container:!0,spacing:this.props.innerWidth<500?1:4,style:this.props.styles.dialog,children:[(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(j.K,{label:"Name",t:this.props.t,value:a,onChange:e=>{const t=i.Utils.clone(this.props.group);this.props.group.common.dontDelete||o(this.props.getText(t.common.name))!==t._id.split(".").pop()||(t._id=n(t._id,o(e))),t.common.name=e,this.props.onChange(t)},autoComplete:"off",icon:p.TextFields,styles:this.props.styles})}),(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(j.K,{label:"ID edit",t:this.props.t,disabled:this.props.group.common.dontDelete,value:this.props.group._id.split(".")[this.props.group._id.split(".").length-1],onChange:e=>{const t=i.Utils.clone(this.props.group);t._id=n(t._id,o(e)),this.props.onChange(t)},icon:p.LocalOffer,styles:this.props.styles})}),(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(j.K,{label:"ID preview",t:this.props.t,disabled:!0,value:this.props.group._id,icon:p.Pageview,styles:this.props.styles})}),(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(j.K,{label:"Description",t:this.props.t,value:l,onChange:e=>{const t=i.Utils.clone(this.props.group);t.common.desc=e,this.props.onChange(t)},icon:p.Description,styles:this.props.styles})}),(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(i.IconPicker,{label:"Icon",icons:H,value:this.props.group.common.icon,onChange:e=>{const t=i.Utils.clone(this.props.group);t.common.icon=e,this.props.onChange(t)},previewStyle:this.props.styles.iconPreview,icon:p.Image})}),(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(j.S,{label:"Color",t:this.props.t,value:this.props.group.common.color,previewStyle:this.props.styles.iconPreview,onChange:e=>{const t=i.Utils.clone(this.props.group);t.common.color=e,this.props.onChange(t)},icon:p.ColorLens,style:this.props.styles.colorPicker,styles:this.props.styles})})]}),q(this.props)][this.state.tab];return(0,g.jsxs)(d.Dialog,{open:!0,onClose:(e,t)=>{"backdropClick"!==t&&"escapeKeyDown"!==t&&this.props.onClose()},fullWidth:this.props.innerWidth<500,children:[(0,g.jsx)(d.DialogTitle,{style:this.props.styles.dialogTitle,children:(0,g.jsxs)(d.Tabs,{variant:"fullWidth",value:this.state.tab,onChange:(e,t)=>this.setState({tab:t}),children:[(0,g.jsx)(d.Tab,{label:this.props.t("Main"),value:0}),(0,g.jsx)(d.Tab,{label:this.props.t("Permissions"),value:1})]})}),(0,g.jsx)(d.DialogContent,{sx:{"&.MuiDialogContent-root":(0,r.A)((0,r.A)({},this.props.innerWidth<500?this.props.styles.narrowContent:void 0),Y)},children:c}),(0,g.jsxs)(d.DialogActions,{style:this.props.styles.dialogActions,children:[(0,g.jsx)(d.Button,{variant:"contained",color:"primary",autoFocus:!0,onClick:()=>this.props.saveData(this.props.isNew?null:this.state.originalId),disabled:!s,startIcon:(0,g.jsx)(p.Check,{}),children:this.props.t("Save")}),(0,g.jsx)(d.Button,{variant:"contained",color:"grey",onClick:this.props.onClose,startIcon:(0,g.jsx)(p.Close,{}),children:this.props.t("Cancel")})]})]})}}const Q=V;function X(e){return(0,g.jsxs)(d.Dialog,{open:!0,onClose:e.onClose,children:[(0,g.jsx)(d.DialogTitle,{children:e.t("Please confirm")}),(0,g.jsx)(d.DialogContent,{children:(0,g.jsx)(d.DialogContentText,{children:e.t("Do you want to delete user %s?",e.getText(e.user.common.name))})}),(0,g.jsxs)(d.DialogActions,{children:[(0,g.jsx)(d.Button,{variant:"contained",color:"primary",onClick:()=>e.deleteUser(e.user._id),startIcon:(0,g.jsx)(p.Delete,{}),children:e.t("Delete")}),(0,g.jsx)(d.Button,{variant:"contained",color:"grey",autoFocus:!0,onClick:e.onClose,startIcon:(0,g.jsx)(p.Close,{}),children:e.t("Cancel")})]})]})}function J(e){return(0,g.jsxs)(d.Dialog,{open:!0,onClose:e.onClose,children:[(0,g.jsx)(d.DialogTitle,{children:e.t("Please confirm")}),(0,g.jsx)(d.DialogContent,{children:(0,g.jsx)(d.DialogContentText,{children:e.t("Do you want to delete group %s?",e.getText(e.group.common.name))})}),(0,g.jsxs)(d.DialogActions,{style:e.styles.dialogActions,children:[(0,g.jsx)(d.Button,{variant:"contained",color:"primary",onClick:()=>e.deleteGroup(e.group._id),startIcon:(0,g.jsx)(p.Delete,{}),children:e.t("Delete")}),(0,g.jsx)(d.Button,{variant:"contained",color:"grey",autoFocus:!0,onClick:e.onClose,startIcon:(0,g.jsx)(p.Close,{}),children:e.t("Cancel")})]})]})}const Z="***********",$={mainGridCont:{height:"calc(100% - 55px)",overflowY:"auto"},childGridCont:{display:"flex",flexDirection:"column"},childGridContWide:{height:"100%"},canDrop:e=>({backgroundColor:e.palette.background.default}),headContainer:{margin:10},blocksContainer:{overflowY:"auto",overflowX:"hidden"},userGroupCard2:e=>({border:"1px solid #FFF",borderColor:e.palette.divider,m:"10px",minHeight:150,backgroundColor:e.palette.background.default,color:e.palette.text.primary,transition:"all 200ms ease-out",opacity:1,overflow:"hidden","&:hover":{overflowY:"auto",boxShadow:"0 1px 1px 0 rgba(0, 0, 0, .4),0 6px 6px 0 rgba(0, 0, 0, .2)"}}),userGroupCardSecondary:e=>({color:e.palette.text.primary,backgroundColor:e.palette.success.light}),permHeaders:e=>({backgroundColor:"dark"===e.palette.mode?e.palette.background.default:e.palette.primary.main,p:"4px",borderRadius:"2px",color:"#EEE"}),userCardContent:{height:"100%",opacity:1},userGroupTitle:{display:"inline-flex",alignItems:"center"},userGroupUserName:{fontWeight:900,padding:5},userGroupUserID:{opacity:.7,padding:5},description:{fontSize:10,fontStyle:"italic",marginLeft:5,opacity:.7},userGroupMember:e=>({display:"inline-flex",m:"4px",p:"4px",backgroundColor:"#00000010",border:"1px solid #FFF",borderColor:e.palette.text.primary,color:e.palette.text.primary,alignItems:"center"}),icon:{height:32,width:32,marginRight:5,backgroundSize:"cover",backgroundPosition:"center"},right:{float:"right"},left:{float:"left",marginRight:10},dialog:{},flex:{display:"flex"},formControl:{display:"flex",padding:24,flexGrow:1e3},formContainer:{display:"flex",justifyContent:"center",alignItems:"center"},formIcon:{margin:10,opacity:.6},descriptionPanel:e=>({width:"100%",backgroundColor:"transparent",mb:"20px",mt:"20px",ml:"20px",opacity:.75,border:"none",display:"flex",alignItems:"center","& a":{pl:"3px",color:"dark"===e.palette.mode?"#EEE":"#111"}}),dialogTitle:{borderBottom:"1px solid #00000020",padding:0,width:"100%"},dialogActions:{borderTop:"1px solid #00000020",width:"100%"},dialogPaper:{overflowY:"initial",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",width:"calc(100% - 100px)",height:"calc(100% - 100px)",maxWidth:800,maxHeight:"100%"},dialogPaperMini:{maxHeight:300},colorPicker:{},iconPreview:{height:40,width:40},mainDescription:{fontSize:"200%"},deleteDialog:{padding:20},narrowContent:{padding:"8px 8px 8px 8px"}},ee=()=>{const e=(0,c.gx)();return e.display?(0,g.jsx)("div",{style:e.style,children:e.item.preview}):null},te={_id:"system.user.",type:"user",common:{name:"",password:"",enabled:!0,color:"",desc:""},native:{},enums:{}},se={_id:void 0,native:{},type:"group",common:{name:"",desc:"",members:[],dontDelete:void 0,acl:{object:{list:!1,read:!1,write:!1,delete:!1,create:void 0},state:{list:!1,read:!1,write:!1,create:!1,delete:!1},users:{list:!1,read:!1,write:!1,create:!1,delete:!1},other:{execute:!1,http:!1,sendto:!1},file:{list:!1,read:!1,write:!1,create:!1,delete:!1}},icon:"",color:""}};class oe extends o.Component{constructor(e){super(e),this.getText=e=>e&&("object"===typeof e?e[this.props.lang]||e.en||"":e||"")||"",this.showUserEditDialog=(e,t)=>{(e=i.Utils.clone(e)).common.password=e.common.password?Z:"",this.setState({userEditDialog:e,userEditDialogNew:t})},this.showGroupEditDialog=(e,t)=>{e=i.Utils.clone(e),this.setState({groupEditDialog:e,groupEditDialogNew:t})},this.updateData=()=>{let e;return this.props.socket.getForeignObjects("system.user.*","user").then((t=>(e=Object.values(t).sort(((e,t)=>e._id>t._id?1:-1)),e.forEach((e=>{e.common&&e.common.description&&(e.common.desc||(e.common.desc=e.common.description),delete e.common.description)})),this.props.socket.getForeignObjects("system.group.*","group")))).then((t=>{const s=Object.values(t).sort(((e,t)=>e._id>t._id?1:-1));s.forEach((e=>{e.common&&e.common.description&&(e.common.desc||(e.common.desc=e.common.description),delete e.common.description)})),this.setState({groups:s,users:e})}))},this.changeUserFormData=e=>this.setState({userEditDialog:e}),this.changeGroupFormData=e=>this.setState({groupEditDialog:e}),this.saveUser=async e=>{const t=i.Utils.clone(this.state.userEditDialog),s=this.state.users.find((e=>e._id===t._id)),o=t.common.password&&t.common.password!==Z?t.common.password:"";if(t.common.password=s?s.common.password:"",await this.props.socket.setObject(t._id,t),"object"===typeof this.state.userEditDialog&&e&&e!==this.state.userEditDialog._id)try{await this.props.socket.delObject(e);for(let s=0;s<this.state.groups.length;s++){const o=this.state.groups[s];if(o.common.members.includes(e)){const s=i.Utils.clone(o);s.common.members[s.common.members.indexOf(e)]=t._id,await this.props.socket.setObject(s._id,s)}}}catch(r){window.alert("Cannot delete user: ".concat(r))}if(o)try{await this.props.socket.changePassword(t._id,o)}catch(r){window.alert("Cannot change password: ".concat(r))}this.setState({userEditDialog:!1},(()=>this.updateData()))},this.saveGroup=async e=>{if("object"===typeof this.state.groupEditDialog){if(await this.props.socket.setObject(this.state.groupEditDialog._id,this.state.groupEditDialog),e&&e!==this.state.groupEditDialog._id)try{await this.props.socket.delObject(e)}catch(t){window.alert("Cannot delete user: ".concat(t))}this.setState({groupEditDialog:!1},(()=>this.updateData()))}},this.showUserDeleteDialog=e=>this.setState({userDeleteDialog:e}),this.showGroupDeleteDialog=e=>this.setState({groupDeleteDialog:e}),this.deleteUser=e=>{this.props.socket.delObject(e).then((()=>Promise.all(this.state.groups.map((t=>{if(t.common.members.includes(e)){const s=i.Utils.clone(t);return s.common.members.splice(s.common.members.indexOf(e),1),this.props.socket.setObject(s._id,s)}return Promise.resolve(null)}))))).catch((e=>window.alert("Cannot delete user: ".concat(e)))).then((()=>{this.setState({userDeleteDialog:!1},(()=>this.updateData()))}))},this.deleteGroup=e=>this.props.socket.delObject(e).then((()=>this.setState({groupDeleteDialog:!1},(()=>this.updateData())))).catch((e=>window.alert("Cannot delete user: ".concat(e)))),this.addUserToGroup=(e,t)=>{const s=this.state.groups.find((e=>e._id===t)),o=s.common.members;o.includes(e)||(o.push(e),this.props.socket.setObject(s._id,s).then((()=>this.updateData())).catch((e=>window.alert("Cannot delete user: ".concat(e)))))},this.removeUserFromGroup=(e,t)=>{const s=this.state.groups.find((e=>e._id===t)),o=s.common.members;o.includes(e)&&(o.splice(o.indexOf(e),1),this.props.socket.setObject(s._id,s).then((()=>this.updateData())))},this.state={users:null,groups:null,userEditDialog:!1,userEditDialogNew:null,groupEditDialog:!1,groupEditDialogNew:null,userDeleteDialog:!1,groupDeleteDialog:!1,innerWidth:0}}componentDidMount(){this.setState({innerWidth:window.innerWidth},(()=>this.updateData()))}componentDidUpdate(){window.innerWidth!==this.state.innerWidth&&setTimeout((()=>this.setState({innerWidth:window.innerWidth})),100)}static _isUniqueName(e,t,s){return!e.find((e=>e._id==="system.user.".concat(t.toLowerCase(),"_").concat(s)||e.common.name==="".concat(t," ").concat(s)))}static findNewUniqueName(e,t,s){let o=1;for(;!oe._isUniqueName(t,s,o);)o++;return{_id:"system.".concat(e?"group":"user",".").concat(s.toLowerCase(),"_").concat(o),name:"".concat(s," ").concat(o)}}render(){return this.state.users&&this.state.groups?(0,g.jsxs)(n.Q,{backend:h.A.isTouchDevice()?a.qi:l.t2,children:[(0,g.jsx)(ee,{}),(0,g.jsx)(d.Box,{component:"div",sx:$.descriptionPanel,children:this.props.t("You can drag users to groups.")}),(0,g.jsxs)(d.Grid2,{container:!0,spacing:2,style:$.mainGridCont,children:[(0,g.jsxs)(d.Grid2,{size:{xs:12,md:6},style:(0,r.A)((0,r.A)({},$.childGridCont),this.state.innerWidth>600?$.childGridContWide:void 0),children:[(0,g.jsxs)("div",{style:$.headContainer,children:[(0,g.jsx)(d.Fab,{size:"small",style:$.right,onClick:()=>{const{_id:e,name:t}=oe.findNewUniqueName(!0,this.state.groups,this.props.t("Group")),s=i.Utils.clone(se);s._id=e,s.common.name=t,this.showGroupEditDialog(s,!0)},children:(0,g.jsx)(p.GroupAdd,{})}),(0,g.jsx)(d.Typography,{gutterBottom:!0,variant:"h4",component:"h4",children:this.props.t("Groups")})]}),(0,g.jsx)("div",{style:$.blocksContainer,children:this.state.groups.sort(((e,t)=>{var s,o;const i=(this.getText(null===e||void 0===e||null===(s=e.common)||void 0===s?void 0:s.name)||e._id).toLowerCase(),r=(this.getText(null===t||void 0===t||null===(o=t.common)||void 0===o?void 0:o.name)||t._id).toLowerCase();return i>r?1:i<r?-1:0})).map((e=>(0,g.jsx)(C,(0,r.A)({themeType:this.props.themeType,group:e,users:this.state.users,showGroupEditDialog:this.showGroupEditDialog,showGroupDeleteDialog:this.showGroupDeleteDialog,removeUserFromGroup:this.removeUserFromGroup,getText:this.getText,styles:$},this.props),e._id)))})]}),(0,g.jsxs)(d.Grid2,{size:{xs:12,md:6},style:(0,r.A)((0,r.A)({},$.childGridCont),this.state.innerWidth>600?$.childGridContWide:void 0),children:[(0,g.jsxs)("div",{style:$.headContainer,children:[(0,g.jsx)(d.Fab,{size:"small",style:$.right,onClick:()=>{const{_id:e,name:t}=oe.findNewUniqueName(!1,this.state.users,this.props.t("User")),s=i.Utils.clone(te);s._id=e,s.common.name=t,this.showUserEditDialog(s,!0)},children:(0,g.jsx)(p.PersonAdd,{})}),(0,g.jsx)(d.Typography,{gutterBottom:!0,variant:"h4",component:"h4",children:this.props.t("Users")})]}),(0,g.jsx)("div",{style:$.blocksContainer,children:this.state.users.sort(((e,t)=>{var s,o;const i=(this.getText(null===e||void 0===e||null===(s=e.common)||void 0===s?void 0:s.name)||e._id).toLowerCase(),r=(this.getText(null===t||void 0===t||null===(o=t.common)||void 0===o?void 0:o.name)||t._id).toLowerCase();return i>r?1:i<r?-1:0})).map((e=>(0,g.jsx)(y,(0,r.A)({themeType:this.props.themeType,user:e,groups:this.state.groups,showUserEditDialog:this.showUserEditDialog,showUserDeleteDialog:this.showUserDeleteDialog,updateData:this.updateData,addUserToGroup:this.addUserToGroup,removeUserFromGroup:this.removeUserFromGroup,getText:this.getText,styles:$},this.props),e._id)))})]})]}),this.state.userEditDialog?(0,g.jsx)(F,{onClose:()=>this.setState({userEditDialog:!1}),users:this.state.users,user:this.state.userEditDialog,isNew:this.state.userEditDialogNew,t:this.props.t,getText:this.getText,styles:$,onChange:this.changeUserFormData,saveData:this.saveUser,innerWidth:this.state.innerWidth}):null,this.state.groupEditDialog?(0,g.jsx)(Q,{onClose:()=>this.setState({groupEditDialog:!1}),groups:this.state.groups,group:this.state.groupEditDialog,isNew:this.state.groupEditDialogNew,t:this.props.t,getText:this.getText,styles:$,onChange:this.changeGroupFormData,innerWidth:this.state.innerWidth,saveData:this.saveGroup}):null,this.state.userDeleteDialog?(0,g.jsx)(X,{getText:this.getText,onClose:()=>this.setState({userDeleteDialog:!1}),user:this.state.userDeleteDialog,t:this.props.t,deleteUser:this.deleteUser}):null,this.state.groupDeleteDialog?(0,g.jsx)(J,{getText:this.getText,onClose:()=>this.setState({groupDeleteDialog:!1}),group:this.state.groupDeleteDialog,t:this.props.t,styles:$,deleteGroup:this.deleteGroup}):null]}):(0,g.jsx)(d.LinearProgress,{})}}const ie=oe;function re(e){return(0,g.jsx)(i.TabContainer,{children:(0,g.jsx)(i.TabContent,{style:{display:"flex",flexDirection:"column",overflow:"auto"},children:(0,g.jsx)(ie,{t:e.t,lang:e.lang,socket:e.socket,ready:e.ready,expertMode:e.expertMode,themeType:e.themeType,theme:e.theme})})})}},94343:(e,t,s)=>{s.d(t,{gx:()=>a});var o=s(28437),i=s(35661);var r=(e,t)=>({x:e.x-t.x,y:e.y-t.y}),n=(e,t)=>{let s=e.getClientOffset();if(null===s)return null;if(!t.current||!t.current.getBoundingClientRect)return r(s,(e=>{let t=e.getInitialClientOffset(),s=e.getInitialSourceClientOffset();return null===t||null===s?{x:0,y:0}:r(t,s)})(e));let o=t.current.getBoundingClientRect(),i={x:o.width/2,y:o.height/2};return r(s,i)},l=e=>{let t="translate(".concat(e.x.toFixed(1),"px, ").concat(e.y.toFixed(1),"px)");return{pointerEvents:"none",position:"fixed",top:0,left:0,transform:t,WebkitTransform:t}},a=()=>{let e=(0,o.useRef)(null),t=(0,i.V)((t=>({currentOffset:n(t,e),isDragging:t.isDragging(),itemType:t.getItemType(),item:t.getItem(),monitor:t})));return t.isDragging&&null!==t.currentOffset?{display:!0,itemType:t.itemType,item:t.item,style:l(t.currentOffset),monitor:t.monitor,ref:e}:{display:!1}};(0,o.createContext)(void 0)}}]);
|
|
2
|
-
//# sourceMappingURL=6361.
|
|
1
|
+
"use strict";(self.webpackChunksrc_rx=self.webpackChunksrc_rx||[]).push([[6361],{16668:(e,t,s)=>{s.d(t,{K:()=>a,S:()=>c});var o=s(89379),i=(s(28437),s(89303)),r=s(32075),n=s(16904),l=s(70579);function a(e){const t=e.icon;return(0,l.jsxs)("div",{style:e.styles.formContainer,children:[t?(0,l.jsx)(t,{style:e.styles.formIcon}):null,(0,l.jsx)(i.FormControl,{style:e.styles.formControl,variant:"standard",children:(0,l.jsx)(i.TextField,{variant:"standard",label:e.t(e.label),autoComplete:e.autoComplete,error:!!e.error,helperText:e.error||"",value:e.value,onChange:t=>e.onChange(t.target.value),disabled:e.disabled,type:e.type,slotProps:{inputLabel:{shrink:!0},input:{readOnly:!1,endAdornment:e.value?(0,l.jsx)(i.InputAdornment,{position:"end",children:(0,l.jsx)(i.IconButton,{size:"small",onClick:()=>e.onChange(""),children:(0,l.jsx)(r.Close,{})})}):null}}})})]})}function c(e){const t=e.icon;return(0,l.jsxs)("div",{style:{width:"100%"},children:[t?(0,l.jsx)(t,{style:e.previewStyle||e.styles.formIcon}):null,(0,l.jsx)(n.ColorPicker,{style:(0,o.A)((0,o.A)({},e.style||void 0),{},{width:t?"calc(100% - 45px)":"100%",display:"inline-block",verticalAlign:"top"}),label:e.t(e.label),onChange:e.onChange,value:e.value||""})]})}},46361:(e,t,s)=>{s.r(t),s.d(t,{default:()=>re});var o=s(28437),i=s(16904),r=s(89379),n=s(30335),l=s(67537),a=s(28791),c=s(94343),d=s(89303),p=s(32075),h=s(17774),u=s(42734),m=s(27686),g=s(70579);const x=e=>{const t=e.isDragging?0:1,s=i.Utils.getInvertedColor(e.user.common.color,e.themeType,!0),o={cursor:"grab",opacity:t,overflow:"hidden",color:s};return e.user.common.color&&(o.backgroundColor=e.user.common.color),(0,g.jsx)(d.Card,{style:o,sx:e.styles.userGroupCard2,children:(0,g.jsxs)("div",{style:e.styles.userCardContent,children:[(0,g.jsxs)("div",{style:e.styles.right,children:[(0,g.jsx)(d.Checkbox,{checked:e.user.common.enabled,style:{color:s},disabled:e.user.common.dontDelete,onChange:()=>{e.socket.extendObject(e.user._id,{common:{enabled:!e.user.common.enabled}}).then((()=>e.updateData()))}}),(0,g.jsx)(d.IconButton,{size:"small",onClick:()=>e.showUserEditDialog(e.user,!1),children:(0,g.jsx)(p.Edit,{style:{color:s}})}),(0,g.jsx)(d.IconButton,{size:"small",onClick:()=>e.showUserDeleteDialog(e.user),disabled:e.user.common.dontDelete,children:(0,g.jsx)(p.Delete,{style:e.user.common.dontDelete?null:{color:s}})})]}),(0,g.jsxs)(d.CardContent,{children:[(0,g.jsxs)(d.Typography,{gutterBottom:!0,component:"div",style:e.styles.userGroupTitle,children:[e.user.common.icon?(0,g.jsx)(i.Icon,{style:e.styles.icon,src:e.user.common.icon}):(0,g.jsx)(p.Person,{style:e.styles.icon}),(0,g.jsxs)("div",{children:[(0,g.jsxs)("div",{children:[(0,g.jsx)("span",{style:e.styles.userGroupUserName,children:e.getText(e.user.common.name)}),(0,g.jsxs)("span",{style:e.styles.userGroupUserID,children:["[",e.user._id,"]"]})]}),(0,g.jsx)("span",{children:e.user.common.desc?(0,g.jsx)("div",{style:e.styles.description,children:e.getText(e.user.common.desc)}):null})]})]}),e.groups.find((t=>t.common.members&&t.common.members.includes(e.user._id)))?(0,g.jsxs)("div",{children:[e.t("In groups"),":"]}):null,(0,g.jsx)("div",{children:e.groups.map((t=>{var o,r;if(!t.common.members||!t.common.members.includes(e.user._id))return null;const n=t&&null!==(o=t.common)&&void 0!==o&&o.color?i.Utils.getInvertedColor(t.common.color,e.themeType,!0):s;return(0,g.jsxs)(d.Card,{variant:"outlined",sx:e.styles.userGroupMember,style:{color:n,borderColor:"".concat(n,"80"),background:(null===(r=t.common)||void 0===r?void 0:r.color)||"inherit"},children:[t.common.icon?(0,g.jsx)(i.Icon,{style:e.styles.icon,src:t.common.icon}):(0,g.jsx)(p.Group,{style:e.styles.icon}),e.getText(t.common.name),(0,g.jsx)(d.IconButton,{size:"small",onClick:()=>e.removeUserFromGroup(e.user._id,t._id),children:(0,g.jsx)(p.Clear,{style:{color:n}})})]},t._id)}))})]})]})})},y=e=>{const t=(0,o.useRef)(),[{isDragging:s},i,n]=(0,u.i)({type:"user",item:()=>{var s;return{userId:e.user._id,preview:(0,g.jsx)("div",{style:{width:null===(s=t.current)||void 0===s?void 0:s.offsetWidth},children:(0,g.jsx)(x,(0,r.A)({},e))})}},end:(t,s)=>{const o=s.getDropResult();t&&o&&e.addUserToGroup(t.userId,o.groupId)},collect:e=>({isDragging:e.isDragging(),handlerId:e.getHandlerId()})});return(0,o.useEffect)((()=>{n((0,m.n)(),{captureDraggingState:!0})}),[n]),(0,g.jsx)("div",{ref:i,children:(0,g.jsx)("div",{ref:t,children:(0,g.jsx)(x,(0,r.A)({isDragging:s},e))})})};var v=s(35964);const C=e=>{var t;const[{CanDrop:s,isOver:o},r]=(0,v.H)((()=>({accept:"user",drop:()=>({groupId:e.group._id}),canDrop:(t,s)=>function(e,t){return!t.group.common.members||!t.group.common.members.includes(e.getItem().userId)}(s,e),collect:e=>({isOver:e.isOver(),CanDrop:e.canDrop()})})),[e.group.common.members]);let n,l=.7;s&&o?(l=s?1:.125,n=e.styles.userGroupCardSecondary):s&&(l=s?.75:.25);const a=i.Utils.getInvertedColor(e.group.common.color,e.themeType,!0),c={opacity:l,overflow:"hidden",color:a};return e.group.common.color&&(c.backgroundColor=e.group.common.color),(0,g.jsxs)(d.Card,{style:c,ref:r,sx:i.Utils.getStyle(e.theme,e.styles.userGroupCard2,n),children:[(0,g.jsxs)("div",{style:e.styles.right,children:[(0,g.jsx)(d.IconButton,{size:"small",onClick:()=>e.showGroupEditDialog(e.group,!1),children:(0,g.jsx)(p.Edit,{style:{color:a}})}),(0,g.jsx)(d.IconButton,{size:"small",onClick:()=>e.showGroupDeleteDialog(e.group),disabled:e.group.common.dontDelete,children:(0,g.jsx)(p.Delete,{style:e.group.common.dontDelete?null:{color:a}})})]}),(0,g.jsxs)(d.CardContent,{children:[(0,g.jsxs)(d.Typography,{gutterBottom:!0,component:"div",style:e.styles.userGroupTitle,children:[e.group.common.icon?(0,g.jsx)(i.Icon,{style:e.styles.icon,src:e.group.common.icon}):(0,g.jsx)(p.Group,{style:e.styles.icon}),(0,g.jsxs)("div",{children:[(0,g.jsxs)("div",{children:[(0,g.jsx)("span",{style:e.styles.userGroupUserName,children:e.getText(e.group.common.name)}),(0,g.jsxs)("span",{children:["[",e.group._id,"]"]})]}),e.group.common.desc?(0,g.jsx)("div",{style:e.styles.description,children:e.getText(e.group.common.desc)}):null]})]}),null!==(t=e.group.common.members)&&void 0!==t&&t.length?(0,g.jsxs)("div",{children:[e.t("Group members"),":"]}):null,(0,g.jsx)("div",{children:(e.group.common.members||[]).map(((t,s)=>{var o,r;const n=e.users.find((e=>e._id===t)),l=n&&null!==(o=n.common)&&void 0!==o&&o.color?i.Utils.getInvertedColor(n.common.color,e.themeType,!0):a;return n?(0,g.jsxs)(d.Card,{variant:"outlined",sx:e.styles.userGroupMember,style:{color:l,borderColor:"".concat(l,"40"),background:(null===(r=n.common)||void 0===r?void 0:r.color)||"inherit"},children:[n.common.icon?(0,g.jsx)(i.Icon,{style:e.styles.icon,src:n.common.icon}):(0,g.jsx)(p.Person,{style:e.styles.icon}),e.getText(n.common.name),(0,g.jsx)(d.IconButton,{size:"small",onClick:()=>e.removeUserFromGroup(t,e.group._id),children:(0,g.jsx)(p.Clear,{style:{color:l}})})]},s):null}))})]})]})};var b=s(16668);const j="./static/media/user1.24fa2b07586d952c415397f499b50c49.svg";const f=s.p+"static/media/user2.c6b253a8208981fea9c70e282073c8ea.svg";const D=s.p+"static/media/user3.e838132e7f2d6d44d829d934daf96dbe.svg";const w=s.p+"static/media/user4.f66996c087a4247316e162b5ec54ff11.svg";const _=s.p+"static/media/user5.842fb6e5ac2067df7c241eb9e42a7ff6.svg";const k=s.p+"static/media/user6.f1589fc9f97a1e42a2a3dd62d18aee5e.svg";const G=s.p+"static/media/user7.773f25cff1c54afbc35bbd79455aa271.svg";const T=s.p+"static/media/user8.43bbbecca8ba97c5da0521bdc072ae1f.svg";const U=s.p+"static/media/user9.2a94bc8f32545bf549e96311624574c4.svg";const I=s.p+"static/media/user10.7b8712e8bbad287a584a0a26ac4cf23c.svg";const E=s.p+"static/media/user11.dfec7022ca4b81de158d5adf60571632.svg";const S=[j,f,D,w,_,k,G,T,U,I,E,s.p+"static/media/user12.67a70d9093f2e3aafdeddb5dc4f110df.svg"],A={padding:"16px 24px"};class P extends o.Component{constructor(e){super(e),this.state={originalId:e.user._id,passwordRepeat:e.user.common.password}}componentDidMount(){if(this.props.isNew){const e=S[Math.round(Math.random()*(S.length-1))];e&&i.Utils.getSvg(e).then((e=>{const t=i.Utils.clone(this.props.user);t.common.icon=e,this.props.onChange(t)}))}}render(){const e=this.props.users.find((e=>e._id===this.props.user._id)),t=this.props.user._id!==this.state.originalId,s=e=>e.replace(i.Utils.FORBIDDEN_CHARS,"_").replace(/\s/g,"_").replace(/\./g,"_").replace(/,/g,"_").replace(/__/g,"_").replace(/__/g,"_").toLowerCase(),o=(e,t)=>{const s=e.split(".");return s[s.length-1]=t,s.join(".")},n=this.props.getText(this.props.user.common.desc),l=this.props.getText(this.props.user.common.name),a=h.A.checkPassword(this.props.user.common.password),c=h.A.checkPassword(this.props.user.common.password,this.state.passwordRepeat);let u="system.user."!==this.props.user._id&&!a&&!c;return(this.props.isNew&&e||e&&t)&&(u=!1),(0,g.jsxs)(d.Dialog,{fullWidth:this.props.innerWidth<500,open:!0,onClose:(e,t)=>{"backdropClick"!==t&&"escapeKeyDown"!==t&&this.props.onClose()},children:[(0,g.jsx)(d.DialogTitle,{style:(0,r.A)((0,r.A)({},this.props.styles.dialogTitle),{},{padding:12}),children:this.props.t("User parameters")}),(0,g.jsx)(d.DialogContent,{sx:{"&.MuiDialogContent-root":(0,r.A)((0,r.A)({},this.props.innerWidth<500?this.props.styles.narrowContent:void 0),A)},children:(0,g.jsxs)(d.Grid2,{container:!0,spacing:this.props.innerWidth<500?1:4,style:this.props.styles.dialog,children:[(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(b.K,{label:"Name",t:this.props.t,value:l,onChange:e=>{const t=i.Utils.clone(this.props.user);this.props.user.common.dontDelete||s(this.props.getText(t.common.name))!==t._id.split(".").pop()||(t._id=o(t._id,s(e))),t.common.name=e,this.props.onChange(t)},autoComplete:"new-password",icon:p.TextFields,styles:this.props.styles})}),(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(b.K,{label:"ID edit",t:this.props.t,disabled:this.props.user.common.dontDelete,value:this.props.user._id.split(".")[this.props.user._id.split(".").length-1],onChange:e=>{const t=i.Utils.clone(this.props.user);t._id=o(t._id,s(e)),this.props.onChange(t)},icon:p.LocalOffer,styles:this.props.styles})}),(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(b.K,{label:"ID preview",t:this.props.t,disabled:!0,value:this.props.user._id,icon:p.Pageview,styles:this.props.styles})}),(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(b.K,{label:"Description",t:this.props.t,value:n,onChange:e=>{const t=i.Utils.clone(this.props.user);t.common.desc=e,this.props.onChange(t)},icon:p.Description,styles:this.props.styles})}),(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(b.K,{label:"Password",t:this.props.t,value:this.props.user.common.password,error:a?this.props.t(a):void 0,onChange:e=>{const t=i.Utils.clone(this.props.user);t.common.password=e,this.props.onChange(t)},type:"password",autoComplete:"new-password",icon:p.VpnKey,styles:this.props.styles})}),(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(b.K,{label:"Password repeat",t:this.props.t,value:this.state.passwordRepeat,error:c?this.props.t(c):void 0,onChange:e=>this.setState({passwordRepeat:e}),type:"password",autoComplete:"new-password",icon:p.VpnKey,styles:this.props.styles})}),(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(i.IconPicker,{icons:S,label:"Icon",value:this.props.user.common.icon,onChange:e=>{const t=i.Utils.clone(this.props.user);t.common.icon=e,this.props.onChange(t)},previewStyle:this.props.styles.iconPreview,icon:p.Image})}),(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(b.S,{label:"Color",t:this.props.t,value:this.props.user.common.color,previewStyle:this.props.styles.iconPreview,onChange:e=>{const t=i.Utils.clone(this.props.user);t.common.color=e,this.props.onChange(t)},icon:p.ColorLens,style:this.props.styles.colorPicker,styles:this.props.styles})})]})}),(0,g.jsxs)(d.DialogActions,{style:this.props.styles.dialogActions,children:[(0,g.jsx)(d.Button,{variant:"contained",color:"primary",autoFocus:!0,onClick:()=>this.props.saveData(this.props.isNew?null:this.state.originalId),disabled:!u,startIcon:(0,g.jsx)(p.Check,{}),children:this.props.t("Save")}),(0,g.jsx)(d.Button,{variant:"contained",color:"grey",onClick:this.props.onClose,startIcon:(0,g.jsx)(p.Close,{}),children:this.props.t("Cancel")})]})]})}}const F=P;const O=s.p+"static/media/group1.e4d9dfc6de58d318b9f8659b7bdf92c8.svg";const W=s.p+"static/media/group2.005a7b0a473ee5c6b4afa0f5a4bd399e.svg";const z=s.p+"static/media/group3.ee5e28d28f498bd44d945842ecc32110.svg";const N=s.p+"static/media/group4.d6b392ffee69d8a8efee376434f5cfba.svg";const B=s.p+"static/media/group5.68fdb9e99d289e9c014cc8ee4e9ae4bb.svg";const R=s.p+"static/media/group6.c7f286d197fb918b0d2b34944ec9ef6a.svg";const L=s.p+"static/media/group7.066f78d64741ca336b2137f9caf72133.svg";const M=s.p+"static/media/group8.25d573e553e37968d4e6babd06b36746.svg";const K=s.p+"static/media/group9.b7aae7b7185e989f91b749ff1758d49d.svg";const H=[O,W,z,N,B,R,L,M,K,s.p+"static/media/group10.250fd49c0c4d348815c639620bef3467.svg"];function q(e){const t=(e,t)=>Object.values(e).map(((s,o)=>{const i=Object.keys(e)[o];return t(s,i)}));let s=e.group.common.acl;return s=s||{},s.object=s.object||{read:!0,list:!0,write:!0,delete:!1,create:void 0},s.object=(0,r.A)({read:!0,list:!0,write:!0,delete:!1},s.object),s.state=s.state||{read:!0,list:!0,write:!0,delete:!1,create:void 0},s.state=(0,r.A)({read:!0,list:!0,write:!0,delete:!1},s.state),s.users=s.users||{write:!1,delete:!1,create:!1,list:void 0,read:void 0},s.users=(0,r.A)({write:!1,delete:!1,create:!1},s.users),s.other=s.other||{http:!1,execute:!1,sendto:!0},s.other=(0,r.A)({http:!1,execute:!1,sendto:!0},s.other),s.file=s.file||{read:!0,list:!0,write:!1,delete:!1,create:!1},s.file=(0,r.A)({read:!0,list:!0,write:!1,delete:!1,create:!1},s.file),(0,g.jsx)(d.Grid2,{container:!0,spacing:e.innerWidth<500?1:4,style:e.styles.dialog,children:t(e.group.common.acl||{},((s,o)=>(0,g.jsxs)(d.Grid2,{size:{xs:12,md:12},children:[(0,g.jsx)(d.Box,{component:"h2",sx:e.styles.permHeaders,children:e.t("group_acl_".concat(o))}),t(s,((t,s)=>(0,g.jsx)(d.FormControlLabel,{control:(0,g.jsx)(d.Checkbox,{disabled:"system.group.administrator"===e.group._id,checked:t,onChange:t=>{const r=i.Utils.clone(e.group);r.common.acl[o][s]=t.target.checked,e.onChange(r)}}),label:e.t("group_acl_".concat(s)),labelPlacement:"top"},s)))]},o)))},"PermissionsTab")}const Y={padding:"16px 24px"};class V extends o.Component{constructor(e){super(e),this.state={tab:0,originalId:e.group._id}}componentDidMount(){if(this.props.isNew){const e=H[Math.round(Math.random()*(H.length-1))];e&&i.Utils.getSvg(e).then((e=>{const t=i.Utils.clone(this.props.group);t.common.icon=e,this.props.onChange(t)}))}}render(){const e=this.props.groups.find((e=>e._id===this.props.group._id)),t=this.props.group._id!==this.state.originalId;let s="system.group."!==this.props.group._id&&this.props.group.common.password===this.props.group.common.passwordRepeat;const o=e=>e.replace(i.Utils.FORBIDDEN_CHARS,"_").replace(/\s/g,"_").replace(/\./g,"_").toLowerCase(),n=(e,t)=>{const s=e.split(".");return s[s.length-1]=t,s.join(".")};this.props.isNew?e&&(s=!1):e&&t&&(s=!1);const l=this.props.getText(this.props.group.common.desc),a=this.props.getText(this.props.group.common.name),c=[(0,g.jsxs)(d.Grid2,{container:!0,spacing:this.props.innerWidth<500?1:4,style:this.props.styles.dialog,children:[(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(b.K,{label:"Name",t:this.props.t,value:a,onChange:e=>{const t=i.Utils.clone(this.props.group);this.props.group.common.dontDelete||o(this.props.getText(t.common.name))!==t._id.split(".").pop()||(t._id=n(t._id,o(e))),t.common.name=e,this.props.onChange(t)},autoComplete:"off",icon:p.TextFields,styles:this.props.styles})}),(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(b.K,{label:"ID edit",t:this.props.t,disabled:this.props.group.common.dontDelete,value:this.props.group._id.split(".")[this.props.group._id.split(".").length-1],onChange:e=>{const t=i.Utils.clone(this.props.group);t._id=n(t._id,o(e)),this.props.onChange(t)},icon:p.LocalOffer,styles:this.props.styles})}),(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(b.K,{label:"ID preview",t:this.props.t,disabled:!0,value:this.props.group._id,icon:p.Pageview,styles:this.props.styles})}),(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(b.K,{label:"Description",t:this.props.t,value:l,onChange:e=>{const t=i.Utils.clone(this.props.group);t.common.desc=e,this.props.onChange(t)},icon:p.Description,styles:this.props.styles})}),(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(i.IconPicker,{label:"Icon",icons:H,value:this.props.group.common.icon,onChange:e=>{const t=i.Utils.clone(this.props.group);t.common.icon=e,this.props.onChange(t)},previewStyle:this.props.styles.iconPreview,icon:p.Image})}),(0,g.jsx)(d.Grid2,{size:{xs:12,md:6},children:(0,g.jsx)(b.S,{label:"Color",t:this.props.t,value:this.props.group.common.color,previewStyle:this.props.styles.iconPreview,onChange:e=>{const t=i.Utils.clone(this.props.group);t.common.color=e,this.props.onChange(t)},icon:p.ColorLens,style:this.props.styles.colorPicker,styles:this.props.styles})})]}),q(this.props)][this.state.tab];return(0,g.jsxs)(d.Dialog,{open:!0,onClose:(e,t)=>{"backdropClick"!==t&&"escapeKeyDown"!==t&&this.props.onClose()},fullWidth:this.props.innerWidth<500,children:[(0,g.jsx)(d.DialogTitle,{style:this.props.styles.dialogTitle,children:(0,g.jsxs)(d.Tabs,{variant:"fullWidth",value:this.state.tab,onChange:(e,t)=>this.setState({tab:t}),children:[(0,g.jsx)(d.Tab,{label:this.props.t("Main"),value:0}),(0,g.jsx)(d.Tab,{label:this.props.t("Permissions"),value:1})]})}),(0,g.jsx)(d.DialogContent,{sx:{"&.MuiDialogContent-root":(0,r.A)((0,r.A)({},this.props.innerWidth<500?this.props.styles.narrowContent:void 0),Y)},children:c}),(0,g.jsxs)(d.DialogActions,{style:this.props.styles.dialogActions,children:[(0,g.jsx)(d.Button,{variant:"contained",color:"primary",autoFocus:!0,onClick:()=>this.props.saveData(this.props.isNew?null:this.state.originalId),disabled:!s,startIcon:(0,g.jsx)(p.Check,{}),children:this.props.t("Save")}),(0,g.jsx)(d.Button,{variant:"contained",color:"grey",onClick:this.props.onClose,startIcon:(0,g.jsx)(p.Close,{}),children:this.props.t("Cancel")})]})]})}}const Q=V;function X(e){return(0,g.jsxs)(d.Dialog,{open:!0,onClose:e.onClose,children:[(0,g.jsx)(d.DialogTitle,{children:e.t("Please confirm")}),(0,g.jsx)(d.DialogContent,{children:(0,g.jsx)(d.DialogContentText,{children:e.t("Do you want to delete user %s?",e.getText(e.user.common.name))})}),(0,g.jsxs)(d.DialogActions,{children:[(0,g.jsx)(d.Button,{variant:"contained",color:"primary",onClick:()=>e.deleteUser(e.user._id),startIcon:(0,g.jsx)(p.Delete,{}),children:e.t("Delete")}),(0,g.jsx)(d.Button,{variant:"contained",color:"grey",autoFocus:!0,onClick:e.onClose,startIcon:(0,g.jsx)(p.Close,{}),children:e.t("Cancel")})]})]})}function J(e){return(0,g.jsxs)(d.Dialog,{open:!0,onClose:e.onClose,children:[(0,g.jsx)(d.DialogTitle,{children:e.t("Please confirm")}),(0,g.jsx)(d.DialogContent,{children:(0,g.jsx)(d.DialogContentText,{children:e.t("Do you want to delete group %s?",e.getText(e.group.common.name))})}),(0,g.jsxs)(d.DialogActions,{style:e.styles.dialogActions,children:[(0,g.jsx)(d.Button,{variant:"contained",color:"primary",onClick:()=>e.deleteGroup(e.group._id),startIcon:(0,g.jsx)(p.Delete,{}),children:e.t("Delete")}),(0,g.jsx)(d.Button,{variant:"contained",color:"grey",autoFocus:!0,onClick:e.onClose,startIcon:(0,g.jsx)(p.Close,{}),children:e.t("Cancel")})]})]})}const Z="***********",$={mainGridCont:{height:"calc(100% - 55px)",overflowY:"auto"},childGridCont:{display:"flex",flexDirection:"column"},childGridContWide:{height:"100%"},canDrop:e=>({backgroundColor:e.palette.background.default}),headContainer:{margin:10},blocksContainer:{overflowY:"auto",overflowX:"hidden"},userGroupCard2:e=>({border:"1px solid #FFF",borderColor:e.palette.divider,m:"10px",minHeight:150,backgroundColor:e.palette.background.default,color:e.palette.text.primary,transition:"all 200ms ease-out",opacity:1,overflow:"hidden","&:hover":{overflowY:"auto",boxShadow:"0 1px 1px 0 rgba(0, 0, 0, .4),0 6px 6px 0 rgba(0, 0, 0, .2)"}}),userGroupCardSecondary:e=>({color:e.palette.text.primary,backgroundColor:e.palette.success.light}),permHeaders:e=>({backgroundColor:"dark"===e.palette.mode?e.palette.background.default:e.palette.primary.main,p:"4px",borderRadius:"2px",color:"#EEE"}),userCardContent:{height:"100%",opacity:1},userGroupTitle:{display:"inline-flex",alignItems:"center"},userGroupUserName:{fontWeight:900,padding:5},userGroupUserID:{opacity:.7,padding:5},description:{fontSize:10,fontStyle:"italic",marginLeft:5,opacity:.7},userGroupMember:e=>({display:"inline-flex",m:"4px",p:"4px",backgroundColor:"#00000010",border:"1px solid #FFF",borderColor:e.palette.text.primary,color:e.palette.text.primary,alignItems:"center"}),icon:{height:32,width:32,marginRight:5,backgroundSize:"cover",backgroundPosition:"center"},right:{float:"right"},left:{float:"left",marginRight:10},dialog:{},flex:{display:"flex"},formControl:{display:"flex",padding:24,flexGrow:1e3},formContainer:{display:"flex",justifyContent:"center",alignItems:"center"},formIcon:{margin:10,opacity:.6},descriptionPanel:e=>({width:"100%",backgroundColor:"transparent",mb:"20px",mt:"20px",ml:"20px",opacity:.75,border:"none",display:"flex",alignItems:"center","& a":{pl:"3px",color:"dark"===e.palette.mode?"#EEE":"#111"}}),dialogTitle:{borderBottom:"1px solid #00000020",padding:0,width:"100%"},dialogActions:{borderTop:"1px solid #00000020",width:"100%"},dialogPaper:{overflowY:"initial",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",width:"calc(100% - 100px)",height:"calc(100% - 100px)",maxWidth:800,maxHeight:"100%"},dialogPaperMini:{maxHeight:300},colorPicker:{},iconPreview:{height:40,width:40},mainDescription:{fontSize:"200%"},deleteDialog:{padding:20},narrowContent:{padding:"8px 8px 8px 8px"}},ee=()=>{const e=(0,c.gx)();return e.display?(0,g.jsx)("div",{style:e.style,children:e.item.preview}):null},te={_id:"system.user.",type:"user",common:{name:"",password:"",enabled:!0,color:"",desc:""},native:{},enums:{}},se={_id:void 0,native:{},type:"group",common:{name:"",desc:"",members:[],dontDelete:void 0,acl:{object:{list:!1,read:!1,write:!1,delete:!1,create:void 0},state:{list:!1,read:!1,write:!1,create:!1,delete:!1},users:{list:!1,read:!1,write:!1,create:!1,delete:!1},other:{execute:!1,http:!1,sendto:!1},file:{list:!1,read:!1,write:!1,create:!1,delete:!1}},icon:"",color:""}};class oe extends o.Component{constructor(e){super(e),this.getText=e=>e&&("object"===typeof e?e[this.props.lang]||e.en||"":e||"")||"",this.showUserEditDialog=(e,t)=>{(e=i.Utils.clone(e)).common.password=e.common.password?Z:"",this.setState({userEditDialog:e,userEditDialogNew:t})},this.showGroupEditDialog=(e,t)=>{e=i.Utils.clone(e),this.setState({groupEditDialog:e,groupEditDialogNew:t})},this.updateData=()=>{let e;return this.props.socket.getForeignObjects("system.user.*","user").then((t=>(e=Object.values(t).sort(((e,t)=>e._id>t._id?1:-1)),e.forEach((e=>{e.common&&e.common.description&&(e.common.desc||(e.common.desc=e.common.description),delete e.common.description)})),this.props.socket.getForeignObjects("system.group.*","group")))).then((t=>{const s=Object.values(t).sort(((e,t)=>e._id>t._id?1:-1));s.forEach((e=>{e.common&&e.common.description&&(e.common.desc||(e.common.desc=e.common.description),delete e.common.description)})),this.setState({groups:s,users:e})}))},this.changeUserFormData=e=>this.setState({userEditDialog:e}),this.changeGroupFormData=e=>this.setState({groupEditDialog:e}),this.saveUser=async e=>{const t=i.Utils.clone(this.state.userEditDialog),s=this.state.users.find((e=>e._id===t._id)),o=t.common.password&&t.common.password!==Z?t.common.password:"";if(t.common.password=s?s.common.password:"",await this.props.socket.setObject(t._id,t),"object"===typeof this.state.userEditDialog&&e&&e!==this.state.userEditDialog._id)try{await this.props.socket.delObject(e);for(let s=0;s<this.state.groups.length;s++){const o=this.state.groups[s];if(o.common.members.includes(e)){const s=i.Utils.clone(o);s.common.members[s.common.members.indexOf(e)]=t._id,await this.props.socket.setObject(s._id,s)}}}catch(r){window.alert("Cannot delete user: ".concat(r))}if(o)try{await this.props.socket.changePassword(t._id,o)}catch(r){window.alert("Cannot change password: ".concat(r))}this.setState({userEditDialog:!1},(()=>this.updateData()))},this.saveGroup=async e=>{if("object"===typeof this.state.groupEditDialog){if(await this.props.socket.setObject(this.state.groupEditDialog._id,this.state.groupEditDialog),e&&e!==this.state.groupEditDialog._id)try{await this.props.socket.delObject(e)}catch(t){window.alert("Cannot delete user: ".concat(t))}this.setState({groupEditDialog:!1},(()=>this.updateData()))}},this.showUserDeleteDialog=e=>this.setState({userDeleteDialog:e}),this.showGroupDeleteDialog=e=>this.setState({groupDeleteDialog:e}),this.deleteUser=e=>{this.props.socket.delObject(e).then((()=>Promise.all(this.state.groups.map((t=>{if(t.common.members.includes(e)){const s=i.Utils.clone(t);return s.common.members.splice(s.common.members.indexOf(e),1),this.props.socket.setObject(s._id,s)}return Promise.resolve(null)}))))).catch((e=>window.alert("Cannot delete user: ".concat(e)))).then((()=>{this.setState({userDeleteDialog:!1},(()=>this.updateData()))}))},this.deleteGroup=e=>this.props.socket.delObject(e).then((()=>this.setState({groupDeleteDialog:!1},(()=>this.updateData())))).catch((e=>window.alert("Cannot delete user: ".concat(e)))),this.addUserToGroup=(e,t)=>{const s=this.state.groups.find((e=>e._id===t)),o=s.common.members;o.includes(e)||(o.push(e),this.props.socket.setObject(s._id,s).then((()=>this.updateData())).catch((e=>window.alert("Cannot delete user: ".concat(e)))))},this.removeUserFromGroup=(e,t)=>{const s=this.state.groups.find((e=>e._id===t)),o=s.common.members;o.includes(e)&&(o.splice(o.indexOf(e),1),this.props.socket.setObject(s._id,s).then((()=>this.updateData())))},this.state={users:null,groups:null,userEditDialog:!1,userEditDialogNew:null,groupEditDialog:!1,groupEditDialogNew:null,userDeleteDialog:!1,groupDeleteDialog:!1,innerWidth:0}}componentDidMount(){this.setState({innerWidth:window.innerWidth},(()=>this.updateData()))}componentDidUpdate(){window.innerWidth!==this.state.innerWidth&&setTimeout((()=>this.setState({innerWidth:window.innerWidth})),100)}static _isUniqueName(e,t,s){return!e.find((e=>e._id==="system.user.".concat(t.toLowerCase(),"_").concat(s)||e.common.name==="".concat(t," ").concat(s)))}static findNewUniqueName(e,t,s){let o=1;for(;!oe._isUniqueName(t,s,o);)o++;return{_id:"system.".concat(e?"group":"user",".").concat(s.toLowerCase(),"_").concat(o),name:"".concat(s," ").concat(o)}}render(){return this.state.users&&this.state.groups?(0,g.jsxs)(n.Q,{backend:h.A.isTouchDevice()?a.qi:l.t2,children:[(0,g.jsx)(ee,{}),(0,g.jsx)(d.Box,{component:"div",sx:$.descriptionPanel,children:this.props.t("You can drag users to groups.")}),(0,g.jsxs)(d.Grid2,{container:!0,spacing:2,style:$.mainGridCont,children:[(0,g.jsxs)(d.Grid2,{size:{xs:12,md:6},style:(0,r.A)((0,r.A)({},$.childGridCont),this.state.innerWidth>600?$.childGridContWide:void 0),children:[(0,g.jsxs)("div",{style:$.headContainer,children:[(0,g.jsx)(d.Fab,{size:"small",style:$.right,onClick:()=>{const{_id:e,name:t}=oe.findNewUniqueName(!0,this.state.groups,this.props.t("Group")),s=i.Utils.clone(se);s._id=e,s.common.name=t,this.showGroupEditDialog(s,!0)},children:(0,g.jsx)(p.GroupAdd,{})}),(0,g.jsx)(d.Typography,{gutterBottom:!0,variant:"h4",component:"h4",children:this.props.t("Groups")})]}),(0,g.jsx)("div",{style:$.blocksContainer,children:this.state.groups.sort(((e,t)=>{var s,o;const i=(this.getText(null===e||void 0===e||null===(s=e.common)||void 0===s?void 0:s.name)||e._id).toLowerCase(),r=(this.getText(null===t||void 0===t||null===(o=t.common)||void 0===o?void 0:o.name)||t._id).toLowerCase();return i>r?1:i<r?-1:0})).map((e=>(0,g.jsx)(C,(0,r.A)({themeType:this.props.themeType,group:e,users:this.state.users,showGroupEditDialog:this.showGroupEditDialog,showGroupDeleteDialog:this.showGroupDeleteDialog,removeUserFromGroup:this.removeUserFromGroup,getText:this.getText,styles:$},this.props),e._id)))})]}),(0,g.jsxs)(d.Grid2,{size:{xs:12,md:6},style:(0,r.A)((0,r.A)({},$.childGridCont),this.state.innerWidth>600?$.childGridContWide:void 0),children:[(0,g.jsxs)("div",{style:$.headContainer,children:[(0,g.jsx)(d.Fab,{size:"small",style:$.right,onClick:()=>{const{_id:e,name:t}=oe.findNewUniqueName(!1,this.state.users,this.props.t("User")),s=i.Utils.clone(te);s._id=e,s.common.name=t,this.showUserEditDialog(s,!0)},children:(0,g.jsx)(p.PersonAdd,{})}),(0,g.jsx)(d.Typography,{gutterBottom:!0,variant:"h4",component:"h4",children:this.props.t("Users")})]}),(0,g.jsx)("div",{style:$.blocksContainer,children:this.state.users.sort(((e,t)=>{var s,o;const i=(this.getText(null===e||void 0===e||null===(s=e.common)||void 0===s?void 0:s.name)||e._id).toLowerCase(),r=(this.getText(null===t||void 0===t||null===(o=t.common)||void 0===o?void 0:o.name)||t._id).toLowerCase();return i>r?1:i<r?-1:0})).map((e=>(0,g.jsx)(y,(0,r.A)({themeType:this.props.themeType,user:e,groups:this.state.groups,showUserEditDialog:this.showUserEditDialog,showUserDeleteDialog:this.showUserDeleteDialog,updateData:this.updateData,addUserToGroup:this.addUserToGroup,removeUserFromGroup:this.removeUserFromGroup,getText:this.getText,styles:$},this.props),e._id)))})]})]}),this.state.userEditDialog?(0,g.jsx)(F,{onClose:()=>this.setState({userEditDialog:!1}),users:this.state.users,user:this.state.userEditDialog,isNew:this.state.userEditDialogNew,t:this.props.t,getText:this.getText,styles:$,onChange:this.changeUserFormData,saveData:this.saveUser,innerWidth:this.state.innerWidth}):null,this.state.groupEditDialog?(0,g.jsx)(Q,{onClose:()=>this.setState({groupEditDialog:!1}),groups:this.state.groups,group:this.state.groupEditDialog,isNew:this.state.groupEditDialogNew,t:this.props.t,getText:this.getText,styles:$,onChange:this.changeGroupFormData,innerWidth:this.state.innerWidth,saveData:this.saveGroup}):null,this.state.userDeleteDialog?(0,g.jsx)(X,{getText:this.getText,onClose:()=>this.setState({userDeleteDialog:!1}),user:this.state.userDeleteDialog,t:this.props.t,deleteUser:this.deleteUser}):null,this.state.groupDeleteDialog?(0,g.jsx)(J,{getText:this.getText,onClose:()=>this.setState({groupDeleteDialog:!1}),group:this.state.groupDeleteDialog,t:this.props.t,styles:$,deleteGroup:this.deleteGroup}):null]}):(0,g.jsx)(d.LinearProgress,{})}}const ie=oe;function re(e){return(0,g.jsx)(i.TabContainer,{children:(0,g.jsx)(i.TabContent,{style:{display:"flex",flexDirection:"column",overflow:"auto"},children:(0,g.jsx)(ie,{t:e.t,lang:e.lang,socket:e.socket,ready:e.ready,expertMode:e.expertMode,themeType:e.themeType,theme:e.theme})})})}},94343:(e,t,s)=>{s.d(t,{gx:()=>d});var o=s(28437),i=s(35661);s(70579);(0,o.createContext)(void 0);var r=(e,t)=>({x:e.x-t.x,y:e.y-t.y}),n=(e,t)=>{switch(e){case"left":case"top-start":case"bottom-start":return 0;case"right":case"top-end":case"bottom-end":return t.width;default:return t.width/2}},l=(e,t)=>{switch(e){case"top":case"top-start":case"top-end":return 0;case"bottom":case"bottom-start":case"bottom-end":return t.height;default:return t.height/2}},a=function(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"center",o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{x:0,y:0},i=e.getClientOffset();if(null===i)return null;if(!t.current||!t.current.getBoundingClientRect)return r(i,(e=>{let t=e.getInitialClientOffset(),s=e.getInitialSourceClientOffset();return null===t||null===s?{x:0,y:0}:r(t,s)})(e));let a=t.current.getBoundingClientRect(),c={x:n(s,a),y:l(s,a)};return((e,t)=>({x:e.x+t.x,y:e.y+t.y}))(r(i,c),o)},c=e=>{let t="translate(".concat(e.x.toFixed(1),"px, ").concat(e.y.toFixed(1),"px)");return{pointerEvents:"none",position:"fixed",top:0,left:0,transform:t,WebkitTransform:t}},d=e=>{let t=(0,o.useRef)(null),s=(0,i.V)((s=>({currentOffset:a(s,t,null===e||void 0===e?void 0:e.placement,null===e||void 0===e?void 0:e.padding),isDragging:s.isDragging(),itemType:s.getItemType(),item:s.getItem(),monitor:s})));return s.isDragging&&null!==s.currentOffset?{display:!0,itemType:s.itemType,item:s.item,style:c(s.currentOffset),monitor:s.monitor,ref:t}:{display:!1}}}}]);
|
|
2
|
+
//# sourceMappingURL=6361.ec86271d.chunk.js.map
|