@icvdeveloper/common-module 1.4.14 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/module.d.mts +1051 -2
  3. package/dist/module.d.ts +1051 -2
  4. package/dist/module.json +1 -1
  5. package/dist/module.mjs +29 -15
  6. package/dist/runtime/@types/components.d.ts +22 -0
  7. package/dist/runtime/@types/configVariables.d.ts +6 -0
  8. package/dist/runtime/analytics.d.ts +1 -6
  9. package/dist/runtime/assets/scss/_agenda.css +1 -0
  10. package/dist/runtime/assets/scss/_animations.css +1 -0
  11. package/dist/runtime/assets/scss/_container_variants.css +1 -0
  12. package/dist/runtime/assets/scss/_custom.css +3 -0
  13. package/dist/runtime/assets/scss/_forms.css +1 -0
  14. package/dist/runtime/assets/scss/_header.css +0 -0
  15. package/dist/runtime/assets/scss/_index_production.css +1 -0
  16. package/dist/runtime/assets/scss/_transitions.css +1 -0
  17. package/dist/runtime/assets/scss/_variables.css +1 -0
  18. package/dist/runtime/assets/scss/_variables2.css +0 -0
  19. package/dist/runtime/assets/scss/_webcast.css +1 -0
  20. package/dist/runtime/assets/scss/index.css +1 -705
  21. package/dist/runtime/assets/svg/icon-minus.svg +6 -0
  22. package/dist/runtime/assets/svg/icon-video.svg +6 -0
  23. package/dist/runtime/components/affiliates/AffiliateModal.vue +66 -0
  24. package/dist/runtime/components/affiliates/AffiliatePage.vue +329 -159
  25. package/dist/runtime/components/agenda/AgendaList.vue +18 -14
  26. package/dist/runtime/components/agenda/AgendaTabbed.vue +60 -54
  27. package/dist/runtime/components/agenda/components/AgendaListAccordion.vue +8 -3
  28. package/dist/runtime/components/agenda/components/Calendar.vue +23 -18
  29. package/dist/runtime/components/agenda/components/Favorite.vue +46 -0
  30. package/dist/runtime/components/agenda/components/InfoLink.vue +15 -5
  31. package/dist/runtime/components/agenda/components/PlayIcon.vue +3 -5
  32. package/dist/runtime/components/agenda/components/PresentationLink.vue +37 -19
  33. package/dist/runtime/components/agenda/components/Sponsor.vue +31 -24
  34. package/dist/runtime/components/auth/PasswordReset.vue +20 -5
  35. package/dist/runtime/components/auth/Registration.vue +14 -4
  36. package/dist/runtime/components/auth/Ucc.vue +44 -27
  37. package/dist/runtime/components/chat/ChatConversationList.vue +108 -0
  38. package/dist/runtime/components/chat/ChatCreateConversation.vue +199 -0
  39. package/dist/runtime/components/chat/ChatCreateGroupConversation.vue +154 -0
  40. package/dist/runtime/components/chat/ChatHeader.vue +97 -0
  41. package/dist/runtime/components/chat/ChatMessage.vue +40 -0
  42. package/dist/runtime/components/chat/ChatShowConversation.vue +76 -0
  43. package/dist/runtime/components/chat/ChatWidget.vue +40 -0
  44. package/dist/runtime/components/chat/ChatWindow.vue +154 -0
  45. package/dist/runtime/components/chat/ChatWindow.vue.d.ts +6 -0
  46. package/dist/runtime/components/chat/MessageInput.vue +27 -0
  47. package/dist/runtime/components/chat/SearchInput.vue +32 -0
  48. package/dist/runtime/components/core/Accordion.vue +12 -12
  49. package/dist/runtime/components/core/AttendeeList.vue +31 -36
  50. package/dist/runtime/components/core/CountdownTimer.vue +68 -52
  51. package/dist/runtime/components/core/DynamicHtml.vue.d.ts +6 -9
  52. package/dist/runtime/components/core/Modal.vue +24 -22
  53. package/dist/runtime/components/core/ModalButton.vue +43 -0
  54. package/dist/runtime/components/core/Navbar.vue +33 -21
  55. package/dist/runtime/components/core/Navigation.vue +286 -0
  56. package/dist/runtime/components/core/SvgIcon.vue +34 -1
  57. package/dist/runtime/components/core/VButton.vue +35 -0
  58. package/dist/runtime/components/core/ZoomModal.vue +9 -3
  59. package/dist/runtime/components/events/EventHeader.vue +14 -4
  60. package/dist/runtime/components/events/ListEvents.vue +21 -22
  61. package/dist/runtime/components/forms/CheckboxGroup.vue +46 -0
  62. package/dist/runtime/components/forms/ErrorField.vue +11 -2
  63. package/dist/runtime/components/forms/Message.vue +1 -1
  64. package/dist/runtime/components/forms/RadioGroup.vue +50 -0
  65. package/dist/runtime/components/forms/SearchInput.vue +8 -2
  66. package/dist/runtime/components/forms/SelectDropDown.vue +47 -0
  67. package/dist/runtime/components/forms/SupportForm.vue +22 -11
  68. package/dist/runtime/components/forms/SwitchInput.vue +50 -30
  69. package/dist/runtime/components/forms/TextArea.vue +1 -1
  70. package/dist/runtime/components/forms/TextInput.vue +1 -1
  71. package/dist/runtime/components/layouts/Accordion.vue +11 -6
  72. package/dist/runtime/components/media/ArchivePlayerAndContentContainer.vue +24 -5
  73. package/dist/runtime/components/media/ArchiveVideoPlayer.vue +19 -23
  74. package/dist/runtime/components/media/PlayerAndContentContainer.vue +4 -1
  75. package/dist/runtime/components/media/WebcastVideoPlayer.vue +6 -18
  76. package/dist/runtime/components/media/components/AgendaPanel.vue +7 -6
  77. package/dist/runtime/components/media/components/ArchiveMediaContainer.vue +17 -15
  78. package/dist/runtime/components/media/components/CeCreditNotification.vue +8 -8
  79. package/dist/runtime/components/media/components/ContentArea.vue +59 -18
  80. package/dist/runtime/components/media/components/ContentTabs.vue +40 -28
  81. package/dist/runtime/components/media/components/DocumentsPanel.vue +19 -17
  82. package/dist/runtime/components/media/components/MediaContainer.vue +11 -13
  83. package/dist/runtime/components/media/components/OverviewPanel.vue +5 -2
  84. package/dist/runtime/components/media/components/PresentersPanel.vue +74 -55
  85. package/dist/runtime/components/media/components/SessionReporting.vue +5 -4
  86. package/dist/runtime/components/media/components/SponsorsPanel.vue +13 -12
  87. package/dist/runtime/components/presenters/PresenterListing.vue +33 -25
  88. package/dist/runtime/components/presenters/PresenterModal.vue +26 -21
  89. package/dist/runtime/components/presenters/Presenters.vue +139 -0
  90. package/dist/runtime/components/profile/Profile.vue +10 -6
  91. package/dist/runtime/components/profile/components/Sidebar.vue +1 -1
  92. package/dist/runtime/components/profile/components/SidebarNavItem.vue +2 -4
  93. package/dist/runtime/components/profile/tabs/Favorites.vue +5 -4
  94. package/dist/runtime/components/profile/tabs/GeneralInformation.vue +26 -16
  95. package/dist/runtime/components/profile/tabs/ProfileImage.vue +7 -6
  96. package/dist/runtime/components/registration/AlreadyRegisteredModal.vue +102 -0
  97. package/dist/runtime/components/registration/PaymentForm.vue +136 -0
  98. package/dist/runtime/components/registration/RegistrationForm.vue +417 -0
  99. package/dist/runtime/components/registration/RegistrationGroupSelect.vue +146 -0
  100. package/dist/runtime/components/registration/StripePaymentForm.vue +121 -0
  101. package/dist/runtime/components/support/FAQAccordion.vue +8 -7
  102. package/dist/runtime/composables/useAdobeLaunch.d.ts +2 -7
  103. package/dist/runtime/composables/useAdobeLaunch.mjs +2 -2
  104. package/dist/runtime/composables/useAgenda.d.ts +13 -1
  105. package/dist/runtime/composables/useAgenda.mjs +125 -25
  106. package/dist/runtime/composables/useApi.d.ts +1 -1
  107. package/dist/runtime/composables/useAuth.d.ts +1 -1
  108. package/dist/runtime/composables/useAuth.mjs +1 -1
  109. package/dist/runtime/composables/useClassBinding.d.ts +3 -1
  110. package/dist/runtime/composables/useConferenceHelpers.d.ts +7 -3
  111. package/dist/runtime/composables/useConferenceHelpers.mjs +26 -15
  112. package/dist/runtime/composables/useEventHooks.d.ts +29 -0
  113. package/dist/runtime/composables/useEventHooks.mjs +21 -0
  114. package/dist/runtime/composables/useEvents.d.ts +17 -1
  115. package/dist/runtime/composables/useEvents.mjs +35 -9
  116. package/dist/runtime/composables/useLogin.mjs +9 -5
  117. package/dist/runtime/composables/useNavigation.d.ts +1 -1
  118. package/dist/runtime/composables/useNavigation.mjs +4 -2
  119. package/dist/runtime/composables/usePresentation.d.ts +2 -2
  120. package/dist/runtime/composables/usePresentation.mjs +8 -7
  121. package/dist/runtime/composables/usePresenter.d.ts +2 -2
  122. package/dist/runtime/composables/usePresenters.d.ts +2 -2
  123. package/dist/runtime/composables/usePusher.d.ts +4 -0
  124. package/dist/runtime/composables/usePusher.mjs +38 -26
  125. package/dist/runtime/composables/useScripts.mjs +1 -1
  126. package/dist/runtime/composables/useStream.d.ts +2 -3
  127. package/dist/runtime/composables/useStream.mjs +8 -2
  128. package/dist/runtime/composables/useUcc.d.ts +1 -1
  129. package/dist/runtime/composables/useUcc.mjs +29 -23
  130. package/dist/runtime/enums/general.d.ts +4 -1
  131. package/dist/runtime/enums/general.mjs +4 -1
  132. package/dist/runtime/models/adobeLaunch.d.ts +6 -0
  133. package/dist/runtime/models/adobeLaunch.mjs +0 -0
  134. package/dist/runtime/models/analytics.d.ts +6 -0
  135. package/dist/runtime/models/analytics.mjs +0 -0
  136. package/dist/runtime/models/attendeeList.d.ts +1 -1
  137. package/dist/runtime/models/conference.d.ts +122 -91
  138. package/dist/runtime/models/conversation.d.ts +11 -13
  139. package/dist/runtime/models/document.d.ts +5 -5
  140. package/dist/runtime/models/globalConfig.d.ts +9 -3
  141. package/dist/runtime/models/group.d.ts +38 -8
  142. package/dist/runtime/models/icons.d.ts +8 -1
  143. package/dist/runtime/models/index.d.ts +20 -0
  144. package/dist/runtime/models/index.mjs +20 -0
  145. package/dist/runtime/models/link.d.ts +4 -4
  146. package/dist/runtime/models/loginParams.d.ts +5 -0
  147. package/dist/runtime/models/loginParams.mjs +0 -0
  148. package/dist/runtime/models/navigationConfig.d.ts +7 -7
  149. package/dist/runtime/models/pagination.d.ts +11 -11
  150. package/dist/runtime/models/portal.d.ts +15 -10
  151. package/dist/runtime/models/templateConfig.d.ts +13 -7
  152. package/dist/runtime/models/ucc.d.ts +22 -0
  153. package/dist/runtime/models/ucc.mjs +0 -0
  154. package/dist/runtime/models/user.d.ts +25 -12
  155. package/dist/runtime/models/vButton.d.ts +7 -0
  156. package/dist/runtime/models/vButton.mjs +0 -0
  157. package/dist/runtime/models/video.d.ts +5 -4
  158. package/dist/runtime/models/virtualPagesConfig.d.ts +223 -0
  159. package/dist/runtime/models/virtualPagesConfig.mjs +0 -0
  160. package/dist/runtime/plugin.mjs +18 -9
  161. package/dist/runtime/store/affiliates.d.ts +4 -1
  162. package/dist/runtime/store/affiliates.mjs +38 -0
  163. package/dist/runtime/store/attendeeList.d.ts +1 -1
  164. package/dist/runtime/store/auth.d.ts +3 -7
  165. package/dist/runtime/store/auth.mjs +6 -0
  166. package/dist/runtime/store/conferences.d.ts +3 -1
  167. package/dist/runtime/store/conferences.mjs +14 -9
  168. package/dist/runtime/store/conversations.d.ts +78 -10
  169. package/dist/runtime/store/conversations.mjs +255 -22
  170. package/dist/runtime/store/modalPlayerConfig.d.ts +27 -0
  171. package/dist/runtime/store/modalPlayerConfig.mjs +58 -0
  172. package/dist/runtime/store/navigationConfig.d.ts +1 -1
  173. package/dist/runtime/store/presentations.d.ts +2 -2
  174. package/dist/runtime/store/templateConfigs.d.ts +7 -6
  175. package/dist/runtime/store/templateConfigs.mjs +7 -6
  176. package/dist/runtime/store/user.mjs +0 -1
  177. package/dist/runtime/v3plusCommonPlugin.d.ts +1 -1
  178. package/dist/types.d.mts +3 -2
  179. package/dist/types.d.ts +3 -2
  180. package/package.json +12 -9
  181. package/dist/runtime/components/media/components/JsonApi.vue +0 -33
  182. package/dist/runtime/components/media/components/JsonApi.vue.d.ts +0 -16
  183. package/dist/runtime/components/media/components/PresentersPanel.vue.d.ts +0 -32
  184. package/dist/runtime/components/media/components/WindowContent.vue +0 -118
  185. package/dist/runtime/components/media/components/WindowContent.vue.d.ts +0 -50
  186. package/dist/runtime/components/media/components/WindowSlide.vue +0 -92
  187. package/dist/runtime/components/media/components/WindowSlide.vue.d.ts +0 -36
  188. package/dist/runtime/models/authUser.d.ts +0 -16
  189. /package/dist/runtime/{models/authUser.mjs → assets/scss/_footer.css} +0 -0
@@ -1,5 +1,5 @@
1
1
  import type { Ref, ComputedRef } from "vue";
2
- import type { Conference, Sponsor } from "../models/conference";
2
+ import type { Conference, Sponsor, Presenter } from "../models/conference";
3
3
  export type UseEventsMethods = {
4
4
  /**
5
5
  * determine if logged in
@@ -37,9 +37,25 @@ export type UseEventsMethods = {
37
37
  * sorts an event's affiliates by level, then by name
38
38
  */
39
39
  getSponsors: (_affiliates: Array<Sponsor> | undefined) => Array<Sponsor>;
40
+ /**
41
+ * sorts an event's affiliates by level, then by name
42
+ */
43
+ getExhibitors: (_affiliates: Array<Sponsor> | undefined) => Array<Sponsor>;
40
44
  /**
41
45
  * returns the first affiliate set to role 'custom1'
42
46
  */
43
47
  getBrand: (_affiliates: Array<Sponsor>) => Sponsor | null;
48
+ /**
49
+ * formats presenters to {[key: string]: Presenter[]} if necessary
50
+ */
51
+ formatPresenters: (_presenters: Presenter[] | {
52
+ [key: string]: Presenter[];
53
+ } | {
54
+ [key: string]: {
55
+ [key: string]: Presenter[];
56
+ };
57
+ } | null | undefined) => {
58
+ [key: string]: Presenter[];
59
+ };
44
60
  };
45
61
  export declare const useEvents: () => UseEventsMethods;
@@ -1,12 +1,11 @@
1
1
  import { ref, computed } from "vue";
2
2
  import { storeToRefs } from "pinia";
3
- import { useRouter, useRoute } from "vue-router";
3
+ import { useRoute } from "vue-router";
4
4
  import { get, sortBy, filter } from "lodash-es";
5
5
  import { useRuntimeConfig } from "#app";
6
6
  import { useAuthStore, useTemplateConfigsStore } from "../store/index.mjs";
7
7
  export const useEvents = () => {
8
8
  const route = useRoute();
9
- const router = useRouter();
10
9
  const config = useRuntimeConfig();
11
10
  const { isLoggedIn } = storeToRefs(useAuthStore());
12
11
  const { pagesConfigValue } = storeToRefs(useTemplateConfigsStore());
@@ -20,10 +19,11 @@ export const useEvents = () => {
20
19
  });
21
20
  const getEventPage = (conference) => {
22
21
  const eventPathPrefix = config.public.eventPathPrefix;
22
+ const confId = conference.id;
23
23
  if (eventPathPrefix) {
24
- return eventPathPrefix + conference.id;
24
+ return eventPathPrefix + confId;
25
25
  } else {
26
- return `/upcoming-events/${conference.id}`;
26
+ return `/upcoming-events/${confId}`;
27
27
  }
28
28
  };
29
29
  const setConferenceToLoginTo = (conference) => {
@@ -31,19 +31,26 @@ export const useEvents = () => {
31
31
  loginModalVisible.value = true;
32
32
  };
33
33
  const orderAffiliates = (_affiliates) => {
34
- let tempSponsors = [];
35
- tempSponsors = sortBy(_affiliates, ["level", "price"]);
36
- return tempSponsors;
34
+ return sortBy(_affiliates, ["level", "price"]);
37
35
  };
38
36
  const getSponsors = (_affiliates) => {
39
37
  if (_affiliates === void 0) {
40
38
  return [];
41
39
  }
42
- let tempSponsors = [];
40
+ let tempSponsors;
43
41
  tempSponsors = filter(_affiliates, { "role": "sponsor" });
44
42
  tempSponsors = sortBy(tempSponsors, ["level", "name"]);
45
43
  return tempSponsors;
46
44
  };
45
+ const getExhibitors = (_affiliates) => {
46
+ if (_affiliates === void 0) {
47
+ return [];
48
+ }
49
+ let tempSponsors;
50
+ tempSponsors = filter(_affiliates, { "role": "exhibitor" });
51
+ tempSponsors = sortBy(tempSponsors, ["level", "name"]);
52
+ return tempSponsors;
53
+ };
47
54
  const getBrand = (_affiliates) => {
48
55
  let i = 0;
49
56
  for (i; i < get(_affiliates, "length", 0); i++) {
@@ -53,6 +60,23 @@ export const useEvents = () => {
53
60
  }
54
61
  return null;
55
62
  };
63
+ const formatPresenters = (presenters) => {
64
+ let formattedPresenters = {};
65
+ if (presenters == null || presenters == void 0) {
66
+ return formattedPresenters;
67
+ } else {
68
+ if (presenters != null && presenters != void 0 && typeof presenters == "object") {
69
+ if (Array.isArray(Object.values(presenters)[0])) {
70
+ formattedPresenters = presenters;
71
+ return formattedPresenters;
72
+ }
73
+ if (Array.isArray(presenters)) {
74
+ formattedPresenters["presenters_all"] = presenters;
75
+ }
76
+ }
77
+ }
78
+ return formattedPresenters;
79
+ };
56
80
  return {
57
81
  isLoggedIn,
58
82
  loginModalVisible,
@@ -63,6 +87,8 @@ export const useEvents = () => {
63
87
  setConferenceToLoginTo,
64
88
  orderAffiliates,
65
89
  getSponsors,
66
- getBrand
90
+ getExhibitors,
91
+ getBrand,
92
+ formatPresenters
67
93
  };
68
94
  };
@@ -10,23 +10,27 @@ import { useConferenceHelpers } from "./useConferenceHelpers.mjs";
10
10
  export const useLogin = (conference) => {
11
11
  const { login } = useAuthStore();
12
12
  const { currentConference } = storeToRefs(useConferencesStore());
13
- const { globalConfigValue } = storeToRefs(useTemplateConfigsStore());
13
+ const { portalConfig, globalConfigValue } = storeToRefs(useTemplateConfigsStore());
14
14
  const email = ref("");
15
15
  const password = ref("");
16
16
  const tooManySessions = ref(false);
17
17
  const loginError = ref(false);
18
18
  const router = useRouter();
19
- const shouldRedirect = () => {
19
+ const handleRedirect = () => {
20
+ if (portalConfig.value?.meta?.id === 3 || portalConfig.value?.meta?.name === "Virtual Tradeshow Template") {
21
+ console.log("virtual template detected on login");
22
+ return;
23
+ }
20
24
  let redirectUrl = null;
21
25
  if (currentConference.value !== null) {
22
26
  if (globalConfigValue.value("login_redirect_enabled")) {
23
27
  const { getConferenceWebcastUrl } = useConferenceHelpers(currentConference);
24
- redirectUrl = getConferenceWebcastUrl();
28
+ redirectUrl = getConferenceWebcastUrl(currentConference.value);
25
29
  }
26
30
  } else if (conference.value !== null) {
27
31
  if (globalConfigValue.value("login_redirect_enabled")) {
28
32
  const { getConferenceWebcastUrl } = useConferenceHelpers(conference);
29
- redirectUrl = getConferenceWebcastUrl();
33
+ redirectUrl = getConferenceWebcastUrl(conference.value);
30
34
  }
31
35
  }
32
36
  if (redirectUrl === null) {
@@ -37,7 +41,7 @@ export const useLogin = (conference) => {
37
41
  };
38
42
  const handleLogin = (revoke = false) => {
39
43
  login({ email: email.value, password: password.value, revoke }).then(() => {
40
- shouldRedirect();
44
+ handleRedirect();
41
45
  }).catch((error) => {
42
46
  if (error.response.status === 423) {
43
47
  tooManySessions.value = true;
@@ -1,4 +1,4 @@
1
- import { NavigationConfig } from "../models/navigationConfig";
1
+ import type { NavigationConfig } from "../models/navigationConfig";
2
2
  interface UseNavigationMethods {
3
3
  /**
4
4
  * Checks if a given nav item is external.
@@ -6,7 +6,7 @@ export const useNavigation = () => {
6
6
  const { getConferenceWebcastUrl } = useConferenceHelpers(currentConference);
7
7
  const isExternalLink = (navItem) => {
8
8
  const url = formatLink(navItem);
9
- return url.startsWith("http") === true;
9
+ return url.startsWith("http");
10
10
  };
11
11
  const formatLink = (navItem) => {
12
12
  if (navItem.url && navItem.url.startsWith("#")) {
@@ -23,7 +23,9 @@ export const useNavigation = () => {
23
23
  link = navItem.url;
24
24
  }
25
25
  if (navItem.name === "webcast") {
26
- link = getConferenceWebcastUrl();
26
+ if (currentConference.value != null) {
27
+ link = getConferenceWebcastUrl(currentConference.value);
28
+ }
27
29
  }
28
30
  return link;
29
31
  };
@@ -1,5 +1,5 @@
1
- import { Ref } from "nuxt/dist/app/compat/capi";
2
- import type { Conference, Presentation, Track } from "../models/conference";
1
+ import type { Ref } from 'vue';
2
+ import type { Conference, Presentation, Track } from '../models/conference';
3
3
  export type UsePresentationMethods = {
4
4
  /**
5
5
  * show session time
@@ -1,8 +1,8 @@
1
1
  import { get } from "lodash-es";
2
2
  import { DateTime } from "luxon";
3
3
  import { useTemplateConfigsStore } from "../store/index.mjs";
4
- import { ConferenceState } from "../models/conference.mjs";
5
4
  import { useConferenceHelpers } from "./useConferenceHelpers.mjs";
5
+ import { ConferenceState } from "../models/conference.mjs";
6
6
  export const usePresentation = (conference) => {
7
7
  const { pagesConfigValue } = useTemplateConfigsStore();
8
8
  const { conferenceIsMixed, getConferenceRegUrl } = useConferenceHelpers(conference);
@@ -13,14 +13,14 @@ export const usePresentation = (conference) => {
13
13
  return pagesConfigValue("agenda.session_end_times", false);
14
14
  };
15
15
  const getPresentationStartTime = (presentation, format = "h:mm a", convertToLocal = true) => {
16
- let dt = DateTime.fromSQL(presentation.date, {
16
+ const dt = DateTime.fromSQL(presentation.date, {
17
17
  zone: conference.value.timezone
18
18
  });
19
19
  return convertToLocal ? dt.toLocal().toFormat(format) : dt.toFormat(format);
20
20
  };
21
21
  const getPresentationEndTime = (presentation, format = "h:mm a", convertToLocal = true) => {
22
- let duration = get(presentation, "duration", 0);
23
- let dt = DateTime.fromSQL(presentation.date, {
22
+ const duration = get(presentation, "duration", 0);
23
+ const dt = DateTime.fromSQL(presentation.date, {
24
24
  zone: conference.value.timezone
25
25
  }).plus(duration * 1e3);
26
26
  return convertToLocal ? dt.toLocal().toFormat(format) : dt.toFormat(format);
@@ -32,7 +32,7 @@ export const usePresentation = (conference) => {
32
32
  if (!conference.value.access && (!pagesConfigValue("archive_player.preview_enabled", false) || presentation.type === "link")) {
33
33
  return getConferenceRegUrl();
34
34
  } else if (presentation.type === "link") {
35
- return presentation.video_url;
35
+ return presentation.video_url == void 0 ? "" : presentation.video_url;
36
36
  }
37
37
  return `/archive/${presentation.id}`;
38
38
  };
@@ -41,7 +41,7 @@ export const usePresentation = (conference) => {
41
41
  if (presentation.type === "link") {
42
42
  return presentation.video_url;
43
43
  }
44
- if ((presentation.video_url || presentation.type === "embed") && conferenceIsMixed) {
44
+ if ((presentation.video_url || presentation.type === "embed") && conferenceIsMixed(conference.value)) {
45
45
  return getArchivePresentationLinkDestination(presentation);
46
46
  }
47
47
  return `/upcoming-events/${conference.value.id}/webcast/${track.channel}`;
@@ -83,7 +83,8 @@ export const usePresentation = (conference) => {
83
83
  return "";
84
84
  };
85
85
  const presentationIsLiveOrMixed = (presentation) => {
86
- return presentation.is_live || conference.value.state === ConferenceState.MIXED && (presentation.video_url.length > 0 || presentation.type === "embed");
86
+ const videoUrl = presentation.video_url;
87
+ return presentation.is_live || conference.value.state === ConferenceState.MIXED && (videoUrl != void 0 && videoUrl.length > 0 || presentation.type === "embed");
87
88
  };
88
89
  return {
89
90
  showPresentationTimes,
@@ -1,5 +1,5 @@
1
- import { ComputedRef, Ref } from "nuxt/dist/app/compat/capi";
2
- import type { Presenter } from "../models/conference";
1
+ import type { ComputedRef, Ref } from 'vue';
2
+ import type { Presenter } from '../models/conference';
3
3
  export type UsePresenterMethods = {
4
4
  fullName: ComputedRef<string>;
5
5
  role: string;
@@ -1,5 +1,5 @@
1
- import { Ref } from "nuxt/dist/app/compat/capi";
2
- import type { Conference, Presenter } from "../models/conference";
1
+ import type { Ref } from 'vue';
2
+ import type { Conference, Presenter } from '../models/conference';
3
3
  export type UsePresentersMethods = {
4
4
  /**
5
5
  * get presenters label
@@ -7,6 +7,10 @@ declare global {
7
7
  }
8
8
  }
9
9
  export type usePusherMethods = {
10
+ /**
11
+ * Create Echo instance
12
+ */
13
+ echoInstance(): Echo;
10
14
  /**
11
15
  * Join the Pusher presence channel to be detected as online
12
16
  */
@@ -1,52 +1,64 @@
1
1
  import Pusher from "pusher-js";
2
2
  import Echo from "laravel-echo";
3
3
  import { storeToRefs } from "pinia";
4
+ import { useV3plusCommonModule } from "#imports";
4
5
  import { useAuthStore } from "../store/auth.mjs";
5
6
  import { useAttendeeListStore } from "../store/attendeeList.mjs";
6
7
  import { usePortalStore } from "../store/portal.mjs";
7
- const {
8
- setOnlineUsers,
9
- setOnlineUser,
10
- removeOnlineUser,
11
- setUserOnline,
12
- setRemoteUserOnline,
13
- setRemoteUserOffline
14
- } = useAttendeeListStore();
15
- const { user } = storeToRefs(useAuthStore());
16
- const { onlineUsers } = storeToRefs(useAttendeeListStore());
17
- const { data: portal } = storeToRefs(usePortalStore());
18
8
  export const usePusher = () => {
19
- const joinPresenceChannel = () => {
9
+ const echoInstance = () => {
10
+ const commonModule = useV3plusCommonModule();
11
+ const { user } = storeToRefs(useAuthStore());
20
12
  const token = "Bearer " + user.value?.token;
21
13
  window.Pusher = Pusher;
22
- window.Echo = new Echo({
14
+ const echo = window.Echo = new Echo({
23
15
  key: "276111d83646e96796ed",
24
16
  broadcaster: "pusher",
25
17
  cluster: "us2",
26
18
  forceTLS: true,
27
- authEndpoint: "https://staging.v3plusportal.com/broadcasting/auth",
19
+ encrypted: true,
20
+ authEndpoint: "https://rubiconportals.com/broadcasting/auth",
21
+ csrfToken: user.value?.token,
28
22
  auth: {
29
23
  headers: {
30
- authorization: token
24
+ "X-Portal-Token": commonModule.options.portalHash,
25
+ Authorization: token,
26
+ Accept: "application/json"
31
27
  }
32
28
  }
33
29
  });
34
- console.log(`presence.${portal.value?.id}`);
35
- window.Echo.join(`presence.${portal.value?.id}`).here((users) => {
36
- console.log("users here:", users);
30
+ return echo;
31
+ };
32
+ const joinPresenceChannel = () => {
33
+ const {
34
+ setOnlineUsers,
35
+ setOnlineUser,
36
+ removeOnlineUser,
37
+ setUserOnline,
38
+ setRemoteUserOnline,
39
+ setRemoteUserOffline
40
+ } = useAttendeeListStore();
41
+ const { onlineUsers } = storeToRefs(useAttendeeListStore());
42
+ const { data: portal } = storeToRefs(usePortalStore());
43
+ const echo = echoInstance();
44
+ echo.join(`presence.${portal.value?.id}`).here((users) => {
45
+ console.log("Users here:", users);
37
46
  setOnlineUsers(users);
38
47
  setUserOnline();
39
- }).joining((user2) => {
40
- console.log("user joining:", user2);
41
- setOnlineUser(user2);
42
- setRemoteUserOnline(user2.id);
43
- }).leaving((user2) => {
44
- console.log("user leaving:", user2);
45
- removeOnlineUser(user2.id);
46
- setRemoteUserOffline(user2.id);
48
+ }).joining((user) => {
49
+ console.log("User joining:", user);
50
+ setOnlineUser(user);
51
+ setRemoteUserOnline(user.id);
52
+ }).leaving((user) => {
53
+ console.log("User leaving:", user);
54
+ removeOnlineUser(user.id);
55
+ setRemoteUserOffline(user.id);
56
+ }).error((error) => {
57
+ console.log("Echo error:", error);
47
58
  });
48
59
  };
49
60
  return {
61
+ echoInstance,
50
62
  joinPresenceChannel
51
63
  };
52
64
  };
@@ -1,7 +1,7 @@
1
1
  export const useScripts = () => {
2
2
  const loadScripts = (scripts) => {
3
3
  scripts.forEach((src) => {
4
- let _script = document.createElement("script");
4
+ const _script = document.createElement("script");
5
5
  _script.setAttribute("src", src);
6
6
  document.head.appendChild(_script);
7
7
  });
@@ -1,6 +1,5 @@
1
- /// <reference types="node" />
2
- import { Ref, ComputedRef } from "vue";
3
- import type { Presentation, Stream } from "../models/conference";
1
+ import type { Ref, ComputedRef } from 'vue';
2
+ import type { Presentation, Stream } from '../models/conference';
4
3
  export type UseStreamMethods = {
5
4
  currentStreamData: Ref<Stream>;
6
5
  currentPresentation: Ref<Presentation>;
@@ -1,12 +1,15 @@
1
- import { ref, unref, computed, onMounted, onBeforeUnmount } from "vue";
1
+ import { inject, ref, unref, computed, onMounted, onBeforeUnmount } from "vue";
2
2
  import { storeToRefs } from "pinia";
3
3
  import { useRoute } from "vue-router";
4
4
  import { isEqual } from "lodash-es";
5
5
  import { usePresentationsStore } from "../store/presentations.mjs";
6
6
  export const useStream = (_region, _prefix, _confId, _callback) => {
7
+ console.log("confId", _confId);
7
8
  const region = unref(_region);
8
9
  const prefix = unref(_prefix);
9
10
  const confId = unref(_confId);
11
+ const isModal = inject("isModalStream", false);
12
+ const modalChannel = inject("modalPresentationChannel", ref(2));
10
13
  const route = ref(useRoute());
11
14
  const { currentPresentation } = storeToRefs(usePresentationsStore());
12
15
  const currentStreamData = ref({});
@@ -19,7 +22,7 @@ export const useStream = (_region, _prefix, _confId, _callback) => {
19
22
  return response.json();
20
23
  }).then((data) => {
21
24
  const newPresentation = data;
22
- if (!currentPresentation.value.id || newPresentation.id !== currentPresentation.value.id) {
25
+ if (!currentPresentation.value?.id || newPresentation.id !== currentPresentation.value?.id) {
23
26
  if (isStreamTest.value) {
24
27
  newPresentation.name = "Webcast Stream Test";
25
28
  }
@@ -54,6 +57,9 @@ export const useStream = (_region, _prefix, _confId, _callback) => {
54
57
  return String(route.value.name).includes("stream-test");
55
58
  });
56
59
  const webcastChannel = computed(() => {
60
+ if (isModal) {
61
+ return modalChannel.value != void 0 ? modalChannel.value.toString() : "2";
62
+ }
57
63
  return isStreamTest.value ? "stream-test" : route.value.params.channelid ? route.value.params.channelid : route.value.params.id;
58
64
  });
59
65
  const jsonPrefix = computed(() => {
@@ -1,4 +1,4 @@
1
- import { Conference } from "../models/conference";
1
+ import type { Conference } from "../models/conference";
2
2
  export type UccFunctions = {
3
3
  /**
4
4
  * load UCC script
@@ -1,20 +1,19 @@
1
+ import { ref } from "vue";
1
2
  import { get, find } from "lodash-es";
2
3
  import { storeToRefs } from "pinia";
3
4
  import { useRouter } from "vue-router";
4
5
  import { useApi } from "./useApi.mjs";
5
6
  import { useAuthStore } from "../store/auth.mjs";
6
7
  import { useTemplateConfigsStore } from "../store/templateConfigs.mjs";
7
- import { useConferencesStore } from "../store/conferences.mjs";
8
8
  import { useConferenceHelpers } from "../composables/useConferenceHelpers.mjs";
9
9
  export const useUcc = () => {
10
10
  const { globalConfigValue } = useTemplateConfigsStore();
11
11
  const { user, isLoggedIn } = storeToRefs(useAuthStore());
12
12
  const { loginEmailOnly } = useAuthStore();
13
- const { selectedConference } = storeToRefs(useConferencesStore());
14
13
  const router = useRouter();
15
14
  const loadUccScript = (conference) => {
16
- let brandCode = get(conference, "custom1[0].code");
17
- const { getConferenceWebcastUrl } = useConferenceHelpers(conference);
15
+ const brandCode = get(conference, "custom1[0].code", "");
16
+ const { getConferenceWebcastUrl } = useConferenceHelpers(ref(conference));
18
17
  if (globalConfigValue("ucc_url")) {
19
18
  window.uccMixin = {};
20
19
  window.uccMixin.clientId = globalConfigValue("ucc_client_id");
@@ -28,7 +27,7 @@ export const useUcc = () => {
28
27
  window.uccMixin.postAuthRedirect = postAuthRedirect;
29
28
  window.uccMixin.uccShowEventSignUp = uccShowEventSignUp;
30
29
  window.uccMixin.handleUCCCallback = handleUCCCallback;
31
- let ucc = document.createElement("script");
30
+ const ucc = document.createElement("script");
32
31
  ucc.setAttribute("src", globalConfigValue("ucc_url"));
33
32
  ucc.onload = () => {
34
33
  console.log("UCC onload");
@@ -37,7 +36,7 @@ export const useUcc = () => {
37
36
  window.uccMixin.uccShowEventSignUp();
38
37
  } else if (window.uccMixin.conference.state == "archive") {
39
38
  if (isLoggedIn.value) {
40
- let hasAccess = find(
39
+ const hasAccess = find(
41
40
  get(user, "value.conferences", []),
42
41
  { id: window.uccMixin.conference.id }
43
42
  );
@@ -55,17 +54,17 @@ export const useUcc = () => {
55
54
  console.log("UCC ready");
56
55
  },
57
56
  onLoginSuccess: function(ssoEvent) {
58
- console.log("UCC login success");
57
+ console.log("UCC login success", ssoEvent);
59
58
  },
60
59
  onAuthStateReady: function(ssoEvent) {
61
- console.log("UCC auth state ready");
60
+ console.log("UCC auth state ready", ssoEvent);
62
61
  },
63
62
  onRegistrationSuccess: function(ssoEvent) {
64
63
  console.log("UCC reg success");
65
64
  window.uccMixin.loginV3({ email: ssoEvent.profile.email });
66
65
  },
67
66
  onLogoutSuccess: function(ssoEvent) {
68
- console.log("UCC logout success");
67
+ console.log("UCC logout success", ssoEvent);
69
68
  }
70
69
  });
71
70
  };
@@ -81,14 +80,16 @@ export const useUcc = () => {
81
80
  }
82
81
  };
83
82
  const uccShowEventSignUp = (email) => {
84
- let _conference = window.uccMixin.conference;
85
- let eventId = _conference.id;
86
- let productCode = _conference.brandCode;
87
- let emailStr = email ? email : "";
83
+ const _conference = window.uccMixin.conference;
84
+ const eventId = _conference.id;
85
+ const productCode = _conference.brandCode;
86
+ const emailStr = email ? email : "";
88
87
  toggleEmailFormDisplay(false);
89
88
  if (_conference.brandCode) {
90
- document.getElementById("uccTarget").innerHTML = "";
91
- let mmsResponse = window.mmsWidgets.showEventsSignUp(
89
+ const el = document.getElementById("uccTarget");
90
+ if (el == null) return;
91
+ el.innerHTML = "";
92
+ const mmsResponse = window.mmsWidgets.showEventsSignUp(
92
93
  "#uccTarget",
93
94
  `${eventId}`,
94
95
  null,
@@ -98,13 +99,15 @@ export const useUcc = () => {
98
99
  }
99
100
  );
100
101
  } else {
101
- document.getElementById("uccTarget").innerHTML = `<div class='border font-bold px-4 py-3 mb-4 rounded relative message-base bg-red-100 border-red-400 text-red-600'>Missing required productCode.</div>`;
102
+ const el = document.getElementById("uccTarget");
103
+ if (el == null) return;
104
+ el.innerHTML = `<div class='border font-bold px-4 py-3 mb-4 rounded relative message-base bg-red-100 border-red-400 text-red-600'>Missing required productCode.</div>`;
102
105
  }
103
106
  };
104
107
  const handleLoginV3Response = (response, email) => {
105
- let conferences = get(response, "data.conferences", []);
106
- let _conference = window.uccMixin.conference;
107
- let hasAccess = find(conferences, { id: _conference.id });
108
+ const conferences = get(response, "data.conferences", []);
109
+ const _conference = window.uccMixin.conference;
110
+ const hasAccess = find(conferences, { id: _conference.id });
108
111
  if (hasAccess) {
109
112
  loginEmailOnly(response.data).then(() => {
110
113
  postAuthRedirect();
@@ -114,27 +117,30 @@ export const useUcc = () => {
114
117
  }
115
118
  };
116
119
  const loginV3 = (options) => {
117
- return new Promise((resolve, reject) => {
120
+ return new Promise(() => {
118
121
  const request = useApi();
119
122
  request(
120
123
  `users/email/${options.email}?with=conferences`
121
124
  ).then((response) => {
122
125
  handleLoginV3Response(response, options.email);
123
126
  }).catch((error) => {
127
+ console.error("login V3 error", error);
124
128
  });
125
129
  });
126
130
  };
127
131
  const handleUCCCallback = (ssoEvent) => {
128
- var options = {
132
+ const options = {
129
133
  email: ssoEvent.profile.email,
130
134
  ucid: ssoEvent.profile.ucid
131
135
  };
132
- if (!authStore.loggedIn) {
136
+ if (!isLoggedIn.value) {
133
137
  loginV3(options);
134
138
  }
135
139
  };
136
140
  const toggleEmailFormDisplay = (show) => {
137
- document.getElementById("uccEmailForm").style.display = show ? "block" : "none";
141
+ const el = document.getElementById("uccEmailForm");
142
+ if (el == null) return;
143
+ el.style.display = show ? "block" : "none";
138
144
  };
139
145
  return {
140
146
  loadUccScript,
@@ -6,9 +6,12 @@ export declare enum Position {
6
6
  MIDDLE = "middle"
7
7
  }
8
8
  export declare enum SelectedContent {
9
- OVERVIEW = "overview",
10
9
  AGENDA = "agenda",
10
+ DOCUMENTS = "documents",
11
11
  HTML = "html",
12
+ PRESENTERS = "presenters",
13
+ OVERVIEW = "overview",
14
+ SPONSORS = "sponsors",
12
15
  TRACK_HTML = "track_html",
13
16
  URL = "url"
14
17
  }
@@ -7,9 +7,12 @@ export var Position = /* @__PURE__ */ ((Position2) => {
7
7
  return Position2;
8
8
  })(Position || {});
9
9
  export var SelectedContent = /* @__PURE__ */ ((SelectedContent2) => {
10
- SelectedContent2["OVERVIEW"] = "overview";
11
10
  SelectedContent2["AGENDA"] = "agenda";
11
+ SelectedContent2["DOCUMENTS"] = "documents";
12
12
  SelectedContent2["HTML"] = "html";
13
+ SelectedContent2["PRESENTERS"] = "presenters";
14
+ SelectedContent2["OVERVIEW"] = "overview";
15
+ SelectedContent2["SPONSORS"] = "sponsors";
13
16
  SelectedContent2["TRACK_HTML"] = "track_html";
14
17
  SelectedContent2["URL"] = "url";
15
18
  return SelectedContent2;
@@ -0,0 +1,6 @@
1
+ export type AdobeLaunchFunctions = {
2
+ /**
3
+ * load script
4
+ */
5
+ loadAdobeLaunch: () => void;
6
+ };
File without changes
@@ -0,0 +1,6 @@
1
+ import type { AnalyticsInstance } from 'analytics';
2
+ export type Analytics = {
3
+ readonly _analytics: AnalyticsInstance | null;
4
+ create: (id: string, userId: number) => void;
5
+ click: (event: string, label: string) => void;
6
+ };
File without changes
@@ -1,5 +1,5 @@
1
1
  import type { User } from "./user";
2
- import { Pagination } from "./pagination";
2
+ import type { Pagination } from "./pagination";
3
3
  export type AttendeeList = {
4
4
  page?: number | null;
5
5
  lastPage?: number | null;