@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.
Files changed (124) hide show
  1. package/dist/cjs/components/app-wrapper/AppWrapperV2.d.ts +26 -0
  2. package/dist/cjs/components/app-wrapper/AppWrapperV2.js +266 -0
  3. package/dist/cjs/components/app-wrapper/AppWrapperV2.js.map +1 -0
  4. package/dist/cjs/components/app-wrapper/AppWrapperV3.d.ts +19 -0
  5. package/dist/cjs/components/app-wrapper/AppWrapperV3.js +195 -0
  6. package/dist/cjs/components/app-wrapper/AppWrapperV3.js.map +1 -0
  7. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +27 -0
  8. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js +243 -0
  9. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +1 -0
  10. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.d.ts +28 -0
  11. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js +255 -0
  12. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js.map +1 -0
  13. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +27 -0
  14. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js +243 -0
  15. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +1 -0
  16. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +28 -0
  17. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js +251 -0
  18. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +1 -0
  19. package/dist/cjs/components/auth-gate/AuthGate.d.ts +2 -0
  20. package/dist/cjs/components/auth-gate/AuthGate.js +105 -0
  21. package/dist/cjs/components/auth-gate/AuthGate.js.map +1 -0
  22. package/dist/cjs/components/edit-marker-modal/EditMarkerModal.d.ts +8 -0
  23. package/dist/cjs/components/edit-marker-modal/EditMarkerModal.js +104 -0
  24. package/dist/cjs/components/edit-marker-modal/EditMarkerModal.js.map +1 -0
  25. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.d.ts +15 -0
  26. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js +91 -0
  27. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js.map +1 -0
  28. package/dist/cjs/components/header/Header_BACKUP_73021.d.ts +33 -0
  29. package/dist/cjs/components/header/Header_BACKUP_73021.js +393 -0
  30. package/dist/cjs/components/header/Header_BACKUP_73021.js.map +1 -0
  31. package/dist/cjs/components/header/Header_BASE_73021.d.ts +29 -0
  32. package/dist/cjs/components/header/Header_BASE_73021.js +376 -0
  33. package/dist/cjs/components/header/Header_BASE_73021.js.map +1 -0
  34. package/dist/cjs/components/header/Header_LOCAL_73021.d.ts +33 -0
  35. package/dist/cjs/components/header/Header_LOCAL_73021.js +382 -0
  36. package/dist/cjs/components/header/Header_LOCAL_73021.js.map +1 -0
  37. package/dist/cjs/components/header/Header_REMOTE_73021.d.ts +30 -0
  38. package/dist/cjs/components/header/Header_REMOTE_73021.js +386 -0
  39. package/dist/cjs/components/header/Header_REMOTE_73021.js.map +1 -0
  40. package/dist/cjs/components/header/StoryDropdown.d.ts +6 -0
  41. package/dist/cjs/components/header/StoryDropdown.js +111 -0
  42. package/dist/cjs/components/header/StoryDropdown.js.map +1 -0
  43. package/dist/cjs/components/replace-files-modal/ReplaceFilesModal.js +20 -9
  44. package/dist/cjs/components/replace-files-modal/ReplaceFilesModal.js.map +1 -1
  45. package/dist/cjs/components/slider-field/SliderField.d.ts +2 -0
  46. package/dist/cjs/components/slider-field/SliderField.js +18 -8
  47. package/dist/cjs/components/slider-field/SliderField.js.map +1 -1
  48. package/dist/cjs/redux/actions/auth.d.ts +9 -0
  49. package/dist/cjs/redux/actions/auth.js +30 -0
  50. package/dist/cjs/redux/actions/auth.js.map +1 -0
  51. package/dist/cjs/redux/reducers/auth.d.ts +3 -0
  52. package/dist/cjs/redux/reducers/auth.js +67 -0
  53. package/dist/cjs/redux/reducers/auth.js.map +1 -0
  54. package/dist/cjs/services/Auth0.d.ts +18 -0
  55. package/dist/cjs/services/Auth0.js +102 -0
  56. package/dist/cjs/services/Auth0.js.map +1 -0
  57. package/dist/cjs/services/Session.d.ts +26 -0
  58. package/dist/cjs/services/Session.js +155 -0
  59. package/dist/cjs/services/Session.js.map +1 -0
  60. package/dist/esm/components/app-wrapper/AppWrapperV2.d.ts +26 -0
  61. package/dist/esm/components/app-wrapper/AppWrapperV2.js +142 -0
  62. package/dist/esm/components/app-wrapper/AppWrapperV2.js.map +1 -0
  63. package/dist/esm/components/app-wrapper/AppWrapperV3.d.ts +19 -0
  64. package/dist/esm/components/app-wrapper/AppWrapperV3.js +88 -0
  65. package/dist/esm/components/app-wrapper/AppWrapperV3.js.map +1 -0
  66. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +27 -0
  67. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js +194 -0
  68. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +1 -0
  69. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.d.ts +28 -0
  70. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js +208 -0
  71. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js.map +1 -0
  72. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +27 -0
  73. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js +194 -0
  74. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +1 -0
  75. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +28 -0
  76. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js +204 -0
  77. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +1 -0
  78. package/dist/esm/components/auth-gate/AuthGate.d.ts +2 -0
  79. package/dist/esm/components/auth-gate/AuthGate.js +59 -0
  80. package/dist/esm/components/auth-gate/AuthGate.js.map +1 -0
  81. package/dist/esm/components/edit-marker-modal/EditMarkerModal.d.ts +8 -0
  82. package/dist/esm/components/edit-marker-modal/EditMarkerModal.js +72 -0
  83. package/dist/esm/components/edit-marker-modal/EditMarkerModal.js.map +1 -0
  84. package/dist/esm/components/error-message-preview/ErrorMessagePreview.d.ts +15 -0
  85. package/dist/esm/components/error-message-preview/ErrorMessagePreview.js +35 -0
  86. package/dist/esm/components/error-message-preview/ErrorMessagePreview.js.map +1 -0
  87. package/dist/esm/components/header/Header_BACKUP_73021.d.ts +33 -0
  88. package/dist/esm/components/header/Header_BACKUP_73021.js +336 -0
  89. package/dist/esm/components/header/Header_BACKUP_73021.js.map +1 -0
  90. package/dist/esm/components/header/Header_BASE_73021.d.ts +29 -0
  91. package/dist/esm/components/header/Header_BASE_73021.js +322 -0
  92. package/dist/esm/components/header/Header_BASE_73021.js.map +1 -0
  93. package/dist/esm/components/header/Header_LOCAL_73021.d.ts +33 -0
  94. package/dist/esm/components/header/Header_LOCAL_73021.js +328 -0
  95. package/dist/esm/components/header/Header_LOCAL_73021.js.map +1 -0
  96. package/dist/esm/components/header/Header_REMOTE_73021.d.ts +30 -0
  97. package/dist/esm/components/header/Header_REMOTE_73021.js +329 -0
  98. package/dist/esm/components/header/Header_REMOTE_73021.js.map +1 -0
  99. package/dist/esm/components/header/StoryDropdown.d.ts +6 -0
  100. package/dist/esm/components/header/StoryDropdown.js +82 -0
  101. package/dist/esm/components/header/StoryDropdown.js.map +1 -0
  102. package/dist/esm/components/replace-files-modal/ReplaceFilesModal.js +17 -9
  103. package/dist/esm/components/replace-files-modal/ReplaceFilesModal.js.map +1 -1
  104. package/dist/esm/components/slider-field/SliderField.d.ts +2 -0
  105. package/dist/esm/components/slider-field/SliderField.js +18 -8
  106. package/dist/esm/components/slider-field/SliderField.js.map +1 -1
  107. package/dist/esm/redux/actions/auth.d.ts +9 -0
  108. package/dist/esm/redux/actions/auth.js +25 -0
  109. package/dist/esm/redux/actions/auth.js.map +1 -0
  110. package/dist/esm/redux/reducers/auth.d.ts +3 -0
  111. package/dist/esm/redux/reducers/auth.js +27 -0
  112. package/dist/esm/redux/reducers/auth.js.map +1 -0
  113. package/dist/esm/services/Auth0.d.ts +18 -0
  114. package/dist/esm/services/Auth0.js +68 -0
  115. package/dist/esm/services/Auth0.js.map +1 -0
  116. package/dist/esm/services/Session.d.ts +26 -0
  117. package/dist/esm/services/Session.js +107 -0
  118. package/dist/esm/services/Session.js.map +1 -0
  119. package/dist/styles.css +44 -0
  120. package/dist/styles.less +19 -0
  121. package/less/components/form-field.less +19 -0
  122. package/package.json +1 -1
  123. package/src/components/replace-files-modal/ReplaceFilesModal.tsx +18 -10
  124. 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,3 @@
1
+ import { IIdentity } from '../../services/Auth0';
2
+ declare const auth: (state: IIdentity, action: any) => any;
3
+ export default auth;
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@imposium-hub/components",
3
- "version": "2.9.0-6",
3
+ "version": "2.9.0-8",
4
4
  "description": "React & Typescript component / asset library for Imposium front-ends",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -67,17 +67,25 @@ export const ReplaceFilesModal = () => {
67
67
  const updateFile =
68
68
  curIndex === 0
69
69
  ? props.existedAssets[i]
70
- : props.existedAssets.slice(curIndex)[i];
71
- updateFile['assetId'] =
72
- curIndex === 0
73
- ? props.existedAssetIds[i]
74
- : props.existedAssetIds.slice(curIndex)[i];
75
- updatedAssets.push(updateFile);
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 val =
89
- tempValue !== null
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
- <input
105
- onChange={(e) => this.rangeInputChange(e)}
106
- type='range'
107
- min={min}
108
- max={max}
109
- value={val}
110
- step={step}
111
- />
112
-
113
- <input
114
- className='val'
115
- onChange={(e) => this.numberInputChange(e)}
116
- type='number'
117
- value={val}
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
  }