@selfcommunity/react-ui 0.10.2-courses.162 → 0.10.2-courses.164

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 (48) hide show
  1. package/lib/cjs/components/Course/Course.d.ts +5 -4
  2. package/lib/cjs/components/Course/Course.js +13 -17
  3. package/lib/cjs/components/Course/Skeleton.d.ts +5 -0
  4. package/lib/cjs/components/Course/Skeleton.js +4 -4
  5. package/lib/cjs/components/CourseDashboard/Student.js +27 -11
  6. package/lib/cjs/components/EditCourse/Lessons/FieldName.js +3 -3
  7. package/lib/cjs/components/EditCourse/Lessons/SectionRow.js +8 -2
  8. package/lib/cjs/components/EditCourse/Lessons.js +8 -2
  9. package/lib/cjs/components/EditCourse/Requests.js +9 -9
  10. package/lib/cjs/components/EditCourse/Users.js +10 -7
  11. package/lib/cjs/components/UserCreatedCoursesWidget/Skeleton.d.ts +21 -0
  12. package/lib/cjs/components/UserCreatedCoursesWidget/Skeleton.js +43 -0
  13. package/lib/cjs/components/UserCreatedCoursesWidget/UserCreatedCoursesWidget.d.ts +68 -0
  14. package/lib/cjs/components/UserCreatedCoursesWidget/UserCreatedCoursesWidget.js +154 -0
  15. package/lib/cjs/components/UserCreatedCoursesWidget/constants.d.ts +1 -0
  16. package/lib/cjs/components/UserCreatedCoursesWidget/constants.js +4 -0
  17. package/lib/cjs/components/UserCreatedCoursesWidget/index.d.ts +4 -0
  18. package/lib/cjs/components/UserCreatedCoursesWidget/index.js +8 -0
  19. package/lib/cjs/index.d.ts +2 -1
  20. package/lib/cjs/index.js +5 -2
  21. package/lib/cjs/shared/AddUsersButton/AddUsersButton.js +1 -1
  22. package/lib/cjs/shared/CourseUsersTable/ChangeUsersStatus.js +1 -1
  23. package/lib/cjs/shared/CourseUsersTable/CourseUsersTable.js +2 -2
  24. package/lib/esm/components/Course/Course.d.ts +5 -4
  25. package/lib/esm/components/Course/Course.js +13 -17
  26. package/lib/esm/components/Course/Skeleton.d.ts +5 -0
  27. package/lib/esm/components/Course/Skeleton.js +4 -4
  28. package/lib/esm/components/CourseDashboard/Student.js +27 -11
  29. package/lib/esm/components/EditCourse/Lessons/FieldName.js +3 -3
  30. package/lib/esm/components/EditCourse/Lessons/SectionRow.js +8 -2
  31. package/lib/esm/components/EditCourse/Lessons.js +8 -2
  32. package/lib/esm/components/EditCourse/Requests.js +9 -9
  33. package/lib/esm/components/EditCourse/Users.js +10 -7
  34. package/lib/esm/components/UserCreatedCoursesWidget/Skeleton.d.ts +21 -0
  35. package/lib/esm/components/UserCreatedCoursesWidget/Skeleton.js +39 -0
  36. package/lib/esm/components/UserCreatedCoursesWidget/UserCreatedCoursesWidget.d.ts +68 -0
  37. package/lib/esm/components/UserCreatedCoursesWidget/UserCreatedCoursesWidget.js +151 -0
  38. package/lib/esm/components/UserCreatedCoursesWidget/constants.d.ts +1 -0
  39. package/lib/esm/components/UserCreatedCoursesWidget/constants.js +1 -0
  40. package/lib/esm/components/UserCreatedCoursesWidget/index.d.ts +4 -0
  41. package/lib/esm/components/UserCreatedCoursesWidget/index.js +4 -0
  42. package/lib/esm/index.d.ts +2 -1
  43. package/lib/esm/index.js +2 -1
  44. package/lib/esm/shared/AddUsersButton/AddUsersButton.js +1 -1
  45. package/lib/esm/shared/CourseUsersTable/ChangeUsersStatus.js +1 -1
  46. package/lib/esm/shared/CourseUsersTable/CourseUsersTable.js +2 -2
  47. package/lib/umd/react-ui.js +1 -1
  48. package/package.json +8 -8
@@ -17,14 +17,20 @@ import { SCOPE_SC_UI } from '../../constants/Errors';
17
17
  import { useSnackbar } from 'notistack';
18
18
  import StudentSkeleton from './Student/Skeleton';
19
19
  import UserAvatar from '../../shared/UserAvatar';
20
- const messages = {
20
+ const BUTTON_MESSAGES = {
21
21
  dashboard: 'ui.course.dashboard.student.button.dashboard',
22
22
  request: 'ui.course.dashboard.student.button.request',
23
+ signUp: 'ui.course.dashboard.student.button.signUp',
23
24
  review: 'ui.course.dashboard.student.button.review',
24
25
  cancel: 'ui.course.dashboard.student.button.cancel',
25
26
  start: 'ui.course.dashboard.student.button.start',
26
27
  continue: 'ui.course.dashboard.student.button.continue'
27
28
  };
29
+ const SNACKBAR_MESSAGES = {
30
+ cancel: 'ui.course.dashboard.student.snackbar.success.cancel',
31
+ enroll: 'ui.course.dashboard.student.snackbar.success.enroll',
32
+ request: 'ui.course.dashboard.student.snackbar.success.request'
33
+ };
28
34
  const classes = {
29
35
  root: `${PREFIX}-root`,
30
36
  studentContainer: `${PREFIX}-student-container`,
@@ -90,7 +96,7 @@ function Student(inProps) {
90
96
  // CONTEXTS
91
97
  const scRoutingContext = useSCRouting();
92
98
  // HOOKS
93
- const { scCourse } = useSCFetchCourse({ id: courseId, course });
99
+ const { scCourse, setSCCourse } = useSCFetchCourse({ id: courseId, course });
94
100
  const intl = useIntl();
95
101
  const { enqueueSnackbar } = useSnackbar();
96
102
  // EFFETCS
@@ -103,20 +109,24 @@ function Student(inProps) {
103
109
  const handleRequest = useCallback(() => {
104
110
  setLoadingRequest(true);
105
111
  let request;
112
+ let updatedCourse;
106
113
  if (sentRequest) {
107
114
  request = CourseService.leaveOrRemoveCourseRequest(scCourse.id);
115
+ updatedCourse = Object.assign(Object.assign({}, scCourse), { join_status: null });
108
116
  }
109
117
  else {
110
118
  request = CourseService.joinOrAcceptInviteToCourse(scCourse.id);
119
+ updatedCourse = Object.assign(Object.assign({}, scCourse), { join_status: scCourse.privacy === SCCoursePrivacyType.PRIVATE ? SCCourseJoinStatusType.REQUESTED : SCCourseJoinStatusType.JOINED });
111
120
  }
112
121
  request
113
122
  .then(() => {
114
- enqueueSnackbar(_jsx(FormattedMessage, { id: `ui.course.dashboard.student.snackbar.success.${sentRequest ? 'cancel' : 'request'}`, defaultMessage: `ui.course.dashboard.student.snackbar.success.${sentRequest ? 'cancel' : 'request'}` }), {
123
+ setSCCourse(updatedCourse);
124
+ setSentRequest((prev) => !prev);
125
+ setLoadingRequest(false);
126
+ enqueueSnackbar(_jsx(FormattedMessage, { id: sentRequest ? SNACKBAR_MESSAGES.request : scCourse.join_status === null ? SNACKBAR_MESSAGES.enroll : SNACKBAR_MESSAGES.cancel, defaultMessage: sentRequest ? SNACKBAR_MESSAGES.request : scCourse.join_status === null ? SNACKBAR_MESSAGES.enroll : SNACKBAR_MESSAGES.cancel }), {
115
127
  variant: 'success',
116
128
  autoHideDuration: 3000
117
129
  });
118
- setSentRequest((prev) => !prev);
119
- setLoadingRequest(false);
120
130
  })
121
131
  .catch((error) => {
122
132
  enqueueSnackbar(_jsx(FormattedMessage, { id: "ui.common.error.action", defaultMessage: "ui.common.error.action" }), {
@@ -131,10 +141,16 @@ function Student(inProps) {
131
141
  if (!scCourse) {
132
142
  return _jsx(_Fragment, {});
133
143
  }
134
- return (_jsxs(Stack, Object.assign({ className: classes.actionsWrapper }, { children: [(scCourse.join_status === SCCourseJoinStatusType.CREATOR || scCourse.join_status === SCCourseJoinStatusType.MANAGER) && (_jsx(ActionButton, { labelId: messages.dashboard, to: scRoutingContext.url(SCRoutes.COURSE_DASHBOARD_ROUTE_NAME, scCourse), color: "inherit", variant: "outlined" })), ((scCourse.privacy === SCCoursePrivacyType.PRIVATE &&
135
- (scCourse.join_status === SCCourseJoinStatusType.MANAGER || (scCourse === null || scCourse === void 0 ? void 0 : scCourse.join_status) === SCCourseJoinStatusType.JOINED)) ||
136
- (scCourse.privacy === SCCoursePrivacyType.OPEN && scCourse.join_status !== SCCourseJoinStatusType.CREATOR)) && (_jsx(ActionButton, { labelId: scCourse.user_completion_rate === 0 ? messages.start : scCourse.user_completion_rate === 100 ? messages.review : messages.continue, to: scRoutingContext.url(SCRoutes.COURSE_LESSON_ROUTE_NAME, getUrlNextLesson(scCourse)), disabled: getIsNextLessonLocked(scCourse), color: scCourse.user_completion_rate === 100 ? 'inherit' : undefined, variant: scCourse.user_completion_rate === 100 ? 'outlined' : undefined })), scCourse.privacy === SCCoursePrivacyType.PRIVATE &&
137
- (scCourse.join_status === null || scCourse.join_status === SCCourseJoinStatusType.REQUESTED) && (_jsx(ActionButton, { labelId: sentRequest ? messages.cancel : messages.request, color: "inherit", variant: "outlined", loading: loadingRequest, onClick: handleRequest }))] })));
144
+ return (_jsxs(Stack, Object.assign({ className: classes.actionsWrapper }, { children: [(scCourse.join_status === SCCourseJoinStatusType.CREATOR || scCourse.join_status === SCCourseJoinStatusType.MANAGER) && (_jsx(ActionButton, { labelId: BUTTON_MESSAGES.dashboard, to: scRoutingContext.url(SCRoutes.COURSE_DASHBOARD_ROUTE_NAME, scCourse), color: "inherit", variant: "outlined" })), (((scCourse.privacy === SCCoursePrivacyType.PRIVATE || scCourse.privacy === SCCoursePrivacyType.SECRET) &&
145
+ (scCourse.join_status === SCCourseJoinStatusType.MANAGER || scCourse.join_status === SCCourseJoinStatusType.JOINED)) ||
146
+ (scCourse.privacy === SCCoursePrivacyType.OPEN && scCourse.join_status !== SCCourseJoinStatusType.CREATOR)) && (_jsx(ActionButton, { labelId: scCourse.join_status === null
147
+ ? BUTTON_MESSAGES.signUp
148
+ : scCourse.user_completion_rate === 0
149
+ ? BUTTON_MESSAGES.start
150
+ : scCourse.user_completion_rate === 100
151
+ ? BUTTON_MESSAGES.review
152
+ : BUTTON_MESSAGES.continue, to: scCourse.join_status !== null ? scRoutingContext.url(SCRoutes.COURSE_LESSON_ROUTE_NAME, getUrlNextLesson(scCourse)) : undefined, disabled: scCourse.join_status !== null ? getIsNextLessonLocked(scCourse) : undefined, color: scCourse.user_completion_rate === 100 ? 'inherit' : undefined, variant: scCourse.user_completion_rate === 100 ? 'outlined' : undefined, loading: scCourse.join_status === null ? loadingRequest : undefined, onClick: scCourse.join_status === null ? handleRequest : undefined })), scCourse.privacy === SCCoursePrivacyType.PRIVATE &&
153
+ (scCourse.join_status === null || scCourse.join_status === SCCourseJoinStatusType.REQUESTED) && (_jsx(ActionButton, { labelId: sentRequest ? BUTTON_MESSAGES.cancel : BUTTON_MESSAGES.request, color: "inherit", variant: "outlined", loading: loadingRequest, onClick: handleRequest }))] })));
138
154
  }, [scCourse, sentRequest, loadingRequest, handleRequest]);
139
155
  if (!scCourse) {
140
156
  return _jsx(StudentSkeleton, {});
@@ -143,12 +159,12 @@ function Student(inProps) {
143
159
  to: scRoutingContext.url(SCRoutes.USER_PROFILE_ROUTE_NAME, scCourse.created_by)
144
160
  }), { children: _jsx(UserAvatar, Object.assign({ hide: !scCourse.created_by.community_badge, smaller: true }, { children: _jsx(Avatar, { className: classes.avatar, src: scCourse.created_by.avatar, alt: scCourse.created_by.username }) })) })), _jsxs(Box, { children: [_jsx(Link, Object.assign({}, (!scCourse.created_by.deleted && {
145
161
  to: scRoutingContext.url(SCRoutes.USER_PROFILE_ROUTE_NAME, scCourse.created_by)
146
- }), { children: _jsx(Typography, Object.assign({ variant: "body1" }, { children: scCourse.created_by.username })) })), _jsx(Typography, Object.assign({ variant: "body1" }, { children: _jsx(FormattedMessage, { id: "ui.course.dashboard.header.user.creator", defaultMessage: "ui.course.dashboard.header.user.creator" }) }))] })] })), actionButton] })), _jsx(Divider, {}), ((scCourse.privacy === SCCoursePrivacyType.PRIVATE &&
162
+ }), { children: _jsx(Typography, Object.assign({ variant: "body1" }, { children: scCourse.created_by.username })) })), _jsx(Typography, Object.assign({ variant: "body1" }, { children: _jsx(FormattedMessage, { id: "ui.course.dashboard.header.user.creator", defaultMessage: "ui.course.dashboard.header.user.creator" }) }))] })] })), actionButton] })), _jsx(Divider, {}), (((scCourse.privacy === SCCoursePrivacyType.PRIVATE || scCourse.privacy === SCCoursePrivacyType.SECRET) &&
147
163
  (scCourse.join_status === SCCourseJoinStatusType.CREATOR ||
148
164
  scCourse.join_status === SCCourseJoinStatusType.MANAGER ||
149
165
  scCourse.join_status === SCCourseJoinStatusType.JOINED)) ||
150
166
  scCourse.privacy === SCCoursePrivacyType.OPEN ||
151
- scCourse.privacy === SCCoursePrivacyType.DRAFT) && (_jsxs(Fragment, { children: [_jsx(Typography, Object.assign({ variant: "h6", className: classes.margin }, { children: _jsx(FormattedMessage, { id: "ui.course.dashboard.student.description", defaultMessage: "ui.course.dashboard.student.description" }) })), _jsx(Stack, Object.assign({ className: classes.box }, { children: _jsx(Typography, Object.assign({ variant: "body1" }, { children: scCourse.description })) }))] })), ((scCourse.privacy === SCCoursePrivacyType.PRIVATE &&
167
+ scCourse.privacy === SCCoursePrivacyType.DRAFT) && (_jsxs(Fragment, { children: [_jsx(Typography, Object.assign({ variant: "h6", className: classes.margin }, { children: _jsx(FormattedMessage, { id: "ui.course.dashboard.student.description", defaultMessage: "ui.course.dashboard.student.description" }) })), _jsx(Stack, Object.assign({ className: classes.box }, { children: _jsx(Typography, Object.assign({ variant: "body1" }, { children: scCourse.description })) }))] })), (((scCourse.privacy === SCCoursePrivacyType.PRIVATE || scCourse.privacy === SCCoursePrivacyType.SECRET) &&
152
168
  (scCourse.join_status === SCCourseJoinStatusType.MANAGER || scCourse.join_status === SCCourseJoinStatusType.JOINED)) ||
153
169
  (scCourse.privacy === SCCoursePrivacyType.OPEN && scCourse.join_status !== SCCourseJoinStatusType.CREATOR)) && (_jsxs(Fragment, { children: [_jsx(Typography, Object.assign({ variant: "h6", className: classes.margin }, { children: _jsx(FormattedMessage, { id: "ui.course.dashboard.student.progress", defaultMessage: "ui.course.dashboard.student.description" }) })), _jsxs(Stack, Object.assign({ className: classes.box }, { children: [_jsxs(Stack, Object.assign({ className: classes.percentageWrapper }, { children: [_jsx(Typography, Object.assign({ variant: "body1" }, { children: _jsx(FormattedMessage, { id: "ui.course.dashboard.student.progress.described", defaultMessage: "ui.course.dashboard.student.progress.described", values: { progress: scCourse.num_lessons_completed, end: scCourse.num_lessons } }) })), _jsx(Typography, Object.assign({ variant: "body1" }, { children: _jsx(FormattedMessage, { id: "ui.course.dashboard.student.progress.percentage", defaultMessage: "ui.course.dashboard.student.progress.percentage", values: { percentage: scCourse.user_completion_rate } }) }))] })), _jsx(LinearProgress, { className: classes.progress, variant: "determinate", value: scCourse === null || scCourse === void 0 ? void 0 : scCourse.user_completion_rate })] })), scCourse.user_completion_rate === 100 && (_jsxs(Stack, Object.assign({ className: classNames(classes.completedWrapper, classes.margin) }, { children: [_jsx(Typography, Object.assign({ variant: "h3" }, { children: _jsx(FormattedMessage, { id: "ui.course.dashboard.student.completed", defaultMessage: "ui.course.dashboard.student.completed" }) })), _jsx("img", { src: CLAPPING, alt: intl.formatMessage({ id: 'ui.course.dashboard.student.completed', defaultMessage: 'ui.course.dashboard.student.completed' }), width: 32, height: 32 })] }))), _jsx(Typography, Object.assign({ variant: "h6", className: classes.margin }, { children: _jsx(FormattedMessage, { id: "ui.course.dashboard.student.contents", defaultMessage: "ui.course.dashboard.student.contents" }) })), _jsxs(Stack, Object.assign({ className: classes.lessonsSections }, { children: [_jsx(Typography, Object.assign({ variant: "h5" }, { children: _jsx(FormattedMessage, { id: "ui.course.table.sections.title", defaultMessage: "ui.course.table.sections.title", values: {
154
170
  sectionsNumber: scCourse.num_sections
@@ -22,12 +22,12 @@ function FieldName(props) {
22
22
  const { endpoint, row, isNewRow, handleManageRow, editMode, handleDisableEditMode } = props;
23
23
  // STATES
24
24
  const [loading, setLoading] = useState(false);
25
- const [name, setName] = useState(null);
25
+ const [name, setName] = useState(row.name);
26
26
  // HOOKS
27
27
  const { enqueueSnackbar } = useSnackbar();
28
28
  // DEBOUNCE
29
- const debounceSetData = debounce((name) => {
30
- setName(name);
29
+ const debounceSetData = debounce((newName) => {
30
+ setName(newName);
31
31
  }, 300);
32
32
  // HANDLERS
33
33
  const handleChange = useCallback((e) => {
@@ -57,7 +57,7 @@ function SectionRow(props) {
57
57
  // HANDLERS
58
58
  const handleExpandAccordion = useCallback(() => setOpen((prev) => !prev), [setOpen]);
59
59
  const handleDragEnd = useCallback((e) => {
60
- if (!e.destination) {
60
+ if (!e.destination || e.destination.index === e.source.index) {
61
61
  return;
62
62
  }
63
63
  const tempLessons = Array.from(section.lessons);
@@ -68,7 +68,13 @@ function SectionRow(props) {
68
68
  lessons_order: tempLessons.map((tempLesson) => tempLesson.id)
69
69
  };
70
70
  CourseService.patchCourseSection(course.id, section.id, data)
71
- .then(() => handleManageSection(tempSection, ActionLessonType.UPDATE))
71
+ .then(() => {
72
+ handleManageSection(tempSection, ActionLessonType.UPDATE);
73
+ enqueueSnackbar(_jsx(FormattedMessage, { id: "ui.editCourse.tab.lessons.table.snackbar.save", defaultMessage: "ui.editCourse.tab.lessons.table.snackbar.save" }), {
74
+ variant: 'success',
75
+ autoHideDuration: 3000
76
+ });
77
+ })
72
78
  .catch((error) => {
73
79
  Logger.error(SCOPE_SC_UI, error);
74
80
  enqueueSnackbar(_jsx(FormattedMessage, { id: "ui.common.error.action", defaultMessage: "ui.common.error.action" }), {
@@ -72,7 +72,7 @@ function Lessons(props) {
72
72
  }, []);
73
73
  // HANDLERS
74
74
  const handleDragEnd = useCallback((e) => {
75
- if (!e.destination) {
75
+ if (!e.destination || e.destination.index === e.source.index) {
76
76
  return;
77
77
  }
78
78
  const tempSections = Array.from(course.sections);
@@ -82,7 +82,13 @@ function Lessons(props) {
82
82
  sections_order: tempSections.map((tempSection) => tempSection.id)
83
83
  };
84
84
  CourseService.patchCourse(course.id, data)
85
- .then(() => setCourse(Object.assign(Object.assign({}, course), { sections: tempSections })))
85
+ .then(() => {
86
+ setCourse(Object.assign(Object.assign({}, course), { sections: tempSections }));
87
+ enqueueSnackbar(_jsx(FormattedMessage, { id: "ui.editCourse.tab.lessons.table.snackbar.save", defaultMessage: "ui.editCourse.tab.lessons.table.snackbar.save" }), {
88
+ variant: 'success',
89
+ autoHideDuration: 3000
90
+ });
91
+ })
86
92
  .catch((error) => {
87
93
  Logger.error(SCOPE_SC_UI, error);
88
94
  enqueueSnackbar(_jsx(FormattedMessage, { id: "ui.common.error.action", defaultMessage: "ui.common.error.action" }), {
@@ -60,7 +60,14 @@ function Requests(props) {
60
60
  Logger.error(SCOPE_SC_UI, error);
61
61
  });
62
62
  }
63
- }, [state.isLoadingNext, state.initialized, course, dispatch]);
63
+ }, [state.isLoadingNext, state.initialized, course, dispatch, endpointQueryParams]);
64
+ // HANDLERS
65
+ const handleRemoveUser = useCallback((_msg, user) => {
66
+ dispatch({
67
+ type: actionWidgetTypes.SET_RESULTS,
68
+ payload: { count: state.results.length - 1, results: state.results.filter((result) => result.id !== user.id) }
69
+ });
70
+ }, [state.count, state.results, dispatch]);
64
71
  // EFFECTS
65
72
  useEffect(() => {
66
73
  let _t;
@@ -76,14 +83,7 @@ function Requests(props) {
76
83
  return () => {
77
84
  updatedUsers.current && PubSub.unsubscribe(updatedUsers.current);
78
85
  };
79
- }, []);
80
- // HANDLERS
81
- const handleRemoveUser = useCallback((user) => {
82
- dispatch({
83
- type: actionWidgetTypes.SET_RESULTS,
84
- payload: { count: state.count - 1, results: state.results.filter((result) => result.id !== user.id) }
85
- });
86
- }, [dispatch]);
86
+ }, [handleRemoveUser]);
87
87
  return (_jsxs(Box, { children: [_jsx(Typography, Object.assign({ variant: "h6" }, { children: _jsx(FormattedMessage, { id: "ui.editCourse.tab.requests.title", defaultMessage: "ui.editCourse.tab.requests.title", values: { requestsNumber: state.results.length } }) })), _jsx(Stack, Object.assign({ className: classes.usersStatusWrapper }, { children: _jsx(Status, { course: course }) })), _jsx(CourseUsersTable, { course: course, state: state, dispatch: dispatch, headerCells: headerCells, mode: "requests", emptyStatusTitle: "ui.courseUsersTable.empty.requests.title" })] }));
88
88
  }
89
89
  export default memo(Requests);
@@ -67,7 +67,11 @@ function Users(props) {
67
67
  Logger.error(SCOPE_SC_UI, error);
68
68
  });
69
69
  }
70
- }, [state.isLoadingNext, state.initialized, course, dispatch]);
70
+ }, [state.isLoadingNext, state.initialized, course, dispatch, endpointQueryParams]);
71
+ // HANDLERS
72
+ const handleAddUser = useCallback((_msg, user) => {
73
+ dispatch({ type: actionWidgetTypes.LOAD_PREVIOUS_SUCCESS, payload: { count: state.count + 1, results: [user], initialized: true } });
74
+ }, [state.count, dispatch]);
71
75
  // EFFECTS
72
76
  useEffect(() => {
73
77
  let _t;
@@ -83,18 +87,17 @@ function Users(props) {
83
87
  return () => {
84
88
  updatedUsers.current && PubSub.unsubscribe(updatedUsers.current);
85
89
  };
86
- }, []);
87
- // HANDLERS
88
- const handleAddUser = useCallback((user) => {
89
- dispatch({ type: actionWidgetTypes.LOAD_PREVIOUS_SUCCESS, payload: { count: state.count + 1, results: [user], initialized: true } });
90
- }, [dispatch]);
90
+ }, [handleAddUser]);
91
91
  const handleConfirm = useCallback((newUsers) => {
92
92
  const data = {
93
93
  joined: newUsers.map((user) => user.id)
94
94
  };
95
95
  CourseService.changeCourseUserRole(course.id, data)
96
96
  .then(() => {
97
- dispatch({ type: actionWidgetTypes.RESET });
97
+ dispatch({
98
+ type: actionWidgetTypes.LOAD_PREVIOUS_SUCCESS,
99
+ payload: { count: state.count + newUsers.length, results: newUsers, initialized: true }
100
+ });
98
101
  })
99
102
  .catch((error) => {
100
103
  dispatch({ type: actionWidgetTypes.LOAD_NEXT_FAILURE, payload: { errorLoadNext: error } });
@@ -0,0 +1,21 @@
1
+ /**
2
+ * > API documentation for the Community-JS User Profile Categories Followed Widget Skeleton component. Learn about the available props and the CSS API.
3
+
4
+ #### Import
5
+
6
+ ```jsx
7
+ import {UserCreatedCoursesWidgetSkeleton} from '@selfcommunity/react-ui';
8
+ ```
9
+
10
+ #### Component Name
11
+
12
+ The name `SCUserCategoriesFollowedWidget-skeleton-root` can be used when providing style overrides in the theme.
13
+
14
+ #### CSS
15
+
16
+ |Rule Name|Global class|Description|
17
+ |---|---|---|
18
+ |root|.SCUserCreatedCoursesWidget-skeleton-root|Styles applied to the root element.|
19
+ *
20
+ */
21
+ export default function UserCreatedCoursesWidgetSkeleton(props: any): JSX.Element;
@@ -0,0 +1,39 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import Widget from '../Widget';
3
+ import { styled } from '@mui/material/styles';
4
+ import { CardContent, ListItem } from '@mui/material';
5
+ import List from '@mui/material/List';
6
+ import CourseSkeleton from '../Course/Skeleton';
7
+ import { SCCourseTemplateType } from '../../types/course';
8
+ const PREFIX = 'SCUserCreatedCoursesWidgetSkeleton';
9
+ const classes = {
10
+ root: `${PREFIX}-skeleton-root`,
11
+ list: `${PREFIX}-list`
12
+ };
13
+ const Root = styled(Widget, {
14
+ name: PREFIX,
15
+ slot: 'SkeletonRoot'
16
+ })(() => ({}));
17
+ /**
18
+ * > API documentation for the Community-JS User Profile Categories Followed Widget Skeleton component. Learn about the available props and the CSS API.
19
+
20
+ #### Import
21
+
22
+ ```jsx
23
+ import {UserCreatedCoursesWidgetSkeleton} from '@selfcommunity/react-ui';
24
+ ```
25
+
26
+ #### Component Name
27
+
28
+ The name `SCUserCategoriesFollowedWidget-skeleton-root` can be used when providing style overrides in the theme.
29
+
30
+ #### CSS
31
+
32
+ |Rule Name|Global class|Description|
33
+ |---|---|---|
34
+ |root|.SCUserCreatedCoursesWidget-skeleton-root|Styles applied to the root element.|
35
+ *
36
+ */
37
+ export default function UserCreatedCoursesWidgetSkeleton(props) {
38
+ return (_jsxs(Root, Object.assign({ className: classes.root }, props, { children: [_jsx(CardContent, { children: _jsx(List, Object.assign({ className: classes.list }, { children: [...Array(3)].map((category, index) => (_jsx(ListItem, { children: _jsx(CourseSkeleton, { template: SCCourseTemplateType.SNIPPET, CourseProps: { userProfileSnippet: true }, elevation: 0 }) }, index))) })) }), ");"] })));
39
+ }
@@ -0,0 +1,68 @@
1
+ import { CacheStrategies } from '@selfcommunity/utils';
2
+ import { BaseDialogProps } from '../../shared/BaseDialog';
3
+ import { WidgetProps } from '../Widget';
4
+ import { VirtualScrollerItemProps } from '../../types/virtualScroller';
5
+ import { CourseProps } from '../Course';
6
+ export interface UserCreatedCoursesWidgetProps extends VirtualScrollerItemProps, WidgetProps {
7
+ /**
8
+ * The user id
9
+ * @default null
10
+ */
11
+ userId: number;
12
+ /**
13
+ * Hides this component
14
+ * @default false
15
+ */
16
+ autoHide?: boolean;
17
+ /**
18
+ * Limit the number of courses to show
19
+ * @default false
20
+ */
21
+ limit?: number;
22
+ /**
23
+ * Props to spread to single course object
24
+ * @default empty object
25
+ */
26
+ CourseProps?: CourseProps;
27
+ /**
28
+ * Caching strategies
29
+ * @default CacheStrategies.CACHE_FIRST
30
+ */
31
+ cacheStrategy?: CacheStrategies;
32
+ /**
33
+ * Props to spread to subscribed courses dialog
34
+ * @default {}
35
+ */
36
+ DialogProps?: BaseDialogProps;
37
+ /**
38
+ * Other props
39
+ */
40
+ [p: string]: any;
41
+ }
42
+ /**
43
+ * > API documentation for the Community-JS User Profile Courses Created Widget component. Learn about the available props and the CSS API.
44
+ *
45
+ *
46
+ * This component renders the list of the courses that the given user follows.
47
+ * Take a look at our <strong>demo</strong> component [here](/docs/sdk/community-js/react-ui/Components/UserCreatedCourses)
48
+
49
+ #### Import
50
+ ```jsx
51
+ import {UserCreatedCoursesWidget} from '@selfcommunity/react-ui';
52
+ ```
53
+ #### Component Name
54
+ The name `SCUserCreatedCoursesWidget` can be used when providing style overrides in the theme.
55
+
56
+ #### CSS
57
+
58
+ |Rule Name|Global class|Description|
59
+ |---|---|---|
60
+ |root|.SCUserCreatedCoursesWidget-root|Styles applied to the root element.|
61
+ |title|.SCUserCreatedCoursesWidget-title|Styles applied to the title element.|
62
+ |noResults|.SCUserCreatedCoursesWidget-no-results|Styles applied to no results section.|
63
+ |showMore|.SCUserCreatedCoursesWidget-show-more|Styles applied to show more button element.|
64
+ |dialogRoot|.SCUserCreatedCoursesWidget-dialog-root|Styles applied to the root dialog element.|
65
+ |endMessage|.SCUserCreatedCoursesWidget-end-message|Styles applied to the end message element.|
66
+ * @param inProps
67
+ */
68
+ export default function UserCreatedCoursesWidget(inProps: UserCreatedCoursesWidgetProps): JSX.Element;
@@ -0,0 +1,151 @@
1
+ import { __rest } from "tslib";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import React, { useEffect, useMemo, useReducer, useState } from 'react';
4
+ import { styled } from '@mui/material/styles';
5
+ import List from '@mui/material/List';
6
+ import { Button, CardContent, ListItem, Typography } from '@mui/material';
7
+ import { CourseService } from '@selfcommunity/api-services';
8
+ import { CacheStrategies, isInteger, Logger } from '@selfcommunity/utils';
9
+ import { SCCache, SCPreferences, useSCPreferences, useSCUser } from '@selfcommunity/react-core';
10
+ import { actionWidgetTypes, dataWidgetReducer, stateWidgetInitializer } from '../../utils/widget';
11
+ import { SCCourseJoinStatusType, SCFeatureName } from '@selfcommunity/types';
12
+ import { SCOPE_SC_UI } from '../../constants/Errors';
13
+ import { FormattedMessage } from 'react-intl';
14
+ import Skeleton from './Skeleton';
15
+ import classNames from 'classnames';
16
+ import BaseDialog from '../../shared/BaseDialog';
17
+ import Widget from '../Widget';
18
+ import { useThemeProps } from '@mui/system';
19
+ import HiddenPlaceholder from '../../shared/HiddenPlaceholder';
20
+ import { PREFIX } from './constants';
21
+ import Course, { CourseSkeleton } from '../Course';
22
+ import { SCCourseTemplateType } from '../../types/course';
23
+ const classes = {
24
+ root: `${PREFIX}-root`,
25
+ title: `${PREFIX}-title`,
26
+ noResults: `${PREFIX}-no-results`,
27
+ showMore: `${PREFIX}-show-more`,
28
+ dialogRoot: `${PREFIX}-dialog-root`,
29
+ endMessage: `${PREFIX}-end-message`
30
+ };
31
+ const Root = styled(Widget, {
32
+ name: PREFIX,
33
+ slot: 'Root'
34
+ })(() => ({}));
35
+ const DialogRoot = styled(BaseDialog, {
36
+ name: PREFIX,
37
+ slot: 'DialogRoot'
38
+ })(() => ({}));
39
+ /**
40
+ * > API documentation for the Community-JS User Profile Courses Created Widget component. Learn about the available props and the CSS API.
41
+ *
42
+ *
43
+ * This component renders the list of the courses that the given user follows.
44
+ * Take a look at our <strong>demo</strong> component [here](/docs/sdk/community-js/react-ui/Components/UserCreatedCourses)
45
+
46
+ #### Import
47
+ ```jsx
48
+ import {UserCreatedCoursesWidget} from '@selfcommunity/react-ui';
49
+ ```
50
+ #### Component Name
51
+ The name `SCUserCreatedCoursesWidget` can be used when providing style overrides in the theme.
52
+
53
+ #### CSS
54
+
55
+ |Rule Name|Global class|Description|
56
+ |---|---|---|
57
+ |root|.SCUserCreatedCoursesWidget-root|Styles applied to the root element.|
58
+ |title|.SCUserCreatedCoursesWidget-title|Styles applied to the title element.|
59
+ |noResults|.SCUserCreatedCoursesWidget-no-results|Styles applied to no results section.|
60
+ |showMore|.SCUserCreatedCoursesWidget-show-more|Styles applied to show more button element.|
61
+ |dialogRoot|.SCUserCreatedCoursesWidget-dialog-root|Styles applied to the root dialog element.|
62
+ |endMessage|.SCUserCreatedCoursesWidget-end-message|Styles applied to the end message element.|
63
+ * @param inProps
64
+ */
65
+ export default function UserCreatedCoursesWidget(inProps) {
66
+ // PROPS
67
+ const props = useThemeProps({
68
+ props: inProps,
69
+ name: PREFIX
70
+ });
71
+ const { userId, autoHide, limit = 3, className, CourseProps = {}, cacheStrategy = CacheStrategies.NETWORK_ONLY, onHeightChange, onStateChange, DialogProps = {} } = props, rest = __rest(props, ["userId", "autoHide", "limit", "className", "CourseProps", "cacheStrategy", "onHeightChange", "onStateChange", "DialogProps"]);
72
+ // CONTEXT
73
+ const scUserContext = useSCUser();
74
+ const { preferences, features } = useSCPreferences();
75
+ const coursesEnabled = useMemo(() => preferences &&
76
+ features &&
77
+ features.includes(SCFeatureName.TAGGING) &&
78
+ features.includes(SCFeatureName.COURSE) &&
79
+ SCPreferences.CONFIGURATIONS_COURSES_ENABLED in preferences &&
80
+ preferences[SCPreferences.CONFIGURATIONS_COURSES_ENABLED].value, [preferences, features]);
81
+ // STATE
82
+ const [state, dispatch] = useReducer(dataWidgetReducer, {
83
+ isLoadingNext: false,
84
+ next: null,
85
+ cacheKey: SCCache.getWidgetStateCacheKey(SCCache.USER_CREATED_COURSES_STATE_CACHE_PREFIX_KEY, userId),
86
+ cacheStrategy
87
+ }, stateWidgetInitializer);
88
+ const [openDialog, setOpenDialog] = useState(false);
89
+ /**
90
+ * Initialize component
91
+ * Fetch data only if the component is not initialized, and it is not loading data
92
+ */
93
+ const _initComponent = useMemo(() => () => {
94
+ if (!state.initialized && !state.isLoadingNext) {
95
+ CourseService.getUserJoinedCourses(userId, { statuses: SCCourseJoinStatusType.CREATOR })
96
+ .then((courses) => {
97
+ dispatch({
98
+ type: actionWidgetTypes.LOAD_NEXT_SUCCESS,
99
+ payload: {
100
+ count: courses.count,
101
+ results: courses.results,
102
+ initialized: true
103
+ }
104
+ });
105
+ })
106
+ .catch((error) => {
107
+ dispatch({ type: actionWidgetTypes.LOAD_NEXT_FAILURE, payload: { errorLoadNext: error } });
108
+ Logger.error(SCOPE_SC_UI, error);
109
+ });
110
+ }
111
+ }, [state.isLoadingNext, state.initialized, userId, dispatch]);
112
+ // EFFECTS
113
+ useEffect(() => {
114
+ let _t;
115
+ if (coursesEnabled && isInteger(userId) && scUserContext.user !== undefined) {
116
+ _t = setTimeout(_initComponent);
117
+ return () => {
118
+ _t && clearTimeout(_t);
119
+ };
120
+ }
121
+ }, [scUserContext.user, coursesEnabled, userId]);
122
+ /**
123
+ * Virtual feed update
124
+ */
125
+ useEffect(() => {
126
+ onHeightChange && onHeightChange();
127
+ }, [state.results.length]);
128
+ useEffect(() => {
129
+ if (!coursesEnabled && !scUserContext.user && !isInteger(userId)) {
130
+ return;
131
+ }
132
+ else if (cacheStrategy === CacheStrategies.NETWORK_ONLY) {
133
+ onStateChange && onStateChange({ cacheStrategy: CacheStrategies.CACHE_FIRST });
134
+ }
135
+ }, [coursesEnabled, cacheStrategy, scUserContext.user, userId]);
136
+ // HANDLERS
137
+ const handleToggleDialogOpen = () => {
138
+ setOpenDialog((prev) => !prev);
139
+ };
140
+ // RENDER
141
+ if (!coursesEnabled || (autoHide && !state.count && state.initialized) || !userId) {
142
+ return _jsx(HiddenPlaceholder, {});
143
+ }
144
+ if (!state.initialized) {
145
+ return _jsx(Skeleton, {});
146
+ }
147
+ const content = (_jsxs(CardContent, { children: [_jsx(Typography, Object.assign({ className: classes.title, variant: "h5" }, { children: _jsx(FormattedMessage, { id: "ui.userCreatedCoursesWidget.title", defaultMessage: "ui.userCreatedCoursesWidget.title", values: {
148
+ total: state.count
149
+ } }) })), !state.count ? (_jsx(Typography, Object.assign({ className: classes.noResults, variant: "body2" }, { children: _jsx(FormattedMessage, { id: "ui.userCreatedCoursesWidget.subtitle.noResults", defaultMessage: "ui.userCreatedCoursesWidget.subtitle.noResults" }) }))) : (_jsxs(React.Fragment, { children: [_jsx(List, { children: state.results.slice(0, limit).map((course) => (_jsx(ListItem, { children: _jsx(Course, Object.assign({ elevation: 0, template: SCCourseTemplateType.SNIPPET, course: course, userProfileSnippet: true }, CourseProps)) }, course.id))) }), limit < state.count && (_jsx(Button, Object.assign({ className: classes.showMore, onClick: handleToggleDialogOpen }, { children: _jsx(FormattedMessage, { id: "ui.userCreatedCoursesWidget.button.showAll", defaultMessage: "ui.userCreatedCoursesWidget.button.showAll" }) }))), openDialog && (_jsxs(DialogRoot, Object.assign({ className: classes.dialogRoot, title: _jsx(FormattedMessage, { id: "ui.userCreatedCoursesWidget.title", defaultMessage: "ui.userCreatedCoursesWidget.title", values: { total: state.count } }), onClose: handleToggleDialogOpen, open: openDialog, scroll: "paper" }, DialogProps, { children: [_jsxs(List, { children: [state.results.map((c) => (_jsx(ListItem, { children: _jsx(Course, Object.assign({ elevation: 0, template: SCCourseTemplateType.SNIPPET, course: c, userProfileSnippet: true }, CourseProps)) }, c.id))), state.isLoadingNext && (_jsx(ListItem, { children: _jsx(CourseSkeleton, { template: SCCourseTemplateType.SNIPPET, elevation: 0, CourseProps: { userProfileSnippet: true } }) }))] }), _jsx(Typography, Object.assign({ className: classes.endMessage }, { children: _jsx(FormattedMessage, { id: "ui.userCreatedCoursesWidget.noMoreResults", defaultMessage: "ui.userCreatedCoursesWidget.noMoreResults" }) }))] })))] }))] }));
150
+ return (_jsx(Root, Object.assign({ className: classNames(classes.root, className) }, rest, { children: content })));
151
+ }
@@ -0,0 +1 @@
1
+ export declare const PREFIX = "SCUserCreatedCoursesWidget";
@@ -0,0 +1 @@
1
+ export const PREFIX = 'SCUserCreatedCoursesWidget';
@@ -0,0 +1,4 @@
1
+ import UserCreatedCoursesWidget, { UserCreatedCoursesWidgetProps } from './UserCreatedCoursesWidget';
2
+ import UserCreatedCoursesWidgetSkeleton from './Skeleton';
3
+ export default UserCreatedCoursesWidget;
4
+ export { UserCreatedCoursesWidgetSkeleton, UserCreatedCoursesWidgetProps };
@@ -0,0 +1,4 @@
1
+ import UserCreatedCoursesWidget from './UserCreatedCoursesWidget';
2
+ import UserCreatedCoursesWidgetSkeleton from './Skeleton';
3
+ export default UserCreatedCoursesWidget;
4
+ export { UserCreatedCoursesWidgetSkeleton };
@@ -127,6 +127,7 @@ import UserConnectionsRequestsSentWidget, { UserConnectionsRequestsSentWidgetPro
127
127
  import UserConnectionsRequestsWidget, { UserConnectionsRequestsWidgetProps, UserConnectionsRequestsWidgetSkeleton } from './components/UserConnectionsRequestsWidget';
128
128
  import UserConnectionsWidget, { UserConnectionsWidgetProps, UserConnectionsWidgetSkeleton } from './components/UserConnectionsWidget';
129
129
  import UserCounters, { UserCountersProps } from './components/UserCounters';
130
+ import UserCreatedCoursesWidget, { UserCreatedCoursesWidgetProps, UserCreatedCoursesWidgetSkeleton } from './components/UserCreatedCoursesWidget';
130
131
  import UserFollowedCategoriesWidget, { UserFollowedCategoriesWidgetProps, UserFollowedCategoriesWidgetSkeleton } from './components/UserFollowedCategoriesWidget';
131
132
  import UserFollowedUsersWidget, { UserFollowedUsersWidgetProps, UserFollowedUsersWidgetSkeleton } from './components/UserFollowedUsersWidget';
132
133
  import UserFollowersWidget, { UserFollowersWidgetProps, UserFollowersWidgetSkeleton } from './components/UserFollowersWidget';
@@ -209,4 +210,4 @@ import DefaultCoverSelfCommunity from './assets/deafultCover';
209
210
  /**
210
211
  * List all exports
211
212
  */
212
- export { AcceptRequestUserEventButton, AcceptRequestUserEventButtonProps, AccountChangeMailValidation, AccountChangeMailValidationProps, AccountDataPortability, AccountDataPortabilityButton, AccountDataPortabilityButtonProps, AccountDataPortabilityProps, AccountDelete, AccountDeleteButton, AccountDeleteButtonProps, AccountDeleteProps, AccountRecover, AccountRecoverProps, AccountReset, AccountResetProps, AccountVerify, AccountVerifyProps, AvatarGroupSkeleton, BaseDialog, BaseDialogProps, BaseItem, BaseItemProps, BaseLightbox, BaseLightboxProps, BottomNavigation, BottomNavigationProps, BroadcastMessages, BroadcastMessagesProps, BroadcastMessagesSkeleton, bytesToSize, generateRoomId, randomString, decodePassphrase, encodePassphrase, getCurrentSectionAndLessonIndex, Calendar, CalendarProps, Categories, CategoriesPopularWidget, CategoriesPopularWidgetSkeleton, CategoriesProps, CategoriesSkeleton, CategoriesSkeletonProps, CategoriesSuggestionWidget, CategoriesSuggestionWidgetProps, CategoriesSuggestionWidgetSkeleton, Category, CategoryAutocomplete, CategoryAutocompleteProps, CategoryFollowButton, CategoryFollowButtonProps, CategoryFollowersButton, CategoryFollowersButtonProps, CategoryHeader, CategoryHeaderProps, CategoryHeaderSkeleton, CategoryProps, CategorySkeleton, CategoryTrendingFeedWidget, CategoryTrendingFeedWidgetProps, CategoryTrendingFeedWidgetSkeleton, CategoryTrendingPeopleWidgetSkeleton, CategoryTrendingUsersWidget, CategoryTrendingUsersWidgetProps, CentralProgress, ChangeCover, ChangeCoverProps, ChangeGroupCover, ChangeGroupCoverProps, ChangeGroupPicture, ChangeGroupPictureProps, ChangePicture, ChangePictureProps, CommentObject, CommentObjectProps, CommentObjectReply, CommentObjectReplyProps, CommentObjectSkeleton, CommentsFeedObject, CommentsFeedObjectProps, CommentsFeedObjectSkeleton, CommentsObject, CommentsObjectProps, CommentsObjectSkeleton, Composer, ComposerIconButton, ComposerIconButtonProps, ComposerProps, ConfirmDialog, ConnectionUserButton, ConsentSolution, ConsentSolutionButton, ConsentSolutionButtonProps, ConsentSolutionProps, ConsentSolutionSkeleton, ContributionUtils, SCCourseEditTabType, Course, CourseProps, CourseSkeleton, CourseSkeletonProps, CourseJoinButton, CourseJoinButtonProps, Courses, CreateCourseButton, CreateCourseButtonProps, CoursesProps, CoursesSkeleton, CoursesSkeletonProps, CourseContentMenu, CourseContentMenuProps, CourseDashboard, TeacherCourseDashboardProps, TeacherSkeleton, StudentCourseDashboardProps, StudentSkeleton, CreateEventButton, CreateEventButtonProps, CreateEventWidget, CreateEventWidgetProps, CreateEventWidgetSkeleton, CreateGroupButton, EventForm, EventFormProps, EventFormDialog, EventFormDialogProps, CreateGroupButtonProps, CustomAdv, CustomAdvProps, CustomAdvSkeleton, DEFAULT_FIELDS, DEFAULT_PAGINATION_LIMIT, DEFAULT_PAGINATION_OFFSET, DEFAULT_PAGINATION_QUERY_PARAM_NAME, DEFAULT_PRELOAD_OFFSET_VIEWPORT, DEFAULT_WIDGETS_NUMBER, DefaultDrawerContent, DefaultDrawerContentProps, DefaultHeaderContent, DefaultHeaderContentProps, DefaultDrawerSkeleton, DefaultDrawerSkeletonProps, EditEventButton, EditEventButtonProps, EditGroupButton, EditGroupButtonProps, EditMediaProps, Editor, EditorProps, EditorSkeleton, EmailTextField, EditCourse, EditCourseProps, EditCourseSkeleton, Event, EventActionsMenu, EventActionsMenuProps, EventHeader, EventHeaderProps, EventHeaderSkeleton, EventInfoDetails, EventInfoDetailsProps, EventInfoWidget, EventInfoWidgetProps, EventInviteButton, EventInviteButtonProps, EventLocationWidget, EventLocationWidgetProps, EventLocationWidgetSkeleton, EventMediaWidget, EventMediaWidgetProps, EventMediaWidgetSkeleton, EventMembersWidget, EventMembersWidgetProps, EventMembersWidgetSkeleton, EventParticipantsButton, EventParticipantsButtonProps, EventProps, Events, EventSkeleton, EventSkeletonProps, EventsProps, EventsSkeleton, EventsSkeletonProps, FACEBOOK_SHARE, Feed, FeedObject, FeedObjectMediaPreview, FeedObjectMediaPreviewProps, FeedObjectProps, FeedObjectSkeleton, FeedProps, FeedRef, FeedSidebarProps, FeedSkeleton, FeedUpdatesWidget, FeedUpdatesWidgetProps, FeedUpdatesWidgetSkeleton, File, FollowUserButton, FollowUserButtonProps, Footer, FooterProps, FooterSkeleton, FriendshipButtonProps, FriendshipUserButton, GenericSkeleton, getRelativeTime, getUnseenNotification, getUnseenNotificationCounter, Group, GroupActionsMenu, GroupActionsMenuProps, GroupForm, GroupFormProps, GroupHeader, GroupHeaderProps, GroupHeaderSkeleton, GroupInfoWidget, GroupInfoWidgetProps, GroupInfoWidgetSkeleton, GroupInviteButton, GroupInviteButtonProps, GroupInvitedWidget, GroupInvitedWidgetProps, GroupInvitedWidgetSkeleton, GroupMembersButton, GroupMembersButtonProps, GroupMembersWidget, GroupMembersWidgetProps, GroupMembersWidgetSkeleton, GroupProps, GroupRequestsWidget, GroupRequestsWidgetProps, GroupRequestsWidgetSkeleton, Groups, GroupSettingsIconButton, GroupSettingsIconButtonProps, GroupSkeleton, GroupsProps, GroupsSkeleton, GroupSubscribeButton, GroupSubscribeButtonProps, AccordionLessons, AccordionLessonsProps, AccordionLessonsSkeleton, AddUsersButton, AddUsersButtonProps, CourseUsersTable, CourseUsersTableProps, CourseUsersTableSkeleton, EmptyStatus, EmptyStatusProps, HiddenPlaceholder, Incubator, IncubatorDetail, IncubatorDetailProps, IncubatorListWidget, IncubatorListWidgetProps, IncubatorProps, IncubatorSubscribeButton, IncubatorSubscribeButtonProps, IncubatorSuggestionWidget, IncubatorSuggestionWidgetProps, InfiniteScroll, ScrollContainer, InlineComposerWidget, InlineComposerWidgetProps, InlineComposerWidgetSkeleton, InviteUserEventButton, LessonAppbar, LessonAppbarProps, LessonDrawer, LessonDrawerProps, LessonEditForm, LessonEditFormProps, LessonObject, LessonObjectProps, InviteUserEventButtonProps, LanguageSwitcher, LEGAL_POLICIES, CourseCompletedDialog, CourseCompletedDialogProps, Lightbox, LightboxProps, Link, LINKEDIN_SHARE, LocationAutocomplete, LocationAutocompleteProps, LogoSelfCommunity, DefaultCoverSelfCommunity, LoyaltyProgramWidget, LoyaltyProgramWidgetProps, LoyaltyProgramWidgetSkeleton, MAX_PRELOAD_OFFSET_VIEWPORT, MEDIA_EMBED_SC_LINK_TYPE, MEDIA_EMBED_SC_SHARED_EVENT, MEDIA_EMBED_SC_SHARED_OBJECT, MEDIA_TYPE_DOCUMENT, MEDIA_TYPE_EMBED, MEDIA_TYPE_EVENT, MEDIA_TYPE_IMAGE, MEDIA_TYPE_LINK, MEDIA_TYPE_SHARE, MEDIA_TYPE_URL, MEDIA_TYPE_VIDEO, SCCourseFormStepType, MediaChunkUploader, MediaChunkUploaderProps, MessageUploaderUtils, MetadataField, MetadataFieldProps, MIN_PRELOAD_OFFSET_VIEWPORT, MyEventsWidget, MyEventsWidgetProps, MyEventsWidgetSkeleton, NavigationMenuContent, NavigationMenuDrawer, NavigationMenuDrawerProps, NavigationMenuHeader, NavigationMenuIconButton, NavigationMenuIconButtonProps, NavigationSettingsIconButton, NavigationSettingsIconButtonProps, NavigationSettingsItem, NavigationToolbar, NavigationToolbarMobile, NavigationToolbarMobileProps, NavigationToolbarMobileSkeleton, NavigationToolbarProps, NavigationToolbarSkeleton, Notification, NotificationProps, NotificationSkeleton, OnBoardingWidget, OnBoardingWidgetProps, OnBoardingWidgetSkeleton, PasswordTextField, PhoneTextField, PlatformWidget, PlatformWidgetActionType, PlatformWidgetProps, PlatformWidgetSkeleton, PollSuggestionWidget, PollSuggestionWidgetProps, PrivateMessageComponent, PrivateMessageComponentProps, PrivateMessageComponentSkeleton, PrivateMessageEditor, PrivateMessageEditorProps, PrivateMessageEditorSkeleton, PrivateMessageSettingsIconButton, PrivateMessageSettingsIconButtonProps, PrivateMessageSnippetItem, PrivateMessageSnippetItemProps, PrivateMessageSnippetItemSkeleton, PrivateMessageSnippets, PrivateMessageSnippetsProps, PrivateMessageSnippetsSkeleton, PrivateMessageThread, PrivateMessageThreadItem, PrivateMessageThreadItemProps, PrivateMessageThreadItemSkeleton, PrivateMessageThreadProps, PrivateMessageThreadSkeleton, ProgressBar, ProgressBarProps, RelatedEventsWidget, RelatedEventsWidgetProps, RelatedEventsWidgetSkeleton, RelatedFeedObjectsWidget, RelatedFeedObjectsWidgetSkeleton, RelatedFeedObjectWidgetProps, ReplyComment, SCBroadcastMessageTemplateType, SCCommentsOrderBy, SCEventMembersEventType, SCEventTemplateType, SCFeedObjectActivitiesType, SCFeedObjectTemplateType, SCFeedWidgetType, SCGroupMembersEventType, SCMediaChunkType, SCMediaObjectType, SCNotificationObjectTemplateType, SCUserProfileFields, SCUserProfileSettings, SCUserSocialAssociations, SearchAutocomplete, SearchAutocompleteProps, SearchDialog, SearchDialogProps, Share, SnippetNotifications, SnippetNotificationsProps, SnippetNotificationsSkeleton, StickyBox, StickyBoxComponent, StickyBoxProps, SuggestedEventsWidget, TagAutocomplete, TagAutocompleteProps, SuggestedEventsWidgetProps, SuggestedEventsWidgetSkeleton, TagChip, TagChipProps, ToastNotifications, ToastNotificationsProps, ToastNotificationsSkeleton, UrlTextField, User, UserActionIconButton, UserActionIconButtonProps, UserAvatar, UserAvatarProps, UserConnectionsRequestsSentWidget, UserConnectionsRequestsSentWidgetProps, UserConnectionsRequestsSentWidgetSkeleton, UserConnectionsRequestsWidget, UserConnectionsRequestsWidgetProps, UserConnectionsRequestsWidgetSkeleton, UserConnectionsWidget, UserConnectionsWidgetProps, UserConnectionsWidgetSkeleton, UserCounters, UserCountersProps, UserDeletedSnackBar, UserDeletedSnackBarProps, UserFollowedCategoriesWidget, UserFollowedCategoriesWidgetProps, UserFollowedCategoriesWidgetSkeleton, UserFollowedUsersWidget, UserFollowedUsersWidgetProps, UserFollowedUsersWidgetSkeleton, UserFollowersWidget, UserFollowersWidgetProps, UserFollowersWidgetSkeleton, UserInfo, UserInfoDialog, UserInfoDialogProps, UserInfoProps, UserInfoSkeleton, UsernameTextField, UserProfileBlocked, UserProfileBlockedProps, UserProfileEdit, UserProfileEditProps, UserProfileEditSectionAccount, UserProfileEditSectionAccountProps, UserProfileEditSectionPublicInfo, UserProfileEditSectionPublicInfoProps, UserProfileEditSectionSettings, UserProfileEditSectionSettingsProps, UserProfileEditSkeleton, UserProfileHeader, UserProfileHeaderProps, UserProfileHeaderSkeleton, UserProps, UserSkeleton, UserSocialAssociation, UserSocialAssociationProps, UserSubscribedGroupsWidget, UserSubscribedGroupsWidgetProps, UserSubscribedGroupsWidgetSkeleton, UserSuggestionWidget, UserSuggestionWidgetProps, UserSuggestionWidgetSkeleton, UserLiveStreamWidget, UserLiveStreamWidgetProps, UserLiveStreamWidgetSkeleton, useStickyBox, UseStickyBoxProps, LiveStream, LiveStreamProps, LiveStreamSkeletonProps, LiveStreamSkeleton, LiveStreamInfoDetails, LiveStreamInfoDetailsProps, UpScalingTierBadge, UpScalingTierProps, CreateLiveStreamDialog, CreateLiveStreamDialogProps, CreateLiveStreamButton, CreateLiveStreamButtonProps, LiveStreamForm, LiveStreamFormProps, LiveStreamRoom, LiveStreamRoomProps, LiveStreamVideoConference, LiveStreamVideoConferenceProps, VirtualScrollerItemProps, SCCourseTemplateType, SCLessonActionsType, SCLessonModeType, Widget, WidgetProps, X_SHARE, PROVIDER_ICONS_CONTAINED, PROVIDER_ICONS_OUTLINED };
213
+ export { AcceptRequestUserEventButton, AcceptRequestUserEventButtonProps, AccountChangeMailValidation, AccountChangeMailValidationProps, AccountDataPortability, AccountDataPortabilityButton, AccountDataPortabilityButtonProps, AccountDataPortabilityProps, AccountDelete, AccountDeleteButton, AccountDeleteButtonProps, AccountDeleteProps, AccountRecover, AccountRecoverProps, AccountReset, AccountResetProps, AccountVerify, AccountVerifyProps, AvatarGroupSkeleton, BaseDialog, BaseDialogProps, BaseItem, BaseItemProps, BaseLightbox, BaseLightboxProps, BottomNavigation, BottomNavigationProps, BroadcastMessages, BroadcastMessagesProps, BroadcastMessagesSkeleton, bytesToSize, generateRoomId, randomString, decodePassphrase, encodePassphrase, getCurrentSectionAndLessonIndex, Calendar, CalendarProps, Categories, CategoriesPopularWidget, CategoriesPopularWidgetSkeleton, CategoriesProps, CategoriesSkeleton, CategoriesSkeletonProps, CategoriesSuggestionWidget, CategoriesSuggestionWidgetProps, CategoriesSuggestionWidgetSkeleton, Category, CategoryAutocomplete, CategoryAutocompleteProps, CategoryFollowButton, CategoryFollowButtonProps, CategoryFollowersButton, CategoryFollowersButtonProps, CategoryHeader, CategoryHeaderProps, CategoryHeaderSkeleton, CategoryProps, CategorySkeleton, CategoryTrendingFeedWidget, CategoryTrendingFeedWidgetProps, CategoryTrendingFeedWidgetSkeleton, CategoryTrendingPeopleWidgetSkeleton, CategoryTrendingUsersWidget, CategoryTrendingUsersWidgetProps, CentralProgress, ChangeCover, ChangeCoverProps, ChangeGroupCover, ChangeGroupCoverProps, ChangeGroupPicture, ChangeGroupPictureProps, ChangePicture, ChangePictureProps, CommentObject, CommentObjectProps, CommentObjectReply, CommentObjectReplyProps, CommentObjectSkeleton, CommentsFeedObject, CommentsFeedObjectProps, CommentsFeedObjectSkeleton, CommentsObject, CommentsObjectProps, CommentsObjectSkeleton, Composer, ComposerIconButton, ComposerIconButtonProps, ComposerProps, ConfirmDialog, ConnectionUserButton, ConsentSolution, ConsentSolutionButton, ConsentSolutionButtonProps, ConsentSolutionProps, ConsentSolutionSkeleton, ContributionUtils, SCCourseEditTabType, Course, CourseProps, CourseSkeleton, CourseSkeletonProps, CourseJoinButton, CourseJoinButtonProps, Courses, CreateCourseButton, CreateCourseButtonProps, CoursesProps, CoursesSkeleton, CoursesSkeletonProps, CourseContentMenu, CourseContentMenuProps, CourseDashboard, TeacherCourseDashboardProps, TeacherSkeleton, StudentCourseDashboardProps, StudentSkeleton, CreateEventButton, CreateEventButtonProps, CreateEventWidget, CreateEventWidgetProps, CreateEventWidgetSkeleton, CreateGroupButton, EventForm, EventFormProps, EventFormDialog, EventFormDialogProps, CreateGroupButtonProps, CustomAdv, CustomAdvProps, CustomAdvSkeleton, DEFAULT_FIELDS, DEFAULT_PAGINATION_LIMIT, DEFAULT_PAGINATION_OFFSET, DEFAULT_PAGINATION_QUERY_PARAM_NAME, DEFAULT_PRELOAD_OFFSET_VIEWPORT, DEFAULT_WIDGETS_NUMBER, DefaultDrawerContent, DefaultDrawerContentProps, DefaultHeaderContent, DefaultHeaderContentProps, DefaultDrawerSkeleton, DefaultDrawerSkeletonProps, EditEventButton, EditEventButtonProps, EditGroupButton, EditGroupButtonProps, EditMediaProps, Editor, EditorProps, EditorSkeleton, EmailTextField, EditCourse, EditCourseProps, EditCourseSkeleton, Event, EventActionsMenu, EventActionsMenuProps, EventHeader, EventHeaderProps, EventHeaderSkeleton, EventInfoDetails, EventInfoDetailsProps, EventInfoWidget, EventInfoWidgetProps, EventInviteButton, EventInviteButtonProps, EventLocationWidget, EventLocationWidgetProps, EventLocationWidgetSkeleton, EventMediaWidget, EventMediaWidgetProps, EventMediaWidgetSkeleton, EventMembersWidget, EventMembersWidgetProps, EventMembersWidgetSkeleton, EventParticipantsButton, EventParticipantsButtonProps, EventProps, Events, EventSkeleton, EventSkeletonProps, EventsProps, EventsSkeleton, EventsSkeletonProps, FACEBOOK_SHARE, Feed, FeedObject, FeedObjectMediaPreview, FeedObjectMediaPreviewProps, FeedObjectProps, FeedObjectSkeleton, FeedProps, FeedRef, FeedSidebarProps, FeedSkeleton, FeedUpdatesWidget, FeedUpdatesWidgetProps, FeedUpdatesWidgetSkeleton, File, FollowUserButton, FollowUserButtonProps, Footer, FooterProps, FooterSkeleton, FriendshipButtonProps, FriendshipUserButton, GenericSkeleton, getRelativeTime, getUnseenNotification, getUnseenNotificationCounter, Group, GroupActionsMenu, GroupActionsMenuProps, GroupForm, GroupFormProps, GroupHeader, GroupHeaderProps, GroupHeaderSkeleton, GroupInfoWidget, GroupInfoWidgetProps, GroupInfoWidgetSkeleton, GroupInviteButton, GroupInviteButtonProps, GroupInvitedWidget, GroupInvitedWidgetProps, GroupInvitedWidgetSkeleton, GroupMembersButton, GroupMembersButtonProps, GroupMembersWidget, GroupMembersWidgetProps, GroupMembersWidgetSkeleton, GroupProps, GroupRequestsWidget, GroupRequestsWidgetProps, GroupRequestsWidgetSkeleton, Groups, GroupSettingsIconButton, GroupSettingsIconButtonProps, GroupSkeleton, GroupsProps, GroupsSkeleton, GroupSubscribeButton, GroupSubscribeButtonProps, AccordionLessons, AccordionLessonsProps, AccordionLessonsSkeleton, AddUsersButton, AddUsersButtonProps, CourseUsersTable, CourseUsersTableProps, CourseUsersTableSkeleton, EmptyStatus, EmptyStatusProps, HiddenPlaceholder, Incubator, IncubatorDetail, IncubatorDetailProps, IncubatorListWidget, IncubatorListWidgetProps, IncubatorProps, IncubatorSubscribeButton, IncubatorSubscribeButtonProps, IncubatorSuggestionWidget, IncubatorSuggestionWidgetProps, InfiniteScroll, ScrollContainer, InlineComposerWidget, InlineComposerWidgetProps, InlineComposerWidgetSkeleton, InviteUserEventButton, LessonAppbar, LessonAppbarProps, LessonDrawer, LessonDrawerProps, LessonEditForm, LessonEditFormProps, LessonObject, LessonObjectProps, InviteUserEventButtonProps, LanguageSwitcher, LEGAL_POLICIES, CourseCompletedDialog, CourseCompletedDialogProps, Lightbox, LightboxProps, Link, LINKEDIN_SHARE, LocationAutocomplete, LocationAutocompleteProps, LogoSelfCommunity, DefaultCoverSelfCommunity, LoyaltyProgramWidget, LoyaltyProgramWidgetProps, LoyaltyProgramWidgetSkeleton, MAX_PRELOAD_OFFSET_VIEWPORT, MEDIA_EMBED_SC_LINK_TYPE, MEDIA_EMBED_SC_SHARED_EVENT, MEDIA_EMBED_SC_SHARED_OBJECT, MEDIA_TYPE_DOCUMENT, MEDIA_TYPE_EMBED, MEDIA_TYPE_EVENT, MEDIA_TYPE_IMAGE, MEDIA_TYPE_LINK, MEDIA_TYPE_SHARE, MEDIA_TYPE_URL, MEDIA_TYPE_VIDEO, SCCourseFormStepType, MediaChunkUploader, MediaChunkUploaderProps, MessageUploaderUtils, MetadataField, MetadataFieldProps, MIN_PRELOAD_OFFSET_VIEWPORT, MyEventsWidget, MyEventsWidgetProps, MyEventsWidgetSkeleton, NavigationMenuContent, NavigationMenuDrawer, NavigationMenuDrawerProps, NavigationMenuHeader, NavigationMenuIconButton, NavigationMenuIconButtonProps, NavigationSettingsIconButton, NavigationSettingsIconButtonProps, NavigationSettingsItem, NavigationToolbar, NavigationToolbarMobile, NavigationToolbarMobileProps, NavigationToolbarMobileSkeleton, NavigationToolbarProps, NavigationToolbarSkeleton, Notification, NotificationProps, NotificationSkeleton, OnBoardingWidget, OnBoardingWidgetProps, OnBoardingWidgetSkeleton, PasswordTextField, PhoneTextField, PlatformWidget, PlatformWidgetActionType, PlatformWidgetProps, PlatformWidgetSkeleton, PollSuggestionWidget, PollSuggestionWidgetProps, PrivateMessageComponent, PrivateMessageComponentProps, PrivateMessageComponentSkeleton, PrivateMessageEditor, PrivateMessageEditorProps, PrivateMessageEditorSkeleton, PrivateMessageSettingsIconButton, PrivateMessageSettingsIconButtonProps, PrivateMessageSnippetItem, PrivateMessageSnippetItemProps, PrivateMessageSnippetItemSkeleton, PrivateMessageSnippets, PrivateMessageSnippetsProps, PrivateMessageSnippetsSkeleton, PrivateMessageThread, PrivateMessageThreadItem, PrivateMessageThreadItemProps, PrivateMessageThreadItemSkeleton, PrivateMessageThreadProps, PrivateMessageThreadSkeleton, ProgressBar, ProgressBarProps, RelatedEventsWidget, RelatedEventsWidgetProps, RelatedEventsWidgetSkeleton, RelatedFeedObjectsWidget, RelatedFeedObjectsWidgetSkeleton, RelatedFeedObjectWidgetProps, ReplyComment, SCBroadcastMessageTemplateType, SCCommentsOrderBy, SCEventMembersEventType, SCEventTemplateType, SCFeedObjectActivitiesType, SCFeedObjectTemplateType, SCFeedWidgetType, SCGroupMembersEventType, SCMediaChunkType, SCMediaObjectType, SCNotificationObjectTemplateType, SCUserProfileFields, SCUserProfileSettings, SCUserSocialAssociations, SearchAutocomplete, SearchAutocompleteProps, SearchDialog, SearchDialogProps, Share, SnippetNotifications, SnippetNotificationsProps, SnippetNotificationsSkeleton, StickyBox, StickyBoxComponent, StickyBoxProps, SuggestedEventsWidget, TagAutocomplete, TagAutocompleteProps, SuggestedEventsWidgetProps, SuggestedEventsWidgetSkeleton, TagChip, TagChipProps, ToastNotifications, ToastNotificationsProps, ToastNotificationsSkeleton, UrlTextField, User, UserActionIconButton, UserActionIconButtonProps, UserAvatar, UserAvatarProps, UserConnectionsRequestsSentWidget, UserConnectionsRequestsSentWidgetProps, UserConnectionsRequestsSentWidgetSkeleton, UserConnectionsRequestsWidget, UserConnectionsRequestsWidgetProps, UserConnectionsRequestsWidgetSkeleton, UserConnectionsWidget, UserConnectionsWidgetProps, UserConnectionsWidgetSkeleton, UserCounters, UserCountersProps, UserCreatedCoursesWidget, UserCreatedCoursesWidgetProps, UserCreatedCoursesWidgetSkeleton, UserDeletedSnackBar, UserDeletedSnackBarProps, UserFollowedCategoriesWidget, UserFollowedCategoriesWidgetProps, UserFollowedCategoriesWidgetSkeleton, UserFollowedUsersWidget, UserFollowedUsersWidgetProps, UserFollowedUsersWidgetSkeleton, UserFollowersWidget, UserFollowersWidgetProps, UserFollowersWidgetSkeleton, UserInfo, UserInfoDialog, UserInfoDialogProps, UserInfoProps, UserInfoSkeleton, UsernameTextField, UserProfileBlocked, UserProfileBlockedProps, UserProfileEdit, UserProfileEditProps, UserProfileEditSectionAccount, UserProfileEditSectionAccountProps, UserProfileEditSectionPublicInfo, UserProfileEditSectionPublicInfoProps, UserProfileEditSectionSettings, UserProfileEditSectionSettingsProps, UserProfileEditSkeleton, UserProfileHeader, UserProfileHeaderProps, UserProfileHeaderSkeleton, UserProps, UserSkeleton, UserSocialAssociation, UserSocialAssociationProps, UserSubscribedGroupsWidget, UserSubscribedGroupsWidgetProps, UserSubscribedGroupsWidgetSkeleton, UserSuggestionWidget, UserSuggestionWidgetProps, UserSuggestionWidgetSkeleton, UserLiveStreamWidget, UserLiveStreamWidgetProps, UserLiveStreamWidgetSkeleton, useStickyBox, UseStickyBoxProps, LiveStream, LiveStreamProps, LiveStreamSkeletonProps, LiveStreamSkeleton, LiveStreamInfoDetails, LiveStreamInfoDetailsProps, UpScalingTierBadge, UpScalingTierProps, CreateLiveStreamDialog, CreateLiveStreamDialogProps, CreateLiveStreamButton, CreateLiveStreamButtonProps, LiveStreamForm, LiveStreamFormProps, LiveStreamRoom, LiveStreamRoomProps, LiveStreamVideoConference, LiveStreamVideoConferenceProps, VirtualScrollerItemProps, SCCourseTemplateType, SCLessonActionsType, SCLessonModeType, Widget, WidgetProps, X_SHARE, PROVIDER_ICONS_CONTAINED, PROVIDER_ICONS_OUTLINED };
package/lib/esm/index.js CHANGED
@@ -127,6 +127,7 @@ import UserConnectionsRequestsSentWidget, { UserConnectionsRequestsSentWidgetSke
127
127
  import UserConnectionsRequestsWidget, { UserConnectionsRequestsWidgetSkeleton } from './components/UserConnectionsRequestsWidget';
128
128
  import UserConnectionsWidget, { UserConnectionsWidgetSkeleton } from './components/UserConnectionsWidget';
129
129
  import UserCounters from './components/UserCounters';
130
+ import UserCreatedCoursesWidget, { UserCreatedCoursesWidgetSkeleton } from './components/UserCreatedCoursesWidget';
130
131
  import UserFollowedCategoriesWidget, { UserFollowedCategoriesWidgetSkeleton } from './components/UserFollowedCategoriesWidget';
131
132
  import UserFollowedUsersWidget, { UserFollowedUsersWidgetSkeleton } from './components/UserFollowedUsersWidget';
132
133
  import UserFollowersWidget, { UserFollowersWidgetSkeleton } from './components/UserFollowersWidget';
@@ -216,4 +217,4 @@ DEFAULT_PAGINATION_QUERY_PARAM_NAME, DEFAULT_PRELOAD_OFFSET_VIEWPORT, DEFAULT_WI
216
217
  /* SC UI SHARED */
217
218
  AccordionLessons, AccordionLessonsSkeleton, AddUsersButton, CourseUsersTable, CourseUsersTableSkeleton, EmptyStatus, HiddenPlaceholder, Incubator, IncubatorDetail, IncubatorListWidget, IncubatorSubscribeButton, IncubatorSuggestionWidget, InfiniteScroll, ScrollContainer, InlineComposerWidget, InlineComposerWidgetSkeleton, InviteUserEventButton, LessonAppbar, LessonDrawer, LessonEditForm, LessonObject, LanguageSwitcher, LEGAL_POLICIES, CourseCompletedDialog, Lightbox, Link, LINKEDIN_SHARE, LocationAutocomplete,
218
219
  /* Assets */
219
- LogoSelfCommunity, DefaultCoverSelfCommunity, LoyaltyProgramWidget, LoyaltyProgramWidgetSkeleton, MAX_PRELOAD_OFFSET_VIEWPORT, MEDIA_EMBED_SC_LINK_TYPE, MEDIA_EMBED_SC_SHARED_EVENT, MEDIA_EMBED_SC_SHARED_OBJECT, MEDIA_TYPE_DOCUMENT, MEDIA_TYPE_EMBED, MEDIA_TYPE_EVENT, MEDIA_TYPE_IMAGE, MEDIA_TYPE_LINK, MEDIA_TYPE_SHARE, MEDIA_TYPE_URL, MEDIA_TYPE_VIDEO, SCCourseFormStepType, MediaChunkUploader, MessageUploaderUtils, MetadataField, MIN_PRELOAD_OFFSET_VIEWPORT, MyEventsWidget, MyEventsWidgetSkeleton, NavigationMenuContent, NavigationMenuDrawer, NavigationMenuHeader, NavigationMenuIconButton, NavigationSettingsIconButton, NavigationToolbar, NavigationToolbarMobile, NavigationToolbarMobileSkeleton, NavigationToolbarSkeleton, Notification, NotificationSkeleton, OnBoardingWidget, OnBoardingWidgetSkeleton, PasswordTextField, PhoneTextField, PlatformWidget, PlatformWidgetSkeleton, PollSuggestionWidget, PrivateMessageComponent, PrivateMessageComponentSkeleton, PrivateMessageEditor, PrivateMessageEditorSkeleton, PrivateMessageSettingsIconButton, PrivateMessageSnippetItem, PrivateMessageSnippetItemSkeleton, PrivateMessageSnippets, PrivateMessageSnippetsSkeleton, PrivateMessageThread, PrivateMessageThreadItem, PrivateMessageThreadItemSkeleton, PrivateMessageThreadSkeleton, ProgressBar, RelatedEventsWidget, RelatedEventsWidgetSkeleton, RelatedFeedObjectsWidget, RelatedFeedObjectsWidgetSkeleton, ReplyComment, SCBroadcastMessageTemplateType, SCCommentsOrderBy, SCEventTemplateType, SCFeedObjectActivitiesType, SCFeedObjectTemplateType, SCNotificationObjectTemplateType, SCUserProfileFields, SCUserProfileSettings, SCUserSocialAssociations, SearchAutocomplete, SearchDialog, Share, SnippetNotifications, SnippetNotificationsSkeleton, StickyBox, SuggestedEventsWidget, TagAutocomplete, SuggestedEventsWidgetSkeleton, TagChip, ToastNotifications, ToastNotificationsSkeleton, UrlTextField, User, UserActionIconButton, UserAvatar, UserConnectionsRequestsSentWidget, UserConnectionsRequestsSentWidgetSkeleton, UserConnectionsRequestsWidget, UserConnectionsRequestsWidgetSkeleton, UserConnectionsWidget, UserConnectionsWidgetSkeleton, UserCounters, UserDeletedSnackBar, UserFollowedCategoriesWidget, UserFollowedCategoriesWidgetSkeleton, UserFollowedUsersWidget, UserFollowedUsersWidgetSkeleton, UserFollowersWidget, UserFollowersWidgetSkeleton, UserInfo, UserInfoDialog, UserInfoSkeleton, UsernameTextField, UserProfileBlocked, UserProfileEdit, UserProfileEditSectionAccount, UserProfileEditSectionPublicInfo, UserProfileEditSectionSettings, UserProfileEditSkeleton, UserProfileHeader, UserProfileHeaderSkeleton, UserSkeleton, UserSocialAssociation, UserSubscribedGroupsWidget, UserSubscribedGroupsWidgetSkeleton, UserSuggestionWidget, UserSuggestionWidgetSkeleton, UserLiveStreamWidget, UserLiveStreamWidgetSkeleton, useStickyBox, LiveStream, LiveStreamSkeleton, LiveStreamInfoDetails, UpScalingTierBadge, CreateLiveStreamDialog, CreateLiveStreamButton, LiveStreamForm, LiveStreamRoom, LiveStreamVideoConference, SCCourseTemplateType, SCLessonActionsType, SCLessonModeType, Widget, X_SHARE, PROVIDER_ICONS_CONTAINED, PROVIDER_ICONS_OUTLINED };
220
+ LogoSelfCommunity, DefaultCoverSelfCommunity, LoyaltyProgramWidget, LoyaltyProgramWidgetSkeleton, MAX_PRELOAD_OFFSET_VIEWPORT, MEDIA_EMBED_SC_LINK_TYPE, MEDIA_EMBED_SC_SHARED_EVENT, MEDIA_EMBED_SC_SHARED_OBJECT, MEDIA_TYPE_DOCUMENT, MEDIA_TYPE_EMBED, MEDIA_TYPE_EVENT, MEDIA_TYPE_IMAGE, MEDIA_TYPE_LINK, MEDIA_TYPE_SHARE, MEDIA_TYPE_URL, MEDIA_TYPE_VIDEO, SCCourseFormStepType, MediaChunkUploader, MessageUploaderUtils, MetadataField, MIN_PRELOAD_OFFSET_VIEWPORT, MyEventsWidget, MyEventsWidgetSkeleton, NavigationMenuContent, NavigationMenuDrawer, NavigationMenuHeader, NavigationMenuIconButton, NavigationSettingsIconButton, NavigationToolbar, NavigationToolbarMobile, NavigationToolbarMobileSkeleton, NavigationToolbarSkeleton, Notification, NotificationSkeleton, OnBoardingWidget, OnBoardingWidgetSkeleton, PasswordTextField, PhoneTextField, PlatformWidget, PlatformWidgetSkeleton, PollSuggestionWidget, PrivateMessageComponent, PrivateMessageComponentSkeleton, PrivateMessageEditor, PrivateMessageEditorSkeleton, PrivateMessageSettingsIconButton, PrivateMessageSnippetItem, PrivateMessageSnippetItemSkeleton, PrivateMessageSnippets, PrivateMessageSnippetsSkeleton, PrivateMessageThread, PrivateMessageThreadItem, PrivateMessageThreadItemSkeleton, PrivateMessageThreadSkeleton, ProgressBar, RelatedEventsWidget, RelatedEventsWidgetSkeleton, RelatedFeedObjectsWidget, RelatedFeedObjectsWidgetSkeleton, ReplyComment, SCBroadcastMessageTemplateType, SCCommentsOrderBy, SCEventTemplateType, SCFeedObjectActivitiesType, SCFeedObjectTemplateType, SCNotificationObjectTemplateType, SCUserProfileFields, SCUserProfileSettings, SCUserSocialAssociations, SearchAutocomplete, SearchDialog, Share, SnippetNotifications, SnippetNotificationsSkeleton, StickyBox, SuggestedEventsWidget, TagAutocomplete, SuggestedEventsWidgetSkeleton, TagChip, ToastNotifications, ToastNotificationsSkeleton, UrlTextField, User, UserActionIconButton, UserAvatar, UserConnectionsRequestsSentWidget, UserConnectionsRequestsSentWidgetSkeleton, UserConnectionsRequestsWidget, UserConnectionsRequestsWidgetSkeleton, UserConnectionsWidget, UserConnectionsWidgetSkeleton, UserCounters, UserCreatedCoursesWidget, UserCreatedCoursesWidgetSkeleton, UserDeletedSnackBar, UserFollowedCategoriesWidget, UserFollowedCategoriesWidgetSkeleton, UserFollowedUsersWidget, UserFollowedUsersWidgetSkeleton, UserFollowersWidget, UserFollowersWidgetSkeleton, UserInfo, UserInfoDialog, UserInfoSkeleton, UsernameTextField, UserProfileBlocked, UserProfileEdit, UserProfileEditSectionAccount, UserProfileEditSectionPublicInfo, UserProfileEditSectionSettings, UserProfileEditSkeleton, UserProfileHeader, UserProfileHeaderSkeleton, UserSkeleton, UserSocialAssociation, UserSubscribedGroupsWidget, UserSubscribedGroupsWidgetSkeleton, UserSuggestionWidget, UserSuggestionWidgetSkeleton, UserLiveStreamWidget, UserLiveStreamWidgetSkeleton, useStickyBox, LiveStream, LiveStreamSkeleton, LiveStreamInfoDetails, UpScalingTierBadge, CreateLiveStreamDialog, CreateLiveStreamButton, LiveStreamForm, LiveStreamRoom, LiveStreamVideoConference, SCCourseTemplateType, SCLessonActionsType, SCLessonModeType, Widget, X_SHARE, PROVIDER_ICONS_CONTAINED, PROVIDER_ICONS_OUTLINED };