@imposium-hub/components 2.9.0-6 → 2.9.0-8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/app-wrapper/AppWrapperV2.d.ts +26 -0
- package/dist/cjs/components/app-wrapper/AppWrapperV2.js +266 -0
- package/dist/cjs/components/app-wrapper/AppWrapperV2.js.map +1 -0
- package/dist/cjs/components/app-wrapper/AppWrapperV3.d.ts +19 -0
- package/dist/cjs/components/app-wrapper/AppWrapperV3.js +195 -0
- package/dist/cjs/components/app-wrapper/AppWrapperV3.js.map +1 -0
- package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +27 -0
- package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js +243 -0
- package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +1 -0
- package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.d.ts +28 -0
- package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js +255 -0
- package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js.map +1 -0
- package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +27 -0
- package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js +243 -0
- package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +1 -0
- package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +28 -0
- package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js +251 -0
- package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +1 -0
- package/dist/cjs/components/auth-gate/AuthGate.d.ts +2 -0
- package/dist/cjs/components/auth-gate/AuthGate.js +105 -0
- package/dist/cjs/components/auth-gate/AuthGate.js.map +1 -0
- package/dist/cjs/components/edit-marker-modal/EditMarkerModal.d.ts +8 -0
- package/dist/cjs/components/edit-marker-modal/EditMarkerModal.js +104 -0
- package/dist/cjs/components/edit-marker-modal/EditMarkerModal.js.map +1 -0
- package/dist/cjs/components/error-message-preview/ErrorMessagePreview.d.ts +15 -0
- package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js +91 -0
- package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js.map +1 -0
- package/dist/cjs/components/header/Header_BACKUP_73021.d.ts +33 -0
- package/dist/cjs/components/header/Header_BACKUP_73021.js +393 -0
- package/dist/cjs/components/header/Header_BACKUP_73021.js.map +1 -0
- package/dist/cjs/components/header/Header_BASE_73021.d.ts +29 -0
- package/dist/cjs/components/header/Header_BASE_73021.js +376 -0
- package/dist/cjs/components/header/Header_BASE_73021.js.map +1 -0
- package/dist/cjs/components/header/Header_LOCAL_73021.d.ts +33 -0
- package/dist/cjs/components/header/Header_LOCAL_73021.js +382 -0
- package/dist/cjs/components/header/Header_LOCAL_73021.js.map +1 -0
- package/dist/cjs/components/header/Header_REMOTE_73021.d.ts +30 -0
- package/dist/cjs/components/header/Header_REMOTE_73021.js +386 -0
- package/dist/cjs/components/header/Header_REMOTE_73021.js.map +1 -0
- package/dist/cjs/components/header/StoryDropdown.d.ts +6 -0
- package/dist/cjs/components/header/StoryDropdown.js +111 -0
- package/dist/cjs/components/header/StoryDropdown.js.map +1 -0
- package/dist/cjs/components/replace-files-modal/ReplaceFilesModal.js +20 -9
- package/dist/cjs/components/replace-files-modal/ReplaceFilesModal.js.map +1 -1
- package/dist/cjs/components/slider-field/SliderField.d.ts +2 -0
- package/dist/cjs/components/slider-field/SliderField.js +18 -8
- package/dist/cjs/components/slider-field/SliderField.js.map +1 -1
- package/dist/cjs/redux/actions/auth.d.ts +9 -0
- package/dist/cjs/redux/actions/auth.js +30 -0
- package/dist/cjs/redux/actions/auth.js.map +1 -0
- package/dist/cjs/redux/reducers/auth.d.ts +3 -0
- package/dist/cjs/redux/reducers/auth.js +67 -0
- package/dist/cjs/redux/reducers/auth.js.map +1 -0
- package/dist/cjs/services/Auth0.d.ts +18 -0
- package/dist/cjs/services/Auth0.js +102 -0
- package/dist/cjs/services/Auth0.js.map +1 -0
- package/dist/cjs/services/Session.d.ts +26 -0
- package/dist/cjs/services/Session.js +155 -0
- package/dist/cjs/services/Session.js.map +1 -0
- package/dist/esm/components/app-wrapper/AppWrapperV2.d.ts +26 -0
- package/dist/esm/components/app-wrapper/AppWrapperV2.js +142 -0
- package/dist/esm/components/app-wrapper/AppWrapperV2.js.map +1 -0
- package/dist/esm/components/app-wrapper/AppWrapperV3.d.ts +19 -0
- package/dist/esm/components/app-wrapper/AppWrapperV3.js +88 -0
- package/dist/esm/components/app-wrapper/AppWrapperV3.js.map +1 -0
- package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +27 -0
- package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js +194 -0
- package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +1 -0
- package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.d.ts +28 -0
- package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js +208 -0
- package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js.map +1 -0
- package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +27 -0
- package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js +194 -0
- package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +1 -0
- package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +28 -0
- package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js +204 -0
- package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +1 -0
- package/dist/esm/components/auth-gate/AuthGate.d.ts +2 -0
- package/dist/esm/components/auth-gate/AuthGate.js +59 -0
- package/dist/esm/components/auth-gate/AuthGate.js.map +1 -0
- package/dist/esm/components/edit-marker-modal/EditMarkerModal.d.ts +8 -0
- package/dist/esm/components/edit-marker-modal/EditMarkerModal.js +72 -0
- package/dist/esm/components/edit-marker-modal/EditMarkerModal.js.map +1 -0
- package/dist/esm/components/error-message-preview/ErrorMessagePreview.d.ts +15 -0
- package/dist/esm/components/error-message-preview/ErrorMessagePreview.js +35 -0
- package/dist/esm/components/error-message-preview/ErrorMessagePreview.js.map +1 -0
- package/dist/esm/components/header/Header_BACKUP_73021.d.ts +33 -0
- package/dist/esm/components/header/Header_BACKUP_73021.js +336 -0
- package/dist/esm/components/header/Header_BACKUP_73021.js.map +1 -0
- package/dist/esm/components/header/Header_BASE_73021.d.ts +29 -0
- package/dist/esm/components/header/Header_BASE_73021.js +322 -0
- package/dist/esm/components/header/Header_BASE_73021.js.map +1 -0
- package/dist/esm/components/header/Header_LOCAL_73021.d.ts +33 -0
- package/dist/esm/components/header/Header_LOCAL_73021.js +328 -0
- package/dist/esm/components/header/Header_LOCAL_73021.js.map +1 -0
- package/dist/esm/components/header/Header_REMOTE_73021.d.ts +30 -0
- package/dist/esm/components/header/Header_REMOTE_73021.js +329 -0
- package/dist/esm/components/header/Header_REMOTE_73021.js.map +1 -0
- package/dist/esm/components/header/StoryDropdown.d.ts +6 -0
- package/dist/esm/components/header/StoryDropdown.js +82 -0
- package/dist/esm/components/header/StoryDropdown.js.map +1 -0
- package/dist/esm/components/replace-files-modal/ReplaceFilesModal.js +17 -9
- package/dist/esm/components/replace-files-modal/ReplaceFilesModal.js.map +1 -1
- package/dist/esm/components/slider-field/SliderField.d.ts +2 -0
- package/dist/esm/components/slider-field/SliderField.js +18 -8
- package/dist/esm/components/slider-field/SliderField.js.map +1 -1
- package/dist/esm/redux/actions/auth.d.ts +9 -0
- package/dist/esm/redux/actions/auth.js +25 -0
- package/dist/esm/redux/actions/auth.js.map +1 -0
- package/dist/esm/redux/reducers/auth.d.ts +3 -0
- package/dist/esm/redux/reducers/auth.js +27 -0
- package/dist/esm/redux/reducers/auth.js.map +1 -0
- package/dist/esm/services/Auth0.d.ts +18 -0
- package/dist/esm/services/Auth0.js +68 -0
- package/dist/esm/services/Auth0.js.map +1 -0
- package/dist/esm/services/Session.d.ts +26 -0
- package/dist/esm/services/Session.js +107 -0
- package/dist/esm/services/Session.js.map +1 -0
- package/dist/styles.css +44 -0
- package/dist/styles.less +19 -0
- package/less/components/form-field.less +19 -0
- package/package.json +1 -1
- package/src/components/replace-files-modal/ReplaceFilesModal.tsx +18 -10
- package/src/components/slider-field/SliderField.tsx +45 -22
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../src/redux/actions/auth.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAW,oBAAoB,CAAC;AAE3D,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAe,EAAO,EAAE;IAC1C,IAAI,CAAC;QACD,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,GAAQ,EAAE;IACrC,IAAI,CAAC;QACD,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;AACnC,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG;IACZ,KAAK,EAAE,YAAY;IACnB,KAAK,EAAE,YAAY;CACtB,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import actions, { AUTH_CACHE_KEY } from '../actions/auth';
|
|
2
|
+
import AuthService from '../../services/Auth0';
|
|
3
|
+
let initialState = null;
|
|
4
|
+
try {
|
|
5
|
+
const cachedAuth = JSON.parse(localStorage.getItem(AUTH_CACHE_KEY));
|
|
6
|
+
if (cachedAuth) {
|
|
7
|
+
const { idTokenPayload: { exp } } = cachedAuth;
|
|
8
|
+
if (AuthService.checkExpiry(exp)) {
|
|
9
|
+
initialState = cachedAuth;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
catch (e) {
|
|
14
|
+
console.warn('Cached credentials were malformed or missing, redirected to login.');
|
|
15
|
+
}
|
|
16
|
+
const auth = (state = initialState, action) => {
|
|
17
|
+
switch (action.type) {
|
|
18
|
+
case actions.LOGIN:
|
|
19
|
+
return { ...action.auth };
|
|
20
|
+
case actions.CLEAR:
|
|
21
|
+
return null;
|
|
22
|
+
default:
|
|
23
|
+
return state;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
export default auth;
|
|
27
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../src/redux/reducers/auth.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,EAAE,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,WAA0B,MAAM,sBAAsB,CAAC;AAE9D,IAAI,YAAY,GAAc,IAAI,CAAC;AAEnC,IAAI,CAAC;IACD,MAAM,UAAU,GAAc,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IAE/E,IAAI,UAAU,EAAE,CAAC;QACb,MAAM,EACF,cAAc,EAAE,EAAE,GAAG,EAAE,EAC1B,GAAG,UAAU,CAAC;QAEf,IAAI,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,YAAY,GAAG,UAAU,CAAC;QAC9B,CAAC;IACL,CAAC;AACL,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACT,OAAO,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,KAAK,GAAG,YAAY,EAAE,MAAM,EAAE,EAAE;IAC1C,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,OAAO,CAAC,KAAK;YACd,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9B,KAAK,OAAO,CAAC,KAAK;YACd,OAAO,IAAI,CAAC;QAChB;YACI,OAAO,KAAK,CAAC;IACrB,CAAC;AACL,CAAC,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface IIdentity {
|
|
2
|
+
accessToken: string;
|
|
3
|
+
expiry: number;
|
|
4
|
+
expiresIn: number;
|
|
5
|
+
idToken: string;
|
|
6
|
+
tokenType: string;
|
|
7
|
+
idTokenPayload: any;
|
|
8
|
+
}
|
|
9
|
+
export default class AuthService {
|
|
10
|
+
private static readonly IMPOSIUM_APP_DEFAULTS;
|
|
11
|
+
private static auth0Client;
|
|
12
|
+
static bindToClient: (clientID: string, domain: string) => void;
|
|
13
|
+
static login: () => void;
|
|
14
|
+
static logout: () => void;
|
|
15
|
+
static checkExpiry: (expiry: number) => boolean;
|
|
16
|
+
static parseIdFromHash: (hash: string) => Promise<IIdentity>;
|
|
17
|
+
static checkSession: () => Promise<IIdentity | Error>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import * as auth0 from 'auth0-js';
|
|
2
|
+
export default class AuthService {
|
|
3
|
+
static IMPOSIUM_APP_DEFAULTS = {
|
|
4
|
+
scope: 'openid',
|
|
5
|
+
audience: 'https://api.4cinsights.io/',
|
|
6
|
+
responseType: 'token id_token',
|
|
7
|
+
redirectUri: `${window.location.origin}/auth`
|
|
8
|
+
};
|
|
9
|
+
// Auth0 JS client
|
|
10
|
+
static auth0Client;
|
|
11
|
+
/*
|
|
12
|
+
Initialize the auth0 web client with client ID for a given app-wrapper
|
|
13
|
+
*/
|
|
14
|
+
static bindToClient = (clientID, domain) => {
|
|
15
|
+
AuthService.auth0Client = new auth0.WebAuth({
|
|
16
|
+
clientID,
|
|
17
|
+
domain,
|
|
18
|
+
...AuthService.IMPOSIUM_APP_DEFAULTS
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
/*
|
|
22
|
+
redirect to auth0 for login
|
|
23
|
+
*/
|
|
24
|
+
static login = () => {
|
|
25
|
+
AuthService.auth0Client.authorize();
|
|
26
|
+
};
|
|
27
|
+
/*
|
|
28
|
+
Re-direct to auth0 to cancel session & instruct auth0 to redirect back to login
|
|
29
|
+
*/
|
|
30
|
+
static logout = () => {
|
|
31
|
+
AuthService.auth0Client.logout({ returnTo: `${window.location.origin}/auth` });
|
|
32
|
+
};
|
|
33
|
+
/*
|
|
34
|
+
Validate auth0 expiry timestamp
|
|
35
|
+
*/
|
|
36
|
+
static checkExpiry = (expiry) => expiry > Date.now().valueOf() / 1000;
|
|
37
|
+
/*
|
|
38
|
+
Parse out identity from hash
|
|
39
|
+
*/
|
|
40
|
+
static parseIdFromHash = (hash) => {
|
|
41
|
+
return new Promise((resolve, reject) => {
|
|
42
|
+
AuthService.auth0Client.parseHash({ options: hash }, (e, id) => {
|
|
43
|
+
if (!e) {
|
|
44
|
+
resolve(id);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
reject(e);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
/*
|
|
53
|
+
Defer to auth0 web servers to check if users session is valid
|
|
54
|
+
*/
|
|
55
|
+
static checkSession = () => {
|
|
56
|
+
return new Promise((resolve, reject) => {
|
|
57
|
+
AuthService.auth0Client.checkSession({}, (e, id) => {
|
|
58
|
+
if (!e) {
|
|
59
|
+
resolve(id);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
reject(e);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=Auth0.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Auth0.js","sourceRoot":"","sources":["../../../src/services/Auth0.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAC;AAWlC,MAAM,CAAC,OAAO,OAAO,WAAW;IACpB,MAAM,CAAU,qBAAqB,GAAQ;QACjD,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,4BAA4B;QACtC,YAAY,EAAE,gBAAgB;QAC9B,WAAW,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,OAAO;KAChD,CAAC;IAEF,kBAAkB;IACV,MAAM,CAAC,WAAW,CAAgB;IAE1C;;OAEG;IACI,MAAM,CAAC,YAAY,GAAG,CAAC,QAAgB,EAAE,MAAc,EAAQ,EAAE;QACpE,WAAW,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC;YACxC,QAAQ;YACR,MAAM;YACN,GAAG,WAAW,CAAC,qBAAqB;SACvC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF;;OAEG;IACI,MAAM,CAAC,KAAK,GAAG,GAAS,EAAE;QAC7B,WAAW,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;IACxC,CAAC,CAAC;IAEF;;OAEG;IACI,MAAM,CAAC,MAAM,GAAG,GAAS,EAAE;QAC9B,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC;IACnF,CAAC,CAAC;IAEF;;OAEG;IACI,MAAM,CAAC,WAAW,GAAG,CAAC,MAAc,EAAW,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;IAE9F;;OAEG;IACI,MAAM,CAAC,eAAe,GAAG,CAAC,IAAY,EAAsB,EAAE;QACjE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAQ,EAAE,EAAa,EAAE,EAAE;gBAC7E,IAAI,CAAC,CAAC,EAAE,CAAC;oBACL,OAAO,CAAC,EAAE,CAAC,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF;;OAEG;IACI,MAAM,CAAC,YAAY,GAAG,GAA+B,EAAE;QAC1D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAQ,EAAE,EAAa,EAAE,EAAE;gBACjE,IAAI,CAAC,CAAC,EAAE,CAAC;oBACL,OAAO,CAAC,EAAE,CAAC,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { IIdentity } from './Auth0';
|
|
2
|
+
export interface IHubSession {
|
|
3
|
+
sub: string;
|
|
4
|
+
organization_id: string;
|
|
5
|
+
story_id: string;
|
|
6
|
+
}
|
|
7
|
+
export default class SessionService {
|
|
8
|
+
private static readonly LOGIN_STORY_ID_CACHE;
|
|
9
|
+
private static readonly LOGIN_ORG_ID_CACHE;
|
|
10
|
+
private static readonly SESSION_COOKIE_NAME;
|
|
11
|
+
private static readonly FRESH_COOKIE;
|
|
12
|
+
static getAccessData: (idToken: string, baseUrl?: string, getTotalRenders?: boolean, accountId?: string) => Promise<any[]>;
|
|
13
|
+
static getSession: () => IHubSession;
|
|
14
|
+
static removeSession: () => void;
|
|
15
|
+
static buildFreshSession: (freshIdentity: IIdentity, orgId?: string, storyId?: string) => void;
|
|
16
|
+
static storeSession: (values: any, auth0Expiry: number) => void;
|
|
17
|
+
static cacheOrgId: (organizationId: string) => void;
|
|
18
|
+
static clearCachedOrgId: () => void;
|
|
19
|
+
static getCachedOrgId: () => string;
|
|
20
|
+
static cacheStoryId: (storyId: string) => void;
|
|
21
|
+
static clearCachedStoryId: () => void;
|
|
22
|
+
static getCachedStoryId: () => string;
|
|
23
|
+
static updateSession: (values: any, auth0Expiry: number) => void;
|
|
24
|
+
private static scrapeDomain;
|
|
25
|
+
private static determineAccessUrl;
|
|
26
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import * as Cookies from 'js-cookie';
|
|
2
|
+
import axios from 'axios';
|
|
3
|
+
export default class SessionService {
|
|
4
|
+
static LOGIN_STORY_ID_CACHE = 'imp_hub_last_story_id';
|
|
5
|
+
static LOGIN_ORG_ID_CACHE = 'imp_hub_last_org_id';
|
|
6
|
+
static SESSION_COOKIE_NAME = 'auth_state';
|
|
7
|
+
static FRESH_COOKIE = {
|
|
8
|
+
sub: '',
|
|
9
|
+
organization_id: '',
|
|
10
|
+
story_id: ''
|
|
11
|
+
};
|
|
12
|
+
/*
|
|
13
|
+
Get list of accessible services with themes from Imposium API
|
|
14
|
+
*/
|
|
15
|
+
static getAccessData = (idToken, baseUrl, getTotalRenders = false, accountId) => {
|
|
16
|
+
return new Promise((resolve, reject) => {
|
|
17
|
+
let accessUrl = baseUrl ? `${baseUrl}/access` : SessionService.determineAccessUrl();
|
|
18
|
+
const headers = { Authorization: `Bearer ${idToken}` };
|
|
19
|
+
if (getTotalRenders) {
|
|
20
|
+
accessUrl += '?include_total_renders=true';
|
|
21
|
+
}
|
|
22
|
+
if (accountId && accountId !== 'undefined') {
|
|
23
|
+
headers['X-Imposium-Account-Id'] = accountId;
|
|
24
|
+
}
|
|
25
|
+
axios
|
|
26
|
+
.get(accessUrl, { headers })
|
|
27
|
+
.then((res) => {
|
|
28
|
+
resolve(res.data ? res.data : []);
|
|
29
|
+
})
|
|
30
|
+
.catch((e) => {
|
|
31
|
+
reject(e);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
static getSession = () => Cookies.getJSON(SessionService.SESSION_COOKIE_NAME);
|
|
36
|
+
static removeSession = () => {
|
|
37
|
+
const domain = SessionService.scrapeDomain();
|
|
38
|
+
Cookies.remove(SessionService.SESSION_COOKIE_NAME, { domain });
|
|
39
|
+
SessionService.clearCachedOrgId();
|
|
40
|
+
SessionService.clearCachedStoryId();
|
|
41
|
+
};
|
|
42
|
+
static buildFreshSession = (freshIdentity, orgId = null, storyId = null) => {
|
|
43
|
+
const { idTokenPayload: { sub, exp } } = freshIdentity;
|
|
44
|
+
const freshSession = {
|
|
45
|
+
sub
|
|
46
|
+
};
|
|
47
|
+
if (orgId) {
|
|
48
|
+
freshSession.organization_id = orgId;
|
|
49
|
+
}
|
|
50
|
+
if (storyId) {
|
|
51
|
+
freshSession.story_id = storyId;
|
|
52
|
+
}
|
|
53
|
+
SessionService.storeSession(freshSession, exp);
|
|
54
|
+
};
|
|
55
|
+
static storeSession = (values, auth0Expiry) => {
|
|
56
|
+
const cookieData = { ...SessionService.FRESH_COOKIE, ...values };
|
|
57
|
+
const domain = SessionService.scrapeDomain();
|
|
58
|
+
const expiry = new Date(auth0Expiry * 1000);
|
|
59
|
+
Cookies.set(SessionService.SESSION_COOKIE_NAME, cookieData, { domain, expires: expiry });
|
|
60
|
+
};
|
|
61
|
+
static cacheOrgId = (organizationId) => {
|
|
62
|
+
localStorage.setItem(SessionService.LOGIN_ORG_ID_CACHE, organizationId);
|
|
63
|
+
};
|
|
64
|
+
static clearCachedOrgId = () => {
|
|
65
|
+
localStorage.removeItem(SessionService.LOGIN_ORG_ID_CACHE);
|
|
66
|
+
};
|
|
67
|
+
static getCachedOrgId = () => {
|
|
68
|
+
return localStorage.getItem(SessionService.LOGIN_ORG_ID_CACHE);
|
|
69
|
+
};
|
|
70
|
+
static cacheStoryId = (storyId) => {
|
|
71
|
+
localStorage.setItem(SessionService.LOGIN_STORY_ID_CACHE, storyId);
|
|
72
|
+
};
|
|
73
|
+
static clearCachedStoryId = () => {
|
|
74
|
+
localStorage.removeItem(SessionService.LOGIN_STORY_ID_CACHE);
|
|
75
|
+
};
|
|
76
|
+
static getCachedStoryId = () => {
|
|
77
|
+
return localStorage.getItem(SessionService.LOGIN_STORY_ID_CACHE);
|
|
78
|
+
};
|
|
79
|
+
static updateSession = (values, auth0Expiry) => {
|
|
80
|
+
const prevCookieData = SessionService.getSession();
|
|
81
|
+
const nextCookieData = { ...prevCookieData, ...values };
|
|
82
|
+
SessionService.storeSession(nextCookieData, auth0Expiry);
|
|
83
|
+
};
|
|
84
|
+
/*
|
|
85
|
+
Determine which domain to assign cookie to
|
|
86
|
+
*/
|
|
87
|
+
static scrapeDomain = () => {
|
|
88
|
+
const domainParts = window.location.host.split('.').reverse();
|
|
89
|
+
return domainParts.length > 2 ? `.${domainParts[1]}.${domainParts[0].split(':')[0]}` : null;
|
|
90
|
+
};
|
|
91
|
+
/*
|
|
92
|
+
Figure out which access endpoint to hit based on env
|
|
93
|
+
*/
|
|
94
|
+
static determineAccessUrl = () => {
|
|
95
|
+
const { location: { hostname, host } } = window;
|
|
96
|
+
if (hostname === 'localhost') {
|
|
97
|
+
return 'https://api/access';
|
|
98
|
+
}
|
|
99
|
+
else if (host.includes('.staging.')) {
|
|
100
|
+
return 'https://api.staging.imposium.com/access';
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
return 'https://api.imposium.com/access';
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=Session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Session.js","sourceRoot":"","sources":["../../../src/services/Session.ts"],"names":[],"mappings":"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"}
|
package/dist/styles.css
CHANGED
|
@@ -1506,6 +1506,9 @@ body a {
|
|
|
1506
1506
|
width: calc(100% - 30px);
|
|
1507
1507
|
margin: 0px;
|
|
1508
1508
|
}
|
|
1509
|
+
.slider-field input.toggle {
|
|
1510
|
+
width: calc(100% - 30px - 18px);
|
|
1511
|
+
}
|
|
1509
1512
|
.slider-field .val {
|
|
1510
1513
|
display: inline-block;
|
|
1511
1514
|
vertical-align: top;
|
|
@@ -1520,6 +1523,47 @@ body a {
|
|
|
1520
1523
|
box-sizing: border-box;
|
|
1521
1524
|
background: #272727;
|
|
1522
1525
|
}
|
|
1526
|
+
.slider-field .checkbox {
|
|
1527
|
+
display: inline-block;
|
|
1528
|
+
background: #1d1d1d;
|
|
1529
|
+
border: none;
|
|
1530
|
+
color: #dfdfdf;
|
|
1531
|
+
font-size: 12px;
|
|
1532
|
+
box-sizing: border-box;
|
|
1533
|
+
vertical-align: top;
|
|
1534
|
+
height: 20px;
|
|
1535
|
+
width: 100%;
|
|
1536
|
+
font-family: 'Roboto Condensed', sans-serif;
|
|
1537
|
+
border-radius: 0;
|
|
1538
|
+
appearance: none;
|
|
1539
|
+
line-height: 10px;
|
|
1540
|
+
border: 1px solid #353535;
|
|
1541
|
+
border-radius: 2px;
|
|
1542
|
+
width: 18px;
|
|
1543
|
+
height: 18px;
|
|
1544
|
+
padding: 2px;
|
|
1545
|
+
cursor: pointer;
|
|
1546
|
+
}
|
|
1547
|
+
.slider-field .checkbox:hover {
|
|
1548
|
+
background: #151515;
|
|
1549
|
+
}
|
|
1550
|
+
.slider-field .checkbox:focus {
|
|
1551
|
+
background: #151515;
|
|
1552
|
+
}
|
|
1553
|
+
.slider-field .checkbox:disabled {
|
|
1554
|
+
color: rgba(223, 223, 223, 0.4);
|
|
1555
|
+
background: #1d1d1d;
|
|
1556
|
+
pointer-events: none;
|
|
1557
|
+
}
|
|
1558
|
+
.slider-field .checkbox:disabled:focus {
|
|
1559
|
+
background: #1d1d1d;
|
|
1560
|
+
}
|
|
1561
|
+
.slider-field .checkbox:disabled:hover {
|
|
1562
|
+
background: #1d1d1d;
|
|
1563
|
+
}
|
|
1564
|
+
.slider-field .checkbox .fa-check {
|
|
1565
|
+
margin-left: 1px;
|
|
1566
|
+
}
|
|
1523
1567
|
.color-field .form-field-content.label-top .picker {
|
|
1524
1568
|
top: 40px;
|
|
1525
1569
|
}
|
package/dist/styles.less
CHANGED
|
@@ -1549,6 +1549,10 @@ body{
|
|
|
1549
1549
|
input{
|
|
1550
1550
|
width:calc(100% - @sliderValWidth);
|
|
1551
1551
|
margin:0px;
|
|
1552
|
+
|
|
1553
|
+
&.toggle{
|
|
1554
|
+
width:calc(100% - @sliderValWidth - 18px);
|
|
1555
|
+
}
|
|
1552
1556
|
}
|
|
1553
1557
|
|
|
1554
1558
|
.val{
|
|
@@ -1565,6 +1569,21 @@ body{
|
|
|
1565
1569
|
box-sizing:border-box;
|
|
1566
1570
|
background:lighten(@inputBackground, 4%);
|
|
1567
1571
|
}
|
|
1572
|
+
|
|
1573
|
+
.checkbox{
|
|
1574
|
+
.inputMixin;
|
|
1575
|
+
line-height: 10px;
|
|
1576
|
+
border: 1px solid @backgroundLight;
|
|
1577
|
+
border-radius: 2px;
|
|
1578
|
+
width:18px;
|
|
1579
|
+
height:18px;
|
|
1580
|
+
padding:2px;
|
|
1581
|
+
cursor: pointer;
|
|
1582
|
+
|
|
1583
|
+
.fa-check {
|
|
1584
|
+
margin-left: 1px;
|
|
1585
|
+
}
|
|
1586
|
+
}
|
|
1568
1587
|
}
|
|
1569
1588
|
|
|
1570
1589
|
.color-field{
|
|
@@ -215,6 +215,10 @@
|
|
|
215
215
|
input{
|
|
216
216
|
width:calc(100% - @sliderValWidth);
|
|
217
217
|
margin:0px;
|
|
218
|
+
|
|
219
|
+
&.toggle{
|
|
220
|
+
width:calc(100% - @sliderValWidth - 18px);
|
|
221
|
+
}
|
|
218
222
|
}
|
|
219
223
|
|
|
220
224
|
.val{
|
|
@@ -231,6 +235,21 @@
|
|
|
231
235
|
box-sizing:border-box;
|
|
232
236
|
background:lighten(@inputBackground, 4%);
|
|
233
237
|
}
|
|
238
|
+
|
|
239
|
+
.checkbox{
|
|
240
|
+
.inputMixin;
|
|
241
|
+
line-height: 10px;
|
|
242
|
+
border: 1px solid @backgroundLight;
|
|
243
|
+
border-radius: 2px;
|
|
244
|
+
width:18px;
|
|
245
|
+
height:18px;
|
|
246
|
+
padding:2px;
|
|
247
|
+
cursor: pointer;
|
|
248
|
+
|
|
249
|
+
.fa-check {
|
|
250
|
+
margin-left: 1px;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
234
253
|
}
|
|
235
254
|
|
|
236
255
|
.color-field{
|
package/package.json
CHANGED
|
@@ -67,17 +67,25 @@ export const ReplaceFilesModal = () => {
|
|
|
67
67
|
const updateFile =
|
|
68
68
|
curIndex === 0
|
|
69
69
|
? props.existedAssets[i]
|
|
70
|
-
:
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
70
|
+
: [
|
|
71
|
+
...props.existedAssets.slice(0, curIndex - 1),
|
|
72
|
+
...props.existedAssets.slice(curIndex)
|
|
73
|
+
][i];
|
|
74
|
+
|
|
75
|
+
if (updateFile) {
|
|
76
|
+
updateFile['assetId'] =
|
|
77
|
+
curIndex === 0
|
|
78
|
+
? props.existedAssetIds[i]
|
|
79
|
+
: [
|
|
80
|
+
...props.existedAssetIds.slice(0, curIndex - 1),
|
|
81
|
+
...props.existedAssetIds.slice(curIndex)
|
|
82
|
+
][i];
|
|
83
|
+
updatedAssets.push(updateFile);
|
|
84
|
+
props.onInstantUpload(updatedAssets);
|
|
85
|
+
setIndex(0);
|
|
86
|
+
onClose();
|
|
87
|
+
}
|
|
76
88
|
}
|
|
77
|
-
|
|
78
|
-
props.onUpload(updatedAssets);
|
|
79
|
-
setIndex(0);
|
|
80
|
-
onClose();
|
|
81
89
|
} else {
|
|
82
90
|
if (newIndex === props.existedAssets.length) {
|
|
83
91
|
setIndex(0);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import FieldWrapper from '../field-wrapper/FieldWrapper';
|
|
3
3
|
import { IToolTipConfig } from '../Tooltip';
|
|
4
|
+
import { ICON_CHECK } from '../../constants/icons';
|
|
4
5
|
|
|
5
6
|
interface ISliderFieldProps {
|
|
6
7
|
label?: any;
|
|
@@ -15,6 +16,7 @@ interface ISliderFieldProps {
|
|
|
15
16
|
info?: string;
|
|
16
17
|
labelPosition?: string;
|
|
17
18
|
labelWidth?: string | number;
|
|
19
|
+
enabledToggle?: boolean;
|
|
18
20
|
}
|
|
19
21
|
|
|
20
22
|
interface ISliderFieldState {
|
|
@@ -37,6 +39,7 @@ class SliderField extends React.PureComponent<ISliderFieldProps, ISliderFieldSta
|
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
private updateValue(val) {
|
|
42
|
+
console.log('updateValue', val);
|
|
40
43
|
this.props.onChange(val);
|
|
41
44
|
}
|
|
42
45
|
|
|
@@ -69,6 +72,14 @@ class SliderField extends React.PureComponent<ISliderFieldProps, ISliderFieldSta
|
|
|
69
72
|
}
|
|
70
73
|
}
|
|
71
74
|
|
|
75
|
+
private toggle() {
|
|
76
|
+
if (this.props.value !== undefined && this.props.value !== null) {
|
|
77
|
+
this.props.onChange(null);
|
|
78
|
+
} else {
|
|
79
|
+
this.props.onChange(this.props.defaultValue);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
72
83
|
public render() {
|
|
73
84
|
const {
|
|
74
85
|
label,
|
|
@@ -81,16 +92,15 @@ class SliderField extends React.PureComponent<ISliderFieldProps, ISliderFieldSta
|
|
|
81
92
|
tooltip,
|
|
82
93
|
info,
|
|
83
94
|
labelPosition,
|
|
84
|
-
labelWidth
|
|
95
|
+
labelWidth,
|
|
96
|
+
enabledToggle
|
|
85
97
|
} = this.props;
|
|
86
98
|
const { tempValue } = this.state;
|
|
99
|
+
const valueSet = value !== null && value !== undefined;
|
|
100
|
+
const val = tempValue !== null ? tempValue : !valueSet ? defaultValue : value;
|
|
87
101
|
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
? tempValue
|
|
91
|
-
: value === null || value === undefined
|
|
92
|
-
? defaultValue
|
|
93
|
-
: value;
|
|
102
|
+
const showInputs = (enabledToggle && valueSet) || !enabledToggle;
|
|
103
|
+
const icon = valueSet ? ICON_CHECK : null;
|
|
94
104
|
|
|
95
105
|
return (
|
|
96
106
|
<FieldWrapper
|
|
@@ -101,21 +111,34 @@ class SliderField extends React.PureComponent<ISliderFieldProps, ISliderFieldSta
|
|
|
101
111
|
labelPosition={labelPosition}
|
|
102
112
|
labelWidth={labelWidth}
|
|
103
113
|
width={width}>
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
114
|
+
{enabledToggle && (
|
|
115
|
+
<div
|
|
116
|
+
className='checkbox'
|
|
117
|
+
onClick={(e) => this.toggle()}>
|
|
118
|
+
{icon}
|
|
119
|
+
</div>
|
|
120
|
+
)}
|
|
121
|
+
|
|
122
|
+
{showInputs && (
|
|
123
|
+
<input
|
|
124
|
+
className={enabledToggle ? 'toggle' : ''}
|
|
125
|
+
onChange={(e) => this.rangeInputChange(e)}
|
|
126
|
+
type='range'
|
|
127
|
+
min={min}
|
|
128
|
+
max={max}
|
|
129
|
+
value={val}
|
|
130
|
+
step={step}
|
|
131
|
+
/>
|
|
132
|
+
)}
|
|
133
|
+
|
|
134
|
+
{showInputs && (
|
|
135
|
+
<input
|
|
136
|
+
className='val'
|
|
137
|
+
onChange={(e) => this.numberInputChange(e)}
|
|
138
|
+
type='number'
|
|
139
|
+
value={val}
|
|
140
|
+
/>
|
|
141
|
+
)}
|
|
119
142
|
</FieldWrapper>
|
|
120
143
|
);
|
|
121
144
|
}
|