@saooti/octopus-sdk 40.0.3 → 40.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/index.ts +31 -31
- package/package.json +1 -1
- package/plateform.conf +1 -1
- package/src/App.vue +9 -3
- package/src/api/classicApi.ts +1 -1
- package/src/components/composable/player/usePlayerDisplayTime.ts +33 -0
- package/src/components/composable/player/usePlayerLive.ts +150 -0
- package/src/components/composable/player/usePlayerLogic.ts +265 -0
- package/src/components/composable/player/usePlayerLogicProgress.ts +135 -0
- package/src/components/composable/player/usePlayerStitching.ts +213 -0
- package/src/components/composable/player/usePlayerTranscript.ts +120 -0
- package/src/components/composable/player/usePlayerVast.ts +207 -0
- package/src/components/composable/podcasts/useCountdown.ts +53 -0
- package/src/components/composable/podcasts/usePodcastView.ts +85 -0
- package/src/components/composable/radio/usefetchRadioData.ts +75 -0
- package/src/components/composable/route/useAdvancedParamInit.ts +165 -0
- package/src/components/composable/route/useRouteUpdateParams.ts +48 -0
- package/src/components/composable/route/useRubriquesFilterComputed.ts +24 -0
- package/src/components/composable/route/useRubriquesFilterParam.ts +32 -0
- package/src/components/composable/route/useSeoTitleUrl.ts +30 -0
- package/src/components/composable/route/useSimplePageParam.ts +50 -0
- package/src/components/composable/useErrorHandler.ts +25 -0
- package/src/components/composable/useImageProxy.ts +28 -0
- package/src/components/composable/useInit.ts +38 -0
- package/src/components/composable/useMetaTitle.ts +19 -0
- package/src/components/composable/useMetaTitleWatch.ts +14 -0
- package/src/components/composable/useOrgaComputed.ts +23 -0
- package/src/components/composable/useOrganisationFilter.ts +65 -0
- package/src/components/composable/useResizePhone.ts +27 -0
- package/src/components/composable/useSelenium.ts +10 -0
- package/src/components/composable/useTagOf.ts +21 -0
- package/src/components/display/accessibility/AccessibilityModal.vue +136 -0
- package/src/components/display/aggregator/RssSection.vue +1 -4
- package/src/components/display/categories/CategoryChooser.vue +1 -1
- package/src/components/display/categories/CategoryFilter.vue +7 -3
- package/src/components/display/categories/CategoryList.vue +5 -2
- package/src/components/display/comments/CommentInput.vue +0 -3
- package/src/components/display/comments/CommentList.vue +6 -2
- package/src/components/display/comments/CommentPlayer.vue +5 -2
- package/src/components/display/comments/CommentSection.vue +0 -2
- package/src/components/display/comments/item/CommentBasicView.vue +4 -4
- package/src/components/display/comments/item/CommentItem.vue +0 -4
- package/src/components/display/comments/item/CommentMoreActions.vue +6 -2
- package/src/components/display/emission/EmissionInlineList.vue +6 -6
- package/src/components/display/emission/EmissionItem.vue +13 -6
- package/src/components/display/emission/EmissionList.vue +5 -2
- package/src/components/display/emission/EmissionPlayerItem.vue +8 -5
- package/src/components/display/emission/EmissionPresentationItem.vue +16 -7
- package/src/components/display/emission/EmissionPresentationList.vue +10 -7
- package/src/components/display/filter/AdvancedSearch.vue +9 -6
- package/src/components/display/filter/CategorySearchFilter.vue +0 -2
- package/src/components/display/filter/ProductorSearch.vue +8 -3
- package/src/components/display/filter/RubriqueFilter.vue +6 -2
- package/src/components/display/list/ListPaginate.vue +9 -6
- package/src/components/display/list/SwiperList.vue +6 -5
- package/src/components/display/live/CountDown.vue +7 -15
- package/src/components/display/live/CountdownOctopus.vue +10 -30
- package/src/components/display/live/LiveItem.vue +0 -2
- package/src/components/display/live/LiveList.vue +9 -4
- package/src/components/display/live/RadioCurrently.vue +9 -5
- package/src/components/display/live/RadioImage.vue +6 -4
- package/src/components/display/live/RadioItem.vue +1 -2
- package/src/components/display/live/RadioList.vue +5 -3
- package/src/components/display/live/RadioPlanning.vue +10 -7
- package/src/components/display/organisation/OrganisationChooser.vue +8 -4
- package/src/components/display/participant/ParticipantInlineList.vue +5 -5
- package/src/components/display/participant/ParticipantItem.vue +13 -5
- package/src/components/display/participant/ParticipantList.vue +6 -3
- package/src/components/display/playlist/PlaylistItem.vue +12 -5
- package/src/components/display/playlist/PlaylistList.vue +6 -3
- package/src/components/display/playlist/PodcastList.vue +8 -4
- package/src/components/display/podcastmaker/PodcastmakerHeader.vue +6 -3
- package/src/components/display/podcasts/DownloadPodcastButton.vue +2 -4
- package/src/components/display/podcasts/PodcastImage.vue +6 -3
- package/src/components/display/podcasts/PodcastInlineListTemplate.vue +7 -4
- package/src/components/display/podcasts/PodcastItem.vue +1 -1
- package/src/components/display/podcasts/PodcastItemInfo.vue +6 -3
- package/src/components/display/podcasts/PodcastList.vue +6 -3
- package/src/components/display/podcasts/PodcastModuleBox.vue +22 -9
- package/src/components/display/podcasts/PodcastPlayBar.vue +1 -3
- package/src/components/display/podcasts/PodcastPlayButton.vue +1 -3
- package/src/components/display/podcasts/PodcastRawTranscript.vue +79 -10
- package/src/components/display/podcasts/PodcastRubriqueList.vue +4 -3
- package/src/components/display/podcasts/TagList.vue +5 -2
- package/src/components/display/podcasts/VideoModuleBox.vue +6 -3
- package/src/components/display/rubriques/RubriqueChooser.vue +0 -2
- package/src/components/display/rubriques/RubriqueList.vue +7 -5
- package/src/components/display/sharing/ShareButtons.vue +4 -2
- package/src/components/display/sharing/ShareDistribution.vue +4 -2
- package/src/components/form/ClassicEmojiPicker.vue +5 -3
- package/src/components/misc/ClassicLazy.vue +2 -2
- package/src/components/misc/FooterGarSection.vue +2 -3
- package/src/components/misc/FooterSection.vue +9 -5
- package/src/components/misc/MobileMenu.vue +5 -3
- package/src/components/misc/TopBar.vue +8 -6
- package/src/components/misc/TopBarMainContent.vue +8 -4
- package/src/components/misc/modal/ClassicModalInBody.vue +2 -3
- package/src/components/misc/modal/ClipboardModal.vue +4 -3
- package/src/components/misc/modal/NewsletterModal.vue +4 -3
- package/src/components/misc/modal/ShareModalPlayer.vue +4 -2
- package/src/components/misc/player/PlayerCompact.vue +30 -41
- package/src/components/misc/player/PlayerComponent.vue +69 -84
- package/src/components/misc/player/PlayerLarge.vue +43 -58
- package/src/components/misc/player/elements/PlayerImage.vue +6 -3
- package/src/components/misc/player/elements/PlayerTitle.vue +6 -2
- package/src/components/misc/player/radio/RadioHistory.vue +2 -4
- package/src/components/misc/player/video/PlayerVideoHls.vue +6 -7
- package/src/components/pages/EmissionPage.vue +19 -7
- package/src/components/pages/EmissionsPage.vue +31 -23
- package/src/components/pages/HomePage.vue +5 -2
- package/src/components/pages/PageLogout.vue +0 -2
- package/src/components/pages/PageNotFound.vue +11 -15
- package/src/components/pages/ParticipantPage.vue +18 -7
- package/src/components/pages/ParticipantsPage.vue +16 -21
- package/src/components/pages/PlaylistPage.vue +18 -7
- package/src/components/pages/PlaylistsPage.vue +20 -29
- package/src/components/pages/PodcastPage.vue +12 -6
- package/src/components/pages/PodcastsPage.vue +46 -48
- package/src/components/pages/RadioPage.vue +9 -6
- package/src/components/pages/RubriquePage.vue +41 -52
- package/src/components/pages/VideoPage.vue +152 -166
- package/src/helper/cookiesHelper.ts +20 -0
- package/src/helper/displayHelper.ts +15 -0
- package/src/helper/downloadHelper.ts +30 -0
- package/src/helper/{fetch.ts → fetchHelper.ts} +0 -1
- package/src/helper/loadScript.ts +22 -0
- package/src/helper/radio/radioHelper.ts +15 -0
- package/src/helper/{string.ts → stringHelper.ts} +5 -0
- package/src/locale/de.ts +4 -0
- package/src/locale/en.ts +4 -0
- package/src/locale/es.ts +4 -0
- package/src/locale/fr.ts +4 -0
- package/src/locale/it.ts +4 -0
- package/src/locale/sl.ts +4 -0
- package/src/stores/AuthStore.ts +1 -2
- package/src/stores/CommentStore.ts +8 -8
- package/src/stores/PlayerStore.ts +1 -1
- package/src/style/general.scss +15 -1
- package/src/components/mixins/cookies.ts +0 -22
- package/src/components/mixins/displayMethods.ts +0 -17
- package/src/components/mixins/download.ts +0 -33
- package/src/components/mixins/fetchParameters.ts +0 -16
- package/src/components/mixins/handle403.ts +0 -22
- package/src/components/mixins/imageProxy.ts +0 -28
- package/src/components/mixins/init.ts +0 -34
- package/src/components/mixins/loadScript.ts +0 -25
- package/src/components/mixins/metaTitle.ts +0 -15
- package/src/components/mixins/metaTitleWatch.ts +0 -26
- package/src/components/mixins/orgaComputed.ts +0 -23
- package/src/components/mixins/organisationFilter.ts +0 -56
- package/src/components/mixins/player/playerDisplayTime.ts +0 -35
- package/src/components/mixins/player/playerLive.ts +0 -144
- package/src/components/mixins/player/playerLogic.ts +0 -275
- package/src/components/mixins/player/playerLogicProgress.ts +0 -135
- package/src/components/mixins/player/playerStitching.ts +0 -202
- package/src/components/mixins/player/playerTranscript.ts +0 -113
- package/src/components/mixins/player/playerVast.ts +0 -198
- package/src/components/mixins/podcast/countdown.ts +0 -45
- package/src/components/mixins/podcast/podcastView.ts +0 -63
- package/src/components/mixins/radio/fetchRadioData.ts +0 -77
- package/src/components/mixins/resizePhone.ts +0 -26
- package/src/components/mixins/routeParam/advancedParamInit.ts +0 -202
- package/src/components/mixins/routeParam/paginateParamInit.ts +0 -43
- package/src/components/mixins/routeParam/routeParams.ts +0 -33
- package/src/components/mixins/routeParam/rubriquesFilterComputed.ts +0 -22
- package/src/components/mixins/routeParam/rubriquesFilterParam.ts +0 -29
- package/src/components/mixins/selenium.ts +0 -7
- package/src/components/mixins/seoTitleUrl.ts +0 -26
- package/src/components/mixins/tagOfMixins.ts +0 -19
- package/src/helper/uuidGenerator.ts +0 -7
- /package/src/{helper → components/composable}/useEventListener.ts +0 -0
- /package/src/{components/mixins/debounce.ts → helper/debounceHelper.ts} +0 -0
- /package/src/helper/{dom.ts → domHelper.ts} +0 -0
- /package/src/helper/{duration.ts → durationHelper.ts} +0 -0
|
@@ -39,60 +39,49 @@
|
|
|
39
39
|
</button>
|
|
40
40
|
</div>
|
|
41
41
|
</template>
|
|
42
|
-
<script lang="ts">
|
|
42
|
+
<script setup lang="ts">
|
|
43
43
|
import ChevronUpIcon from "vue-material-design-icons/ChevronUp.vue";
|
|
44
44
|
import WindowCloseIcon from "vue-material-design-icons/WindowClose.vue";
|
|
45
|
-
import {
|
|
46
|
-
import imageProxy from "../../mixins/imageProxy";
|
|
45
|
+
import {usePlayerDisplayTime} from "../../composable/player/usePlayerDisplayTime";
|
|
47
46
|
import PlayerTitle from "./elements/PlayerTitle.vue";
|
|
48
47
|
import PlayerChaptering from "./chaptering/PlayerChaptering.vue";
|
|
49
48
|
import PlayerImage from "./elements/PlayerImage.vue";
|
|
50
49
|
import PlayerPlayButton from "./elements/PlayerPlayButton.vue";
|
|
51
50
|
import PlayerSpeedButton from "./elements/PlayerSpeedButton.vue";
|
|
52
|
-
import { defineAsyncComponent
|
|
51
|
+
import { defineAsyncComponent} from "vue";
|
|
53
52
|
const PlayerProgressBar = defineAsyncComponent(
|
|
54
53
|
() => import("./progressbar/PlayerProgressBar.vue"),
|
|
55
54
|
);
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
//Props
|
|
56
|
+
defineProps( {
|
|
57
|
+
playerError: { default: false, type: Boolean },
|
|
58
|
+
displayAlertBar: { default: false, type: Boolean },
|
|
59
|
+
percentLiveProgress: { default: 0, type: Number },
|
|
60
|
+
durationLivePosition: { default: 0, type: Number },
|
|
61
|
+
listenTime: { default: 0, type: Number },
|
|
62
|
+
hlsReady: { default: false, type: Boolean },
|
|
63
|
+
});
|
|
58
64
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
65
|
+
//Emits
|
|
66
|
+
const emit = defineEmits(['stopPlayer', 'changePlayerLargeVersion']);
|
|
67
|
+
|
|
68
|
+
//Composables
|
|
69
|
+
const {
|
|
70
|
+
transcriptText,
|
|
71
|
+
radioUrl,
|
|
72
|
+
isAdPlaying,
|
|
73
|
+
displayPlayTime,
|
|
74
|
+
displayTotalTime,
|
|
75
|
+
} = usePlayerDisplayTime();
|
|
76
|
+
|
|
77
|
+
function stopPlayer() {
|
|
78
|
+
emit("stopPlayer");
|
|
79
|
+
}
|
|
80
|
+
function changePlayerLargeVersion() {
|
|
81
|
+
emit("changePlayerLargeVersion");
|
|
82
|
+
}
|
|
71
83
|
|
|
72
|
-
props: {
|
|
73
|
-
playerError: { default: false, type: Boolean },
|
|
74
|
-
displayAlertBar: { default: false, type: Boolean },
|
|
75
|
-
percentLiveProgress: { default: 0, type: Number },
|
|
76
|
-
durationLivePosition: { default: 0, type: Number },
|
|
77
|
-
listenTime: { default: 0, type: Number },
|
|
78
|
-
hlsReady: { default: false, type: Boolean },
|
|
79
|
-
},
|
|
80
84
|
|
|
81
|
-
emits: ["stopPlayer", "changePlayerLargeVersion"],
|
|
82
|
-
data() {
|
|
83
|
-
return {
|
|
84
|
-
showTimeline: false as boolean,
|
|
85
|
-
};
|
|
86
|
-
},
|
|
87
|
-
methods: {
|
|
88
|
-
stopPlayer() {
|
|
89
|
-
this.$emit("stopPlayer");
|
|
90
|
-
},
|
|
91
|
-
changePlayerLargeVersion() {
|
|
92
|
-
this.$emit("changePlayerLargeVersion");
|
|
93
|
-
},
|
|
94
|
-
},
|
|
95
|
-
});
|
|
96
85
|
</script>
|
|
97
86
|
|
|
98
87
|
<style lang="scss">
|
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
id="octopus-player-component"
|
|
4
4
|
class="player-container"
|
|
5
5
|
:class="{
|
|
6
|
-
'player-video': playerVideo,
|
|
6
|
+
'player-video': playerStore.playerVideo,
|
|
7
7
|
'overflow-hidden': !display
|
|
8
8
|
}"
|
|
9
|
-
:style="{ height: playerHeight }"
|
|
9
|
+
:style="{ height: playerStore.playerHeight }"
|
|
10
10
|
@transitionend="onHidden"
|
|
11
11
|
>
|
|
12
12
|
<audio
|
|
13
13
|
id="audio-player"
|
|
14
|
-
:src="!playerLive && !playerRadio ? audioUrlToPlay : undefined"
|
|
14
|
+
:src="!playerStore.playerLive && !playerStore.playerRadio ? audioUrlToPlay : undefined"
|
|
15
15
|
autoplay
|
|
16
16
|
@timeupdate="onTimeUpdate"
|
|
17
17
|
@ended="onFinished"
|
|
@@ -24,10 +24,10 @@
|
|
|
24
24
|
/>
|
|
25
25
|
<div id="ad-container"></div>
|
|
26
26
|
<template v-if="displayWithTimeout">
|
|
27
|
-
<PlayerVideo v-if="playerVideo && isNotVideoPage" />
|
|
28
|
-
<template v-else-if="!playerVideo">
|
|
27
|
+
<PlayerVideo v-if="playerStore.playerVideo && isNotVideoPage" />
|
|
28
|
+
<template v-else-if="!playerStore.playerVideo">
|
|
29
29
|
<PlayerCompact
|
|
30
|
-
v-if="!playerLargeVersion"
|
|
30
|
+
v-if="!playerStore.playerLargeVersion"
|
|
31
31
|
:player-error="playerError"
|
|
32
32
|
:display-alert-bar="displayAlertBar"
|
|
33
33
|
:percent-live-progress="percentLiveProgress"
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
:listen-time="listenTime"
|
|
36
36
|
:hls-ready="hlsReady"
|
|
37
37
|
@stop-player="stopPlayer"
|
|
38
|
-
@change-player-large-version="playerUpdateLargeVersion(true)"
|
|
38
|
+
@change-player-large-version="playerStore.playerUpdateLargeVersion(true)"
|
|
39
39
|
/>
|
|
40
40
|
<PlayerLarge
|
|
41
41
|
v-else
|
|
@@ -46,17 +46,19 @@
|
|
|
46
46
|
:listen-time="listenTime"
|
|
47
47
|
:hls-ready="hlsReady"
|
|
48
48
|
@stop-player="stopPlayer"
|
|
49
|
-
@change-player-large-version="playerUpdateLargeVersion(false)"
|
|
49
|
+
@change-player-large-version="playerStore.playerUpdateLargeVersion(false)"
|
|
50
50
|
/>
|
|
51
51
|
</template>
|
|
52
52
|
</template>
|
|
53
53
|
</section>
|
|
54
54
|
</template>
|
|
55
|
-
<script lang="ts">
|
|
56
|
-
import {
|
|
55
|
+
<script setup lang="ts">
|
|
56
|
+
import {usePlayerLogic} from "../../composable/player/usePlayerLogic";
|
|
57
57
|
import { usePlayerStore } from "../../../stores/PlayerStore";
|
|
58
|
-
import {
|
|
59
|
-
import {
|
|
58
|
+
import { defineAsyncComponent, ref, computed, watch } from "vue";
|
|
59
|
+
import { useRoute } from "vue-router";
|
|
60
|
+
|
|
61
|
+
//Components
|
|
60
62
|
const PlayerVideo = defineAsyncComponent(
|
|
61
63
|
() => import("./video/PlayerVideo.vue"),
|
|
62
64
|
);
|
|
@@ -66,82 +68,65 @@ const PlayerCompact = defineAsyncComponent(
|
|
|
66
68
|
const PlayerLarge = defineAsyncComponent(
|
|
67
69
|
() => import("../player/PlayerLarge.vue"),
|
|
68
70
|
);
|
|
69
|
-
|
|
70
|
-
|
|
71
|
+
// Define stores
|
|
72
|
+
const playerStore = usePlayerStore();
|
|
73
|
+
const route = useRoute();
|
|
71
74
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
PlayerVideo,
|
|
76
|
-
},
|
|
77
|
-
mixins: [playerLogic],
|
|
78
|
-
emits: ["hide"],
|
|
79
|
-
data() {
|
|
80
|
-
return {
|
|
81
|
-
forceHide: false as boolean,
|
|
82
|
-
listenTime: 0 as number,
|
|
83
|
-
notListenTime: 0 as number,
|
|
84
|
-
lastSend: 0 as number,
|
|
85
|
-
downloadId: null as string | null,
|
|
86
|
-
playerError: false as boolean,
|
|
87
|
-
listenError: false as boolean,
|
|
88
|
-
percentLiveProgress: 0 as number,
|
|
89
|
-
durationLivePosition: 0 as number,
|
|
90
|
-
displayAlertBar: false as boolean,
|
|
91
|
-
audioUrlToPlay: "" as string,
|
|
92
|
-
hlsReady: false as boolean,
|
|
93
|
-
displayWithTimeout: false as boolean,
|
|
94
|
-
};
|
|
95
|
-
},
|
|
96
|
-
computed: {
|
|
97
|
-
...mapState(usePlayerStore, [
|
|
98
|
-
"playerStatus",
|
|
99
|
-
"playerHeight",
|
|
100
|
-
"playerLargeVersion",
|
|
101
|
-
"playerVideo",
|
|
102
|
-
]),
|
|
103
|
-
display() {
|
|
104
|
-
return "STOPPED" !== this.playerStatus;
|
|
105
|
-
},
|
|
106
|
-
isNotVideoPage() {
|
|
107
|
-
return "video" !== this.$route.name;
|
|
108
|
-
},
|
|
109
|
-
},
|
|
75
|
+
// Variables
|
|
76
|
+
const displayWithTimeout= ref(false);
|
|
77
|
+
const forceHide= ref(false);
|
|
110
78
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
79
|
+
//Composable
|
|
80
|
+
const {
|
|
81
|
+
audioUrlToPlay,
|
|
82
|
+
listenTime,
|
|
83
|
+
playerError,
|
|
84
|
+
percentLiveProgress,
|
|
85
|
+
durationLivePosition,
|
|
86
|
+
displayAlertBar,
|
|
87
|
+
hlsReady,
|
|
88
|
+
checkDelaytWithStitching,
|
|
89
|
+
stopPlayer,
|
|
90
|
+
onError,
|
|
91
|
+
onTimeUpdate,
|
|
92
|
+
onSeeked,
|
|
93
|
+
onFinished,
|
|
94
|
+
onPlay
|
|
95
|
+
} = usePlayerLogic(forceHide);
|
|
125
96
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
}
|
|
137
|
-
},
|
|
138
|
-
onPause() {
|
|
139
|
-
if ("PLAYING" === this.playerStatus) {
|
|
140
|
-
this.playerChangeStatus(true);
|
|
141
|
-
}
|
|
142
|
-
},
|
|
143
|
-
},
|
|
97
|
+
// Emits
|
|
98
|
+
const emit = defineEmits(['hide']);
|
|
99
|
+
|
|
100
|
+
// Computed
|
|
101
|
+
const display = computed(() => { return "STOPPED" !== playerStore.playerStatus;});
|
|
102
|
+
const isNotVideoPage = computed(() => { return "video" !== route.name});
|
|
103
|
+
|
|
104
|
+
// Watch
|
|
105
|
+
watch(()=>playerStore.playerHeight, async () => {
|
|
106
|
+
emit("hide", 0 === playerStore.playerHeight);
|
|
144
107
|
});
|
|
108
|
+
watch(display, async () => {
|
|
109
|
+
if (display.value) {
|
|
110
|
+
displayWithTimeout.value = display.value;
|
|
111
|
+
} else {
|
|
112
|
+
setTimeout(() => {
|
|
113
|
+
displayWithTimeout.value = display.value;
|
|
114
|
+
}, 3000);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
// Functions
|
|
119
|
+
function onHidden(): void {
|
|
120
|
+
if (forceHide.value) {
|
|
121
|
+
playerStore.playerPlay();
|
|
122
|
+
forceHide.value = false;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
function onPause() {
|
|
126
|
+
if ("PLAYING" === playerStore.playerStatus) {
|
|
127
|
+
playerStore.playerChangeStatus(true);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
145
130
|
</script>
|
|
146
131
|
|
|
147
132
|
<style lang="scss">
|
|
@@ -66,18 +66,17 @@
|
|
|
66
66
|
</div>
|
|
67
67
|
</div>
|
|
68
68
|
</template>
|
|
69
|
-
|
|
69
|
+
|
|
70
|
+
<script setup lang="ts">
|
|
70
71
|
import Rewind15Icon from "vue-material-design-icons/Rewind15.vue";
|
|
71
72
|
import FastForward15Icon from "vue-material-design-icons/FastForward15.vue";
|
|
72
73
|
import ChevronDownIcon from "vue-material-design-icons/ChevronDown.vue";
|
|
73
|
-
import {
|
|
74
|
-
import imageProxy from "../../mixins/imageProxy";
|
|
74
|
+
import {usePlayerDisplayTime} from "../../composable/player/usePlayerDisplayTime";
|
|
75
75
|
import PlayerChaptering from "./chaptering/PlayerChaptering.vue";
|
|
76
76
|
import PlayerImage from "./elements/PlayerImage.vue";
|
|
77
77
|
import PlayerTitle from "./elements/PlayerTitle.vue";
|
|
78
78
|
import PlayerPlayButton from "./elements/PlayerPlayButton.vue";
|
|
79
|
-
import { defineAsyncComponent
|
|
80
|
-
import { mapState, mapActions } from "pinia";
|
|
79
|
+
import { defineAsyncComponent } from "vue";
|
|
81
80
|
import { usePlayerStore } from "../../../stores/PlayerStore";
|
|
82
81
|
const RadioHistory = defineAsyncComponent(
|
|
83
82
|
() => import("./radio/RadioHistory.vue"),
|
|
@@ -85,62 +84,48 @@ const RadioHistory = defineAsyncComponent(
|
|
|
85
84
|
const PlayerProgressBar = defineAsyncComponent(
|
|
86
85
|
() => import("./progressbar/PlayerProgressBar.vue"),
|
|
87
86
|
);
|
|
88
|
-
export default defineComponent({
|
|
89
|
-
name: "PlayerLarge",
|
|
90
87
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
FastForward15Icon,
|
|
101
|
-
},
|
|
102
|
-
mixins: [playerDisplayTime, imageProxy],
|
|
88
|
+
//Props
|
|
89
|
+
defineProps( {
|
|
90
|
+
playerError: { default: false, type: Boolean },
|
|
91
|
+
displayAlertBar: { default: false, type: Boolean },
|
|
92
|
+
percentLiveProgress: { default: 0, type: Number },
|
|
93
|
+
durationLivePosition: { default: 0, type: Number },
|
|
94
|
+
listenTime: { default: 0, type: Number },
|
|
95
|
+
hlsReady: { default: false, type: Boolean },
|
|
96
|
+
});
|
|
103
97
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
displayAlertBar: { default: false, type: Boolean },
|
|
107
|
-
percentLiveProgress: { default: 0, type: Number },
|
|
108
|
-
durationLivePosition: { default: 0, type: Number },
|
|
109
|
-
listenTime: { default: 0, type: Number },
|
|
110
|
-
hlsReady: { default: false, type: Boolean },
|
|
111
|
-
},
|
|
98
|
+
//Emits
|
|
99
|
+
const emit = defineEmits(['changePlayerLargeVersion']);
|
|
112
100
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
},
|
|
142
|
-
},
|
|
143
|
-
});
|
|
101
|
+
const playerStore = usePlayerStore();
|
|
102
|
+
|
|
103
|
+
//Composables
|
|
104
|
+
const {
|
|
105
|
+
transcriptText,
|
|
106
|
+
radioUrl,
|
|
107
|
+
isAdPlaying,
|
|
108
|
+
displayPlayTime,
|
|
109
|
+
displayTotalTime,
|
|
110
|
+
} = usePlayerDisplayTime();
|
|
111
|
+
|
|
112
|
+
function changePlayerLargeVersion() {
|
|
113
|
+
emit("changePlayerLargeVersion");
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
function seekClick(addTime: number): void {
|
|
118
|
+
const audioPlayer: HTMLAudioElement | null =
|
|
119
|
+
document.querySelector("#audio-player");
|
|
120
|
+
if (!audioPlayer) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
const seekTo = audioPlayer.currentTime + addTime;
|
|
124
|
+
if (playerStore.playerPodcast || playerStore.playerLive) {
|
|
125
|
+
playerStore.playerUpdateSeekTime(seekTo > 0 ? seekTo : 0);
|
|
126
|
+
}
|
|
127
|
+
audioPlayer.currentTime = seekTo > 0 ? seekTo : 0;
|
|
128
|
+
}
|
|
144
129
|
</script>
|
|
145
130
|
|
|
146
131
|
<style lang="scss">
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
:title="$t('Episode name page', { name: podcastDisplay?.title })"
|
|
18
18
|
>
|
|
19
19
|
<img
|
|
20
|
-
v-lazy="
|
|
20
|
+
v-lazy="useProxyImageUrl(podcastImage, imageWidth)"
|
|
21
21
|
:width="imageWidth"
|
|
22
22
|
:height="imageWidth"
|
|
23
23
|
role="presentation"
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
</template>
|
|
32
32
|
<script lang="ts">
|
|
33
33
|
import LinkVariantIcon from "vue-material-design-icons/LinkVariant.vue";
|
|
34
|
-
import
|
|
34
|
+
import {useImageProxy} from "../../../composable/useImageProxy";
|
|
35
35
|
import { defineComponent } from "vue";
|
|
36
36
|
import { RouteLocationRaw } from "vue-router";
|
|
37
37
|
import { mapState } from "pinia";
|
|
@@ -43,10 +43,13 @@ export default defineComponent({
|
|
|
43
43
|
|
|
44
44
|
components: { LinkVariantIcon },
|
|
45
45
|
|
|
46
|
-
mixins: [imageProxy],
|
|
47
46
|
props: {
|
|
48
47
|
imageWidth: { default: 48, type: Number },
|
|
49
48
|
},
|
|
49
|
+
setup(){
|
|
50
|
+
const { useProxyImageUrl } = useImageProxy();
|
|
51
|
+
return { useProxyImageUrl }
|
|
52
|
+
},
|
|
50
53
|
computed: {
|
|
51
54
|
...mapState(usePlayerStore, [
|
|
52
55
|
"playerPodcast",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
</component>
|
|
16
16
|
</template>
|
|
17
17
|
<script lang="ts">
|
|
18
|
-
import {
|
|
18
|
+
import {useFetchRadio} from "../../../composable/radio/usefetchRadioData";
|
|
19
19
|
import { state } from "../../../../stores/ParamSdkStore";
|
|
20
20
|
import { usePlayerStore } from "../../../../stores/PlayerStore";
|
|
21
21
|
import { useVastStore } from "../../../../stores/VastStore";
|
|
@@ -25,7 +25,6 @@ import { MediaRadio, NextAdvertising } from "@/stores/class/general/player";
|
|
|
25
25
|
import { Podcast } from "@/stores/class/general/podcast";
|
|
26
26
|
export default defineComponent({
|
|
27
27
|
name: "PlayerTitle",
|
|
28
|
-
mixins: [fetchRadioData],
|
|
29
28
|
|
|
30
29
|
props: {
|
|
31
30
|
playerError: { default: false, type: Boolean },
|
|
@@ -33,6 +32,11 @@ export default defineComponent({
|
|
|
33
32
|
titleClass: { default: "", type: String },
|
|
34
33
|
},
|
|
35
34
|
|
|
35
|
+
setup(){
|
|
36
|
+
const { fetchRadioMetadata, displayTitle } = useFetchRadio();
|
|
37
|
+
return { fetchRadioMetadata, displayTitle };
|
|
38
|
+
},
|
|
39
|
+
|
|
36
40
|
data() {
|
|
37
41
|
return {
|
|
38
42
|
radioInterval: undefined as ReturnType<typeof setTimeout> | undefined,
|
|
@@ -41,7 +41,7 @@ import ChevronRightIcon from "vue-material-design-icons/ChevronRight.vue";
|
|
|
41
41
|
import { usePlayerStore } from "../../../../stores/PlayerStore";
|
|
42
42
|
import { mapState } from "pinia";
|
|
43
43
|
import dayjs from "dayjs";
|
|
44
|
-
import
|
|
44
|
+
import radioHelper from "../../../../helper/radio/radioHelper";
|
|
45
45
|
import { defineComponent } from "vue";
|
|
46
46
|
import { MediaRadio } from "@/stores/class/general/player";
|
|
47
47
|
export default defineComponent({
|
|
@@ -51,8 +51,6 @@ export default defineComponent({
|
|
|
51
51
|
ChevronLeftIcon,
|
|
52
52
|
ChevronRightIcon,
|
|
53
53
|
},
|
|
54
|
-
|
|
55
|
-
mixins: [fetchRadioData],
|
|
56
54
|
emits: ["updateNotListenTime"],
|
|
57
55
|
data() {
|
|
58
56
|
return {
|
|
@@ -138,7 +136,7 @@ export default defineComponent({
|
|
|
138
136
|
if (item.podcastId) {
|
|
139
137
|
return item.title;
|
|
140
138
|
}
|
|
141
|
-
return
|
|
139
|
+
return radioHelper.displayTitle(item);
|
|
142
140
|
},
|
|
143
141
|
},
|
|
144
142
|
});
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
<script lang="ts">
|
|
17
17
|
import { usePlayerStore } from "../../../../stores/PlayerStore";
|
|
18
18
|
import { mapActions } from "pinia";
|
|
19
|
-
import {
|
|
19
|
+
import {usePlayerLogicProgress} from "../../../composable/player/usePlayerLogicProgress";
|
|
20
20
|
import videojs, { VideoJsPlayer } from "video.js";
|
|
21
21
|
import qualitySelectorHls from "videojs-quality-selector-hls";
|
|
22
22
|
if (undefined === videojs.getPlugin("qualitySelectorHls")) {
|
|
@@ -25,13 +25,17 @@ if (undefined === videojs.getPlugin("qualitySelectorHls")) {
|
|
|
25
25
|
import { defineComponent } from "vue";
|
|
26
26
|
export default defineComponent({
|
|
27
27
|
name: "PlayerVideoHls",
|
|
28
|
-
mixins: [playerLogicProgress],
|
|
29
28
|
|
|
30
29
|
props: {
|
|
31
30
|
hlsUrl: { default: "", type: String },
|
|
32
31
|
responsive: { default: false, type: Boolean },
|
|
33
32
|
},
|
|
34
33
|
emits: ["changeValid"],
|
|
34
|
+
|
|
35
|
+
setup(){
|
|
36
|
+
const { downloadId, initLiveDownloadId, onTimeUpdateProgress} = usePlayerLogicProgress();
|
|
37
|
+
return { downloadId, initLiveDownloadId, onTimeUpdateProgress }
|
|
38
|
+
},
|
|
35
39
|
data() {
|
|
36
40
|
return {
|
|
37
41
|
errorPlay: "" as string,
|
|
@@ -40,11 +44,6 @@ export default defineComponent({
|
|
|
40
44
|
playing: false as boolean,
|
|
41
45
|
isPaused: false as boolean,
|
|
42
46
|
stalledTimout: undefined as ReturnType<typeof setTimeout> | undefined,
|
|
43
|
-
//playerLive mixins
|
|
44
|
-
downloadId: null as string | null,
|
|
45
|
-
listenTime: 0 as number,
|
|
46
|
-
notListenTime: 0 as number,
|
|
47
|
-
lastSend: 0 as number,
|
|
48
47
|
};
|
|
49
48
|
},
|
|
50
49
|
computed: {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
<div class="d-flex mb-2">
|
|
15
15
|
<div class="w-100">
|
|
16
16
|
<img
|
|
17
|
-
v-lazy="
|
|
17
|
+
v-lazy="useProxyImageUrl(emission.imageUrl, '250')"
|
|
18
18
|
width="250"
|
|
19
19
|
height="250"
|
|
20
20
|
role="presentation"
|
|
@@ -97,11 +97,11 @@
|
|
|
97
97
|
<script lang="ts">
|
|
98
98
|
import classicApi from "../../api/classicApi";
|
|
99
99
|
import { state } from "../../stores/ParamSdkStore";
|
|
100
|
-
import
|
|
101
|
-
import
|
|
102
|
-
import {
|
|
103
|
-
import {
|
|
104
|
-
import {
|
|
100
|
+
import displayHelper from "../../helper/displayHelper";
|
|
101
|
+
import {useImageProxy} from "../composable/useImageProxy";
|
|
102
|
+
import {useOrgaComputed} from "../composable/useOrgaComputed";
|
|
103
|
+
import {useSeoTitleUrl} from "../composable/route/useSeoTitleUrl";
|
|
104
|
+
import {useErrorHandler} from "../composable/useErrorHandler";
|
|
105
105
|
import { Emission } from "@/stores/class/general/emission";
|
|
106
106
|
import ClassicLoading from "../form/ClassicLoading.vue";
|
|
107
107
|
import { defineComponent, defineAsyncComponent } from "vue";
|
|
@@ -109,6 +109,7 @@ import { AxiosError } from "axios";
|
|
|
109
109
|
import { mapActions, mapState } from "pinia";
|
|
110
110
|
import { useAuthStore } from "../../stores/AuthStore";
|
|
111
111
|
import { useGeneralStore } from "../../stores/GeneralStore";
|
|
112
|
+
import { useFilterStore } from "../../stores/FilterStore";
|
|
112
113
|
import { useApiStore } from "../../stores/ApiStore";
|
|
113
114
|
import { Podcast } from "@/stores/class/general/podcast";
|
|
114
115
|
const PodcastFilterList = defineAsyncComponent(
|
|
@@ -151,11 +152,18 @@ export default defineComponent({
|
|
|
151
152
|
PodcastPlayButton,
|
|
152
153
|
PodcastmakerHeader,
|
|
153
154
|
},
|
|
154
|
-
mixins: [displayMethods, handle403, orgaComputed, imageProxy, seoTitleUrl],
|
|
155
155
|
props: {
|
|
156
156
|
emissionId: { default: undefined, type: Number },
|
|
157
157
|
},
|
|
158
158
|
|
|
159
|
+
setup(){
|
|
160
|
+
const { useProxyImageUrl } = useImageProxy();
|
|
161
|
+
const { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();
|
|
162
|
+
const { updatePathParams } = useSeoTitleUrl();
|
|
163
|
+
const {handle403} = useErrorHandler();
|
|
164
|
+
return { useProxyImageUrl, isPodcastmaker, isEditRights, authOrgaId, updatePathParams, handle403 }
|
|
165
|
+
},
|
|
166
|
+
|
|
159
167
|
data() {
|
|
160
168
|
return {
|
|
161
169
|
loaded: false as boolean,
|
|
@@ -172,6 +180,7 @@ export default defineComponent({
|
|
|
172
180
|
computed: {
|
|
173
181
|
...mapState(useAuthStore, ["isGarRole"]),
|
|
174
182
|
...mapState(useApiStore, ["apiUrl"]),
|
|
183
|
+
...mapState(useFilterStore, ["filterOrgaId"]),
|
|
175
184
|
pageParameters() {
|
|
176
185
|
return {
|
|
177
186
|
isShareButtons: state.podcastPage.ShareButtons as boolean,
|
|
@@ -211,6 +220,9 @@ export default defineComponent({
|
|
|
211
220
|
|
|
212
221
|
methods: {
|
|
213
222
|
...mapActions(useGeneralStore, ["contentToDisplayUpdate"]),
|
|
223
|
+
urlify(text:string|undefined){
|
|
224
|
+
return displayHelper.urlify(text);
|
|
225
|
+
},
|
|
214
226
|
initError(): void {
|
|
215
227
|
this.error = true;
|
|
216
228
|
this.loaded = true;
|