@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.
- package/CHANGELOG.md +4 -0
- package/dist/module.d.mts +1051 -2
- package/dist/module.d.ts +1051 -2
- package/dist/module.json +1 -1
- package/dist/module.mjs +29 -15
- package/dist/runtime/@types/components.d.ts +22 -0
- package/dist/runtime/@types/configVariables.d.ts +6 -0
- package/dist/runtime/analytics.d.ts +1 -6
- package/dist/runtime/assets/scss/_agenda.css +1 -0
- package/dist/runtime/assets/scss/_animations.css +1 -0
- package/dist/runtime/assets/scss/_container_variants.css +1 -0
- package/dist/runtime/assets/scss/_custom.css +3 -0
- package/dist/runtime/assets/scss/_forms.css +1 -0
- package/dist/runtime/assets/scss/_header.css +0 -0
- package/dist/runtime/assets/scss/_index_production.css +1 -0
- package/dist/runtime/assets/scss/_transitions.css +1 -0
- package/dist/runtime/assets/scss/_variables.css +1 -0
- package/dist/runtime/assets/scss/_variables2.css +0 -0
- package/dist/runtime/assets/scss/_webcast.css +1 -0
- package/dist/runtime/assets/scss/index.css +1 -705
- package/dist/runtime/assets/svg/icon-minus.svg +6 -0
- package/dist/runtime/assets/svg/icon-video.svg +6 -0
- package/dist/runtime/components/affiliates/AffiliateModal.vue +66 -0
- package/dist/runtime/components/affiliates/AffiliatePage.vue +329 -159
- package/dist/runtime/components/agenda/AgendaList.vue +18 -14
- package/dist/runtime/components/agenda/AgendaTabbed.vue +60 -54
- package/dist/runtime/components/agenda/components/AgendaListAccordion.vue +8 -3
- package/dist/runtime/components/agenda/components/Calendar.vue +23 -18
- package/dist/runtime/components/agenda/components/Favorite.vue +46 -0
- package/dist/runtime/components/agenda/components/InfoLink.vue +15 -5
- package/dist/runtime/components/agenda/components/PlayIcon.vue +3 -5
- package/dist/runtime/components/agenda/components/PresentationLink.vue +37 -19
- package/dist/runtime/components/agenda/components/Sponsor.vue +31 -24
- package/dist/runtime/components/auth/PasswordReset.vue +20 -5
- package/dist/runtime/components/auth/Registration.vue +14 -4
- package/dist/runtime/components/auth/Ucc.vue +44 -27
- package/dist/runtime/components/chat/ChatConversationList.vue +108 -0
- package/dist/runtime/components/chat/ChatCreateConversation.vue +199 -0
- package/dist/runtime/components/chat/ChatCreateGroupConversation.vue +154 -0
- package/dist/runtime/components/chat/ChatHeader.vue +97 -0
- package/dist/runtime/components/chat/ChatMessage.vue +40 -0
- package/dist/runtime/components/chat/ChatShowConversation.vue +76 -0
- package/dist/runtime/components/chat/ChatWidget.vue +40 -0
- package/dist/runtime/components/chat/ChatWindow.vue +154 -0
- package/dist/runtime/components/chat/ChatWindow.vue.d.ts +6 -0
- package/dist/runtime/components/chat/MessageInput.vue +27 -0
- package/dist/runtime/components/chat/SearchInput.vue +32 -0
- package/dist/runtime/components/core/Accordion.vue +12 -12
- package/dist/runtime/components/core/AttendeeList.vue +31 -36
- package/dist/runtime/components/core/CountdownTimer.vue +68 -52
- package/dist/runtime/components/core/DynamicHtml.vue.d.ts +6 -9
- package/dist/runtime/components/core/Modal.vue +24 -22
- package/dist/runtime/components/core/ModalButton.vue +43 -0
- package/dist/runtime/components/core/Navbar.vue +33 -21
- package/dist/runtime/components/core/Navigation.vue +286 -0
- package/dist/runtime/components/core/SvgIcon.vue +34 -1
- package/dist/runtime/components/core/VButton.vue +35 -0
- package/dist/runtime/components/core/ZoomModal.vue +9 -3
- package/dist/runtime/components/events/EventHeader.vue +14 -4
- package/dist/runtime/components/events/ListEvents.vue +21 -22
- package/dist/runtime/components/forms/CheckboxGroup.vue +46 -0
- package/dist/runtime/components/forms/ErrorField.vue +11 -2
- package/dist/runtime/components/forms/Message.vue +1 -1
- package/dist/runtime/components/forms/RadioGroup.vue +50 -0
- package/dist/runtime/components/forms/SearchInput.vue +8 -2
- package/dist/runtime/components/forms/SelectDropDown.vue +47 -0
- package/dist/runtime/components/forms/SupportForm.vue +22 -11
- package/dist/runtime/components/forms/SwitchInput.vue +50 -30
- package/dist/runtime/components/forms/TextArea.vue +1 -1
- package/dist/runtime/components/forms/TextInput.vue +1 -1
- package/dist/runtime/components/layouts/Accordion.vue +11 -6
- package/dist/runtime/components/media/ArchivePlayerAndContentContainer.vue +24 -5
- package/dist/runtime/components/media/ArchiveVideoPlayer.vue +19 -23
- package/dist/runtime/components/media/PlayerAndContentContainer.vue +4 -1
- package/dist/runtime/components/media/WebcastVideoPlayer.vue +6 -18
- package/dist/runtime/components/media/components/AgendaPanel.vue +7 -6
- package/dist/runtime/components/media/components/ArchiveMediaContainer.vue +17 -15
- package/dist/runtime/components/media/components/CeCreditNotification.vue +8 -8
- package/dist/runtime/components/media/components/ContentArea.vue +59 -18
- package/dist/runtime/components/media/components/ContentTabs.vue +40 -28
- package/dist/runtime/components/media/components/DocumentsPanel.vue +19 -17
- package/dist/runtime/components/media/components/MediaContainer.vue +11 -13
- package/dist/runtime/components/media/components/OverviewPanel.vue +5 -2
- package/dist/runtime/components/media/components/PresentersPanel.vue +74 -55
- package/dist/runtime/components/media/components/SessionReporting.vue +5 -4
- package/dist/runtime/components/media/components/SponsorsPanel.vue +13 -12
- package/dist/runtime/components/presenters/PresenterListing.vue +33 -25
- package/dist/runtime/components/presenters/PresenterModal.vue +26 -21
- package/dist/runtime/components/presenters/Presenters.vue +139 -0
- package/dist/runtime/components/profile/Profile.vue +10 -6
- package/dist/runtime/components/profile/components/Sidebar.vue +1 -1
- package/dist/runtime/components/profile/components/SidebarNavItem.vue +2 -4
- package/dist/runtime/components/profile/tabs/Favorites.vue +5 -4
- package/dist/runtime/components/profile/tabs/GeneralInformation.vue +26 -16
- package/dist/runtime/components/profile/tabs/ProfileImage.vue +7 -6
- package/dist/runtime/components/registration/AlreadyRegisteredModal.vue +102 -0
- package/dist/runtime/components/registration/PaymentForm.vue +136 -0
- package/dist/runtime/components/registration/RegistrationForm.vue +417 -0
- package/dist/runtime/components/registration/RegistrationGroupSelect.vue +146 -0
- package/dist/runtime/components/registration/StripePaymentForm.vue +121 -0
- package/dist/runtime/components/support/FAQAccordion.vue +8 -7
- package/dist/runtime/composables/useAdobeLaunch.d.ts +2 -7
- package/dist/runtime/composables/useAdobeLaunch.mjs +2 -2
- package/dist/runtime/composables/useAgenda.d.ts +13 -1
- package/dist/runtime/composables/useAgenda.mjs +125 -25
- package/dist/runtime/composables/useApi.d.ts +1 -1
- package/dist/runtime/composables/useAuth.d.ts +1 -1
- package/dist/runtime/composables/useAuth.mjs +1 -1
- package/dist/runtime/composables/useClassBinding.d.ts +3 -1
- package/dist/runtime/composables/useConferenceHelpers.d.ts +7 -3
- package/dist/runtime/composables/useConferenceHelpers.mjs +26 -15
- package/dist/runtime/composables/useEventHooks.d.ts +29 -0
- package/dist/runtime/composables/useEventHooks.mjs +21 -0
- package/dist/runtime/composables/useEvents.d.ts +17 -1
- package/dist/runtime/composables/useEvents.mjs +35 -9
- package/dist/runtime/composables/useLogin.mjs +9 -5
- package/dist/runtime/composables/useNavigation.d.ts +1 -1
- package/dist/runtime/composables/useNavigation.mjs +4 -2
- package/dist/runtime/composables/usePresentation.d.ts +2 -2
- package/dist/runtime/composables/usePresentation.mjs +8 -7
- package/dist/runtime/composables/usePresenter.d.ts +2 -2
- package/dist/runtime/composables/usePresenters.d.ts +2 -2
- package/dist/runtime/composables/usePusher.d.ts +4 -0
- package/dist/runtime/composables/usePusher.mjs +38 -26
- package/dist/runtime/composables/useScripts.mjs +1 -1
- package/dist/runtime/composables/useStream.d.ts +2 -3
- package/dist/runtime/composables/useStream.mjs +8 -2
- package/dist/runtime/composables/useUcc.d.ts +1 -1
- package/dist/runtime/composables/useUcc.mjs +29 -23
- package/dist/runtime/enums/general.d.ts +4 -1
- package/dist/runtime/enums/general.mjs +4 -1
- package/dist/runtime/models/adobeLaunch.d.ts +6 -0
- package/dist/runtime/models/adobeLaunch.mjs +0 -0
- package/dist/runtime/models/analytics.d.ts +6 -0
- package/dist/runtime/models/analytics.mjs +0 -0
- package/dist/runtime/models/attendeeList.d.ts +1 -1
- package/dist/runtime/models/conference.d.ts +122 -91
- package/dist/runtime/models/conversation.d.ts +11 -13
- package/dist/runtime/models/document.d.ts +5 -5
- package/dist/runtime/models/globalConfig.d.ts +9 -3
- package/dist/runtime/models/group.d.ts +38 -8
- package/dist/runtime/models/icons.d.ts +8 -1
- package/dist/runtime/models/index.d.ts +20 -0
- package/dist/runtime/models/index.mjs +20 -0
- package/dist/runtime/models/link.d.ts +4 -4
- package/dist/runtime/models/loginParams.d.ts +5 -0
- package/dist/runtime/models/loginParams.mjs +0 -0
- package/dist/runtime/models/navigationConfig.d.ts +7 -7
- package/dist/runtime/models/pagination.d.ts +11 -11
- package/dist/runtime/models/portal.d.ts +15 -10
- package/dist/runtime/models/templateConfig.d.ts +13 -7
- package/dist/runtime/models/ucc.d.ts +22 -0
- package/dist/runtime/models/ucc.mjs +0 -0
- package/dist/runtime/models/user.d.ts +25 -12
- package/dist/runtime/models/vButton.d.ts +7 -0
- package/dist/runtime/models/vButton.mjs +0 -0
- package/dist/runtime/models/video.d.ts +5 -4
- package/dist/runtime/models/virtualPagesConfig.d.ts +223 -0
- package/dist/runtime/models/virtualPagesConfig.mjs +0 -0
- package/dist/runtime/plugin.mjs +18 -9
- package/dist/runtime/store/affiliates.d.ts +4 -1
- package/dist/runtime/store/affiliates.mjs +38 -0
- package/dist/runtime/store/attendeeList.d.ts +1 -1
- package/dist/runtime/store/auth.d.ts +3 -7
- package/dist/runtime/store/auth.mjs +6 -0
- package/dist/runtime/store/conferences.d.ts +3 -1
- package/dist/runtime/store/conferences.mjs +14 -9
- package/dist/runtime/store/conversations.d.ts +78 -10
- package/dist/runtime/store/conversations.mjs +255 -22
- package/dist/runtime/store/modalPlayerConfig.d.ts +27 -0
- package/dist/runtime/store/modalPlayerConfig.mjs +58 -0
- package/dist/runtime/store/navigationConfig.d.ts +1 -1
- package/dist/runtime/store/presentations.d.ts +2 -2
- package/dist/runtime/store/templateConfigs.d.ts +7 -6
- package/dist/runtime/store/templateConfigs.mjs +7 -6
- package/dist/runtime/store/user.mjs +0 -1
- package/dist/runtime/v3plusCommonPlugin.d.ts +1 -1
- package/dist/types.d.mts +3 -2
- package/dist/types.d.ts +3 -2
- package/package.json +12 -9
- package/dist/runtime/components/media/components/JsonApi.vue +0 -33
- package/dist/runtime/components/media/components/JsonApi.vue.d.ts +0 -16
- package/dist/runtime/components/media/components/PresentersPanel.vue.d.ts +0 -32
- package/dist/runtime/components/media/components/WindowContent.vue +0 -118
- package/dist/runtime/components/media/components/WindowContent.vue.d.ts +0 -50
- package/dist/runtime/components/media/components/WindowSlide.vue +0 -92
- package/dist/runtime/components/media/components/WindowSlide.vue.d.ts +0 -36
- package/dist/runtime/models/authUser.d.ts +0 -16
- /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 {
|
|
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 +
|
|
24
|
+
return eventPathPrefix + confId;
|
|
25
25
|
} else {
|
|
26
|
-
return `/upcoming-events/${
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
44
|
+
handleRedirect();
|
|
41
45
|
}).catch((error) => {
|
|
42
46
|
if (error.response.status === 423) {
|
|
43
47
|
tooManySessions.value = true;
|
|
@@ -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")
|
|
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
|
-
|
|
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
|
|
2
|
-
import type { Conference, Presentation, Track } from
|
|
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
|
-
|
|
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
|
-
|
|
23
|
-
|
|
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
|
-
|
|
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
|
|
2
|
-
import type { Presenter } from
|
|
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
|
|
2
|
-
import type { Conference, Presenter } from
|
|
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
|
|
@@ -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
|
|
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
|
-
|
|
19
|
+
encrypted: true,
|
|
20
|
+
authEndpoint: "https://rubiconportals.com/broadcasting/auth",
|
|
21
|
+
csrfToken: user.value?.token,
|
|
28
22
|
auth: {
|
|
29
23
|
headers: {
|
|
30
|
-
|
|
24
|
+
"X-Portal-Token": commonModule.options.portalHash,
|
|
25
|
+
Authorization: token,
|
|
26
|
+
Accept: "application/json"
|
|
31
27
|
}
|
|
32
28
|
}
|
|
33
29
|
});
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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((
|
|
40
|
-
console.log("
|
|
41
|
-
setOnlineUser(
|
|
42
|
-
setRemoteUserOnline(
|
|
43
|
-
}).leaving((
|
|
44
|
-
console.log("
|
|
45
|
-
removeOnlineUser(
|
|
46
|
-
setRemoteUserOffline(
|
|
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
|
-
|
|
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
|
-
|
|
2
|
-
import {
|
|
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
|
|
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,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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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")
|
|
91
|
-
|
|
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")
|
|
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
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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((
|
|
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
|
-
|
|
132
|
+
const options = {
|
|
129
133
|
email: ssoEvent.profile.email,
|
|
130
134
|
ucid: ssoEvent.profile.ucid
|
|
131
135
|
};
|
|
132
|
-
if (!
|
|
136
|
+
if (!isLoggedIn.value) {
|
|
133
137
|
loginV3(options);
|
|
134
138
|
}
|
|
135
139
|
};
|
|
136
140
|
const toggleEmailFormDisplay = (show) => {
|
|
137
|
-
document.getElementById("uccEmailForm")
|
|
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;
|
|
File without changes
|
|
File without changes
|