@imposium-hub/components 2.5.10-17 → 2.5.10-2

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 (128) hide show
  1. package/dist/cjs/components/app-wrapper/AppWrapper.js +2 -5
  2. package/dist/cjs/components/app-wrapper/AppWrapper.js.map +1 -1
  3. package/dist/cjs/components/assets/AssetsTableAssetIdCell.d.ts +2 -0
  4. package/dist/cjs/components/assets/AssetsTableAssetIdCell.js +56 -0
  5. package/dist/cjs/components/assets/AssetsTableAssetIdCell.js.map +1 -0
  6. package/dist/cjs/components/assets/AssetsTableAssetIdFilter copy.d.ts +2 -0
  7. package/dist/cjs/components/assets/AssetsTableAssetIdFilter copy.js +94 -0
  8. package/dist/cjs/components/assets/AssetsTableAssetIdFilter copy.js.map +1 -0
  9. package/dist/cjs/components/assets/AssetsTableAssetIdFilter.d.ts +2 -0
  10. package/dist/cjs/components/assets/AssetsTableAssetIdFilter.js +94 -0
  11. package/dist/cjs/components/assets/AssetsTableAssetIdFilter.js.map +1 -0
  12. package/dist/cjs/components/assets/AssetsTableNameFilter copy.d.ts +2 -0
  13. package/dist/cjs/components/assets/AssetsTableNameFilter copy.js +94 -0
  14. package/dist/cjs/components/assets/AssetsTableNameFilter copy.js.map +1 -0
  15. package/dist/cjs/components/confirm-modal/ConfirmModal.d.ts +9 -9
  16. package/dist/cjs/components/confirm-modal/ConfirmModal.js +12 -104
  17. package/dist/cjs/components/confirm-modal/ConfirmModal.js.map +1 -1
  18. package/dist/cjs/components/data-table/Paginator.js +41 -7
  19. package/dist/cjs/components/data-table/Paginator.js.map +1 -1
  20. package/dist/cjs/components/story-previewer/StoryPreviewer.js +1 -2
  21. package/dist/cjs/components/story-previewer/StoryPreviewer.js.map +1 -1
  22. package/dist/cjs/constants/copy.js +2 -2
  23. package/dist/cjs/constants/copy.js.map +1 -1
  24. package/dist/cjs/index.d.ts +2 -2
  25. package/dist/cjs/index.js.map +1 -1
  26. package/dist/cjs/redux/actions/asset-list.js +42 -33
  27. package/dist/cjs/redux/actions/asset-list.js.map +1 -1
  28. package/dist/cjs/redux/actions/notifications.d.ts +8 -0
  29. package/dist/cjs/redux/actions/notifications.js +56 -0
  30. package/dist/cjs/redux/actions/notifications.js.map +1 -0
  31. package/dist/cjs/redux/reducers/notifications.d.ts +8 -0
  32. package/dist/cjs/redux/reducers/notifications.js +45 -0
  33. package/dist/cjs/redux/reducers/notifications.js.map +1 -0
  34. package/dist/esm/components/app-wrapper/AppWrapper.js +2 -5
  35. package/dist/esm/components/app-wrapper/AppWrapper.js.map +1 -1
  36. package/dist/esm/components/assets/AssetsTableAssetIdCell.d.ts +2 -0
  37. package/dist/esm/components/assets/AssetsTableAssetIdCell.js +31 -0
  38. package/dist/esm/components/assets/AssetsTableAssetIdCell.js.map +1 -0
  39. package/dist/esm/components/assets/AssetsTableAssetIdFilter copy.d.ts +2 -0
  40. package/dist/esm/components/assets/AssetsTableAssetIdFilter copy.js +20 -0
  41. package/dist/esm/components/assets/AssetsTableAssetIdFilter copy.js.map +1 -0
  42. package/dist/esm/components/assets/AssetsTableAssetIdFilter.d.ts +2 -0
  43. package/dist/esm/components/assets/AssetsTableAssetIdFilter.js +20 -0
  44. package/dist/esm/components/assets/AssetsTableAssetIdFilter.js.map +1 -0
  45. package/dist/esm/components/assets/AssetsTableNameFilter copy.d.ts +2 -0
  46. package/dist/esm/components/assets/AssetsTableNameFilter copy.js +20 -0
  47. package/dist/esm/components/assets/AssetsTableNameFilter copy.js.map +1 -0
  48. package/dist/esm/components/confirm-modal/ConfirmModal.d.ts +9 -9
  49. package/dist/esm/components/confirm-modal/ConfirmModal.js +11 -56
  50. package/dist/esm/components/confirm-modal/ConfirmModal.js.map +1 -1
  51. package/dist/esm/components/data-table/Paginator.js +64 -44
  52. package/dist/esm/components/data-table/Paginator.js.map +1 -1
  53. package/dist/esm/components/story-previewer/StoryPreviewer.js +1 -2
  54. package/dist/esm/components/story-previewer/StoryPreviewer.js.map +1 -1
  55. package/dist/esm/constants/copy.js +2 -2
  56. package/dist/esm/constants/copy.js.map +1 -1
  57. package/dist/esm/index.d.ts +2 -2
  58. package/dist/esm/index.js.map +1 -1
  59. package/dist/esm/redux/actions/asset-list.js +42 -33
  60. package/dist/esm/redux/actions/asset-list.js.map +1 -1
  61. package/dist/esm/redux/actions/notifications.d.ts +8 -0
  62. package/dist/esm/redux/actions/notifications.js +47 -0
  63. package/dist/esm/redux/actions/notifications.js.map +1 -0
  64. package/dist/esm/redux/reducers/notifications.d.ts +8 -0
  65. package/dist/esm/redux/reducers/notifications.js +14 -0
  66. package/dist/esm/redux/reducers/notifications.js.map +1 -0
  67. package/package.json +1 -1
  68. package/src/components/app-wrapper/AppWrapper.tsx +4 -3
  69. package/src/components/confirm-modal/ConfirmModal.tsx +21 -76
  70. package/src/components/data-table/Paginator.tsx +125 -93
  71. package/src/components/story-previewer/StoryPreviewer.tsx +3 -2
  72. package/src/constants/copy.ts +2 -2
  73. package/src/index.ts +2 -3
  74. package/src/redux/actions/asset-list.ts +44 -36
  75. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +0 -27
  76. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js +0 -243
  77. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +0 -1
  78. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.d.ts +0 -28
  79. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js +0 -255
  80. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js.map +0 -1
  81. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +0 -27
  82. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js +0 -243
  83. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +0 -1
  84. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +0 -28
  85. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js +0 -251
  86. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +0 -1
  87. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.d.ts +0 -15
  88. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js +0 -91
  89. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js.map +0 -1
  90. package/dist/cjs/components/header/Header_BACKUP_73021.d.ts +0 -33
  91. package/dist/cjs/components/header/Header_BACKUP_73021.js +0 -393
  92. package/dist/cjs/components/header/Header_BACKUP_73021.js.map +0 -1
  93. package/dist/cjs/components/header/Header_BASE_73021.d.ts +0 -29
  94. package/dist/cjs/components/header/Header_BASE_73021.js +0 -376
  95. package/dist/cjs/components/header/Header_BASE_73021.js.map +0 -1
  96. package/dist/cjs/components/header/Header_LOCAL_73021.d.ts +0 -33
  97. package/dist/cjs/components/header/Header_LOCAL_73021.js +0 -382
  98. package/dist/cjs/components/header/Header_LOCAL_73021.js.map +0 -1
  99. package/dist/cjs/components/header/Header_REMOTE_73021.d.ts +0 -30
  100. package/dist/cjs/components/header/Header_REMOTE_73021.js +0 -386
  101. package/dist/cjs/components/header/Header_REMOTE_73021.js.map +0 -1
  102. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +0 -27
  103. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js +0 -194
  104. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +0 -1
  105. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.d.ts +0 -28
  106. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js +0 -208
  107. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js.map +0 -1
  108. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +0 -27
  109. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js +0 -194
  110. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +0 -1
  111. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +0 -28
  112. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js +0 -204
  113. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +0 -1
  114. package/dist/esm/components/error-message-preview/ErrorMessagePreview.d.ts +0 -15
  115. package/dist/esm/components/error-message-preview/ErrorMessagePreview.js +0 -35
  116. package/dist/esm/components/error-message-preview/ErrorMessagePreview.js.map +0 -1
  117. package/dist/esm/components/header/Header_BACKUP_73021.d.ts +0 -33
  118. package/dist/esm/components/header/Header_BACKUP_73021.js +0 -336
  119. package/dist/esm/components/header/Header_BACKUP_73021.js.map +0 -1
  120. package/dist/esm/components/header/Header_BASE_73021.d.ts +0 -29
  121. package/dist/esm/components/header/Header_BASE_73021.js +0 -322
  122. package/dist/esm/components/header/Header_BASE_73021.js.map +0 -1
  123. package/dist/esm/components/header/Header_LOCAL_73021.d.ts +0 -33
  124. package/dist/esm/components/header/Header_LOCAL_73021.js +0 -328
  125. package/dist/esm/components/header/Header_LOCAL_73021.js.map +0 -1
  126. package/dist/esm/components/header/Header_REMOTE_73021.d.ts +0 -30
  127. package/dist/esm/components/header/Header_REMOTE_73021.js +0 -329
  128. package/dist/esm/components/header/Header_REMOTE_73021.js.map +0 -1
@@ -26,102 +26,134 @@ const Paginator: React.FC<any> = ({
26
26
  setPageSize,
27
27
  itemsPerPage,
28
28
  onItemsPerPage
29
- }) => (
30
- <section className='ip-table-pagination'>
31
- <span>
32
- <Button
33
- style='subtle'
34
- size='small'
35
- tooltip='Go to first page'
36
- disabled={!canPreviousPage}
37
- onClick={() => gotoPage(1, pageSize)}>
38
- {ICON_ANGLE_DOUBLE_LEFT}
39
- </Button>
40
- <Button
41
- style='subtle'
42
- size='small'
43
- tooltip='Go to previous page'
44
- disabled={!canPreviousPage}
45
- onClick={() => previousPage()}>
46
- {ICON_ANGLE_LEFT}
47
- </Button>
48
- <Button
49
- style='subtle'
50
- size='small'
51
- tooltip='Go to next page'
52
- disabled={!canNextPage}
53
- onClick={() => nextPage()}>
54
- {ICON_ANGLE_RIGHT}
55
- </Button>
56
- <Button
57
- style='subtle'
58
- size='small'
59
- tooltip='Go to last page'
60
- disabled={!canNextPage}
61
- onClick={() => gotoPage(pageCount, pageSize)}>
62
- {ICON_ANGLE_DOUBLE_RIGHT}
63
- </Button>
64
- &nbsp;&nbsp;
29
+ }) => {
30
+ const [getPageIndex, setPageIndex] = React.useState<number>(pageIndex);
31
+ const [getItemsPerPage, setItemsPerPage] = React.useState<number>(itemsPerPage);
32
+
33
+ const onItemsPerPageBlur = () => {
34
+ onItemsPerPage(getItemsPerPage);
35
+ };
36
+
37
+ const onGoToPageBlur = () => {
38
+ gotoPage(getPageIndex, pageSize);
39
+ };
40
+
41
+ const onItemsPerPageKeyDown = (e) => {
42
+ if (e.key === 'Enter') {
43
+ onItemsPerPage(getItemsPerPage);
44
+ }
45
+ };
46
+
47
+ const onGoToPageKeyDown = (e) => {
48
+ if (e.key === 'Enter') {
49
+ gotoPage(getPageIndex, pageSize);
50
+ }
51
+ };
52
+
53
+ return (
54
+ <section className='ip-table-pagination'>
65
55
  <span>
66
- {copy.table.page}&nbsp;&nbsp;
67
- <strong>
68
- {pageIndex} of {pageCount}
69
- </strong>
56
+ <Button
57
+ style='subtle'
58
+ size='small'
59
+ tooltip='Go to first page'
60
+ disabled={!canPreviousPage}
61
+ onClick={() => gotoPage(1, pageSize)}>
62
+ {ICON_ANGLE_DOUBLE_LEFT}
63
+ </Button>
64
+ <Button
65
+ style='subtle'
66
+ size='small'
67
+ tooltip='Go to previous page'
68
+ disabled={!canPreviousPage}
69
+ onClick={() => previousPage()}>
70
+ {ICON_ANGLE_LEFT}
71
+ </Button>
72
+ <Button
73
+ style='subtle'
74
+ size='small'
75
+ tooltip='Go to next page'
76
+ disabled={!canNextPage}
77
+ onClick={() => nextPage()}>
78
+ {ICON_ANGLE_RIGHT}
79
+ </Button>
80
+ <Button
81
+ style='subtle'
82
+ size='small'
83
+ tooltip='Go to last page'
84
+ disabled={!canNextPage}
85
+ onClick={() => gotoPage(pageCount, pageSize)}>
86
+ {ICON_ANGLE_DOUBLE_RIGHT}
87
+ </Button>
70
88
  &nbsp;&nbsp;
89
+ <span>
90
+ {copy.table.page}&nbsp;&nbsp;
91
+ <strong>
92
+ {getPageIndex} of {pageCount}
93
+ </strong>
94
+ &nbsp;&nbsp;
95
+ </span>
96
+ <span>
97
+ {copy.table.goToPage}&nbsp;&nbsp;
98
+ <input
99
+ className='paginator-input'
100
+ type='number'
101
+ placeholder={getPageIndex.toString()}
102
+ onChange={(e) => {
103
+ const input = e.target.value;
104
+ const inputNum = Number(input);
105
+ let next: number;
106
+
107
+ clearTimeout(textInputTimeout);
108
+
109
+ if (!input || inputNum < 1 || inputNum > pageCount) {
110
+ return;
111
+ }
112
+
113
+ if (inputNum >= 1 && inputNum <= pageCount) {
114
+ next = inputNum;
115
+ }
116
+
117
+ textInputTimeout = window.setTimeout(() => setPageIndex(next), 300);
118
+ }}
119
+ onBlur={() => onGoToPageBlur()}
120
+ onKeyDown={(e) => onGoToPageKeyDown(e)}
121
+ />
122
+ </span>
123
+ &nbsp;&nbsp;
124
+ <span>
125
+ {copy.table.itemsPerPage}&nbsp;&nbsp;
126
+ <input
127
+ className='paginator-input'
128
+ type='number'
129
+ placeholder={getItemsPerPage.toString()}
130
+ min={1}
131
+ onChange={(e) => {
132
+ const input = e.target.value;
133
+ const inputNum = Number(input);
134
+
135
+ clearTimeout(textInputTimeout);
136
+
137
+ if (!input || inputNum < 1) {
138
+ return;
139
+ }
140
+
141
+ textInputTimeout = window.setTimeout(
142
+ () => setItemsPerPage(inputNum),
143
+ 300
144
+ );
145
+ }}
146
+ onBlur={() => onItemsPerPageBlur()}
147
+ onKeyDown={(e) => onItemsPerPageKeyDown(e)}
148
+ />
149
+ </span>
71
150
  </span>
72
- <span>
73
- {copy.table.goToPage}&nbsp;&nbsp;
74
- <input
75
- className='paginator-input'
76
- type='number'
77
- placeholder={pageIndex}
78
- onChange={(e) => {
79
- const input = e.target.value;
80
- const inputNum = Number(input);
81
- let next: number;
82
-
83
- clearTimeout(textInputTimeout);
84
-
85
- if (!input || inputNum < 1 || inputNum > pageCount) {
86
- return;
87
- }
88
-
89
- if (inputNum >= 1 && inputNum <= pageCount) {
90
- next = inputNum;
91
- }
92
-
93
- textInputTimeout = window.setTimeout(() => gotoPage(next, pageSize), 300);
94
- }}
95
- />
96
- </span>
97
- &nbsp;&nbsp;
98
- <span>
99
- {copy.table.itemsPerPage}&nbsp;&nbsp;
100
- <input
101
- className='paginator-input'
102
- type='number'
103
- placeholder={itemsPerPage}
104
- min={1}
105
- onChange={(e) => {
106
- const input = e.target.value;
107
- const inputNum = Number(input);
108
-
109
- clearTimeout(textInputTimeout);
110
-
111
- if (!input || inputNum < 1) {
112
- return;
113
- }
114
-
115
- textInputTimeout = window.setTimeout(() => onItemsPerPage(inputNum), 300);
116
- }}
117
- />
118
- </span>
119
- </span>
120
151
 
121
- <span className='total-assets'>
122
- {copy.table.total}&nbsp;&nbsp;<strong>{totalItems || 0}</strong>
123
- </span>
124
- </section>
125
- );
152
+ <span className='total-assets'>
153
+ {copy.table.total}&nbsp;&nbsp;<strong>{totalItems || 0}</strong>
154
+ </span>
155
+ </section>
156
+ );
157
+ };
126
158
 
127
159
  export default Paginator;
@@ -137,14 +137,15 @@ class StoryPreviewer extends React.PureComponent<IStoryPreviewerProps, IStoryPre
137
137
  const { variables } = this.props;
138
138
  const inventoryOverrides = this.props.editor?.inventoryOverrides;
139
139
  const newInv = {};
140
+
140
141
  for (const i in variables) {
141
142
  if (variables.hasOwnProperty(i)) {
142
143
  const override = inventoryOverrides ? inventoryOverrides[i] : null;
143
144
  const inv = variables[i];
144
- newInv[inv.id] =
145
- override !== null ? override : this.getVariableValue(inv.previewItem);
145
+ newInv[inv.id] = override ? override : this.getVariableValue(inv.previewItem);
146
146
  }
147
147
  }
148
+
148
149
  return newInv;
149
150
  }
150
151
 
@@ -273,7 +273,7 @@ export const copying: any = {
273
273
  };
274
274
 
275
275
  export const confirm: any = {
276
- yes: 'Yes',
277
- no: 'No',
276
+ yes: 'Save',
277
+ no: "Don't Save",
278
278
  cancel: 'Cancel'
279
279
  };
package/src/index.ts CHANGED
@@ -158,7 +158,7 @@ import ContextMenuItem from './components/context-menu/ContextMenuItem';
158
158
  import ContextMenuTrigger from './components/context-menu/ContextMenuTrigger';
159
159
  import CopyPropIdButton from './components/copy-prop-id-button/CopyPropIdButton';
160
160
  import Submenu from './components/context-menu/SubMenu';
161
- import { ConfirmModal, IConfirmModalProps } from './components/confirm-modal/ConfirmModal';
161
+ import { ConfirmModal } from './components/confirm-modal/ConfirmModal';
162
162
 
163
163
  export {
164
164
  AppWrapper,
@@ -313,6 +313,5 @@ export {
313
313
  ContextMenuTrigger,
314
314
  Submenu,
315
315
  CopyPropIdButton,
316
- ConfirmModal,
317
- IConfirmModalProps
316
+ ConfirmModal
318
317
  };
@@ -78,18 +78,22 @@ export const getAssets = (api: IImposiumAPI, storyId: string): any => {
78
78
 
79
79
  export const deleteAssets = (api: IImposiumAPI, ids: string[], storyId: string): any => {
80
80
  return (dispatch) => {
81
- return new Promise<boolean>((resolve, reject) => {
82
- dispatch(toggleLoading(true));
83
- api.deleteAssets(ids)
84
- .then(() => {
85
- dispatch(getAssets(api, storyId));
86
- resolve(true);
87
- })
88
- .catch((errors: Error[]) => {
89
- dispatch(toggleLoading(false));
90
- reject(false);
91
- });
92
- });
81
+ if (window.confirm(`Are you sure you want to delete ${ids.length} assets?`)) {
82
+ return new Promise<boolean>((resolve, reject) => {
83
+ dispatch(toggleLoading(true));
84
+ api.deleteAssets(ids)
85
+ .then(() => {
86
+ dispatch(getAssets(api, storyId));
87
+ resolve(true);
88
+ })
89
+ .catch((errors: Error[]) => {
90
+ dispatch(toggleLoading(false));
91
+ reject(false);
92
+ });
93
+ });
94
+ } else {
95
+ return Promise.resolve(false);
96
+ }
93
97
  };
94
98
  };
95
99
 
@@ -190,18 +194,20 @@ export const deleteAssetTags = (api: IImposiumAPI, id: string): any => {
190
194
 
191
195
  export const deleteAssetsTags = (api: IImposiumAPI, ids: string[], storyId: string): any => {
192
196
  return (dispatch) => {
193
- return new Promise<void>((resolve, reject) => {
194
- dispatch(toggleLoading(true));
195
- api.deleteAssetsTags(ids)
196
- .then(() => {
197
- dispatch(getAssets(api, storyId));
198
- resolve();
199
- })
200
- .catch((errors: Error[]) => {
201
- dispatch(toggleLoading(false));
202
- reject();
203
- });
204
- });
197
+ if (window.confirm(`Are you sure you want to remove all tags from ${ids.length} assets?`)) {
198
+ return new Promise<void>((resolve, reject) => {
199
+ dispatch(toggleLoading(true));
200
+ api.deleteAssetsTags(ids)
201
+ .then(() => {
202
+ dispatch(getAssets(api, storyId));
203
+ resolve();
204
+ })
205
+ .catch((errors: Error[]) => {
206
+ dispatch(toggleLoading(false));
207
+ reject();
208
+ });
209
+ });
210
+ }
205
211
  };
206
212
  };
207
213
 
@@ -239,18 +245,20 @@ export const updateAssetStory = (api: IImposiumAPI, id: string, storyId: string)
239
245
 
240
246
  export const decoupleAssets = (api: IImposiumAPI, ids: string[], storyId: string): any => {
241
247
  return (dispatch) => {
242
- return new Promise<void>((resolve, reject) => {
243
- dispatch(toggleLoading(true));
244
- api.decoupleAssets(ids)
245
- .then(() => {
246
- dispatch(getAssets(api, storyId));
247
- resolve();
248
- })
249
- .catch((errors: Error[]) => {
250
- dispatch(toggleLoading(false));
251
- reject();
252
- });
253
- });
248
+ if (window.confirm(`Are you sure you want to decouple ${ids.length} assets?`)) {
249
+ return new Promise<void>((resolve, reject) => {
250
+ dispatch(toggleLoading(true));
251
+ api.decoupleAssets(ids)
252
+ .then(() => {
253
+ dispatch(getAssets(api, storyId));
254
+ resolve();
255
+ })
256
+ .catch((errors: Error[]) => {
257
+ dispatch(toggleLoading(false));
258
+ reject();
259
+ });
260
+ });
261
+ }
254
262
  };
255
263
  };
256
264
 
@@ -1,27 +0,0 @@
1
- import * as React from 'react';
2
- import { IIdentity } from '../../services/Auth0';
3
- export interface IAppWrapperProps {
4
- children: React.ReactChildren;
5
- auth0Domain: string;
6
- auth0ClientId: string;
7
- organizationId: string;
8
- baseUrl: string;
9
- storyId?: string;
10
- serviceId: number;
11
- access: any;
12
- auth: any;
13
- isFreshUser: boolean;
14
- setAccessData(accessData: any): any;
15
- allowUnauthenticatedRender: boolean;
16
- onAuthenticated: (activeOrgId: string, activeStoryId: string) => any;
17
- onAuthenticationFailure: (e: Error) => any;
18
- showRequestAccess?: boolean;
19
- login: (id: IIdentity) => any;
20
- clearCachedAuth: () => any;
21
- }
22
- export interface IAppWrapperState {
23
- blockRender: boolean;
24
- restrictAccess: boolean;
25
- }
26
- declare const _default: any;
27
- export default _default;
@@ -1,243 +0,0 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
- if (k2 === undefined) k2 = k;
19
- var desc = Object.getOwnPropertyDescriptor(m, k);
20
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
21
- desc = { enumerable: true, get: function() { return m[k]; } };
22
- }
23
- Object.defineProperty(o, k2, desc);
24
- }) : (function(o, m, k, k2) {
25
- if (k2 === undefined) k2 = k;
26
- o[k2] = m[k];
27
- }));
28
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
29
- Object.defineProperty(o, "default", { enumerable: true, value: v });
30
- }) : function(o, v) {
31
- o["default"] = v;
32
- });
33
- var __importStar = (this && this.__importStar) || function (mod) {
34
- if (mod && mod.__esModule) return mod;
35
- var result = {};
36
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
37
- __setModuleDefault(result, mod);
38
- return result;
39
- };
40
- var __importDefault = (this && this.__importDefault) || function (mod) {
41
- return (mod && mod.__esModule) ? mod : { "default": mod };
42
- };
43
- Object.defineProperty(exports, "__esModule", { value: true });
44
- var React = __importStar(require("react"));
45
- var NoAccess_1 = __importDefault(require("../no-access/NoAccess"));
46
- var Header_1 = __importDefault(require("../header/Header"));
47
- var Session_1 = __importDefault(require("../../services/Session"));
48
- var Auth0_1 = __importDefault(require("../../services/Auth0"));
49
- var react_redux_1 = require("react-redux");
50
- var redux_1 = require("redux");
51
- var auth_1 = require("../../redux/actions/auth");
52
- var Util_1 = require("../../Util");
53
- var access_1 = require("../../redux/actions/access");
54
- var AppWrapper = /** @class */ (function (_super) {
55
- __extends(AppWrapper, _super);
56
- function AppWrapper(p) {
57
- var _this = _super.call(this, p) || this;
58
- _this.componentDidMount = function () {
59
- var _a = _this.props, auth0ClientId = _a.auth0ClientId, auth0Domain = _a.auth0Domain;
60
- Auth0_1.default.bindToClient(auth0ClientId, auth0Domain);
61
- var validAccessLevel = (0, Util_1.validateAccessLevel)(_this.props.organizationId, _this.props.serviceId, _this.props.access);
62
- if (!_this.state.restrictAccess && !validAccessLevel) {
63
- _this.setState({ restrictAccess: true });
64
- }
65
- if (_this.state.restrictAccess && validAccessLevel) {
66
- _this.setState({ restrictAccess: false });
67
- }
68
- // Always check the session
69
- _this.doCheckSession(true);
70
- };
71
- /*
72
- Check the auth0 session expiry
73
- */
74
- _this.componentDidUpdate = function (prevProps, prevState) {
75
- var auth = _this.props.auth;
76
- var validAccessLevel;
77
- if (auth) {
78
- var exp = auth.idTokenPayload.exp;
79
- var validSession = Auth0_1.default.checkExpiry(exp);
80
- if (!validSession) {
81
- _this.props.clearCachedAuth();
82
- _this.doCheckSession();
83
- }
84
- }
85
- if (_this.props.organizationId !== prevProps.organizationId ||
86
- _this.props.access !== prevProps.access) {
87
- validAccessLevel = (0, Util_1.validateAccessLevel)(_this.props.organizationId, _this.props.serviceId, _this.props.access);
88
- if (!_this.state.restrictAccess && !validAccessLevel) {
89
- _this.setState({ restrictAccess: true });
90
- }
91
- if (_this.state.restrictAccess && validAccessLevel) {
92
- _this.setState({ restrictAccess: false });
93
- }
94
- }
95
- };
96
- /*
97
- Emit creds to React parent
98
- */
99
- _this.propagateCreds = function (freshAccess, freshIdentity) {
100
- var _a = _this.props, storyId = _a.storyId, organizationId = _a.organizationId, onAuthenticated = _a.onAuthenticated;
101
- var initialStoryId = storyId;
102
- var initialOrganizationId = organizationId;
103
- var firstOrg = freshAccess.organizations[0];
104
- var getIDsFromSession = function () {
105
- var session = Session_1.default.getSession();
106
- if (session && session.story_id && session.organization_id) {
107
- var org = freshAccess.organizations.find(function (o) { return o.id === session.organization_id; });
108
- if (org) {
109
- var story = org.stories.find(function (s) { return s.id === session.story_id; });
110
- if (story) {
111
- return { orgId: org.id, storyId: story.id };
112
- }
113
- }
114
- }
115
- return null;
116
- };
117
- // If the org ID is not provided, but the storyID is provided, find the org ID if we can, if not, use the first org ID found and we'll show the story not found interface
118
- if (!initialOrganizationId && initialStoryId) {
119
- var org = freshAccess.organizations.find(function (o) {
120
- return o.stories.find(function (s) { return s.id === initialStoryId; });
121
- });
122
- if (org) {
123
- initialOrganizationId = org.id;
124
- }
125
- else {
126
- initialOrganizationId = firstOrg.id;
127
- }
128
- }
129
- if (!initialStoryId) {
130
- // If storyID is not provided, try to use the one from the previous session
131
- var sessionIds = getIDsFromSession();
132
- if (sessionIds) {
133
- initialOrganizationId = sessionIds.orgId;
134
- initialStoryId = sessionIds.storyId;
135
- }
136
- else {
137
- // If that doesn't work - default to the first org & story
138
- var story = firstOrg.stories[0];
139
- initialOrganizationId = firstOrg.id;
140
- initialStoryId = story.id;
141
- }
142
- }
143
- Session_1.default.buildFreshSession(freshIdentity, initialOrganizationId, initialStoryId);
144
- onAuthenticated(initialOrganizationId, initialStoryId);
145
- if (_this.state.blockRender) {
146
- _this.setState({ blockRender: false });
147
- }
148
- };
149
- /*
150
- Bust cached creds if exist, invoke auth failure handler
151
- */
152
- _this.handleCheckSessionFailure = function (e) {
153
- if (_this.props.storyId) {
154
- Session_1.default.cacheStoryId(_this.props.storyId);
155
- }
156
- else {
157
- Session_1.default.clearCachedStoryId();
158
- }
159
- if (_this.props.organizationId) {
160
- Session_1.default.cacheOrgId(_this.props.organizationId);
161
- }
162
- else {
163
- Session_1.default.clearCachedOrgId();
164
- }
165
- _this.props.clearCachedAuth();
166
- _this.props.onAuthenticationFailure(e);
167
- };
168
- /*
169
- Check auth0 session, pull Imposium access creds on success and initialize app-wrapper
170
- */
171
- _this.doCheckSession = function (blockRender) {
172
- if (blockRender === void 0) { blockRender = false; }
173
- var baseUrl = _this.props.baseUrl;
174
- if (blockRender) {
175
- _this.setState({ blockRender: true });
176
- }
177
- Auth0_1.default.checkSession()
178
- .then(function (freshIdentity) {
179
- var orgId = _this.props.organizationId
180
- ? _this.props.organizationId
181
- : Session_1.default.getCachedOrgId();
182
- Session_1.default.getAccessData(freshIdentity.idToken, baseUrl, false, orgId)
183
- .then(function (freshAccess) {
184
- _this.props.setAccessData(freshAccess);
185
- _this.props.login(freshIdentity);
186
- _this.propagateCreds(freshAccess, freshIdentity);
187
- })
188
- .catch(function (e) {
189
- console.error(e);
190
- _this.handleCheckSessionFailure(e);
191
- });
192
- })
193
- .catch(function (e) {
194
- console.error(e);
195
- _this.handleCheckSessionFailure(e);
196
- });
197
- };
198
- _this.render = function () {
199
- var _a = _this.state, blockRender = _a.blockRender, restrictAccess = _a.restrictAccess;
200
- var _b = _this.props, children = _b.children, showRequestAccess = _b.showRequestAccess, allowUnauthenticatedRender = _b.allowUnauthenticatedRender;
201
- var innerContent;
202
- if (!blockRender && restrictAccess) {
203
- var showNoOrgs = _this.props.access &&
204
- _this.props.access.organizations &&
205
- _this.props.access.organizations.length === 0;
206
- var errorIndicator = showNoOrgs
207
- ? AppWrapper.NO_ORGS
208
- : showRequestAccess
209
- ? AppWrapper.RESTRICTED_REQUEST
210
- : AppWrapper.RESTRICTED_BLOCK;
211
- innerContent = [
212
- typeof children[0] === 'object' && children[0].type === Header_1.default && children[0],
213
- errorIndicator
214
- ];
215
- }
216
- if ((!blockRender && !restrictAccess) || allowUnauthenticatedRender) {
217
- innerContent = children;
218
- }
219
- return (React.createElement("div", { id: 'app', className: 'app' }, innerContent));
220
- };
221
- _this.state = {
222
- blockRender: true,
223
- restrictAccess: false
224
- };
225
- return _this;
226
- }
227
- AppWrapper.RESTRICTED_REQUEST = (React.createElement(NoAccess_1.default, { key: 'restriction-msg', type: 'request' }));
228
- AppWrapper.RESTRICTED_BLOCK = (React.createElement(NoAccess_1.default, { key: 'restriction-msg', type: 'restrict' }));
229
- AppWrapper.NO_ORGS = (React.createElement(NoAccess_1.default, { key: 'restriction-msg', type: 'no-orgs' }));
230
- return AppWrapper;
231
- }(React.Component));
232
- var mapDispatchToProps = function (dispatch) {
233
- return (0, redux_1.bindActionCreators)({
234
- login: auth_1.login,
235
- setAccessData: access_1.setAccessData,
236
- clearCachedAuth: auth_1.clearCachedAuth
237
- }, dispatch);
238
- };
239
- var mapStateToProps = function (state) {
240
- return { auth: state.auth, access: state.access };
241
- };
242
- exports.default = (0, react_redux_1.connect)(mapStateToProps, mapDispatchToProps)(AppWrapper);
243
- //# sourceMappingURL=AppWrapper_BACKUP_73190.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AppWrapper_BACKUP_73190.js","sourceRoot":"","sources":["../../../../src/components/app-wrapper/AppWrapper_BACKUP_73190.tsx"],"names":[],"mappings":"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"}