@deephaven/auth-plugins 1.2.1-plotly-rc.3 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AuthHandlerTypes.js.map +1 -1
- package/dist/AuthPlugin.js.map +1 -1
- package/dist/AuthPluginAnonymous.js.map +1 -1
- package/dist/AuthPluginBase.js.map +1 -1
- package/dist/AuthPluginParent.js.map +1 -1
- package/dist/AuthPluginPsk.js.map +1 -1
- package/dist/AuthenticationError.js.map +1 -1
- package/dist/Login.css.map +1 -1
- package/dist/Login.js.map +1 -1
- package/dist/LoginForm.css.map +1 -1
- package/dist/LoginForm.js.map +1 -1
- package/dist/UserContexts.js.map +1 -1
- package/dist/UserUtils.js.map +1 -1
- package/dist/declarations.d.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +10 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthHandlerTypes.js","names":["AUTH_HANDLER_TYPE_ANONYMOUS","AUTH_HANDLER_TYPE_PSK"],"sources":["../src/AuthHandlerTypes.ts"],"sourcesContent":["export const AUTH_HANDLER_TYPE_ANONYMOUS =\n 'io.deephaven.auth.AnonymousAuthenticationHandler';\n\nexport const AUTH_HANDLER_TYPE_PSK =\n 'io.deephaven.authentication.psk.PskAuthenticationHandler';\n"],"mappings":"AAAA,OAAO,IAAMA,2BAA2B,GACtC,kDAAkD;AAEpD,OAAO,IAAMC,qBAAqB,GAChC,0DAA0D"
|
|
1
|
+
{"version":3,"file":"AuthHandlerTypes.js","names":["AUTH_HANDLER_TYPE_ANONYMOUS","AUTH_HANDLER_TYPE_PSK"],"sources":["../src/AuthHandlerTypes.ts"],"sourcesContent":["export const AUTH_HANDLER_TYPE_ANONYMOUS =\n 'io.deephaven.auth.AnonymousAuthenticationHandler';\n\nexport const AUTH_HANDLER_TYPE_PSK =\n 'io.deephaven.authentication.psk.PskAuthenticationHandler';\n"],"mappings":"AAAA,OAAO,IAAMA,2BAA2B,GACtC,kDAAkD;AAEpD,OAAO,IAAMC,qBAAqB,GAChC,0DAA0D"}
|
package/dist/AuthPlugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthPlugin.js","names":["isAuthPlugin","plugin","authPlugin","Component","undefined","isAvailable"],"sources":["../src/AuthPlugin.ts"],"sourcesContent":["import type React from 'react';\n\n/**\n * Map from auth config keys to their values\n * E.g. Map { AuthHandlers → \"io.deephaven.auth.AnonymousAuthenticationHandler\" }\n */\nexport type AuthConfigMap = Map<string, string>;\n\n/**\n * Props for the auth plugin component to render\n */\nexport type AuthPluginProps = {\n /** Map from config keys to their values */\n authConfigValues: AuthConfigMap;\n\n /**\n * The children to render after authentication is completed.\n */\n children: React.ReactNode;\n};\n\nexport type AuthPluginComponent = React.FunctionComponent<AuthPluginProps>;\n\n/**\n * Whether the auth plugin is available given the current configuration\n */\nexport type AuthPluginIsAvailableFunction = (\n authHandlers: string[],\n authConfig: AuthConfigMap\n) => boolean;\n\nexport type AuthPlugin = {\n Component: AuthPluginComponent;\n isAvailable: AuthPluginIsAvailableFunction;\n};\n\nexport function isAuthPlugin(plugin?: unknown): plugin is AuthPlugin {\n if (plugin == null) return false;\n const authPlugin = plugin as AuthPlugin;\n return (\n authPlugin.Component !== undefined &&\n typeof authPlugin.isAvailable === 'function'\n );\n}\n"],"mappings":"AAEA;AACA;AACA;AACA;;AAGA;AACA;AACA;;AAaA;AACA;AACA;;AAWA,OAAO,SAASA,YAAYA,CAACC,MAAgB,EAAwB;EACnE,IAAIA,MAAM,IAAI,IAAI,EAAE,OAAO,KAAK;EAChC,IAAMC,UAAU,GAAGD,MAAoB;EACvC,OACEC,UAAU,CAACC,SAAS,KAAKC,SAAS,IAClC,OAAOF,UAAU,CAACG,WAAW,KAAK,UAAU;AAEhD"
|
|
1
|
+
{"version":3,"file":"AuthPlugin.js","names":["isAuthPlugin","plugin","authPlugin","Component","undefined","isAvailable"],"sources":["../src/AuthPlugin.ts"],"sourcesContent":["import type React from 'react';\n\n/**\n * Map from auth config keys to their values\n * E.g. Map { AuthHandlers → \"io.deephaven.auth.AnonymousAuthenticationHandler\" }\n */\nexport type AuthConfigMap = Map<string, string>;\n\n/**\n * Props for the auth plugin component to render\n */\nexport type AuthPluginProps = {\n /** Map from config keys to their values */\n authConfigValues: AuthConfigMap;\n\n /**\n * The children to render after authentication is completed.\n */\n children: React.ReactNode;\n};\n\nexport type AuthPluginComponent = React.FunctionComponent<AuthPluginProps>;\n\n/**\n * Whether the auth plugin is available given the current configuration\n */\nexport type AuthPluginIsAvailableFunction = (\n authHandlers: string[],\n authConfig: AuthConfigMap\n) => boolean;\n\nexport type AuthPlugin = {\n Component: AuthPluginComponent;\n isAvailable: AuthPluginIsAvailableFunction;\n};\n\nexport function isAuthPlugin(plugin?: unknown): plugin is AuthPlugin {\n if (plugin == null) return false;\n const authPlugin = plugin as AuthPlugin;\n return (\n authPlugin.Component !== undefined &&\n typeof authPlugin.isAvailable === 'function'\n );\n}\n"],"mappings":"AAEA;AACA;AACA;AACA;;AAGA;AACA;AACA;;AAaA;AACA;AACA;;AAWA,OAAO,SAASA,YAAYA,CAACC,MAAgB,EAAwB;EACnE,IAAIA,MAAM,IAAI,IAAI,EAAE,OAAO,KAAK;EAChC,IAAMC,UAAU,GAAGD,MAAoB;EACvC,OACEC,UAAU,CAACC,SAAS,KAAKC,SAAS,IAClC,OAAOF,UAAU,CAACG,WAAW,KAAK,UAAU;AAEhD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthPluginAnonymous.js","names":["React","useCallback","useApi","AUTH_HANDLER_TYPE_ANONYMOUS","AuthPluginBase","UserPermissionsOverrideContext","jsx","_jsx","permissionsOverrides","canLogout","Component","_ref","children","dh","getLoginOptions","type","CoreClient","LOGIN_TYPE_ANONYMOUS","Provider","value","AuthPluginAnonymous","isAvailable","authHandlers","includes"],"sources":["../src/AuthPluginAnonymous.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { AUTH_HANDLER_TYPE_ANONYMOUS } from './AuthHandlerTypes';\nimport { type AuthPlugin, type AuthPluginProps } from './AuthPlugin';\nimport AuthPluginBase from './AuthPluginBase';\nimport {\n type UserPermissionsOverride,\n UserPermissionsOverrideContext,\n} from './UserContexts';\n\nconst permissionsOverrides: UserPermissionsOverride = { canLogout: false };\n\n/**\n * AuthPlugin that tries to login anonymously. Fails if anonymous login fails\n */\nfunction Component({ children }: AuthPluginProps): JSX.Element {\n const dh = useApi();\n\n const getLoginOptions = useCallback(\n () => ({ type: dh.CoreClient.LOGIN_TYPE_ANONYMOUS }),\n [dh]\n );\n\n return (\n <AuthPluginBase getLoginOptions={getLoginOptions}>\n <UserPermissionsOverrideContext.Provider value={permissionsOverrides}>\n {children}\n </UserPermissionsOverrideContext.Provider>\n </AuthPluginBase>\n );\n}\n\nconst AuthPluginAnonymous: AuthPlugin = {\n Component,\n isAvailable: authHandlers =>\n authHandlers.includes(AUTH_HANDLER_TYPE_ANONYMOUS),\n};\n\nexport default AuthPluginAnonymous;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAC1C,SAASC,MAAM,QAAQ,4BAA4B;AAAC,SAC3CC,2BAA2B;AAAA,OAE7BC,cAAc;AAAA,SAGnBC,8BAA8B;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAGhC,IAAMC,oBAA6C,GAAG;EAAEC,SAAS,EAAE;AAAM,CAAC;;AAE1E;AACA;AACA;AACA,SAASC,SAASA,CAAAC,IAAA,EAA6C;EAAA,IAA5C;IAAEC;EAA0B,CAAC,GAAAD,IAAA;EAC9C,IAAME,EAAE,GAAGX,MAAM,CAAC,CAAC;EAEnB,IAAMY,eAAe,GAAGb,WAAW,CACjC,OAAO;IAAEc,IAAI,EAAEF,EAAE,CAACG,UAAU,CAACC;EAAqB,CAAC,CAAC,EACpD,CAACJ,EAAE,CACL,CAAC;EAED,oBACEN,IAAA,CAACH,cAAc;IAACU,eAAe,EAAEA,eAAgB;IAAAF,QAAA,eAC/CL,IAAA,CAACF,8BAA8B,CAACa,QAAQ;MAACC,KAAK,EAAEX,oBAAqB;MAAAI,QAAA,EAClEA;IAAQ,CAC8B;EAAC,CAC5B,CAAC;AAErB;AAEA,IAAMQ,mBAA+B,GAAG;EACtCV,SAAS;EACTW,WAAW,EAAEC,YAAY,IACvBA,YAAY,CAACC,QAAQ,CAACpB,2BAA2B;AACrD,CAAC;AAED,eAAeiB,mBAAmB"
|
|
1
|
+
{"version":3,"file":"AuthPluginAnonymous.js","names":["React","useCallback","useApi","AUTH_HANDLER_TYPE_ANONYMOUS","AuthPluginBase","UserPermissionsOverrideContext","jsx","_jsx","permissionsOverrides","canLogout","Component","_ref","children","dh","getLoginOptions","type","CoreClient","LOGIN_TYPE_ANONYMOUS","Provider","value","AuthPluginAnonymous","isAvailable","authHandlers","includes"],"sources":["../src/AuthPluginAnonymous.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { AUTH_HANDLER_TYPE_ANONYMOUS } from './AuthHandlerTypes';\nimport { type AuthPlugin, type AuthPluginProps } from './AuthPlugin';\nimport AuthPluginBase from './AuthPluginBase';\nimport {\n type UserPermissionsOverride,\n UserPermissionsOverrideContext,\n} from './UserContexts';\n\nconst permissionsOverrides: UserPermissionsOverride = { canLogout: false };\n\n/**\n * AuthPlugin that tries to login anonymously. Fails if anonymous login fails\n */\nfunction Component({ children }: AuthPluginProps): JSX.Element {\n const dh = useApi();\n\n const getLoginOptions = useCallback(\n () => ({ type: dh.CoreClient.LOGIN_TYPE_ANONYMOUS }),\n [dh]\n );\n\n return (\n <AuthPluginBase getLoginOptions={getLoginOptions}>\n <UserPermissionsOverrideContext.Provider value={permissionsOverrides}>\n {children}\n </UserPermissionsOverrideContext.Provider>\n </AuthPluginBase>\n );\n}\n\nconst AuthPluginAnonymous: AuthPlugin = {\n Component,\n isAvailable: authHandlers =>\n authHandlers.includes(AUTH_HANDLER_TYPE_ANONYMOUS),\n};\n\nexport default AuthPluginAnonymous;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAC1C,SAASC,MAAM,QAAQ,4BAA4B;AAAC,SAC3CC,2BAA2B;AAAA,OAE7BC,cAAc;AAAA,SAGnBC,8BAA8B;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAGhC,IAAMC,oBAA6C,GAAG;EAAEC,SAAS,EAAE;AAAM,CAAC;;AAE1E;AACA;AACA;AACA,SAASC,SAASA,CAAAC,IAAA,EAA6C;EAAA,IAA5C;IAAEC;EAA0B,CAAC,GAAAD,IAAA;EAC9C,IAAME,EAAE,GAAGX,MAAM,CAAC,CAAC;EAEnB,IAAMY,eAAe,GAAGb,WAAW,CACjC,OAAO;IAAEc,IAAI,EAAEF,EAAE,CAACG,UAAU,CAACC;EAAqB,CAAC,CAAC,EACpD,CAACJ,EAAE,CACL,CAAC;EAED,oBACEN,IAAA,CAACH,cAAc;IAACU,eAAe,EAAEA,eAAgB;IAAAF,QAAA,eAC/CL,IAAA,CAACF,8BAA8B,CAACa,QAAQ;MAACC,KAAK,EAAEX,oBAAqB;MAAAI,QAAA,EAClEA;IAAQ,CAC8B;EAAC,CAC5B,CAAC;AAErB;AAEA,IAAMQ,mBAA+B,GAAG;EACtCV,SAAS;EACTW,WAAW,EAAEC,YAAY,IACvBA,YAAY,CAACC,QAAQ,CAACpB,2BAA2B;AACrD,CAAC;AAED,eAAeiB,mBAAmB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthPluginBase.js","names":["React","useEffect","useState","LoadingOverlay","useClient","Log","CanceledPromiseError","getErrorMessage","AuthenticationError","jsx","_jsx","Fragment","_Fragment","log","module","AuthPluginBase","_ref","children","getLoginOptions","client","error","setError","isLoggedIn","setIsLoggedIn","isCanceled","verifyNotCanceled","login","_login","apply","arguments","_asyncToGenerator","loginOptions","info","e","_getErrorMessage","message","isLoading","isLoaded","errorMessage"],"sources":["../src/AuthPluginBase.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { useClient } from '@deephaven/jsapi-bootstrap';\nimport Log from '@deephaven/log';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { CanceledPromiseError, getErrorMessage } from '@deephaven/utils';\nimport AuthenticationError from './AuthenticationError';\n\nconst log = Log.module('AuthPluginBase');\n\nexport type AuthPluginBaseProps = {\n /**\n * The children to render after authentication is completed.\n */\n children: React.ReactNode;\n\n /**\n * Retrieve the login options for logging in to the client\n * @returns A promise for the login options\n */\n getLoginOptions: () => dh.LoginCredentials | Promise<dh.LoginCredentials>;\n};\n\n/**\n * Base AuthPlugin that gets passed a function for retrieving the login options, and then attempting to login with them.\n * @param getLoginOptions Function that returns a promise for the login options\n */\nfunction AuthPluginBase({\n children,\n getLoginOptions,\n}: AuthPluginBaseProps): JSX.Element {\n const client = useClient();\n const [error, setError] = useState<unknown>();\n const [isLoggedIn, setIsLoggedIn] = useState(false);\n\n useEffect(() => {\n let isCanceled = false;\n function verifyNotCanceled(): void {\n if (isCanceled) {\n throw new CanceledPromiseError('Login canceled.');\n }\n }\n async function login(): Promise<void> {\n try {\n const loginOptions = await getLoginOptions();\n verifyNotCanceled();\n\n log.info('Logging in...');\n await client.login(loginOptions);\n verifyNotCanceled();\n\n setIsLoggedIn(true);\n } catch (e) {\n if (!isCanceled) {\n log.error('Unable to login:', e);\n const message =\n getErrorMessage(e) ?? 'Unable to login. Verify credentials.';\n setError(new AuthenticationError(message));\n setIsLoggedIn(false);\n }\n }\n }\n login();\n return () => {\n isCanceled = true;\n };\n }, [client, getLoginOptions]);\n\n if (!isLoggedIn) {\n return (\n <LoadingOverlay\n data-testid=\"auth-base-loading\"\n isLoading={error == null}\n isLoaded={false}\n errorMessage={getErrorMessage(error)}\n />\n );\n }\n\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children}</>;\n}\n\nexport default AuthPluginBase;\n"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAClD,SAASC,cAAc,QAAQ,uBAAuB;AACtD,SAASC,SAAS,QAAQ,4BAA4B;AACtD,OAAOC,GAAG,MAAM,gBAAgB;AAEhC,SAASC,oBAAoB,EAAEC,eAAe,QAAQ,kBAAkB;AAAC,OAClEC,mBAAmB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAE1B,IAAMC,GAAG,GAAGR,GAAG,CAACS,MAAM,CAAC,gBAAgB,CAAC;AAexC;AACA;AACA;AACA;AACA,SAASC,cAAcA,CAAAC,IAAA,EAGc;EAAA,IAHb;IACtBC,QAAQ;IACRC;EACmB,CAAC,GAAAF,IAAA;EACpB,IAAMG,MAAM,GAAGf,SAAS,CAAC,CAAC;EAC1B,IAAM,CAACgB,KAAK,EAAEC,QAAQ,CAAC,GAAGnB,QAAQ,CAAU,CAAC;EAC7C,IAAM,CAACoB,UAAU,EAAEC,aAAa,CAAC,GAAGrB,QAAQ,CAAC,KAAK,CAAC;EAEnDD,SAAS,CAAC,MAAM;IACd,IAAIuB,UAAU,GAAG,KAAK;IACtB,SAASC,iBAAiBA,CAAA,EAAS;MACjC,IAAID,UAAU,EAAE;QACd,MAAM,IAAIlB,oBAAoB,CAAC,iBAAiB,CAAC;MACnD;IACF;IAAC,SACcoB,KAAKA,CAAA;MAAA,OAAAC,MAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IAAA,SAAAF,OAAA;MAAAA,MAAA,GAAAG,iBAAA,CAApB,aAAsC;QACpC,IAAI;UACF,IAAMC,YAAY,SAASb,eAAe,CAAC,CAAC;UAC5CO,iBAAiB,CAAC,CAAC;UAEnBZ,GAAG,CAACmB,IAAI,CAAC,eAAe,CAAC;UACzB,MAAMb,MAAM,CAACO,KAAK,CAACK,YAAY,CAAC;UAChCN,iBAAiB,CAAC,CAAC;UAEnBF,aAAa,CAAC,IAAI,CAAC;QACrB,CAAC,CAAC,OAAOU,CAAC,EAAE;UACV,IAAI,CAACT,UAAU,EAAE;YAAA,IAAAU,gBAAA;YACfrB,GAAG,CAACO,KAAK,CAAC,kBAAkB,EAAEa,CAAC,CAAC;YAChC,IAAME,OAAO,IAAAD,gBAAA,GACX3B,eAAe,CAAC0B,CAAC,CAAC,cAAAC,gBAAA,cAAAA,gBAAA,GAAI,sCAAsC;YAC9Db,QAAQ,CAAC,IAAIb,mBAAmB,CAAC2B,OAAO,CAAC,CAAC;YAC1CZ,aAAa,CAAC,KAAK,CAAC;UACtB;QACF;MACF,CAAC;MAAA,OAAAI,MAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IACDH,KAAK,CAAC,CAAC;IACP,OAAO,MAAM;MACXF,UAAU,GAAG,IAAI;IACnB,CAAC;EACH,CAAC,EAAE,CAACL,MAAM,EAAED,eAAe,CAAC,CAAC;EAE7B,IAAI,CAACI,UAAU,EAAE;IACf,oBACEZ,IAAA,CAACP,cAAc;MACb,eAAY,mBAAmB;MAC/BiC,SAAS,EAAEhB,KAAK,IAAI,IAAK;MACzBiB,QAAQ,EAAE,KAAM;MAChBC,YAAY,EAAE/B,eAAe,CAACa,KAAK;IAAE,CACtC,CAAC;EAEN;;EAEA;EACA,oBAAOV,IAAA,CAAAE,SAAA;IAAAK,QAAA,EAAGA;EAAQ,CAAG,CAAC;AACxB;AAEA,eAAeF,cAAc"
|
|
1
|
+
{"version":3,"file":"AuthPluginBase.js","names":["React","useEffect","useState","LoadingOverlay","useClient","Log","CanceledPromiseError","getErrorMessage","AuthenticationError","jsx","_jsx","Fragment","_Fragment","log","module","AuthPluginBase","_ref","children","getLoginOptions","client","error","setError","isLoggedIn","setIsLoggedIn","isCanceled","verifyNotCanceled","login","_login","apply","arguments","_asyncToGenerator","loginOptions","info","e","_getErrorMessage","message","isLoading","isLoaded","errorMessage"],"sources":["../src/AuthPluginBase.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { useClient } from '@deephaven/jsapi-bootstrap';\nimport Log from '@deephaven/log';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { CanceledPromiseError, getErrorMessage } from '@deephaven/utils';\nimport AuthenticationError from './AuthenticationError';\n\nconst log = Log.module('AuthPluginBase');\n\nexport type AuthPluginBaseProps = {\n /**\n * The children to render after authentication is completed.\n */\n children: React.ReactNode;\n\n /**\n * Retrieve the login options for logging in to the client\n * @returns A promise for the login options\n */\n getLoginOptions: () => dh.LoginCredentials | Promise<dh.LoginCredentials>;\n};\n\n/**\n * Base AuthPlugin that gets passed a function for retrieving the login options, and then attempting to login with them.\n * @param getLoginOptions Function that returns a promise for the login options\n */\nfunction AuthPluginBase({\n children,\n getLoginOptions,\n}: AuthPluginBaseProps): JSX.Element {\n const client = useClient();\n const [error, setError] = useState<unknown>();\n const [isLoggedIn, setIsLoggedIn] = useState(false);\n\n useEffect(() => {\n let isCanceled = false;\n function verifyNotCanceled(): void {\n if (isCanceled) {\n throw new CanceledPromiseError('Login canceled.');\n }\n }\n async function login(): Promise<void> {\n try {\n const loginOptions = await getLoginOptions();\n verifyNotCanceled();\n\n log.info('Logging in...');\n await client.login(loginOptions);\n verifyNotCanceled();\n\n setIsLoggedIn(true);\n } catch (e) {\n if (!isCanceled) {\n log.error('Unable to login:', e);\n const message =\n getErrorMessage(e) ?? 'Unable to login. Verify credentials.';\n setError(new AuthenticationError(message));\n setIsLoggedIn(false);\n }\n }\n }\n login();\n return () => {\n isCanceled = true;\n };\n }, [client, getLoginOptions]);\n\n if (!isLoggedIn) {\n return (\n <LoadingOverlay\n data-testid=\"auth-base-loading\"\n isLoading={error == null}\n isLoaded={false}\n errorMessage={getErrorMessage(error)}\n />\n );\n }\n\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children}</>;\n}\n\nexport default AuthPluginBase;\n"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAClD,SAASC,cAAc,QAAQ,uBAAuB;AACtD,SAASC,SAAS,QAAQ,4BAA4B;AACtD,OAAOC,GAAG,MAAM,gBAAgB;AAEhC,SAASC,oBAAoB,EAAEC,eAAe,QAAQ,kBAAkB;AAAC,OAClEC,mBAAmB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAE1B,IAAMC,GAAG,GAAGR,GAAG,CAACS,MAAM,CAAC,gBAAgB,CAAC;AAexC;AACA;AACA;AACA;AACA,SAASC,cAAcA,CAAAC,IAAA,EAGc;EAAA,IAHb;IACtBC,QAAQ;IACRC;EACmB,CAAC,GAAAF,IAAA;EACpB,IAAMG,MAAM,GAAGf,SAAS,CAAC,CAAC;EAC1B,IAAM,CAACgB,KAAK,EAAEC,QAAQ,CAAC,GAAGnB,QAAQ,CAAU,CAAC;EAC7C,IAAM,CAACoB,UAAU,EAAEC,aAAa,CAAC,GAAGrB,QAAQ,CAAC,KAAK,CAAC;EAEnDD,SAAS,CAAC,MAAM;IACd,IAAIuB,UAAU,GAAG,KAAK;IACtB,SAASC,iBAAiBA,CAAA,EAAS;MACjC,IAAID,UAAU,EAAE;QACd,MAAM,IAAIlB,oBAAoB,CAAC,iBAAiB,CAAC;MACnD;IACF;IAAC,SACcoB,KAAKA,CAAA;MAAA,OAAAC,MAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IAAA,SAAAF,OAAA;MAAAA,MAAA,GAAAG,iBAAA,CAApB,aAAsC;QACpC,IAAI;UACF,IAAMC,YAAY,SAASb,eAAe,CAAC,CAAC;UAC5CO,iBAAiB,CAAC,CAAC;UAEnBZ,GAAG,CAACmB,IAAI,CAAC,eAAe,CAAC;UACzB,MAAMb,MAAM,CAACO,KAAK,CAACK,YAAY,CAAC;UAChCN,iBAAiB,CAAC,CAAC;UAEnBF,aAAa,CAAC,IAAI,CAAC;QACrB,CAAC,CAAC,OAAOU,CAAC,EAAE;UACV,IAAI,CAACT,UAAU,EAAE;YAAA,IAAAU,gBAAA;YACfrB,GAAG,CAACO,KAAK,CAAC,kBAAkB,EAAEa,CAAC,CAAC;YAChC,IAAME,OAAO,IAAAD,gBAAA,GACX3B,eAAe,CAAC0B,CAAC,CAAC,cAAAC,gBAAA,cAAAA,gBAAA,GAAI,sCAAsC;YAC9Db,QAAQ,CAAC,IAAIb,mBAAmB,CAAC2B,OAAO,CAAC,CAAC;YAC1CZ,aAAa,CAAC,KAAK,CAAC;UACtB;QACF;MACF,CAAC;MAAA,OAAAI,MAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IACDH,KAAK,CAAC,CAAC;IACP,OAAO,MAAM;MACXF,UAAU,GAAG,IAAI;IACnB,CAAC;EACH,CAAC,EAAE,CAACL,MAAM,EAAED,eAAe,CAAC,CAAC;EAE7B,IAAI,CAACI,UAAU,EAAE;IACf,oBACEZ,IAAA,CAACP,cAAc;MACb,eAAY,mBAAmB;MAC/BiC,SAAS,EAAEhB,KAAK,IAAI,IAAK;MACzBiB,QAAQ,EAAE,KAAM;MAChBC,YAAY,EAAE/B,eAAe,CAACa,KAAK;IAAE,CACtC,CAAC;EAEN;;EAEA;EACA,oBAAOV,IAAA,CAAAE,SAAA;IAAAK,QAAA,EAAGA;EAAQ,CAAG,CAAC;AACxB;AAEA,eAAeF,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthPluginParent.js","names":["React","LOGIN_OPTIONS_REQUEST","Log","getWindowParent","requestParentResponse","AuthPluginBase","UserPermissionsOverrideContext","jsx","_jsx","log","module","permissionsOverrides","canLogout","isLoginOptions","options","type","getLoginOptions","_getLoginOptions","apply","arguments","_asyncToGenerator","info","response","Error","concat","getWindowAuthProvider","_URLSearchParams$get","URLSearchParams","window","location","search","get","Component","_ref","children","Provider","value","AuthPluginParent","isAvailable"],"sources":["../src/AuthPluginParent.tsx"],"sourcesContent":["import React from 'react';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { LOGIN_OPTIONS_REQUEST } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { getWindowParent, requestParentResponse } from '@deephaven/utils';\nimport { type AuthPlugin, type AuthPluginProps } from './AuthPlugin';\nimport AuthPluginBase from './AuthPluginBase';\nimport {\n type UserPermissionsOverride,\n UserPermissionsOverrideContext,\n} from './UserContexts';\n\nconst log = Log.module('AuthPluginParent');\n\nconst permissionsOverrides: UserPermissionsOverride = { canLogout: false };\n\nfunction isLoginOptions(options: unknown): options is dh.LoginCredentials {\n return (\n options != null && typeof (options as dh.LoginCredentials).type === 'string'\n );\n}\n\nasync function getLoginOptions(): Promise<dh.LoginCredentials> {\n log.info('Logging in by delegating to parent window...');\n const response = await requestParentResponse(LOGIN_OPTIONS_REQUEST);\n if (!isLoginOptions(response)) {\n throw new Error(`Unexpected login options response: ${response}`);\n }\n return response;\n}\n\nfunction getWindowAuthProvider(): string {\n return new URLSearchParams(window.location.search).get('authProvider') ?? '';\n}\n\n/**\n * AuthPlugin that tries to delegate to the parent window for authentication. Fails if there is no parent window.\n */\nfunction Component({ children }: AuthPluginProps): JSX.Element {\n return (\n <AuthPluginBase getLoginOptions={getLoginOptions}>\n <UserPermissionsOverrideContext.Provider value={permissionsOverrides}>\n {children}\n </UserPermissionsOverrideContext.Provider>\n </AuthPluginBase>\n );\n}\n\nconst AuthPluginParent: AuthPlugin = {\n Component,\n isAvailable: () =>\n getWindowParent() != null && getWindowAuthProvider() === 'parent',\n};\n\nexport default AuthPluginParent;\n"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,qBAAqB,QAAQ,wBAAwB;AAC9D,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SAASC,eAAe,EAAEC,qBAAqB,QAAQ,kBAAkB;AAAC,OAEnEC,cAAc;AAAA,SAGnBC,8BAA8B;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAGhC,IAAMC,GAAG,GAAGP,GAAG,CAACQ,MAAM,CAAC,kBAAkB,CAAC;AAE1C,IAAMC,oBAA6C,GAAG;EAAEC,SAAS,EAAE;AAAM,CAAC;AAE1E,SAASC,cAAcA,CAACC,OAAgB,EAAkC;EACxE,OACEA,OAAO,IAAI,IAAI,IAAI,OAAQA,OAAO,CAAyBC,IAAI,KAAK,QAAQ;AAEhF;AAAC,SAEcC,eAAeA,CAAA;EAAA,OAAAC,gBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAF,iBAAA;EAAAA,gBAAA,GAAAG,iBAAA,CAA9B,aAA+D;IAC7DX,GAAG,CAACY,IAAI,CAAC,8CAA8C,CAAC;IACxD,IAAMC,QAAQ,SAASlB,qBAAqB,CAACH,qBAAqB,CAAC;IACnE,IAAI,CAACY,cAAc,CAACS,QAAQ,CAAC,EAAE;MAC7B,MAAM,IAAIC,KAAK,uCAAAC,MAAA,CAAuCF,QAAQ,CAAE,CAAC;IACnE;IACA,OAAOA,QAAQ;EACjB,CAAC;EAAA,OAAAL,gBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAED,SAASM,qBAAqBA,CAAA,EAAW;EAAA,IAAAC,oBAAA;EACvC,QAAAA,oBAAA,GAAO,IAAIC,eAAe,CAACC,MAAM,CAACC,QAAQ,CAACC,MAAM,CAAC,CAACC,GAAG,CAAC,cAAc,CAAC,cAAAL,oBAAA,cAAAA,oBAAA,GAAI,EAAE;AAC9E;;AAEA;AACA;AACA;AACA,SAASM,SAASA,CAAAC,IAAA,EAA6C;EAAA,IAA5C;IAAEC;EAA0B,CAAC,GAAAD,IAAA;EAC9C,oBACEzB,IAAA,CAACH,cAAc;IAACW,eAAe,EAAEA,eAAgB;IAAAkB,QAAA,eAC/C1B,IAAA,CAACF,8BAA8B,CAAC6B,QAAQ;MAACC,KAAK,EAAEzB,oBAAqB;MAAAuB,QAAA,EAClEA;IAAQ,CAC8B;EAAC,CAC5B,CAAC;AAErB;AAEA,IAAMG,gBAA4B,GAAG;EACnCL,SAAS;EACTM,WAAW,EAAEA,CAAA,KACXnC,eAAe,CAAC,CAAC,IAAI,IAAI,IAAIsB,qBAAqB,CAAC,CAAC,KAAK;AAC7D,CAAC;AAED,eAAeY,gBAAgB"
|
|
1
|
+
{"version":3,"file":"AuthPluginParent.js","names":["React","LOGIN_OPTIONS_REQUEST","Log","getWindowParent","requestParentResponse","AuthPluginBase","UserPermissionsOverrideContext","jsx","_jsx","log","module","permissionsOverrides","canLogout","isLoginOptions","options","type","getLoginOptions","_getLoginOptions","apply","arguments","_asyncToGenerator","info","response","Error","concat","getWindowAuthProvider","_URLSearchParams$get","URLSearchParams","window","location","search","get","Component","_ref","children","Provider","value","AuthPluginParent","isAvailable"],"sources":["../src/AuthPluginParent.tsx"],"sourcesContent":["import React from 'react';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { LOGIN_OPTIONS_REQUEST } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { getWindowParent, requestParentResponse } from '@deephaven/utils';\nimport { type AuthPlugin, type AuthPluginProps } from './AuthPlugin';\nimport AuthPluginBase from './AuthPluginBase';\nimport {\n type UserPermissionsOverride,\n UserPermissionsOverrideContext,\n} from './UserContexts';\n\nconst log = Log.module('AuthPluginParent');\n\nconst permissionsOverrides: UserPermissionsOverride = { canLogout: false };\n\nfunction isLoginOptions(options: unknown): options is dh.LoginCredentials {\n return (\n options != null && typeof (options as dh.LoginCredentials).type === 'string'\n );\n}\n\nasync function getLoginOptions(): Promise<dh.LoginCredentials> {\n log.info('Logging in by delegating to parent window...');\n const response = await requestParentResponse(LOGIN_OPTIONS_REQUEST);\n if (!isLoginOptions(response)) {\n throw new Error(`Unexpected login options response: ${response}`);\n }\n return response;\n}\n\nfunction getWindowAuthProvider(): string {\n return new URLSearchParams(window.location.search).get('authProvider') ?? '';\n}\n\n/**\n * AuthPlugin that tries to delegate to the parent window for authentication. Fails if there is no parent window.\n */\nfunction Component({ children }: AuthPluginProps): JSX.Element {\n return (\n <AuthPluginBase getLoginOptions={getLoginOptions}>\n <UserPermissionsOverrideContext.Provider value={permissionsOverrides}>\n {children}\n </UserPermissionsOverrideContext.Provider>\n </AuthPluginBase>\n );\n}\n\nconst AuthPluginParent: AuthPlugin = {\n Component,\n isAvailable: () =>\n getWindowParent() != null && getWindowAuthProvider() === 'parent',\n};\n\nexport default AuthPluginParent;\n"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,qBAAqB,QAAQ,wBAAwB;AAC9D,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SAASC,eAAe,EAAEC,qBAAqB,QAAQ,kBAAkB;AAAC,OAEnEC,cAAc;AAAA,SAGnBC,8BAA8B;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAGhC,IAAMC,GAAG,GAAGP,GAAG,CAACQ,MAAM,CAAC,kBAAkB,CAAC;AAE1C,IAAMC,oBAA6C,GAAG;EAAEC,SAAS,EAAE;AAAM,CAAC;AAE1E,SAASC,cAAcA,CAACC,OAAgB,EAAkC;EACxE,OACEA,OAAO,IAAI,IAAI,IAAI,OAAQA,OAAO,CAAyBC,IAAI,KAAK,QAAQ;AAEhF;AAAC,SAEcC,eAAeA,CAAA;EAAA,OAAAC,gBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAF,iBAAA;EAAAA,gBAAA,GAAAG,iBAAA,CAA9B,aAA+D;IAC7DX,GAAG,CAACY,IAAI,CAAC,8CAA8C,CAAC;IACxD,IAAMC,QAAQ,SAASlB,qBAAqB,CAACH,qBAAqB,CAAC;IACnE,IAAI,CAACY,cAAc,CAACS,QAAQ,CAAC,EAAE;MAC7B,MAAM,IAAIC,KAAK,uCAAAC,MAAA,CAAuCF,QAAQ,CAAE,CAAC;IACnE;IACA,OAAOA,QAAQ;EACjB,CAAC;EAAA,OAAAL,gBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAED,SAASM,qBAAqBA,CAAA,EAAW;EAAA,IAAAC,oBAAA;EACvC,QAAAA,oBAAA,GAAO,IAAIC,eAAe,CAACC,MAAM,CAACC,QAAQ,CAACC,MAAM,CAAC,CAACC,GAAG,CAAC,cAAc,CAAC,cAAAL,oBAAA,cAAAA,oBAAA,GAAI,EAAE;AAC9E;;AAEA;AACA;AACA;AACA,SAASM,SAASA,CAAAC,IAAA,EAA6C;EAAA,IAA5C;IAAEC;EAA0B,CAAC,GAAAD,IAAA;EAC9C,oBACEzB,IAAA,CAACH,cAAc;IAACW,eAAe,EAAEA,eAAgB;IAAAkB,QAAA,eAC/C1B,IAAA,CAACF,8BAA8B,CAAC6B,QAAQ;MAACC,KAAK,EAAEzB,oBAAqB;MAAAuB,QAAA,EAClEA;IAAQ,CAC8B;EAAC,CAC5B,CAAC;AAErB;AAEA,IAAMG,gBAA4B,GAAG;EACnCL,SAAS;EACTM,WAAW,EAAEA,CAAA,KACXnC,eAAe,CAAC,CAAC,IAAI,IAAI,IAAIsB,qBAAqB,CAAC,CAAC,KAAK;AAC7D,CAAC;AAED,eAAeY,gBAAgB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthPluginPsk.js","names":["React","useCallback","useEffect","useRef","useState","FadeTransition","LoadingOverlay","useClient","useBroadcastLoginListener","Log","getErrorMessage","Cookies","LoginForm","Login","AuthenticationError","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","AUTH_TYPE","PSK_QUERY_PARAM_KEY","PSK_TOKEN_KEY","log","module","getWindowToken","URLSearchParams","window","location","search","get","clearWindowToken","debug2","url","URL","href","searchParams","delete","history","replaceState","readCookieToken","_Cookies$get","storeCookieToken","token","set","secure","sameSite","remove","Component","_ref","children","logoPath","client","inputField","loginPromise","error","setError","isInputRequired","setIsInputRequired","isLoggedIn","setIsLoggedIn","isLoggingIn","setIsLoggingIn","setToken","login","_ref2","_asyncToGenerator","loginToken","showError","arguments","length","undefined","info","newLoginPromise","type","current","e","_getErrorMessage","message","_x","apply","cancelLogin","onLogin","debug","newToken","onLogout","isCanceled","initialLogin","_initialLogin","_getWindowToken","initialToken","handleSubmit","autoFocusInput","_inputField$current","focus","in","mountOnEnter","unmountOnExit","errorMessage","onSubmit","className","htmlFor","id","name","autoComplete","autoCapitalize","autoCorrect","spellCheck","ref","value","onChange","event","target","isLoaded","isLoading","AuthPluginPsk","isAvailable","authHandlers","includes"],"sources":["../src/AuthPluginPsk.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { FadeTransition, LoadingOverlay } from '@deephaven/components';\nimport { useClient } from '@deephaven/jsapi-bootstrap';\nimport { useBroadcastLoginListener } from '@deephaven/jsapi-components';\nimport Log from '@deephaven/log';\nimport { getErrorMessage } from '@deephaven/utils';\nimport Cookies from 'js-cookie';\nimport { type AuthPlugin, type AuthPluginProps } from './AuthPlugin';\nimport LoginForm from './LoginForm';\nimport Login from './Login';\nimport AuthenticationError from './AuthenticationError';\n\nconst AUTH_TYPE = 'io.deephaven.authentication.psk.PskAuthenticationHandler';\n\nconst PSK_QUERY_PARAM_KEY = 'psk';\n\nconst PSK_TOKEN_KEY = 'io.deephaven.web.client.auth.psk.token';\n\nconst log = Log.module('AuthPluginPsk');\n\nfunction getWindowToken(): string | null {\n return new URLSearchParams(window.location.search).get(PSK_QUERY_PARAM_KEY);\n}\n\nfunction clearWindowToken(): void {\n log.debug2('clearWindowToken');\n const url = new URL(window.location.href);\n url.searchParams.delete(PSK_QUERY_PARAM_KEY);\n\n window.history.replaceState(null, '', url.href);\n}\n\nfunction readCookieToken(): string | null {\n return Cookies.get(PSK_TOKEN_KEY) ?? null;\n}\n\nfunction storeCookieToken(token: string | null): void {\n log.debug2('Storing token in cookie', token);\n if (token != null) {\n Cookies.set(PSK_TOKEN_KEY, token, { secure: true, sameSite: 'strict' });\n } else {\n Cookies.remove(PSK_TOKEN_KEY);\n }\n}\n\nexport type AuthPluginPskProps = AuthPluginProps & {\n /** Custom path to a logo to display on the login screen */\n logoPath?: string;\n};\n\n/**\n * AuthPlugin that tries to login using a pre-shared key.\n * Add the `psk=<token>` parameter to your URL string to set the token.\n */\nfunction Component({ children, logoPath }: AuthPluginPskProps): JSX.Element {\n const client = useClient();\n const inputField = useRef<HTMLInputElement>(null);\n const loginPromise = useRef<Promise<void> | null>(null);\n const [error, setError] = useState<unknown>();\n const [isInputRequired, setIsInputRequired] = useState(false);\n const [isLoggedIn, setIsLoggedIn] = useState(false);\n const [isLoggingIn, setIsLoggingIn] = useState(false);\n const [token, setToken] = useState('');\n\n const login = useCallback(\n // eslint-disable-next-line @typescript-eslint/no-inferrable-types\n async (loginToken: string, showError: boolean = true) => {\n log.info('Logging in...');\n setIsLoggingIn(true);\n let newLoginPromise: Promise<void> | null = null;\n try {\n newLoginPromise = client.login({ type: AUTH_TYPE, token: loginToken });\n loginPromise.current = newLoginPromise;\n await newLoginPromise;\n\n log.info('Logged in successfully');\n if (loginPromise.current !== newLoginPromise) {\n return;\n }\n storeCookieToken(loginToken);\n setIsLoggedIn(true);\n } catch (e) {\n if (loginPromise.current !== newLoginPromise) {\n return;\n }\n setIsInputRequired(true);\n if (showError) {\n log.error('Unable to login', e);\n const message =\n getErrorMessage(e) ?? 'Unable to login: Verify credentials.';\n setError(new AuthenticationError(message));\n }\n }\n setIsLoggingIn(false);\n },\n [client]\n );\n\n const cancelLogin = useCallback(() => {\n loginPromise.current = null;\n setIsLoggingIn(false);\n }, []);\n\n const onLogin = useCallback(async () => {\n log.debug('onLogin');\n\n // User logged in successfully in another tab, we should be able to read the token from the cookie and login\n const newToken = readCookieToken();\n if (isLoggedIn || isLoggingIn || newToken == null) {\n return;\n }\n\n login(newToken, false);\n }, [isLoggedIn, isLoggingIn, login]);\n const onLogout = useCallback(() => {\n storeCookieToken(null);\n }, []);\n useBroadcastLoginListener(onLogin, onLogout);\n\n useEffect(() => {\n let isCanceled = false;\n async function initialLogin(): Promise<void> {\n const initialToken = getWindowToken() ?? readCookieToken();\n clearWindowToken();\n\n if (initialToken == null) {\n setIsInputRequired(true);\n return;\n }\n\n setIsLoggingIn(true);\n try {\n await client.login({ type: AUTH_TYPE, token: initialToken });\n if (!isCanceled) {\n storeCookieToken(initialToken);\n setIsLoggedIn(true);\n setIsLoggingIn(false);\n }\n } catch (e) {\n if (!isCanceled) {\n setIsInputRequired(true);\n setIsLoggingIn(false);\n }\n }\n }\n initialLogin();\n return () => {\n isCanceled = true;\n };\n }, [client]);\n\n const handleSubmit = useCallback(() => {\n if (!isLoggingIn) {\n login(token);\n } else {\n cancelLogin();\n }\n }, [cancelLogin, isLoggingIn, login, token]);\n\n useEffect(\n function autoFocusInput() {\n inputField.current?.focus();\n },\n [inputField, isInputRequired]\n );\n\n return (\n <>\n {isLoggedIn && children}\n {isInputRequired && (\n <FadeTransition in={!isLoggedIn} mountOnEnter unmountOnExit>\n <Login logoPath={logoPath}>\n <LoginForm\n errorMessage={getErrorMessage(error)}\n isLoggingIn={isLoggingIn}\n onSubmit={handleSubmit}\n >\n <div className=\"form-group\">\n <label htmlFor=\"auth-psk-token-input\">Token</label>\n <input\n id=\"auth-psk-token-input\"\n name=\"token\"\n className=\"input-token form-control\"\n type=\"text\"\n autoComplete=\"username\"\n autoCapitalize=\"none\"\n autoCorrect=\"off\"\n spellCheck=\"false\"\n ref={inputField}\n value={token}\n onChange={event => {\n setError(undefined);\n setToken(event.target.value);\n }}\n />\n </div>\n </LoginForm>\n </Login>\n </FadeTransition>\n )}\n <LoadingOverlay\n data-testid=\"auth-psk-loading\"\n isLoaded={isLoggedIn || isInputRequired}\n isLoading={!isLoggedIn && !isInputRequired}\n />\n </>\n );\n}\n\nconst AuthPluginPsk: AuthPlugin = {\n Component,\n isAvailable: authHandlers => authHandlers.includes(AUTH_TYPE),\n};\n\nexport default AuthPluginPsk;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"AuthPluginPsk.js","names":["React","useCallback","useEffect","useRef","useState","FadeTransition","LoadingOverlay","useClient","useBroadcastLoginListener","Log","getErrorMessage","Cookies","LoginForm","Login","AuthenticationError","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","AUTH_TYPE","PSK_QUERY_PARAM_KEY","PSK_TOKEN_KEY","log","module","getWindowToken","URLSearchParams","window","location","search","get","clearWindowToken","debug2","url","URL","href","searchParams","delete","history","replaceState","readCookieToken","_Cookies$get","storeCookieToken","token","set","secure","sameSite","remove","Component","_ref","children","logoPath","client","inputField","loginPromise","error","setError","isInputRequired","setIsInputRequired","isLoggedIn","setIsLoggedIn","isLoggingIn","setIsLoggingIn","setToken","login","_ref2","_asyncToGenerator","loginToken","showError","arguments","length","undefined","info","newLoginPromise","type","current","e","_getErrorMessage","message","_x","apply","cancelLogin","onLogin","debug","newToken","onLogout","isCanceled","initialLogin","_initialLogin","_getWindowToken","initialToken","handleSubmit","autoFocusInput","_inputField$current","focus","in","mountOnEnter","unmountOnExit","errorMessage","onSubmit","className","htmlFor","id","name","autoComplete","autoCapitalize","autoCorrect","spellCheck","ref","value","onChange","event","target","isLoaded","isLoading","AuthPluginPsk","isAvailable","authHandlers","includes"],"sources":["../src/AuthPluginPsk.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { FadeTransition, LoadingOverlay } from '@deephaven/components';\nimport { useClient } from '@deephaven/jsapi-bootstrap';\nimport { useBroadcastLoginListener } from '@deephaven/jsapi-components';\nimport Log from '@deephaven/log';\nimport { getErrorMessage } from '@deephaven/utils';\nimport Cookies from 'js-cookie';\nimport { type AuthPlugin, type AuthPluginProps } from './AuthPlugin';\nimport LoginForm from './LoginForm';\nimport Login from './Login';\nimport AuthenticationError from './AuthenticationError';\n\nconst AUTH_TYPE = 'io.deephaven.authentication.psk.PskAuthenticationHandler';\n\nconst PSK_QUERY_PARAM_KEY = 'psk';\n\nconst PSK_TOKEN_KEY = 'io.deephaven.web.client.auth.psk.token';\n\nconst log = Log.module('AuthPluginPsk');\n\nfunction getWindowToken(): string | null {\n return new URLSearchParams(window.location.search).get(PSK_QUERY_PARAM_KEY);\n}\n\nfunction clearWindowToken(): void {\n log.debug2('clearWindowToken');\n const url = new URL(window.location.href);\n url.searchParams.delete(PSK_QUERY_PARAM_KEY);\n\n window.history.replaceState(null, '', url.href);\n}\n\nfunction readCookieToken(): string | null {\n return Cookies.get(PSK_TOKEN_KEY) ?? null;\n}\n\nfunction storeCookieToken(token: string | null): void {\n log.debug2('Storing token in cookie', token);\n if (token != null) {\n Cookies.set(PSK_TOKEN_KEY, token, { secure: true, sameSite: 'strict' });\n } else {\n Cookies.remove(PSK_TOKEN_KEY);\n }\n}\n\nexport type AuthPluginPskProps = AuthPluginProps & {\n /** Custom path to a logo to display on the login screen */\n logoPath?: string;\n};\n\n/**\n * AuthPlugin that tries to login using a pre-shared key.\n * Add the `psk=<token>` parameter to your URL string to set the token.\n */\nfunction Component({ children, logoPath }: AuthPluginPskProps): JSX.Element {\n const client = useClient();\n const inputField = useRef<HTMLInputElement>(null);\n const loginPromise = useRef<Promise<void> | null>(null);\n const [error, setError] = useState<unknown>();\n const [isInputRequired, setIsInputRequired] = useState(false);\n const [isLoggedIn, setIsLoggedIn] = useState(false);\n const [isLoggingIn, setIsLoggingIn] = useState(false);\n const [token, setToken] = useState('');\n\n const login = useCallback(\n // eslint-disable-next-line @typescript-eslint/no-inferrable-types\n async (loginToken: string, showError: boolean = true) => {\n log.info('Logging in...');\n setIsLoggingIn(true);\n let newLoginPromise: Promise<void> | null = null;\n try {\n newLoginPromise = client.login({ type: AUTH_TYPE, token: loginToken });\n loginPromise.current = newLoginPromise;\n await newLoginPromise;\n\n log.info('Logged in successfully');\n if (loginPromise.current !== newLoginPromise) {\n return;\n }\n storeCookieToken(loginToken);\n setIsLoggedIn(true);\n } catch (e) {\n if (loginPromise.current !== newLoginPromise) {\n return;\n }\n setIsInputRequired(true);\n if (showError) {\n log.error('Unable to login', e);\n const message =\n getErrorMessage(e) ?? 'Unable to login: Verify credentials.';\n setError(new AuthenticationError(message));\n }\n }\n setIsLoggingIn(false);\n },\n [client]\n );\n\n const cancelLogin = useCallback(() => {\n loginPromise.current = null;\n setIsLoggingIn(false);\n }, []);\n\n const onLogin = useCallback(async () => {\n log.debug('onLogin');\n\n // User logged in successfully in another tab, we should be able to read the token from the cookie and login\n const newToken = readCookieToken();\n if (isLoggedIn || isLoggingIn || newToken == null) {\n return;\n }\n\n login(newToken, false);\n }, [isLoggedIn, isLoggingIn, login]);\n const onLogout = useCallback(() => {\n storeCookieToken(null);\n }, []);\n useBroadcastLoginListener(onLogin, onLogout);\n\n useEffect(() => {\n let isCanceled = false;\n async function initialLogin(): Promise<void> {\n const initialToken = getWindowToken() ?? readCookieToken();\n clearWindowToken();\n\n if (initialToken == null) {\n setIsInputRequired(true);\n return;\n }\n\n setIsLoggingIn(true);\n try {\n await client.login({ type: AUTH_TYPE, token: initialToken });\n if (!isCanceled) {\n storeCookieToken(initialToken);\n setIsLoggedIn(true);\n setIsLoggingIn(false);\n }\n } catch (e) {\n if (!isCanceled) {\n setIsInputRequired(true);\n setIsLoggingIn(false);\n }\n }\n }\n initialLogin();\n return () => {\n isCanceled = true;\n };\n }, [client]);\n\n const handleSubmit = useCallback(() => {\n if (!isLoggingIn) {\n login(token);\n } else {\n cancelLogin();\n }\n }, [cancelLogin, isLoggingIn, login, token]);\n\n useEffect(\n function autoFocusInput() {\n inputField.current?.focus();\n },\n [inputField, isInputRequired]\n );\n\n return (\n <>\n {isLoggedIn && children}\n {isInputRequired && (\n <FadeTransition in={!isLoggedIn} mountOnEnter unmountOnExit>\n <Login logoPath={logoPath}>\n <LoginForm\n errorMessage={getErrorMessage(error)}\n isLoggingIn={isLoggingIn}\n onSubmit={handleSubmit}\n >\n <div className=\"form-group\">\n <label htmlFor=\"auth-psk-token-input\">Token</label>\n <input\n id=\"auth-psk-token-input\"\n name=\"token\"\n className=\"input-token form-control\"\n type=\"text\"\n autoComplete=\"username\"\n autoCapitalize=\"none\"\n autoCorrect=\"off\"\n spellCheck=\"false\"\n ref={inputField}\n value={token}\n onChange={event => {\n setError(undefined);\n setToken(event.target.value);\n }}\n />\n </div>\n </LoginForm>\n </Login>\n </FadeTransition>\n )}\n <LoadingOverlay\n data-testid=\"auth-psk-loading\"\n isLoaded={isLoggedIn || isInputRequired}\n isLoading={!isLoggedIn && !isInputRequired}\n />\n </>\n );\n}\n\nconst AuthPluginPsk: AuthPlugin = {\n Component,\n isAvailable: authHandlers => authHandlers.includes(AUTH_TYPE),\n};\n\nexport default AuthPluginPsk;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthenticationError.js","names":["AuthenticationError","Error","constructor","arguments","_defineProperty"],"sources":["../src/AuthenticationError.ts"],"sourcesContent":["export class AuthenticationError extends Error {\n name = 'AuthenticationError';\n\n isAuthenticationError = true;\n}\n\nexport default AuthenticationError;\n"],"mappings":";;;AAAA,OAAO,MAAMA,mBAAmB,SAASC,KAAK,CAAC;EAAAC,YAAA;IAAA,SAAAC,SAAA;IAAAC,eAAA,eACtC,qBAAqB;IAAAA,eAAA,gCAEJ,IAAI;EAAA;AAC9B;AAEA,eAAeJ,mBAAmB"
|
|
1
|
+
{"version":3,"file":"AuthenticationError.js","names":["AuthenticationError","Error","constructor","arguments","_defineProperty"],"sources":["../src/AuthenticationError.ts"],"sourcesContent":["export class AuthenticationError extends Error {\n name = 'AuthenticationError';\n\n isAuthenticationError = true;\n}\n\nexport default AuthenticationError;\n"],"mappings":";;;AAAA,OAAO,MAAMA,mBAAmB,SAASC,KAAK,CAAC;EAAAC,YAAA;IAAA,SAAAC,SAAA;IAAAC,eAAA,eACtC,qBAAqB;IAAAA,eAAA,gCAEJ,IAAI;EAAA;AAC9B;AAEA,eAAeJ,mBAAmB"}
|
package/dist/Login.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["../../../node_modules/@deephaven/components/scss/custom.scss","../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss","../src/Login.scss","../../../node_modules/bootstrap/scss/mixins/_breakpoints.scss","../../../node_modules/@deephaven/components/scss/new_variables.scss"],"names":[],"mappings":"AAAA;AC6LA;ACvLA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA,OAjBc;EAkBd,YDwIS;ECvIT;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA,YA3BiB;EA4BjB;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAKN;EACE;IACE;;EAEF;IACE;;;ACcA;EDRA;IACE;IACA,QE3DK;;EF4DL;IACE;IACA;IACA;;EACA;IACE;IACA;;EAGJ;IACE;IACA","file":"Login.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n@import './util.scss';\n","// Styling overrides for bootstrap\n@use 'sass:map';\n\n// Override / set color variables\n$red: var(--dh-color-visual-red);\n$orange: var(--dh-color-visual-orange);\n$yellow: var(--dh-color-visual-yellow);\n$green: var(--dh-color-visual-green);\n$blue: var(--dh-color-visual-blue);\n$purple: var(--dh-color-visual-purple);\n\n// Fallback colors are used if theme isn't loaded\n// this is required for error messages if the API doesn't load\n\n//Define our Gray scale\n$gray-100: var(--dh-color-gray-900, #fcfcfa);\n$gray-200: var(--dh-color-gray-800);\n$gray-300: var(--dh-color-gray-700);\n$gray-400: var(--dh-color-gray-600);\n$gray-500: var(--dh-color-gray-500);\n// intentional duplicate, scale doesn't line up otherwise\n// as we have gray-850 and spectrum doesn't and it is needed\n$gray-600: var(--dh-color-gray-500);\n$gray-700: var(--dh-color-gray-400);\n$gray-800: var(--dh-color-gray-300);\n$gray-850: var(--dh-color-gray-200);\n$gray-900: var(--dh-color-gray-75);\n$black: var(--dh-color-black, #1a171a);\n$white: var(--dh-color-white, #f0f0ee);\n\n//Define some UI colors\n$interfacegray: var(--dh-color-content-bg, #2d2a2e);\n$interfaceblue: var(--dh-color-accent-bg);\n$interfacewhite: $white;\n$interfaceblack: $black;\n$content-bg: var(--dh-color-content-bg, #2d2a2e);\n$background: var(--dh-color-bg, #1a171a);\n$foreground: var(--dh-color-fg, #f0f0ee);\n\n// Extend default Bootstrap $grays map\n$grays-custom: (\n '850': $gray-850,\n);\n$grays: () !default;\n$grays: map-merge($grays, $grays-custom);\n\n// Extend default Bootstrap $colors map\n$colors-custom: (\n 'black': $black,\n);\n$colors: () !default;\n$colors: map-merge($colors, $colors-custom);\n\n// Override default Bootstrap $theme-colors map by mapping each key to itself.\n// These will then be re-mapped inside of `button-outline-variant` and\n// `button-outline-variant` mixins in `bootstrap_override_mixins_buttons.scss`\n$theme-colors-self-map: ();\n@each $key\n in (\n 'primary',\n 'secondary',\n 'success',\n 'info',\n 'warning',\n 'danger',\n 'light',\n 'dark'\n )\n{\n $theme-colors-self-map: map.set($theme-colors-self-map, $key, $key);\n}\n$theme-colors: () !default;\n$theme-colors: map-merge($theme-colors, $theme-colors-self-map);\n\n// Used by bootstrap_override_mixins_buttons.scss to map Bootstrap colors to\n// DH semantic colors\n$bootstrap-dh-semantic-map: (\n 'primary': 'accent',\n 'secondary': 'neutral',\n 'success': 'positive',\n 'info': 'info',\n 'warning': 'notice',\n 'danger': 'negative',\n // We shouldn't be using these, but mapping so they work with our custom\n // `color-yiq` mixin. If we find a way to remove $light + $dark that are\n // defined in Bootstrap _variables.scss, we should remove these\n 'light': 'neutral',\n 'dark': 'neutral',\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: var(--dh-color-accent-bg);\n$primary-hover: var(--dh-color-accent-hover-bg);\n$primary-dark: var(--dh-color-accent-down-bg);\n$secondary: var(--dh-color-neutral-bg);\n$secondary-hover: var(--dh-color-neutral-hover-bg);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: var(--dh-color-negative-bg);\n$danger-hover: var(--dh-color-negative-hover-bg);\n// We really don't want to use $light or $dark variables, but Bootstrap defines\n// them in _variables.scss. Explicitly setting them to ensure we are in control\n// of their values. If we can find a way to remove them, we should\n$light: var(--dh-color-gray-light);\n$dark: var(--dh-color-gray-dark);\n// Bootstrap doesn't define $mid, and we want to move away from this particular\n// semantic. Should be deleted by #1635\n$mid: var(--dh-color-gray-mid);\n\n$semantic-colors: (\n 'primary-hover': $primary-hover,\n 'primary-dark': $primary-dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n 'secondary-hover': $secondary-hover,\n 'danger-hover': $danger-hover,\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif:\n 'Fira Sans',\n -apple-system,\n blinkmacsystemfont,\n 'Segoe UI',\n 'Roboto',\n 'Helvetica Neue',\n arial,\n sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n$text-select-color: var(--dh-color-text-highlight);\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem var(--dh-color-dropshadow);\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition:\n color 0.12s ease-in-out,\n background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out,\n box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n$btn-font-weight: var(--spectrum-global-font-weight-bold);\n$btn-line-height: 1.3;\n\n//Override Inputs\n$input-bg: var(--dh-color-input-bg);\n$input-disabled-bg: var(--dh-color-input-disabled-bg);\n$input-color: var(--dh-color-input-fg);\n$input-border-color: var(--dh-color-input-border);\n$input-placeholder-color: var(--dh-color-input-placeholder);\n$input-focus-border-color: var(--dh-color-input-focus-border);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: color-mix(\n in srgb,\n var(--dh-color-accent) 35%,\n transparent\n);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n$input-btn-line-height: 1.3;\n// Bootstrap uses a calc expression to determine the input height (calc(line-height + 2*padding-y + border)).\n// The padding-y value has to be in rem to match units as it is a SASS calc.\n// Using 0.42145rem with 1.3 line height gets us to spectrum's 32px.\n/* stylelint-disable-next-line number-max-precision */\n$input-btn-padding-y: 0.42145rem;\n\n//checkbox\n$custom-control-indicator-bg: var(--dh-color-input-bg);\n$custom-control-indicator-border-color: var(--dh-color-input-border);\n$custom-checkbox-indicator-border-radius: 2px;\n$custom-control-indicator-border-width: 2px;\n$custom-control-indicator-active-bg: var(--dh-color-input-bg);\n$custom-control-indicator-active-border-color: var(--dh-color-input-fg);\n$custom-control-indicator-checked-bg: var(--dh-color-input-fg);\n$custom-control-indicator-checked-color: black; // used as mask fill color\n$custom-checkbox-indicator-indeterminate-bg: var(--dh-color-input-fg);\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: var(--dh-color-input-disabled-bg);\n$custom-control-indicator-checked-disabled-bg: var(\n --dh-color-input-disabled-bg\n);\n$custom-control-label-disabled-color: var(--dh-color-input-disabled-fg);\n\n// The $custom-select-indicator variable is used by Bootstrap to provide the\n// icon for the select dropdown. Inline svgs can't use CSS variables, so we hard\n// code the color to #929192 (the default value of --dh-color-gray-600). PR #1651\n// overrides this icon altogether for known dropdowns, so technically we may not\n// need this, but it's here in case there are any remaining instances.\n$custom-select-indicator-color: #929192;\n$custom-select-bg: var(--dh-color-selector-bg);\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: $gray-500;\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $content-bg;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n$close-color: var(--dh-color-text);\n$close-text-shadow: none;\n\n// Toast notification\n$toast-bg: var(--dh-color-accent-100);\n$toast-color: var(--dh-color-text);\n$toast-error-bg: var(--dh-color-negative-bg);\n$toast-error-color: var(--dh-color-text);\n\n//tooltips\n$tooltip-bg: var(--dh-color-tooltip-bg);\n$tooltip-color: var(--dh-color-tooltip-fg);\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem var(--dh-color-tooltip-box-shadow);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: var(--dh-color-item-list-hover-bg);\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: var(--dh-color-popover-bg);\n$contextmenu-color: var(--dh-color-text);\n$contextmenu-disabled-color: var(--dh-color-input-disabled-fg);\n$contextmenu-keyboard-selected-bg: var(--dh-color-keyboard-selected-bg);\n$contextmenu-selected-bg: var(--dh-color-item-list-hover-bg);\n$contextmenu-selected-color: var(--dh-color-item-list-selected-fg);\n\n//hr\n$hr-border-color: var(--dh-color-hr);\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: $danger;\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n\n// This section of variables is not consumed directly by DH, but they need to be\n// defined for sass to compile _variables\n$table-dark-bg: $gray-800;\n$table-dark-accent-bg: var(--dh-color-highlight-hover);\n$table-dark-hover-bg: var(--dh-color-highlight-active);\n$table-dark-border-color: $gray-700;\n$popover-bg: var(--dh-color-tooltip-bg);\n$popover-border-color: var(--dh-color-overlay-modal-bg);\n$popover-header-bg: #000;\n$popover-arrow-outer-color: var(--dh-color-dropshadow);\n$custom-range-thumb-active-bg: var(--dh-color-accent-1100);\n","@import '@deephaven/components/scss/custom.scss';\n\n$login-box-width: 605px;\n$login-box-min-height: 310px;\n$login-box-animation-scale: 0.8;\n\n.login-container {\n position: absolute;\n height: 100%;\n width: 100%;\n top: 0;\n left: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n\n .login-box {\n position: relative;\n display: flex;\n width: $login-box-width;\n box-shadow: $box-shadow;\n opacity: 0;\n animation: $transition-long ease-out 0s 1 forwards animateLoginBox;\n\n .logo {\n background-color: var(--dh-color-login-logo-bg);\n border-radius: $border-radius 0 0 $border-radius;\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: $login-box-min-height;\n min-width: $login-box-width * 0.5;\n pointer-events: none;\n user-select: none;\n\n img {\n max-width: 225px;\n }\n }\n\n .footer {\n padding: $spacer-3 0;\n position: absolute;\n width: 100%;\n bottom: 0;\n margin: 0;\n transform: translateY(100%);\n text-align: center;\n color: var(--dh-color-login-footer-fg);\n font-size: 12px;\n }\n }\n}\n\n@keyframes animateLoginBox {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n\n@include media-breakpoint-down(sm) {\n .login-container {\n .login-box {\n flex-direction: column;\n margin: $spacer-5;\n .logo {\n width: 100%;\n min-height: 165px;\n border-radius: $border-radius $border-radius 0 0;\n img {\n width: 80%;\n max-width: 350px;\n }\n }\n .login-form {\n max-width: 100%;\n border-radius: 0 0 $border-radius $border-radius;\n }\n }\n }\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n != null and $n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width. Null for the largest (last) breakpoint.\n// The maximum value is calculated as the minimum of the next one less 0.02px\n// to work around the limitations of `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $next: breakpoint-next($name, $breakpoints);\n @return if($next, breakpoint-min($next, $breakpoints) - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $max: breakpoint-max($name, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($name, $breakpoints) {\n @content;\n }\n }\n}\n","@use 'sass:math';\n\n//Set of spacer variables from the spacer map\n$spacer-0: map-get($spacers, 0); //0\n$spacer-1: map-get($spacers, 1);\n$spacer-2: map-get($spacers, 2);\n$spacer-3: map-get($spacers, 3);\n$spacer-4: map-get($spacers, 4);\n$spacer-5: map-get($spacers, 5);\n\n//Marching Ants for golden layout dropzone and drag and drop\n//top bottom, left right.\n//create 4 background images that are 50% color 1, 50% color 2 using graidents, two veritical, two horizontal\n//size them to ant-size and thickness\n//position those images along the egdes and make top/bottom repeat-x and left/right repeat-y\n//then offest each of those background positions by ant-size in animation to make them march.\n$ant-size: 8px;\n$ant-thickness: 1px;\n\n@mixin ants-base($color-1: black, $color-2: white) {\n background-image: linear-gradient(to right, $color-2 50%, $color-1 50%),\n linear-gradient(to right, $color-2 50%, $color-1 50%),\n linear-gradient(to bottom, $color-2 50%, $color-1 50%),\n linear-gradient(to bottom, $color-2 50%, $color-1 50%);\n background-size:\n $ant-size $ant-thickness,\n $ant-size $ant-thickness,\n $ant-thickness $ant-size,\n $ant-thickness $ant-size;\n background-position:\n 0 top,\n 0 bottom,\n left 0,\n right 0;\n background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;\n animation: march 0.5s;\n animation-timing-function: linear;\n animation-iteration-count: infinite;\n}\n\n@mixin drag-stack($pseudo-element) {\n &::#{$pseudo-element} {\n content: ' ';\n background: $primary;\n box-shadow: $box-shadow;\n border-radius: $border-radius;\n position: absolute;\n height: 100%;\n width: 100%;\n @content;\n }\n}\n\n$focus-bg-transparency: 12%;\n$hover-bg-transparency: 14%;\n$active-bg-transparency: 28%;\n$exception-transparency: 28%;\n"]}
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../../../node_modules/@deephaven/components/scss/custom.scss","../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss","../src/Login.scss","../../../node_modules/bootstrap/scss/mixins/_breakpoints.scss","../../../node_modules/@deephaven/components/scss/new_variables.scss"],"names":[],"mappings":"AAAA;AC6LA;ACvLA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA,OAjBc;EAkBd,YDwIS;ECvIT;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA,YA3BiB;EA4BjB;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAKN;EACE;IACE;;EAEF;IACE;;;ACcA;EDRA;IACE;IACA,QE3DK;;EF4DL;IACE;IACA;IACA;;EACA;IACE;IACA;;EAGJ;IACE;IACA","file":"Login.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n@import './util.scss';\n","// Styling overrides for bootstrap\n@use 'sass:map';\n\n// Override / set color variables\n$red: var(--dh-color-visual-red);\n$orange: var(--dh-color-visual-orange);\n$yellow: var(--dh-color-visual-yellow);\n$green: var(--dh-color-visual-green);\n$blue: var(--dh-color-visual-blue);\n$purple: var(--dh-color-visual-purple);\n\n// Fallback colors are used if theme isn't loaded\n// this is required for error messages if the API doesn't load\n\n//Define our Gray scale\n$gray-100: var(--dh-color-gray-900, #fcfcfa);\n$gray-200: var(--dh-color-gray-800);\n$gray-300: var(--dh-color-gray-700);\n$gray-400: var(--dh-color-gray-600);\n$gray-500: var(--dh-color-gray-500);\n// intentional duplicate, scale doesn't line up otherwise\n// as we have gray-850 and spectrum doesn't and it is needed\n$gray-600: var(--dh-color-gray-500);\n$gray-700: var(--dh-color-gray-400);\n$gray-800: var(--dh-color-gray-300);\n$gray-850: var(--dh-color-gray-200);\n$gray-900: var(--dh-color-gray-75);\n$black: var(--dh-color-black, #1a171a);\n$white: var(--dh-color-white, #f0f0ee);\n\n//Define some UI colors\n$interfacegray: var(--dh-color-content-bg, #2d2a2e);\n$interfaceblue: var(--dh-color-accent-bg);\n$interfacewhite: $white;\n$interfaceblack: $black;\n$content-bg: var(--dh-color-content-bg, #2d2a2e);\n$background: var(--dh-color-bg, #1a171a);\n$foreground: var(--dh-color-fg, #f0f0ee);\n\n// Extend default Bootstrap $grays map\n$grays-custom: (\n '850': $gray-850,\n);\n$grays: () !default;\n$grays: map-merge($grays, $grays-custom);\n\n// Extend default Bootstrap $colors map\n$colors-custom: (\n 'black': $black,\n);\n$colors: () !default;\n$colors: map-merge($colors, $colors-custom);\n\n// Override default Bootstrap $theme-colors map by mapping each key to itself.\n// These will then be re-mapped inside of `button-outline-variant` and\n// `button-outline-variant` mixins in `bootstrap_override_mixins_buttons.scss`\n$theme-colors-self-map: ();\n@each $key\n in (\n 'primary',\n 'secondary',\n 'success',\n 'info',\n 'warning',\n 'danger',\n 'light',\n 'dark'\n )\n{\n $theme-colors-self-map: map.set($theme-colors-self-map, $key, $key);\n}\n$theme-colors: () !default;\n$theme-colors: map-merge($theme-colors, $theme-colors-self-map);\n\n// Used by bootstrap_override_mixins_buttons.scss to map Bootstrap colors to\n// DH semantic colors\n$bootstrap-dh-semantic-map: (\n 'primary': 'accent',\n 'secondary': 'neutral',\n 'success': 'positive',\n 'info': 'info',\n 'warning': 'notice',\n 'danger': 'negative',\n // We shouldn't be using these, but mapping so they work with our custom\n // `color-yiq` mixin. If we find a way to remove $light + $dark that are\n // defined in Bootstrap _variables.scss, we should remove these\n 'light': 'neutral',\n 'dark': 'neutral',\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: var(--dh-color-accent-bg);\n$primary-hover: var(--dh-color-accent-hover-bg);\n$primary-dark: var(--dh-color-accent-down-bg);\n$secondary: var(--dh-color-neutral-bg);\n$secondary-hover: var(--dh-color-neutral-hover-bg);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: var(--dh-color-negative-bg);\n$danger-hover: var(--dh-color-negative-hover-bg);\n// We really don't want to use $light or $dark variables, but Bootstrap defines\n// them in _variables.scss. Explicitly setting them to ensure we are in control\n// of their values. If we can find a way to remove them, we should\n$light: var(--dh-color-gray-light);\n$dark: var(--dh-color-gray-dark);\n// Bootstrap doesn't define $mid, and we want to move away from this particular\n// semantic. Should be deleted by #1635\n$mid: var(--dh-color-gray-mid);\n\n$semantic-colors: (\n 'primary-hover': $primary-hover,\n 'primary-dark': $primary-dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n 'secondary-hover': $secondary-hover,\n 'danger-hover': $danger-hover,\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif:\n 'Fira Sans',\n -apple-system,\n blinkmacsystemfont,\n 'Segoe UI',\n 'Roboto',\n 'Helvetica Neue',\n arial,\n sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n$text-select-color: var(--dh-color-text-highlight);\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem var(--dh-color-dropshadow);\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition:\n color 0.12s ease-in-out,\n background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out,\n box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n$btn-font-weight: var(--spectrum-global-font-weight-bold);\n$btn-line-height: 1.3;\n\n//Override Inputs\n$input-bg: var(--dh-color-input-bg);\n$input-disabled-bg: var(--dh-color-input-disabled-bg);\n$input-color: var(--dh-color-input-fg);\n$input-border-color: var(--dh-color-input-border);\n$input-placeholder-color: var(--dh-color-input-placeholder);\n$input-focus-border-color: var(--dh-color-input-focus-border);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: color-mix(\n in srgb,\n var(--dh-color-accent) 35%,\n transparent\n);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n$input-btn-line-height: 1.3;\n// Bootstrap uses a calc expression to determine the input height (calc(line-height + 2*padding-y + border)).\n// The padding-y value has to be in rem to match units as it is a SASS calc.\n// Using 0.42145rem with 1.3 line height gets us to spectrum's 32px.\n/* stylelint-disable-next-line number-max-precision */\n$input-btn-padding-y: 0.42145rem;\n\n//checkbox\n$custom-control-indicator-bg: var(--dh-color-input-bg);\n$custom-control-indicator-border-color: var(--dh-color-input-border);\n$custom-checkbox-indicator-border-radius: 2px;\n$custom-control-indicator-border-width: 2px;\n$custom-control-indicator-active-bg: var(--dh-color-input-bg);\n$custom-control-indicator-active-border-color: var(--dh-color-input-fg);\n$custom-control-indicator-checked-bg: var(--dh-color-input-fg);\n$custom-control-indicator-checked-color: black; // used as mask fill color\n$custom-checkbox-indicator-indeterminate-bg: var(--dh-color-input-fg);\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: var(--dh-color-input-disabled-bg);\n$custom-control-indicator-checked-disabled-bg: var(\n --dh-color-input-disabled-bg\n);\n$custom-control-label-disabled-color: var(--dh-color-input-disabled-fg);\n\n// The $custom-select-indicator variable is used by Bootstrap to provide the\n// icon for the select dropdown. Inline svgs can't use CSS variables, so we hard\n// code the color to #929192 (the default value of --dh-color-gray-600). PR #1651\n// overrides this icon altogether for known dropdowns, so technically we may not\n// need this, but it's here in case there are any remaining instances.\n$custom-select-indicator-color: #929192;\n$custom-select-bg: var(--dh-color-selector-bg);\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: $gray-500;\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $content-bg;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n$close-color: var(--dh-color-text);\n$close-text-shadow: none;\n\n// Toast notification\n$toast-bg: var(--dh-color-accent-100);\n$toast-color: var(--dh-color-text);\n$toast-error-bg: var(--dh-color-negative-bg);\n$toast-error-color: var(--dh-color-text);\n\n//tooltips\n$tooltip-bg: var(--dh-color-tooltip-bg);\n$tooltip-color: var(--dh-color-tooltip-fg);\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem var(--dh-color-tooltip-box-shadow);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: var(--dh-color-item-list-hover-bg);\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: var(--dh-color-popover-bg);\n$contextmenu-color: var(--dh-color-text);\n$contextmenu-disabled-color: var(--dh-color-text-disabled);\n$contextmenu-keyboard-selected-bg: var(--dh-color-keyboard-selected-bg);\n$contextmenu-selected-bg: var(--dh-color-item-list-hover-bg);\n$contextmenu-selected-color: var(--dh-color-item-list-selected-fg);\n\n//hr\n$hr-border-color: var(--dh-color-hr);\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: $danger;\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n\n// This section of variables is not consumed directly by DH, but they need to be\n// defined for sass to compile _variables\n$table-dark-bg: $gray-800;\n$table-dark-accent-bg: var(--dh-color-highlight-hover);\n$table-dark-hover-bg: var(--dh-color-highlight-active);\n$table-dark-border-color: $gray-700;\n$popover-bg: var(--dh-color-tooltip-bg);\n$popover-border-color: var(--dh-color-overlay-modal-bg);\n$popover-header-bg: #000;\n$popover-arrow-outer-color: var(--dh-color-dropshadow);\n$custom-range-thumb-active-bg: var(--dh-color-accent-1100);\n","@import '@deephaven/components/scss/custom.scss';\n\n$login-box-width: 605px;\n$login-box-min-height: 310px;\n$login-box-animation-scale: 0.8;\n\n.login-container {\n position: absolute;\n height: 100%;\n width: 100%;\n top: 0;\n left: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n\n .login-box {\n position: relative;\n display: flex;\n width: $login-box-width;\n box-shadow: $box-shadow;\n opacity: 0;\n animation: $transition-long ease-out 0s 1 forwards animateLoginBox;\n\n .logo {\n background-color: var(--dh-color-login-logo-bg);\n border-radius: $border-radius 0 0 $border-radius;\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: $login-box-min-height;\n min-width: $login-box-width * 0.5;\n pointer-events: none;\n user-select: none;\n\n img {\n max-width: 225px;\n }\n }\n\n .footer {\n padding: $spacer-3 0;\n position: absolute;\n width: 100%;\n bottom: 0;\n margin: 0;\n transform: translateY(100%);\n text-align: center;\n color: var(--dh-color-login-footer-fg);\n font-size: 12px;\n }\n }\n}\n\n@keyframes animateLoginBox {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n\n@include media-breakpoint-down(sm) {\n .login-container {\n .login-box {\n flex-direction: column;\n margin: $spacer-5;\n .logo {\n width: 100%;\n min-height: 165px;\n border-radius: $border-radius $border-radius 0 0;\n img {\n width: 80%;\n max-width: 350px;\n }\n }\n .login-form {\n max-width: 100%;\n border-radius: 0 0 $border-radius $border-radius;\n }\n }\n }\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n != null and $n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width. Null for the largest (last) breakpoint.\n// The maximum value is calculated as the minimum of the next one less 0.02px\n// to work around the limitations of `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $next: breakpoint-next($name, $breakpoints);\n @return if($next, breakpoint-min($next, $breakpoints) - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $max: breakpoint-max($name, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($name, $breakpoints) {\n @content;\n }\n }\n}\n","@use 'sass:math';\n\n//Set of spacer variables from the spacer map\n$spacer-0: map-get($spacers, 0); //0\n$spacer-1: map-get($spacers, 1);\n$spacer-2: map-get($spacers, 2);\n$spacer-3: map-get($spacers, 3);\n$spacer-4: map-get($spacers, 4);\n$spacer-5: map-get($spacers, 5);\n\n//Marching Ants for golden layout dropzone and drag and drop\n//top bottom, left right.\n//create 4 background images that are 50% color 1, 50% color 2 using graidents, two veritical, two horizontal\n//size them to ant-size and thickness\n//position those images along the egdes and make top/bottom repeat-x and left/right repeat-y\n//then offest each of those background positions by ant-size in animation to make them march.\n$ant-size: 8px;\n$ant-thickness: 1px;\n\n@mixin ants-base($color-1: black, $color-2: white) {\n background-image: linear-gradient(to right, $color-2 50%, $color-1 50%),\n linear-gradient(to right, $color-2 50%, $color-1 50%),\n linear-gradient(to bottom, $color-2 50%, $color-1 50%),\n linear-gradient(to bottom, $color-2 50%, $color-1 50%);\n background-size:\n $ant-size $ant-thickness,\n $ant-size $ant-thickness,\n $ant-thickness $ant-size,\n $ant-thickness $ant-size;\n background-position:\n 0 top,\n 0 bottom,\n left 0,\n right 0;\n background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;\n animation: march 0.5s;\n animation-timing-function: linear;\n animation-iteration-count: infinite;\n}\n\n@mixin drag-stack($pseudo-element) {\n &::#{$pseudo-element} {\n content: ' ';\n background: $primary;\n box-shadow: $box-shadow;\n border-radius: $border-radius;\n position: absolute;\n height: 100%;\n width: 100%;\n @content;\n }\n}\n\n$focus-bg-transparency: 12%;\n$hover-bg-transparency: 14%;\n$active-bg-transparency: 28%;\n$exception-transparency: 28%;\n"]}
|
package/dist/Login.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Login.js","names":["React","RandomAreaPlotAnimation","jsx","_jsx","jsxs","_jsxs","Login","_ref","children","logoPath","className","src","alt","Date","getFullYear"],"sources":["../src/Login.tsx"],"sourcesContent":["import React from 'react';\nimport { RandomAreaPlotAnimation } from '@deephaven/components';\nimport './Login.scss';\n\ninterface LoginProps {\n /** What to show in the login input part of the login form. */\n children: React.ReactNode;\n\n /** Path to the custom logo, relative to document base */\n logoPath?: string;\n}\n\nexport function Login({\n children,\n logoPath = './logo.png',\n}: LoginProps): JSX.Element {\n return (\n <div className=\"login-container\">\n <RandomAreaPlotAnimation />\n <div className=\"login-box\">\n <div className=\"logo\">\n <img src={logoPath} alt=\"Deephaven Data Labs\" />\n </div>\n {children}\n <p className=\"footer\">\n © 2016-{new Date().getFullYear()} Deephaven Data Labs LLC. Patent\n Pending.\n </p>\n </div>\n </div>\n );\n}\n\nexport default Login;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,uBAAuB,QAAQ,uBAAuB;AAAC;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAWhE,OAAO,SAASC,KAAKA,CAAAC,IAAA,EAGO;EAAA,IAHN;IACpBC,QAAQ;IACRC,QAAQ,GAAG;EACD,CAAC,GAAAF,IAAA;EACX,oBACEF,KAAA;IAAKK,SAAS,EAAC,iBAAiB;IAAAF,QAAA,gBAC9BL,IAAA,CAACF,uBAAuB,IAAE,CAAC,eAC3BI,KAAA;MAAKK,SAAS,EAAC,WAAW;MAAAF,QAAA,gBACxBL,IAAA;QAAKO,SAAS,EAAC,MAAM;QAAAF,QAAA,eACnBL,IAAA;UAAKQ,GAAG,EAAEF,QAAS;UAACG,GAAG,EAAC;QAAqB,CAAE;MAAC,CAC7C,CAAC,EACLJ,QAAQ,eACTH,KAAA;QAAGK,SAAS,EAAC,QAAQ;QAAAF,QAAA,GAAC,YACb,EAAC,IAAIK,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC,EAAC,2CAEnC;MAAA,CAAG,CAAC;IAAA,CACD,CAAC;EAAA,CACH,CAAC;AAEV;AAEA,eAAeR,KAAK"
|
|
1
|
+
{"version":3,"file":"Login.js","names":["React","RandomAreaPlotAnimation","jsx","_jsx","jsxs","_jsxs","Login","_ref","children","logoPath","className","src","alt","Date","getFullYear"],"sources":["../src/Login.tsx"],"sourcesContent":["import React from 'react';\nimport { RandomAreaPlotAnimation } from '@deephaven/components';\nimport './Login.scss';\n\ninterface LoginProps {\n /** What to show in the login input part of the login form. */\n children: React.ReactNode;\n\n /** Path to the custom logo, relative to document base */\n logoPath?: string;\n}\n\nexport function Login({\n children,\n logoPath = './logo.png',\n}: LoginProps): JSX.Element {\n return (\n <div className=\"login-container\">\n <RandomAreaPlotAnimation />\n <div className=\"login-box\">\n <div className=\"logo\">\n <img src={logoPath} alt=\"Deephaven Data Labs\" />\n </div>\n {children}\n <p className=\"footer\">\n © 2016-{new Date().getFullYear()} Deephaven Data Labs LLC. Patent\n Pending.\n </p>\n </div>\n </div>\n );\n}\n\nexport default Login;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,uBAAuB,QAAQ,uBAAuB;AAAC;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAWhE,OAAO,SAASC,KAAKA,CAAAC,IAAA,EAGO;EAAA,IAHN;IACpBC,QAAQ;IACRC,QAAQ,GAAG;EACD,CAAC,GAAAF,IAAA;EACX,oBACEF,KAAA;IAAKK,SAAS,EAAC,iBAAiB;IAAAF,QAAA,gBAC9BL,IAAA,CAACF,uBAAuB,IAAE,CAAC,eAC3BI,KAAA;MAAKK,SAAS,EAAC,WAAW;MAAAF,QAAA,gBACxBL,IAAA;QAAKO,SAAS,EAAC,MAAM;QAAAF,QAAA,eACnBL,IAAA;UAAKQ,GAAG,EAAEF,QAAS;UAACG,GAAG,EAAC;QAAqB,CAAE;MAAC,CAC7C,CAAC,EACLJ,QAAQ,eACTH,KAAA;QAAGK,SAAS,EAAC,QAAQ;QAAAF,QAAA,GAAC,YACb,EAAC,IAAIK,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC,EAAC,2CAEnC;MAAA,CAAG,CAAC;IAAA,CACD,CAAC;EAAA,CACH,CAAC;AAEV;AAEA,eAAeR,KAAK"}
|
package/dist/LoginForm.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["../../../node_modules/@deephaven/components/scss/custom.scss","../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss","../src/LoginForm.scss","../../../node_modules/@deephaven/components/scss/new_variables.scss"],"names":[],"mappings":"AAAA;AC6LA;ACxLA;EACE;EACA,YAJqB;EAKrB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE,OD4DK;EC3DL;EACA;EACA,YC1CO;ED2CP,eC3CO;;AD8CT;EACE;;AAGF;EACE;IACE;;EAEF;IACE;;;AAIJ;EACE;EACA","file":"LoginForm.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n@import './util.scss';\n","// Styling overrides for bootstrap\n@use 'sass:map';\n\n// Override / set color variables\n$red: var(--dh-color-visual-red);\n$orange: var(--dh-color-visual-orange);\n$yellow: var(--dh-color-visual-yellow);\n$green: var(--dh-color-visual-green);\n$blue: var(--dh-color-visual-blue);\n$purple: var(--dh-color-visual-purple);\n\n// Fallback colors are used if theme isn't loaded\n// this is required for error messages if the API doesn't load\n\n//Define our Gray scale\n$gray-100: var(--dh-color-gray-900, #fcfcfa);\n$gray-200: var(--dh-color-gray-800);\n$gray-300: var(--dh-color-gray-700);\n$gray-400: var(--dh-color-gray-600);\n$gray-500: var(--dh-color-gray-500);\n// intentional duplicate, scale doesn't line up otherwise\n// as we have gray-850 and spectrum doesn't and it is needed\n$gray-600: var(--dh-color-gray-500);\n$gray-700: var(--dh-color-gray-400);\n$gray-800: var(--dh-color-gray-300);\n$gray-850: var(--dh-color-gray-200);\n$gray-900: var(--dh-color-gray-75);\n$black: var(--dh-color-black, #1a171a);\n$white: var(--dh-color-white, #f0f0ee);\n\n//Define some UI colors\n$interfacegray: var(--dh-color-content-bg, #2d2a2e);\n$interfaceblue: var(--dh-color-accent-bg);\n$interfacewhite: $white;\n$interfaceblack: $black;\n$content-bg: var(--dh-color-content-bg, #2d2a2e);\n$background: var(--dh-color-bg, #1a171a);\n$foreground: var(--dh-color-fg, #f0f0ee);\n\n// Extend default Bootstrap $grays map\n$grays-custom: (\n '850': $gray-850,\n);\n$grays: () !default;\n$grays: map-merge($grays, $grays-custom);\n\n// Extend default Bootstrap $colors map\n$colors-custom: (\n 'black': $black,\n);\n$colors: () !default;\n$colors: map-merge($colors, $colors-custom);\n\n// Override default Bootstrap $theme-colors map by mapping each key to itself.\n// These will then be re-mapped inside of `button-outline-variant` and\n// `button-outline-variant` mixins in `bootstrap_override_mixins_buttons.scss`\n$theme-colors-self-map: ();\n@each $key\n in (\n 'primary',\n 'secondary',\n 'success',\n 'info',\n 'warning',\n 'danger',\n 'light',\n 'dark'\n )\n{\n $theme-colors-self-map: map.set($theme-colors-self-map, $key, $key);\n}\n$theme-colors: () !default;\n$theme-colors: map-merge($theme-colors, $theme-colors-self-map);\n\n// Used by bootstrap_override_mixins_buttons.scss to map Bootstrap colors to\n// DH semantic colors\n$bootstrap-dh-semantic-map: (\n 'primary': 'accent',\n 'secondary': 'neutral',\n 'success': 'positive',\n 'info': 'info',\n 'warning': 'notice',\n 'danger': 'negative',\n // We shouldn't be using these, but mapping so they work with our custom\n // `color-yiq` mixin. If we find a way to remove $light + $dark that are\n // defined in Bootstrap _variables.scss, we should remove these\n 'light': 'neutral',\n 'dark': 'neutral',\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: var(--dh-color-accent-bg);\n$primary-hover: var(--dh-color-accent-hover-bg);\n$primary-dark: var(--dh-color-accent-down-bg);\n$secondary: var(--dh-color-neutral-bg);\n$secondary-hover: var(--dh-color-neutral-hover-bg);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: var(--dh-color-negative-bg);\n$danger-hover: var(--dh-color-negative-hover-bg);\n// We really don't want to use $light or $dark variables, but Bootstrap defines\n// them in _variables.scss. Explicitly setting them to ensure we are in control\n// of their values. If we can find a way to remove them, we should\n$light: var(--dh-color-gray-light);\n$dark: var(--dh-color-gray-dark);\n// Bootstrap doesn't define $mid, and we want to move away from this particular\n// semantic. Should be deleted by #1635\n$mid: var(--dh-color-gray-mid);\n\n$semantic-colors: (\n 'primary-hover': $primary-hover,\n 'primary-dark': $primary-dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n 'secondary-hover': $secondary-hover,\n 'danger-hover': $danger-hover,\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif:\n 'Fira Sans',\n -apple-system,\n blinkmacsystemfont,\n 'Segoe UI',\n 'Roboto',\n 'Helvetica Neue',\n arial,\n sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n$text-select-color: var(--dh-color-text-highlight);\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem var(--dh-color-dropshadow);\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition:\n color 0.12s ease-in-out,\n background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out,\n box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n$btn-font-weight: var(--spectrum-global-font-weight-bold);\n$btn-line-height: 1.3;\n\n//Override Inputs\n$input-bg: var(--dh-color-input-bg);\n$input-disabled-bg: var(--dh-color-input-disabled-bg);\n$input-color: var(--dh-color-input-fg);\n$input-border-color: var(--dh-color-input-border);\n$input-placeholder-color: var(--dh-color-input-placeholder);\n$input-focus-border-color: var(--dh-color-input-focus-border);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: color-mix(\n in srgb,\n var(--dh-color-accent) 35%,\n transparent\n);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n$input-btn-line-height: 1.3;\n// Bootstrap uses a calc expression to determine the input height (calc(line-height + 2*padding-y + border)).\n// The padding-y value has to be in rem to match units as it is a SASS calc.\n// Using 0.42145rem with 1.3 line height gets us to spectrum's 32px.\n/* stylelint-disable-next-line number-max-precision */\n$input-btn-padding-y: 0.42145rem;\n\n//checkbox\n$custom-control-indicator-bg: var(--dh-color-input-bg);\n$custom-control-indicator-border-color: var(--dh-color-input-border);\n$custom-checkbox-indicator-border-radius: 2px;\n$custom-control-indicator-border-width: 2px;\n$custom-control-indicator-active-bg: var(--dh-color-input-bg);\n$custom-control-indicator-active-border-color: var(--dh-color-input-fg);\n$custom-control-indicator-checked-bg: var(--dh-color-input-fg);\n$custom-control-indicator-checked-color: black; // used as mask fill color\n$custom-checkbox-indicator-indeterminate-bg: var(--dh-color-input-fg);\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: var(--dh-color-input-disabled-bg);\n$custom-control-indicator-checked-disabled-bg: var(\n --dh-color-input-disabled-bg\n);\n$custom-control-label-disabled-color: var(--dh-color-input-disabled-fg);\n\n// The $custom-select-indicator variable is used by Bootstrap to provide the\n// icon for the select dropdown. Inline svgs can't use CSS variables, so we hard\n// code the color to #929192 (the default value of --dh-color-gray-600). PR #1651\n// overrides this icon altogether for known dropdowns, so technically we may not\n// need this, but it's here in case there are any remaining instances.\n$custom-select-indicator-color: #929192;\n$custom-select-bg: var(--dh-color-selector-bg);\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: $gray-500;\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $content-bg;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n$close-color: var(--dh-color-text);\n$close-text-shadow: none;\n\n// Toast notification\n$toast-bg: var(--dh-color-accent-100);\n$toast-color: var(--dh-color-text);\n$toast-error-bg: var(--dh-color-negative-bg);\n$toast-error-color: var(--dh-color-text);\n\n//tooltips\n$tooltip-bg: var(--dh-color-tooltip-bg);\n$tooltip-color: var(--dh-color-tooltip-fg);\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem var(--dh-color-tooltip-box-shadow);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: var(--dh-color-item-list-hover-bg);\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: var(--dh-color-popover-bg);\n$contextmenu-color: var(--dh-color-text);\n$contextmenu-disabled-color: var(--dh-color-input-disabled-fg);\n$contextmenu-keyboard-selected-bg: var(--dh-color-keyboard-selected-bg);\n$contextmenu-selected-bg: var(--dh-color-item-list-hover-bg);\n$contextmenu-selected-color: var(--dh-color-item-list-selected-fg);\n\n//hr\n$hr-border-color: var(--dh-color-hr);\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: $danger;\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n\n// This section of variables is not consumed directly by DH, but they need to be\n// defined for sass to compile _variables\n$table-dark-bg: $gray-800;\n$table-dark-accent-bg: var(--dh-color-highlight-hover);\n$table-dark-hover-bg: var(--dh-color-highlight-active);\n$table-dark-border-color: $gray-700;\n$popover-bg: var(--dh-color-tooltip-bg);\n$popover-border-color: var(--dh-color-overlay-modal-bg);\n$popover-header-bg: #000;\n$popover-arrow-outer-color: var(--dh-color-dropshadow);\n$custom-range-thumb-active-bg: var(--dh-color-accent-1100);\n","@import '@deephaven/components/scss/custom.scss';\n\n$login-box-width: 605px;\n$login-box-min-height: 310px;\n\n.login-form {\n max-width: $login-box-width * 0.5;\n min-height: $login-box-min-height;\n background: var(--dh-color-login-form-bg);\n border-radius: 0 $border-radius $border-radius 0;\n display: flex;\n flex-grow: 1;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n padding: $spacer 0;\n\n fieldset {\n padding: 0;\n margin: 0;\n }\n\n .flex-wrapper {\n width: 85%;\n }\n\n .flex-spacer {\n display: flex;\n justify-content: center;\n align-items: center;\n flex-grow: 1;\n width: 85%;\n }\n\n .flex-spacer:empty {\n content: ''; // just to make a empty div to have height\n }\n\n .status-message {\n color: var(--dh-color-login-status-message);\n }\n\n .error-message {\n color: $danger;\n width: 100%;\n word-break: break-word;\n margin-top: $spacer-1;\n margin-bottom: $spacer-1;\n }\n\n .btn-primary {\n min-width: 118px;\n }\n\n @keyframes fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n .is-initializing {\n opacity: 0;\n animation: fade-in $transition 1s forwards;\n }\n}\n","@use 'sass:math';\n\n//Set of spacer variables from the spacer map\n$spacer-0: map-get($spacers, 0); //0\n$spacer-1: map-get($spacers, 1);\n$spacer-2: map-get($spacers, 2);\n$spacer-3: map-get($spacers, 3);\n$spacer-4: map-get($spacers, 4);\n$spacer-5: map-get($spacers, 5);\n\n//Marching Ants for golden layout dropzone and drag and drop\n//top bottom, left right.\n//create 4 background images that are 50% color 1, 50% color 2 using graidents, two veritical, two horizontal\n//size them to ant-size and thickness\n//position those images along the egdes and make top/bottom repeat-x and left/right repeat-y\n//then offest each of those background positions by ant-size in animation to make them march.\n$ant-size: 8px;\n$ant-thickness: 1px;\n\n@mixin ants-base($color-1: black, $color-2: white) {\n background-image: linear-gradient(to right, $color-2 50%, $color-1 50%),\n linear-gradient(to right, $color-2 50%, $color-1 50%),\n linear-gradient(to bottom, $color-2 50%, $color-1 50%),\n linear-gradient(to bottom, $color-2 50%, $color-1 50%);\n background-size:\n $ant-size $ant-thickness,\n $ant-size $ant-thickness,\n $ant-thickness $ant-size,\n $ant-thickness $ant-size;\n background-position:\n 0 top,\n 0 bottom,\n left 0,\n right 0;\n background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;\n animation: march 0.5s;\n animation-timing-function: linear;\n animation-iteration-count: infinite;\n}\n\n@mixin drag-stack($pseudo-element) {\n &::#{$pseudo-element} {\n content: ' ';\n background: $primary;\n box-shadow: $box-shadow;\n border-radius: $border-radius;\n position: absolute;\n height: 100%;\n width: 100%;\n @content;\n }\n}\n\n$focus-bg-transparency: 12%;\n$hover-bg-transparency: 14%;\n$active-bg-transparency: 28%;\n$exception-transparency: 28%;\n"]}
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../../../node_modules/@deephaven/components/scss/custom.scss","../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss","../src/LoginForm.scss","../../../node_modules/@deephaven/components/scss/new_variables.scss"],"names":[],"mappings":"AAAA;AC6LA;ACxLA;EACE;EACA,YAJqB;EAKrB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE,OD4DK;EC3DL;EACA;EACA,YC1CO;ED2CP,eC3CO;;AD8CT;EACE;;AAGF;EACE;IACE;;EAEF;IACE;;;AAIJ;EACE;EACA","file":"LoginForm.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n@import './util.scss';\n","// Styling overrides for bootstrap\n@use 'sass:map';\n\n// Override / set color variables\n$red: var(--dh-color-visual-red);\n$orange: var(--dh-color-visual-orange);\n$yellow: var(--dh-color-visual-yellow);\n$green: var(--dh-color-visual-green);\n$blue: var(--dh-color-visual-blue);\n$purple: var(--dh-color-visual-purple);\n\n// Fallback colors are used if theme isn't loaded\n// this is required for error messages if the API doesn't load\n\n//Define our Gray scale\n$gray-100: var(--dh-color-gray-900, #fcfcfa);\n$gray-200: var(--dh-color-gray-800);\n$gray-300: var(--dh-color-gray-700);\n$gray-400: var(--dh-color-gray-600);\n$gray-500: var(--dh-color-gray-500);\n// intentional duplicate, scale doesn't line up otherwise\n// as we have gray-850 and spectrum doesn't and it is needed\n$gray-600: var(--dh-color-gray-500);\n$gray-700: var(--dh-color-gray-400);\n$gray-800: var(--dh-color-gray-300);\n$gray-850: var(--dh-color-gray-200);\n$gray-900: var(--dh-color-gray-75);\n$black: var(--dh-color-black, #1a171a);\n$white: var(--dh-color-white, #f0f0ee);\n\n//Define some UI colors\n$interfacegray: var(--dh-color-content-bg, #2d2a2e);\n$interfaceblue: var(--dh-color-accent-bg);\n$interfacewhite: $white;\n$interfaceblack: $black;\n$content-bg: var(--dh-color-content-bg, #2d2a2e);\n$background: var(--dh-color-bg, #1a171a);\n$foreground: var(--dh-color-fg, #f0f0ee);\n\n// Extend default Bootstrap $grays map\n$grays-custom: (\n '850': $gray-850,\n);\n$grays: () !default;\n$grays: map-merge($grays, $grays-custom);\n\n// Extend default Bootstrap $colors map\n$colors-custom: (\n 'black': $black,\n);\n$colors: () !default;\n$colors: map-merge($colors, $colors-custom);\n\n// Override default Bootstrap $theme-colors map by mapping each key to itself.\n// These will then be re-mapped inside of `button-outline-variant` and\n// `button-outline-variant` mixins in `bootstrap_override_mixins_buttons.scss`\n$theme-colors-self-map: ();\n@each $key\n in (\n 'primary',\n 'secondary',\n 'success',\n 'info',\n 'warning',\n 'danger',\n 'light',\n 'dark'\n )\n{\n $theme-colors-self-map: map.set($theme-colors-self-map, $key, $key);\n}\n$theme-colors: () !default;\n$theme-colors: map-merge($theme-colors, $theme-colors-self-map);\n\n// Used by bootstrap_override_mixins_buttons.scss to map Bootstrap colors to\n// DH semantic colors\n$bootstrap-dh-semantic-map: (\n 'primary': 'accent',\n 'secondary': 'neutral',\n 'success': 'positive',\n 'info': 'info',\n 'warning': 'notice',\n 'danger': 'negative',\n // We shouldn't be using these, but mapping so they work with our custom\n // `color-yiq` mixin. If we find a way to remove $light + $dark that are\n // defined in Bootstrap _variables.scss, we should remove these\n 'light': 'neutral',\n 'dark': 'neutral',\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: var(--dh-color-accent-bg);\n$primary-hover: var(--dh-color-accent-hover-bg);\n$primary-dark: var(--dh-color-accent-down-bg);\n$secondary: var(--dh-color-neutral-bg);\n$secondary-hover: var(--dh-color-neutral-hover-bg);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: var(--dh-color-negative-bg);\n$danger-hover: var(--dh-color-negative-hover-bg);\n// We really don't want to use $light or $dark variables, but Bootstrap defines\n// them in _variables.scss. Explicitly setting them to ensure we are in control\n// of their values. If we can find a way to remove them, we should\n$light: var(--dh-color-gray-light);\n$dark: var(--dh-color-gray-dark);\n// Bootstrap doesn't define $mid, and we want to move away from this particular\n// semantic. Should be deleted by #1635\n$mid: var(--dh-color-gray-mid);\n\n$semantic-colors: (\n 'primary-hover': $primary-hover,\n 'primary-dark': $primary-dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n 'secondary-hover': $secondary-hover,\n 'danger-hover': $danger-hover,\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif:\n 'Fira Sans',\n -apple-system,\n blinkmacsystemfont,\n 'Segoe UI',\n 'Roboto',\n 'Helvetica Neue',\n arial,\n sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n$text-select-color: var(--dh-color-text-highlight);\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem var(--dh-color-dropshadow);\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition:\n color 0.12s ease-in-out,\n background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out,\n box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n$btn-font-weight: var(--spectrum-global-font-weight-bold);\n$btn-line-height: 1.3;\n\n//Override Inputs\n$input-bg: var(--dh-color-input-bg);\n$input-disabled-bg: var(--dh-color-input-disabled-bg);\n$input-color: var(--dh-color-input-fg);\n$input-border-color: var(--dh-color-input-border);\n$input-placeholder-color: var(--dh-color-input-placeholder);\n$input-focus-border-color: var(--dh-color-input-focus-border);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: color-mix(\n in srgb,\n var(--dh-color-accent) 35%,\n transparent\n);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n$input-btn-line-height: 1.3;\n// Bootstrap uses a calc expression to determine the input height (calc(line-height + 2*padding-y + border)).\n// The padding-y value has to be in rem to match units as it is a SASS calc.\n// Using 0.42145rem with 1.3 line height gets us to spectrum's 32px.\n/* stylelint-disable-next-line number-max-precision */\n$input-btn-padding-y: 0.42145rem;\n\n//checkbox\n$custom-control-indicator-bg: var(--dh-color-input-bg);\n$custom-control-indicator-border-color: var(--dh-color-input-border);\n$custom-checkbox-indicator-border-radius: 2px;\n$custom-control-indicator-border-width: 2px;\n$custom-control-indicator-active-bg: var(--dh-color-input-bg);\n$custom-control-indicator-active-border-color: var(--dh-color-input-fg);\n$custom-control-indicator-checked-bg: var(--dh-color-input-fg);\n$custom-control-indicator-checked-color: black; // used as mask fill color\n$custom-checkbox-indicator-indeterminate-bg: var(--dh-color-input-fg);\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: var(--dh-color-input-disabled-bg);\n$custom-control-indicator-checked-disabled-bg: var(\n --dh-color-input-disabled-bg\n);\n$custom-control-label-disabled-color: var(--dh-color-input-disabled-fg);\n\n// The $custom-select-indicator variable is used by Bootstrap to provide the\n// icon for the select dropdown. Inline svgs can't use CSS variables, so we hard\n// code the color to #929192 (the default value of --dh-color-gray-600). PR #1651\n// overrides this icon altogether for known dropdowns, so technically we may not\n// need this, but it's here in case there are any remaining instances.\n$custom-select-indicator-color: #929192;\n$custom-select-bg: var(--dh-color-selector-bg);\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: $gray-500;\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $content-bg;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n$close-color: var(--dh-color-text);\n$close-text-shadow: none;\n\n// Toast notification\n$toast-bg: var(--dh-color-accent-100);\n$toast-color: var(--dh-color-text);\n$toast-error-bg: var(--dh-color-negative-bg);\n$toast-error-color: var(--dh-color-text);\n\n//tooltips\n$tooltip-bg: var(--dh-color-tooltip-bg);\n$tooltip-color: var(--dh-color-tooltip-fg);\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem var(--dh-color-tooltip-box-shadow);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: var(--dh-color-item-list-hover-bg);\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: var(--dh-color-popover-bg);\n$contextmenu-color: var(--dh-color-text);\n$contextmenu-disabled-color: var(--dh-color-text-disabled);\n$contextmenu-keyboard-selected-bg: var(--dh-color-keyboard-selected-bg);\n$contextmenu-selected-bg: var(--dh-color-item-list-hover-bg);\n$contextmenu-selected-color: var(--dh-color-item-list-selected-fg);\n\n//hr\n$hr-border-color: var(--dh-color-hr);\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: $danger;\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n\n// This section of variables is not consumed directly by DH, but they need to be\n// defined for sass to compile _variables\n$table-dark-bg: $gray-800;\n$table-dark-accent-bg: var(--dh-color-highlight-hover);\n$table-dark-hover-bg: var(--dh-color-highlight-active);\n$table-dark-border-color: $gray-700;\n$popover-bg: var(--dh-color-tooltip-bg);\n$popover-border-color: var(--dh-color-overlay-modal-bg);\n$popover-header-bg: #000;\n$popover-arrow-outer-color: var(--dh-color-dropshadow);\n$custom-range-thumb-active-bg: var(--dh-color-accent-1100);\n","@import '@deephaven/components/scss/custom.scss';\n\n$login-box-width: 605px;\n$login-box-min-height: 310px;\n\n.login-form {\n max-width: $login-box-width * 0.5;\n min-height: $login-box-min-height;\n background: var(--dh-color-login-form-bg);\n border-radius: 0 $border-radius $border-radius 0;\n display: flex;\n flex-grow: 1;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n padding: $spacer 0;\n\n fieldset {\n padding: 0;\n margin: 0;\n }\n\n .flex-wrapper {\n width: 85%;\n }\n\n .flex-spacer {\n display: flex;\n justify-content: center;\n align-items: center;\n flex-grow: 1;\n width: 85%;\n }\n\n .flex-spacer:empty {\n content: ''; // just to make a empty div to have height\n }\n\n .status-message {\n color: var(--dh-color-login-status-message);\n }\n\n .error-message {\n color: $danger;\n width: 100%;\n word-break: break-word;\n margin-top: $spacer-1;\n margin-bottom: $spacer-1;\n }\n\n .btn-primary {\n min-width: 118px;\n }\n\n @keyframes fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n .is-initializing {\n opacity: 0;\n animation: fade-in $transition 1s forwards;\n }\n}\n","@use 'sass:math';\n\n//Set of spacer variables from the spacer map\n$spacer-0: map-get($spacers, 0); //0\n$spacer-1: map-get($spacers, 1);\n$spacer-2: map-get($spacers, 2);\n$spacer-3: map-get($spacers, 3);\n$spacer-4: map-get($spacers, 4);\n$spacer-5: map-get($spacers, 5);\n\n//Marching Ants for golden layout dropzone and drag and drop\n//top bottom, left right.\n//create 4 background images that are 50% color 1, 50% color 2 using graidents, two veritical, two horizontal\n//size them to ant-size and thickness\n//position those images along the egdes and make top/bottom repeat-x and left/right repeat-y\n//then offest each of those background positions by ant-size in animation to make them march.\n$ant-size: 8px;\n$ant-thickness: 1px;\n\n@mixin ants-base($color-1: black, $color-2: white) {\n background-image: linear-gradient(to right, $color-2 50%, $color-1 50%),\n linear-gradient(to right, $color-2 50%, $color-1 50%),\n linear-gradient(to bottom, $color-2 50%, $color-1 50%),\n linear-gradient(to bottom, $color-2 50%, $color-1 50%);\n background-size:\n $ant-size $ant-thickness,\n $ant-size $ant-thickness,\n $ant-thickness $ant-size,\n $ant-thickness $ant-size;\n background-position:\n 0 top,\n 0 bottom,\n left 0,\n right 0;\n background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;\n animation: march 0.5s;\n animation-timing-function: linear;\n animation-iteration-count: infinite;\n}\n\n@mixin drag-stack($pseudo-element) {\n &::#{$pseudo-element} {\n content: ' ';\n background: $primary;\n box-shadow: $box-shadow;\n border-radius: $border-radius;\n position: absolute;\n height: 100%;\n width: 100%;\n @content;\n }\n}\n\n$focus-bg-transparency: 12%;\n$hover-bg-transparency: 14%;\n$active-bg-transparency: 28%;\n$exception-transparency: 28%;\n"]}
|
package/dist/LoginForm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoginForm.js","names":["LoadingSpinner","classNames","React","jsx","_jsx","jsxs","_jsxs","LoginForm","_ref","children","errorMessage","isLoggingIn","onSubmit","className","event","preventDefault","stopPropagation","disabled","type","role","concat"],"sources":["../src/LoginForm.tsx"],"sourcesContent":["import { LoadingSpinner } from '@deephaven/components';\nimport classNames from 'classnames';\nimport React, { type FormEventHandler } from 'react';\nimport './LoginForm.scss';\n\nexport interface LoginFormProps {\n /** What to display inside the form */\n children: React.ReactNode;\n\n /** Error message to display */\n errorMessage?: string;\n\n /** Whether currently logging in */\n isLoggingIn?: boolean;\n\n /** Triggered when the form is submitting */\n onSubmit?: FormEventHandler;\n}\n\nexport function LoginForm({\n children,\n errorMessage,\n isLoggingIn = false,\n onSubmit,\n}: LoginFormProps): JSX.Element {\n return (\n <form\n className=\"login-form\"\n onSubmit={event => {\n event.preventDefault();\n event.stopPropagation();\n onSubmit?.(event);\n }}\n >\n <div className=\"flex-spacer\" />\n <div className=\"flex-wrapper\">\n <fieldset disabled={isLoggingIn} className=\"container-fluid\">\n {children}\n </fieldset>\n <div className=\"form-group d-flex justify-content-end align-items-center mb-0\">\n <button\n type=\"submit\"\n className={classNames(\n 'btn btn-primary',\n { 'btn-spinner': isLoggingIn },\n { 'btn-cancelable': isLoggingIn }\n )}\n data-testid=\"btn-login\"\n >\n {isLoggingIn && (\n <span>\n <LoadingSpinner className=\"mr-2 loading-spinner-vertical-align\" />\n <span className=\"btn-normal-content\">Logging in</span>\n <span className=\"btn-hover-content\">Cancel</span>\n </span>\n )}\n {!isLoggingIn && 'Login'}\n </button>\n </div>\n </div>\n <div className=\"flex-spacer\">\n {errorMessage != null && (\n <p className=\"error-message mb-0\" role=\"alert\">{`${errorMessage}`}</p>\n )}\n </div>\n </form>\n );\n}\n\nexport default LoginForm;\n"],"mappings":"AAAA,SAASA,cAAc,QAAQ,uBAAuB;AACtD,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,MAAiC,OAAO;AAAC;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAiBrD,OAAO,SAASC,SAASA,CAAAC,IAAA,EAKO;EAAA,IALN;IACxBC,QAAQ;IACRC,YAAY;IACZC,WAAW,GAAG,KAAK;IACnBC,QAAQ,EAARA;EACc,CAAC,GAAAJ,IAAA;EACf,oBACEF,KAAA;IACEO,SAAS,EAAC,YAAY;IACtBD,QAAQ,EAAEE,KAAK,IAAI;MACjBA,KAAK,CAACC,cAAc,CAAC,CAAC;MACtBD,KAAK,CAACE,eAAe,CAAC,CAAC;MACvBJ,SAAQ,aAARA,SAAQ,uBAARA,SAAQ,CAAGE,KAAK,CAAC;IACnB,CAAE;IAAAL,QAAA,gBAEFL,IAAA;MAAKS,SAAS,EAAC;IAAa,CAAE,CAAC,eAC/BP,KAAA;MAAKO,SAAS,EAAC,cAAc;MAAAJ,QAAA,gBAC3BL,IAAA;QAAUa,QAAQ,EAAEN,WAAY;QAACE,SAAS,EAAC,iBAAiB;QAAAJ,QAAA,EACzDA;MAAQ,CACD,CAAC,eACXL,IAAA;QAAKS,SAAS,EAAC,+DAA+D;QAAAJ,QAAA,eAC5EH,KAAA;UACEY,IAAI,EAAC,QAAQ;UACbL,SAAS,EAAEZ,UAAU,CACnB,iBAAiB,EACjB;YAAE,aAAa,EAAEU;UAAY,CAAC,EAC9B;YAAE,gBAAgB,EAAEA;UAAY,CAClC,CAAE;UACF,eAAY,WAAW;UAAAF,QAAA,GAEtBE,WAAW,iBACVL,KAAA;YAAAG,QAAA,gBACEL,IAAA,CAACJ,cAAc;cAACa,SAAS,EAAC;YAAqC,CAAE,CAAC,eAClET,IAAA;cAAMS,SAAS,EAAC,oBAAoB;cAAAJ,QAAA,EAAC;YAAU,CAAM,CAAC,eACtDL,IAAA;cAAMS,SAAS,EAAC,mBAAmB;cAAAJ,QAAA,EAAC;YAAM,CAAM,CAAC;UAAA,CAC7C,CACP,EACA,CAACE,WAAW,IAAI,OAAO;QAAA,CAClB;MAAC,CACN,CAAC;IAAA,CACH,CAAC,eACNP,IAAA;MAAKS,SAAS,EAAC,aAAa;MAAAJ,QAAA,EACzBC,YAAY,IAAI,IAAI,iBACnBN,IAAA;QAAGS,SAAS,EAAC,oBAAoB;QAACM,IAAI,EAAC,OAAO;QAAAV,QAAA,KAAAW,MAAA,CAAKV,YAAY;MAAA,CAAM;IACtE,CACE,CAAC;EAAA,CACF,CAAC;AAEX;AAEA,eAAeH,SAAS"
|
|
1
|
+
{"version":3,"file":"LoginForm.js","names":["LoadingSpinner","classNames","React","jsx","_jsx","jsxs","_jsxs","LoginForm","_ref","children","errorMessage","isLoggingIn","onSubmit","className","event","preventDefault","stopPropagation","disabled","type","role","concat"],"sources":["../src/LoginForm.tsx"],"sourcesContent":["import { LoadingSpinner } from '@deephaven/components';\nimport classNames from 'classnames';\nimport React, { type FormEventHandler } from 'react';\nimport './LoginForm.scss';\n\nexport interface LoginFormProps {\n /** What to display inside the form */\n children: React.ReactNode;\n\n /** Error message to display */\n errorMessage?: string;\n\n /** Whether currently logging in */\n isLoggingIn?: boolean;\n\n /** Triggered when the form is submitting */\n onSubmit?: FormEventHandler;\n}\n\nexport function LoginForm({\n children,\n errorMessage,\n isLoggingIn = false,\n onSubmit,\n}: LoginFormProps): JSX.Element {\n return (\n <form\n className=\"login-form\"\n onSubmit={event => {\n event.preventDefault();\n event.stopPropagation();\n onSubmit?.(event);\n }}\n >\n <div className=\"flex-spacer\" />\n <div className=\"flex-wrapper\">\n <fieldset disabled={isLoggingIn} className=\"container-fluid\">\n {children}\n </fieldset>\n <div className=\"form-group d-flex justify-content-end align-items-center mb-0\">\n <button\n type=\"submit\"\n className={classNames(\n 'btn btn-primary',\n { 'btn-spinner': isLoggingIn },\n { 'btn-cancelable': isLoggingIn }\n )}\n data-testid=\"btn-login\"\n >\n {isLoggingIn && (\n <span>\n <LoadingSpinner className=\"mr-2 loading-spinner-vertical-align\" />\n <span className=\"btn-normal-content\">Logging in</span>\n <span className=\"btn-hover-content\">Cancel</span>\n </span>\n )}\n {!isLoggingIn && 'Login'}\n </button>\n </div>\n </div>\n <div className=\"flex-spacer\">\n {errorMessage != null && (\n <p className=\"error-message mb-0\" role=\"alert\">{`${errorMessage}`}</p>\n )}\n </div>\n </form>\n );\n}\n\nexport default LoginForm;\n"],"mappings":"AAAA,SAASA,cAAc,QAAQ,uBAAuB;AACtD,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,MAAiC,OAAO;AAAC;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAiBrD,OAAO,SAASC,SAASA,CAAAC,IAAA,EAKO;EAAA,IALN;IACxBC,QAAQ;IACRC,YAAY;IACZC,WAAW,GAAG,KAAK;IACnBC,QAAQ,EAARA;EACc,CAAC,GAAAJ,IAAA;EACf,oBACEF,KAAA;IACEO,SAAS,EAAC,YAAY;IACtBD,QAAQ,EAAEE,KAAK,IAAI;MACjBA,KAAK,CAACC,cAAc,CAAC,CAAC;MACtBD,KAAK,CAACE,eAAe,CAAC,CAAC;MACvBJ,SAAQ,aAARA,SAAQ,uBAARA,SAAQ,CAAGE,KAAK,CAAC;IACnB,CAAE;IAAAL,QAAA,gBAEFL,IAAA;MAAKS,SAAS,EAAC;IAAa,CAAE,CAAC,eAC/BP,KAAA;MAAKO,SAAS,EAAC,cAAc;MAAAJ,QAAA,gBAC3BL,IAAA;QAAUa,QAAQ,EAAEN,WAAY;QAACE,SAAS,EAAC,iBAAiB;QAAAJ,QAAA,EACzDA;MAAQ,CACD,CAAC,eACXL,IAAA;QAAKS,SAAS,EAAC,+DAA+D;QAAAJ,QAAA,eAC5EH,KAAA;UACEY,IAAI,EAAC,QAAQ;UACbL,SAAS,EAAEZ,UAAU,CACnB,iBAAiB,EACjB;YAAE,aAAa,EAAEU;UAAY,CAAC,EAC9B;YAAE,gBAAgB,EAAEA;UAAY,CAClC,CAAE;UACF,eAAY,WAAW;UAAAF,QAAA,GAEtBE,WAAW,iBACVL,KAAA;YAAAG,QAAA,gBACEL,IAAA,CAACJ,cAAc;cAACa,SAAS,EAAC;YAAqC,CAAE,CAAC,eAClET,IAAA;cAAMS,SAAS,EAAC,oBAAoB;cAAAJ,QAAA,EAAC;YAAU,CAAM,CAAC,eACtDL,IAAA;cAAMS,SAAS,EAAC,mBAAmB;cAAAJ,QAAA,EAAC;YAAM,CAAM,CAAC;UAAA,CAC7C,CACP,EACA,CAACE,WAAW,IAAI,OAAO;QAAA,CAClB;MAAC,CACN,CAAC;IAAA,CACH,CAAC,eACNP,IAAA;MAAKS,SAAS,EAAC,aAAa;MAAAJ,QAAA,EACzBC,YAAY,IAAI,IAAI,iBACnBN,IAAA;QAAGS,SAAS,EAAC,oBAAoB;QAACM,IAAI,EAAC,OAAO;QAAAV,QAAA,KAAAW,MAAA,CAAKV,YAAY;MAAA,CAAM;IACtE,CACE,CAAC;EAAA,CACF,CAAC;AAEX;AAEA,eAAeH,SAAS"}
|
package/dist/UserContexts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserContexts.js","names":["createContext","UserOverrideContext","UserPermissionsOverrideContext","UserContext"],"sources":["../src/UserContexts.ts"],"sourcesContent":["import { createContext } from 'react';\nimport { type User, type UserPermissions } from '@deephaven/redux';\n\nexport type UserOverride = Partial<Omit<User, 'permissions'>>;\n\nexport type UserPermissionsOverride = Partial<UserPermissions>;\n\nexport const UserOverrideContext = createContext<UserOverride>({});\n\nexport const UserPermissionsOverrideContext =\n createContext<UserPermissionsOverride>({});\n\nexport const UserContext = createContext<User | null>(null);\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,OAAO;AAOrC,OAAO,IAAMC,mBAAmB,gBAAGD,aAAa,CAAe,CAAC,CAAC,CAAC;AAElE,OAAO,IAAME,8BAA8B,gBACzCF,aAAa,CAA0B,CAAC,CAAC,CAAC;AAE5C,OAAO,IAAMG,WAAW,gBAAGH,aAAa,CAAc,IAAI,CAAC"
|
|
1
|
+
{"version":3,"file":"UserContexts.js","names":["createContext","UserOverrideContext","UserPermissionsOverrideContext","UserContext"],"sources":["../src/UserContexts.ts"],"sourcesContent":["import { createContext } from 'react';\nimport { type User, type UserPermissions } from '@deephaven/redux';\n\nexport type UserOverride = Partial<Omit<User, 'permissions'>>;\n\nexport type UserPermissionsOverride = Partial<UserPermissions>;\n\nexport const UserOverrideContext = createContext<UserOverride>({});\n\nexport const UserPermissionsOverrideContext =\n createContext<UserPermissionsOverride>({});\n\nexport const UserContext = createContext<User | null>(null);\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,OAAO;AAOrC,OAAO,IAAMC,mBAAmB,gBAAGD,aAAa,CAAe,CAAC,CAAC,CAAC;AAElE,OAAO,IAAME,8BAA8B,gBACzCF,aAAa,CAA0B,CAAC,CAAC,CAAC;AAE5C,OAAO,IAAMG,WAAW,gBAAGH,aAAa,CAAc,IAAI,CAAC"}
|
package/dist/UserUtils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserUtils.js","names":["Log","log","module","getAppInitValue","serverConfig","key","get","concat","getUserFromConfig","_getValue","_getValue2","_getValue$split","_getValue3","overrides","arguments","length","undefined","permissionsOverrides","getValue","getBooleanValue","defaultValue","value","warn","name","operateAs","groups","split","canCopy","canDownloadCsv","canUsePanels","canLogout","_objectSpread","permissions","getUser"],"sources":["../src/UserUtils.ts"],"sourcesContent":["import { type User, type UserPermissions } from '@deephaven/redux';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('UserUtils');\n\n/**\n * Retrieve a value from the AppInit config\n * @param serverConfig Server config map\n * @param key The AppInit key to retrieve\n * @returns The value for the AppInit key\n */\nexport function getAppInitValue(\n serverConfig: Map<string, string>,\n key: string\n): string | undefined {\n return serverConfig.get(`internal.webClient.appInit.${key}`);\n}\n\n/**\n * Retrieve a user object provided the server config and overrides\n * @param serverConfig Server config map\n * @param overrides Override values for the user\n * @param permissionsOverrides Override specific permissions for the user\n * @returns The user object\n */\nexport function getUserFromConfig(\n serverConfig: Map<string, string>,\n overrides: Partial<Omit<User, 'permissions'>> = {},\n permissionsOverrides: Partial<UserPermissions> = {}\n): User {\n function getValue(key: string): string | undefined {\n return getAppInitValue(serverConfig, key);\n }\n function getBooleanValue(key: string, defaultValue: boolean): boolean {\n const value = getValue(key);\n if (value === 'true') {\n return true;\n }\n if (value === 'false') {\n return false;\n }\n if (value !== undefined) {\n log.warn(`Unexpected value for ${key}: ${value}`);\n }\n return defaultValue;\n }\n const name = getValue('name') ?? '';\n const operateAs = getValue('operateAs') ?? name;\n const groups = getValue('groups')?.split(',') ?? [];\n const canCopy = getBooleanValue('canCopy', true);\n const canDownloadCsv = getBooleanValue('canDownloadCsv', true);\n const canUsePanels = getBooleanValue('canUsePanels', true);\n const canLogout = getBooleanValue('canLogout', true);\n\n return {\n name,\n operateAs,\n groups,\n ...overrides,\n permissions: {\n canUsePanels,\n canCopy,\n canDownloadCsv,\n canLogout,\n ...permissionsOverrides,\n },\n };\n}\n\nexport default { getAppInitValue, getUser: getUserFromConfig };\n"],"mappings":";;;;;AACA,OAAOA,GAAG,MAAM,gBAAgB;AAEhC,IAAMC,GAAG,GAAGD,GAAG,CAACE,MAAM,CAAC,WAAW,CAAC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAC7BC,YAAiC,EACjCC,GAAW,EACS;EACpB,OAAOD,YAAY,CAACE,GAAG,+BAAAC,MAAA,CAA+BF,GAAG,CAAE,CAAC;AAC9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,iBAAiBA,CAC/BJ,YAAiC,EAG3B;EAAA,IAAAK,SAAA,EAAAC,UAAA,EAAAC,eAAA,EAAAC,UAAA;EAAA,IAFNC,SAA6C,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAAA,IAClDG,oBAA8C,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAEnD,SAASI,QAAQA,CAACb,GAAW,EAAsB;IACjD,OAAOF,eAAe,CAACC,YAAY,EAAEC,GAAG,CAAC;EAC3C;EACA,SAASc,eAAeA,CAACd,GAAW,EAAEe,YAAqB,EAAW;IACpE,IAAMC,KAAK,GAAGH,QAAQ,CAACb,GAAG,CAAC;IAC3B,IAAIgB,KAAK,KAAK,MAAM,EAAE;MACpB,OAAO,IAAI;IACb;IACA,IAAIA,KAAK,KAAK,OAAO,EAAE;MACrB,OAAO,KAAK;IACd;IACA,IAAIA,KAAK,KAAKL,SAAS,EAAE;MACvBf,GAAG,CAACqB,IAAI,yBAAAf,MAAA,CAAyBF,GAAG,QAAAE,MAAA,CAAKc,KAAK,CAAE,CAAC;IACnD;IACA,OAAOD,YAAY;EACrB;EACA,IAAMG,IAAI,IAAAd,SAAA,GAAGS,QAAQ,CAAC,MAAM,CAAC,cAAAT,SAAA,cAAAA,SAAA,GAAI,EAAE;EACnC,IAAMe,SAAS,IAAAd,UAAA,GAAGQ,QAAQ,CAAC,WAAW,CAAC,cAAAR,UAAA,cAAAA,UAAA,GAAIa,IAAI;EAC/C,IAAME,MAAM,IAAAd,eAAA,IAAAC,UAAA,GAAGM,QAAQ,CAAC,QAAQ,CAAC,cAAAN,UAAA,uBAAlBA,UAAA,CAAoBc,KAAK,CAAC,GAAG,CAAC,cAAAf,eAAA,cAAAA,eAAA,GAAI,EAAE;EACnD,IAAMgB,OAAO,GAAGR,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC;EAChD,IAAMS,cAAc,GAAGT,eAAe,CAAC,gBAAgB,EAAE,IAAI,CAAC;EAC9D,IAAMU,YAAY,GAAGV,eAAe,CAAC,cAAc,EAAE,IAAI,CAAC;EAC1D,IAAMW,SAAS,GAAGX,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC;EAEpD,OAAAY,aAAA,CAAAA,aAAA;IACER,IAAI;IACJC,SAAS;IACTC;EAAM,GACHZ,SAAS;IACZmB,WAAW,EAAAD,aAAA;MACTF,YAAY;MACZF,OAAO;MACPC,cAAc;MACdE;IAAS,GACNb,oBAAoB;EACxB;AAEL;AAEA,eAAe;EAAEd,eAAe;EAAE8B,OAAO,EAAEzB;AAAkB,CAAC"
|
|
1
|
+
{"version":3,"file":"UserUtils.js","names":["Log","log","module","getAppInitValue","serverConfig","key","get","concat","getUserFromConfig","_getValue","_getValue2","_getValue$split","_getValue3","overrides","arguments","length","undefined","permissionsOverrides","getValue","getBooleanValue","defaultValue","value","warn","name","operateAs","groups","split","canCopy","canDownloadCsv","canUsePanels","canLogout","_objectSpread","permissions","getUser"],"sources":["../src/UserUtils.ts"],"sourcesContent":["import { type User, type UserPermissions } from '@deephaven/redux';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('UserUtils');\n\n/**\n * Retrieve a value from the AppInit config\n * @param serverConfig Server config map\n * @param key The AppInit key to retrieve\n * @returns The value for the AppInit key\n */\nexport function getAppInitValue(\n serverConfig: Map<string, string>,\n key: string\n): string | undefined {\n return serverConfig.get(`internal.webClient.appInit.${key}`);\n}\n\n/**\n * Retrieve a user object provided the server config and overrides\n * @param serverConfig Server config map\n * @param overrides Override values for the user\n * @param permissionsOverrides Override specific permissions for the user\n * @returns The user object\n */\nexport function getUserFromConfig(\n serverConfig: Map<string, string>,\n overrides: Partial<Omit<User, 'permissions'>> = {},\n permissionsOverrides: Partial<UserPermissions> = {}\n): User {\n function getValue(key: string): string | undefined {\n return getAppInitValue(serverConfig, key);\n }\n function getBooleanValue(key: string, defaultValue: boolean): boolean {\n const value = getValue(key);\n if (value === 'true') {\n return true;\n }\n if (value === 'false') {\n return false;\n }\n if (value !== undefined) {\n log.warn(`Unexpected value for ${key}: ${value}`);\n }\n return defaultValue;\n }\n const name = getValue('name') ?? '';\n const operateAs = getValue('operateAs') ?? name;\n const groups = getValue('groups')?.split(',') ?? [];\n const canCopy = getBooleanValue('canCopy', true);\n const canDownloadCsv = getBooleanValue('canDownloadCsv', true);\n const canUsePanels = getBooleanValue('canUsePanels', true);\n const canLogout = getBooleanValue('canLogout', true);\n\n return {\n name,\n operateAs,\n groups,\n ...overrides,\n permissions: {\n canUsePanels,\n canCopy,\n canDownloadCsv,\n canLogout,\n ...permissionsOverrides,\n },\n };\n}\n\nexport default { getAppInitValue, getUser: getUserFromConfig };\n"],"mappings":";;;;;AACA,OAAOA,GAAG,MAAM,gBAAgB;AAEhC,IAAMC,GAAG,GAAGD,GAAG,CAACE,MAAM,CAAC,WAAW,CAAC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAC7BC,YAAiC,EACjCC,GAAW,EACS;EACpB,OAAOD,YAAY,CAACE,GAAG,+BAAAC,MAAA,CAA+BF,GAAG,CAAE,CAAC;AAC9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,iBAAiBA,CAC/BJ,YAAiC,EAG3B;EAAA,IAAAK,SAAA,EAAAC,UAAA,EAAAC,eAAA,EAAAC,UAAA;EAAA,IAFNC,SAA6C,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAAA,IAClDG,oBAA8C,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAEnD,SAASI,QAAQA,CAACb,GAAW,EAAsB;IACjD,OAAOF,eAAe,CAACC,YAAY,EAAEC,GAAG,CAAC;EAC3C;EACA,SAASc,eAAeA,CAACd,GAAW,EAAEe,YAAqB,EAAW;IACpE,IAAMC,KAAK,GAAGH,QAAQ,CAACb,GAAG,CAAC;IAC3B,IAAIgB,KAAK,KAAK,MAAM,EAAE;MACpB,OAAO,IAAI;IACb;IACA,IAAIA,KAAK,KAAK,OAAO,EAAE;MACrB,OAAO,KAAK;IACd;IACA,IAAIA,KAAK,KAAKL,SAAS,EAAE;MACvBf,GAAG,CAACqB,IAAI,yBAAAf,MAAA,CAAyBF,GAAG,QAAAE,MAAA,CAAKc,KAAK,CAAE,CAAC;IACnD;IACA,OAAOD,YAAY;EACrB;EACA,IAAMG,IAAI,IAAAd,SAAA,GAAGS,QAAQ,CAAC,MAAM,CAAC,cAAAT,SAAA,cAAAA,SAAA,GAAI,EAAE;EACnC,IAAMe,SAAS,IAAAd,UAAA,GAAGQ,QAAQ,CAAC,WAAW,CAAC,cAAAR,UAAA,cAAAA,UAAA,GAAIa,IAAI;EAC/C,IAAME,MAAM,IAAAd,eAAA,IAAAC,UAAA,GAAGM,QAAQ,CAAC,QAAQ,CAAC,cAAAN,UAAA,uBAAlBA,UAAA,CAAoBc,KAAK,CAAC,GAAG,CAAC,cAAAf,eAAA,cAAAA,eAAA,GAAI,EAAE;EACnD,IAAMgB,OAAO,GAAGR,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC;EAChD,IAAMS,cAAc,GAAGT,eAAe,CAAC,gBAAgB,EAAE,IAAI,CAAC;EAC9D,IAAMU,YAAY,GAAGV,eAAe,CAAC,cAAc,EAAE,IAAI,CAAC;EAC1D,IAAMW,SAAS,GAAGX,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC;EAEpD,OAAAY,aAAA,CAAAA,aAAA;IACER,IAAI;IACJC,SAAS;IACTC;EAAM,GACHZ,SAAS;IACZmB,WAAW,EAAAD,aAAA;MACTF,YAAY;MACZF,OAAO;MACPC,cAAc;MACdE;IAAS,GACNb,oBAAoB;EACxB;AAEL;AAEA,eAAe;EAAEd,eAAe;EAAE8B,OAAO,EAAEzB;AAAkB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"declarations.d.js","names":[],"sources":["../src/declarations.d.ts"],"sourcesContent":["declare module '*.png';\n"],"mappings":""
|
|
1
|
+
{"version":3,"file":"declarations.d.js","names":[],"sources":["../src/declarations.d.ts"],"sourcesContent":["declare module '*.png';\n"],"mappings":""}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["default","AuthPluginAnonymous","AuthPluginBase","AuthPluginParent","AuthPluginPsk"],"sources":["../src/index.ts"],"sourcesContent":["export * from './AuthPlugin';\nexport * from './AuthHandlerTypes';\nexport { default as AuthPluginAnonymous } from './AuthPluginAnonymous';\nexport { default as AuthPluginBase } from './AuthPluginBase';\nexport { default as AuthPluginParent } from './AuthPluginParent';\nexport { default as AuthPluginPsk } from './AuthPluginPsk';\nexport * from './Login';\nexport * from './LoginForm';\nexport * from './UserUtils';\nexport * from './UserContexts';\n"],"mappings":";;SAESA,OAAO,IAAIC,mBAAmB;AAAA,SAC9BD,OAAO,IAAIE,cAAc;AAAA,SACzBF,OAAO,IAAIG,gBAAgB;AAAA,SAC3BH,OAAO,IAAII,aAAa;AAAA;AAAA;AAAA;AAAA"
|
|
1
|
+
{"version":3,"file":"index.js","names":["default","AuthPluginAnonymous","AuthPluginBase","AuthPluginParent","AuthPluginPsk"],"sources":["../src/index.ts"],"sourcesContent":["export * from './AuthPlugin';\nexport * from './AuthHandlerTypes';\nexport { default as AuthPluginAnonymous } from './AuthPluginAnonymous';\nexport { default as AuthPluginBase } from './AuthPluginBase';\nexport { default as AuthPluginParent } from './AuthPluginParent';\nexport { default as AuthPluginPsk } from './AuthPluginPsk';\nexport * from './Login';\nexport * from './LoginForm';\nexport * from './UserUtils';\nexport * from './UserContexts';\n"],"mappings":";;SAESA,OAAO,IAAIC,mBAAmB;AAAA,SAC9BD,OAAO,IAAIE,cAAc;AAAA,SACzBF,OAAO,IAAIG,gBAAgB;AAAA,SAC3BH,OAAO,IAAII,aAAa;AAAA;AAAA;AAAA;AAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/auth-plugins",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Deephaven Auth Plugins",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Deephaven",
|
|
@@ -33,19 +33,19 @@
|
|
|
33
33
|
"build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@deephaven/components": "^1.
|
|
37
|
-
"@deephaven/jsapi-bootstrap": "^1.
|
|
38
|
-
"@deephaven/jsapi-components": "^1.
|
|
36
|
+
"@deephaven/components": "^1.3.0",
|
|
37
|
+
"@deephaven/jsapi-bootstrap": "^1.3.0",
|
|
38
|
+
"@deephaven/jsapi-components": "^1.3.0",
|
|
39
39
|
"@deephaven/jsapi-types": "^1.0.0-dev0.39.4",
|
|
40
|
-
"@deephaven/jsapi-utils": "^1.
|
|
41
|
-
"@deephaven/log": "^1.
|
|
42
|
-
"@deephaven/redux": "^1.
|
|
43
|
-
"@deephaven/utils": "^1.
|
|
40
|
+
"@deephaven/jsapi-utils": "^1.1.1",
|
|
41
|
+
"@deephaven/log": "^1.1.0",
|
|
42
|
+
"@deephaven/redux": "^1.3.0",
|
|
43
|
+
"@deephaven/utils": "^1.1.0",
|
|
44
44
|
"classnames": "^2.3.1",
|
|
45
45
|
"js-cookie": "^3.0.5"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@deephaven/test-utils": "^1.
|
|
48
|
+
"@deephaven/test-utils": "^1.1.0",
|
|
49
49
|
"@types/react": "^17.0.2"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
@@ -59,5 +59,5 @@
|
|
|
59
59
|
"publishConfig": {
|
|
60
60
|
"access": "public"
|
|
61
61
|
},
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "d65ed4062477ccc16a1d09b3106d4256f772913b"
|
|
63
63
|
}
|