@saooti/octopus-sdk 37.0.5 → 37.0.7

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 (263) hide show
  1. package/README.md +2 -2
  2. package/index.html +1 -0
  3. package/index.ts +21 -21
  4. package/package.json +26 -20
  5. package/public/css/fonts/icomoon.eot +0 -0
  6. package/public/css/fonts/icomoon.svg +1 -1
  7. package/public/css/fonts/icomoon.ttf +0 -0
  8. package/public/css/fonts/icomoon.woff +0 -0
  9. package/public/css/fonts/montserrat/Montserrat-Black.ttf +0 -0
  10. package/public/css/fonts/montserrat/Montserrat-BlackItalic.ttf +0 -0
  11. package/public/css/fonts/montserrat/Montserrat-Bold.ttf +0 -0
  12. package/public/css/fonts/montserrat/Montserrat-BoldItalic.ttf +0 -0
  13. package/public/css/fonts/montserrat/Montserrat-ExtraBold.ttf +0 -0
  14. package/public/css/fonts/montserrat/Montserrat-ExtraBoldItalic.ttf +0 -0
  15. package/public/css/fonts/montserrat/Montserrat-ExtraLight.ttf +0 -0
  16. package/public/css/fonts/montserrat/Montserrat-ExtraLightItalic.ttf +0 -0
  17. package/public/css/fonts/montserrat/Montserrat-Italic.ttf +0 -0
  18. package/public/css/fonts/montserrat/Montserrat-Light.ttf +0 -0
  19. package/public/css/fonts/montserrat/Montserrat-LightItalic.ttf +0 -0
  20. package/public/css/fonts/montserrat/Montserrat-Medium.ttf +0 -0
  21. package/public/css/fonts/montserrat/Montserrat-MediumItalic.ttf +0 -0
  22. package/public/css/fonts/montserrat/Montserrat-Regular.ttf +0 -0
  23. package/public/css/fonts/montserrat/Montserrat-SemiBold.ttf +0 -0
  24. package/public/css/fonts/montserrat/Montserrat-SemiBoldItalic.ttf +0 -0
  25. package/public/css/fonts/montserrat/Montserrat-Thin.ttf +0 -0
  26. package/public/css/fonts/montserrat/Montserrat-ThinItalic.ttf +0 -0
  27. package/public/css/fonts/montserrat/style.css +28 -0
  28. package/public/css/fonts/style.css +5 -5
  29. package/src/App.vue +69 -60
  30. package/src/api/classicCrud.ts +12 -12
  31. package/src/api/initialize.ts +1 -1
  32. package/src/assets/bootstrap.scss +9 -0
  33. package/src/assets/general.scss +1 -1
  34. package/src/assets/share.scss +1 -1
  35. package/src/components/display/aggregator/RssSection.vue +3 -3
  36. package/src/components/display/categories/CategoryChooser.vue +73 -60
  37. package/src/components/display/categories/CategoryFilter.vue +134 -90
  38. package/src/components/display/categories/CategoryList.vue +76 -62
  39. package/src/components/display/comments/AddCommentModal.vue +44 -44
  40. package/src/components/display/comments/CommentBasicView.vue +38 -30
  41. package/src/components/display/comments/CommentInput.vue +122 -110
  42. package/src/components/display/comments/CommentItem.vue +144 -102
  43. package/src/components/display/comments/CommentList.vue +117 -85
  44. package/src/components/display/comments/CommentParentInfo.vue +18 -15
  45. package/src/components/display/comments/CommentPlayer.vue +39 -41
  46. package/src/components/display/comments/CommentSection.vue +68 -53
  47. package/src/components/display/edit/EditBox.vue +7 -7
  48. package/src/components/display/edit/EditBoxRadio.vue +3 -4
  49. package/src/components/display/edit/EditCommentBox.vue +34 -36
  50. package/src/components/display/emission/EmissionInlineList.vue +75 -63
  51. package/src/components/display/emission/EmissionItem.vue +47 -35
  52. package/src/components/display/emission/EmissionList.vue +111 -83
  53. package/src/components/display/emission/EmissionPlayerItem.vue +89 -89
  54. package/src/components/display/filter/AdvancedSearch.vue +81 -73
  55. package/src/components/display/filter/CategorySearchFilter.vue +27 -25
  56. package/src/components/display/filter/DateFilter.vue +38 -38
  57. package/src/components/display/filter/MonetizableFilter.vue +16 -14
  58. package/src/components/display/filter/ProductorSearch.vue +55 -47
  59. package/src/components/display/filter/RubriqueChoice.vue +42 -27
  60. package/src/components/display/filter/RubriqueFilter.vue +130 -85
  61. package/src/components/display/filter/SearchOrder.vue +16 -11
  62. package/src/components/display/list/ListPaginate.vue +72 -70
  63. package/src/components/display/list/PaginateParams.vue +29 -30
  64. package/src/components/display/list/PaginateSection.vue +210 -0
  65. package/src/components/display/list/SwiperList.vue +28 -32
  66. package/src/components/display/live/CountDown.vue +12 -14
  67. package/src/components/display/live/LiveHorizontalList.vue +60 -50
  68. package/src/components/display/live/LiveItem.vue +42 -26
  69. package/src/components/display/live/LiveList.vue +92 -65
  70. package/src/components/display/live/RadioCurrently.vue +47 -42
  71. package/src/components/display/live/RadioImage.vue +40 -42
  72. package/src/components/display/live/RadioItem.vue +15 -22
  73. package/src/components/display/live/RadioList.vue +24 -21
  74. package/src/components/display/live/RadioPlanning.vue +105 -68
  75. package/src/components/display/organisation/OrganisationChooser.vue +58 -42
  76. package/src/components/display/organisation/OrganisationChooserLight.vue +27 -19
  77. package/src/components/display/participant/ParticipantItem.vue +89 -76
  78. package/src/components/display/participant/ParticipantList.vue +90 -60
  79. package/src/components/display/playlist/PlaylistItem.vue +32 -35
  80. package/src/components/display/playlist/PlaylistList.vue +70 -52
  81. package/src/components/display/playlist/PodcastList.vue +61 -50
  82. package/src/components/display/playlist/PodcastPlaylistInlineList.vue +47 -38
  83. package/src/components/display/podcasts/AnimatorsItem.vue +17 -15
  84. package/src/components/display/podcasts/ParticipantDescription.vue +21 -22
  85. package/src/components/display/podcasts/PodcastFilterList.vue +28 -26
  86. package/src/components/display/podcasts/PodcastImage.vue +129 -138
  87. package/src/components/display/podcasts/PodcastInlineList.vue +33 -29
  88. package/src/components/display/podcasts/PodcastInlineListClassic.vue +91 -71
  89. package/src/components/display/podcasts/PodcastInlineListTemplate.vue +94 -85
  90. package/src/components/display/podcasts/PodcastItem.vue +96 -90
  91. package/src/components/display/podcasts/PodcastItemInfo.vue +63 -65
  92. package/src/components/display/podcasts/PodcastList.vue +115 -84
  93. package/src/components/display/podcasts/PodcastModuleBox.vue +95 -104
  94. package/src/components/display/podcasts/PodcastPlayBar.vue +45 -32
  95. package/src/components/display/podcasts/PodcastSwiperList.vue +65 -55
  96. package/src/components/display/podcasts/TagList.vue +33 -37
  97. package/src/components/display/rubriques/RubriqueChooser.vue +70 -51
  98. package/src/components/display/rubriques/RubriqueList.vue +117 -89
  99. package/src/components/display/sharing/PlayerParameters.vue +45 -42
  100. package/src/components/display/sharing/QrCode.vue +52 -46
  101. package/src/components/display/sharing/ShareButtons.vue +25 -27
  102. package/src/components/display/sharing/ShareButtonsIntern.vue +182 -155
  103. package/src/components/display/sharing/ShareDistribution.vue +101 -67
  104. package/src/components/display/sharing/SharePlayer.vue +207 -127
  105. package/src/components/display/sharing/SharePlayerColors.vue +15 -15
  106. package/src/components/display/sharing/SharePlayerRadio.vue +62 -39
  107. package/src/components/display/sharing/SharePlayerTypes.vue +93 -55
  108. package/src/components/display/sharing/SubscribeButtons.vue +83 -32
  109. package/src/components/display/studio/RecordingItemButton.vue +3 -3
  110. package/src/components/form/ClassicCheckbox.vue +32 -31
  111. package/src/components/form/ClassicDatePicker.vue +47 -49
  112. package/src/components/form/ClassicInputText.vue +99 -98
  113. package/src/components/form/ClassicLoading.vue +11 -14
  114. package/src/components/form/ClassicMultiselect.vue +125 -126
  115. package/src/components/form/ClassicRadio.vue +15 -18
  116. package/src/components/form/ClassicSearch.vue +17 -23
  117. package/src/components/form/ClassicSelect.vue +35 -27
  118. package/src/components/form/{Wysiwyg.vue → ClassicWysiwyg.vue} +94 -109
  119. package/src/components/misc/AcpmImage.vue +26 -0
  120. package/src/components/misc/ClassicAccordion.vue +69 -0
  121. package/src/components/misc/ClassicNav.vue +117 -0
  122. package/src/components/misc/ClassicPopover.vue +212 -0
  123. package/src/components/misc/{Spinner.vue → ClassicSpinner.vue} +14 -15
  124. package/src/components/misc/ErrorMessage.vue +9 -17
  125. package/src/components/misc/FooterSection.vue +198 -0
  126. package/src/components/misc/HomeDropdown.vue +67 -64
  127. package/src/components/misc/LeftMenu.vue +115 -79
  128. package/src/components/misc/ProgressBar.vue +36 -32
  129. package/src/components/misc/SnackBar.vue +169 -0
  130. package/src/components/misc/TopBar.vue +161 -115
  131. package/src/components/misc/modal/ClassicModal.vue +99 -103
  132. package/src/components/misc/modal/ClipboardModal.vue +21 -23
  133. package/src/components/misc/modal/MessageModal.vue +22 -28
  134. package/src/components/misc/modal/NewsletterModal.vue +139 -113
  135. package/src/components/misc/modal/QrCodeModal.vue +14 -17
  136. package/src/components/misc/modal/ShareModalPlayer.vue +44 -60
  137. package/src/components/misc/player/PlayerCompact.vue +47 -62
  138. package/src/components/misc/player/{Player.vue → PlayerComponent.vue} +54 -46
  139. package/src/components/misc/player/PlayerLarge.vue +66 -62
  140. package/src/components/misc/player/PlayerProgressBar.vue +40 -30
  141. package/src/components/misc/player/PlayerTimeline.vue +32 -36
  142. package/src/components/misc/player/radio/RadioHistory.vue +62 -59
  143. package/src/components/misc/player/radio/RadioProgressBar.vue +44 -35
  144. package/src/components/mixins/cookies.ts +11 -10
  145. package/src/components/mixins/displayMethods.ts +5 -4
  146. package/src/components/mixins/handle403.ts +9 -9
  147. package/src/components/mixins/imageProxy.ts +14 -7
  148. package/src/components/mixins/init.ts +31 -16
  149. package/src/components/mixins/orgaComputed.ts +7 -7
  150. package/src/components/mixins/organisationFilter.ts +36 -22
  151. package/src/components/mixins/player/playerComment.ts +46 -37
  152. package/src/components/mixins/player/playerDisplay.ts +122 -87
  153. package/src/components/mixins/player/playerLive.ts +65 -43
  154. package/src/components/mixins/player/playerLogic.ts +133 -88
  155. package/src/components/mixins/player/playerTranscript.ts +48 -30
  156. package/src/components/mixins/radio/fetchRadioData.ts +40 -23
  157. package/src/components/mixins/selenium.ts +2 -2
  158. package/src/components/mixins/tagOfMixins.ts +11 -11
  159. package/src/components/pages/CategoryPage.vue +43 -0
  160. package/src/components/pages/{Emission.vue → EmissionPage.vue} +98 -67
  161. package/src/components/pages/{Emissions.vue → EmissionsPage.vue} +51 -44
  162. package/src/components/pages/Error403Page.vue +20 -19
  163. package/src/components/pages/HomePage.vue +144 -0
  164. package/src/components/pages/LivesPage.vue +66 -0
  165. package/src/components/pages/PageNotFound.vue +33 -22
  166. package/src/components/pages/{Participant.vue → ParticipantPage.vue} +63 -49
  167. package/src/components/pages/{Participants.vue → ParticipantsPage.vue} +9 -9
  168. package/src/components/pages/PlaylistPage.vue +175 -0
  169. package/src/components/pages/{Playlists.vue → PlaylistsPage.vue} +16 -14
  170. package/src/components/pages/PodcastPage.vue +365 -0
  171. package/src/components/pages/PodcastsPage.vue +152 -0
  172. package/src/components/pages/RadioPage.vue +131 -0
  173. package/src/components/pages/RubriquePage.vue +45 -0
  174. package/src/components/pages/{Search.vue → SearchPage.vue} +19 -19
  175. package/src/helper/dom.ts +1 -1
  176. package/src/helper/duration.ts +10 -4
  177. package/src/helper/useEventListener.ts +7 -8
  178. package/src/i18n.ts +31 -30
  179. package/src/locale/de.ts +263 -257
  180. package/src/locale/educationen.ts +13 -13
  181. package/src/locale/educationfr.ts +1 -1
  182. package/src/locale/en.ts +323 -324
  183. package/src/locale/es.ts +325 -318
  184. package/src/locale/fr.ts +330 -324
  185. package/src/locale/it.ts +332 -328
  186. package/src/locale/messages.ts +9 -9
  187. package/src/locale/sl.ts +315 -319
  188. package/src/main.ts +28 -31
  189. package/src/router/router.ts +218 -198
  190. package/src/shims-tsx.d.ts +1 -1
  191. package/src/shims-vue.d.ts +1 -1
  192. package/src/stores/ApiStore.ts +44 -44
  193. package/src/stores/AuthStore.ts +24 -16
  194. package/src/stores/CommentStore.ts +13 -11
  195. package/src/stores/FilterStore.ts +25 -15
  196. package/src/stores/GeneralStore.ts +15 -15
  197. package/src/stores/ParamSdkStore.ts +179 -137
  198. package/src/stores/PlayerStore.ts +139 -125
  199. package/src/stores/class/adserver/adserverConfig.ts +1 -1
  200. package/src/stores/class/adserver/adserverOtherEmission.ts +9 -9
  201. package/src/stores/class/cartouchier/cartouche.ts +4 -4
  202. package/src/stores/class/cartouchier/cartouchier.ts +2 -2
  203. package/src/stores/class/conference/conference.ts +10 -9
  204. package/src/stores/class/conference/conferenceMessage.ts +2 -2
  205. package/src/stores/class/conference/conferenceParticipant.ts +1 -1
  206. package/src/stores/class/conference/studioCall.ts +6 -6
  207. package/src/stores/class/contract/contractOrganisation.ts +5 -5
  208. package/src/stores/class/ftp/ftpEmission.ts +9 -9
  209. package/src/stores/class/ftp/testFtpEmission.ts +4 -4
  210. package/src/stores/class/general/audioView.ts +19 -19
  211. package/src/stores/class/general/category.ts +1 -1
  212. package/src/stores/class/general/classicSelectType.ts +2 -3
  213. package/src/stores/class/general/customPlayer.ts +8 -8
  214. package/src/stores/class/general/emission.ts +20 -21
  215. package/src/stores/class/general/fetchParam.ts +8 -2
  216. package/src/stores/class/general/initState.ts +31 -31
  217. package/src/stores/class/general/interfacePageable.ts +13 -13
  218. package/src/stores/class/general/ituneCategory.ts +4 -4
  219. package/src/stores/class/general/listReturn.ts +12 -12
  220. package/src/stores/class/general/media.ts +7 -7
  221. package/src/stores/class/general/organisation.ts +9 -10
  222. package/src/stores/class/general/pageable.ts +10 -10
  223. package/src/stores/class/general/participant.ts +7 -7
  224. package/src/stores/class/general/player.ts +30 -28
  225. package/src/stores/class/general/playlist.ts +17 -19
  226. package/src/stores/class/general/podcast.ts +19 -19
  227. package/src/stores/class/general/sortPageable.ts +4 -4
  228. package/src/stores/class/general/soundcastCategory.ts +7 -7
  229. package/src/stores/class/ouestFrance/ofTag.ts +34 -34
  230. package/src/stores/class/ouestFrance/ofTagInfo.ts +9 -9
  231. package/src/stores/class/ouestFrance/ofTagPage.ts +7 -7
  232. package/src/stores/class/ouestFrance/ofTagSeo.ts +7 -7
  233. package/src/stores/class/ouestFrance/ofTagVente.ts +6 -6
  234. package/src/stores/class/ouestFrance/ofTagWithParents.ts +20 -20
  235. package/src/stores/class/radio/canal.ts +4 -4
  236. package/src/stores/class/radio/live.ts +6 -6
  237. package/src/stores/class/radio/mix.ts +16 -16
  238. package/src/stores/class/radio/playlistMedia.ts +7 -7
  239. package/src/stores/class/radio/recurrence.ts +54 -54
  240. package/src/stores/class/rss/rssEmission.ts +13 -13
  241. package/src/stores/class/rss/rssInfo.ts +7 -7
  242. package/src/stores/class/rubrique/rubriquage.ts +2 -2
  243. package/src/stores/class/rubrique/rubrique.ts +1 -1
  244. package/src/stores/class/stat/statArrayIncome.ts +5 -5
  245. package/src/stores/class/stat/statArrayObject.ts +26 -26
  246. package/src/stores/class/stat/statGraph.ts +6 -6
  247. package/src/stores/class/user/person.ts +4 -2
  248. package/src/stores/class/user/profile.ts +4 -2
  249. package/src/stores/class/user/userKeycloak.ts +4 -5
  250. package/src/components/display/list/Paginate.vue +0 -181
  251. package/src/components/misc/Accordion.vue +0 -78
  252. package/src/components/misc/Footer.vue +0 -165
  253. package/src/components/misc/Nav.vue +0 -119
  254. package/src/components/misc/Popover.vue +0 -193
  255. package/src/components/misc/Snackbar.vue +0 -168
  256. package/src/components/pages/Category.vue +0 -41
  257. package/src/components/pages/Home.vue +0 -125
  258. package/src/components/pages/Lives.vue +0 -64
  259. package/src/components/pages/Playlist.vue +0 -164
  260. package/src/components/pages/Podcast.vue +0 -307
  261. package/src/components/pages/Podcasts.vue +0 -146
  262. package/src/components/pages/Radio.vue +0 -122
  263. package/src/components/pages/Rubrique.vue +0 -42
@@ -1,18 +1,13 @@
1
1
  <template>
2
- <div
3
- class="d-flex align-items-center flex-grow-1 ps-2"
4
- >
5
- <router-link
6
- v-if="isImage && podcastImage"
7
- :to="podcastShareUrl"
8
- >
2
+ <div class="d-flex align-items-center flex-grow-1 ps-2">
3
+ <router-link v-if="isImage && podcastImage" :to="podcastShareUrl">
9
4
  <img
10
- v-lazy="proxyImageUrl(podcastImage,'48')"
5
+ v-lazy="proxyImageUrl(podcastImage, '48')"
11
6
  width="48"
12
7
  height="48"
13
8
  :alt="$t('Podcast image')"
14
9
  class="player-image"
15
- >
10
+ />
16
11
  </router-link>
17
12
  <button
18
13
  v-if="!playerError"
@@ -20,34 +15,22 @@
20
15
  :class="{
21
16
  'saooti-play': isPaused,
22
17
  'saooti-pause': isPlaying,
23
- 'p-0':!isPaused&&!isPlaying
18
+ 'p-0': !isPaused && !isPlaying,
24
19
  }"
25
20
  class="btn play-button-box text-light bg-primary"
26
21
  @click="switchPausePlay"
27
22
  >
28
- <Spinner
29
- v-if="!isPaused&&!isPlaying"
30
- :small="true"
31
- />
23
+ <ClassicSpinner v-if="!isPaused && !isPlaying" :small="true" />
32
24
  </button>
33
25
  <div class="text-light player-grow-content">
34
- <div
35
- class="d-flex"
36
- :class="!radioUrl?'mb-1':''"
37
- >
38
- <div
39
- v-if="playerError"
40
- class="text-warning mx-2"
41
- >
42
- {{ $t('Podcast play error') + ' - ' }}
26
+ <div class="d-flex" :class="!radioUrl ? 'mb-1' : ''">
27
+ <div v-if="playerError" class="text-warning mx-2">
28
+ {{ $t("Podcast play error") + " - " }}
43
29
  </div>
44
30
  <div class="flex-grow-1 text-truncate">
45
31
  {{ podcastTitle }}
46
32
  </div>
47
- <div
48
- v-if="!playerError && !radioUrl"
49
- class="hide-phone"
50
- >
33
+ <div v-if="!playerError && !radioUrl" class="hide-phone">
51
34
  {{ playedTime }} / {{ totalTime }}
52
35
  </div>
53
36
  </div>
@@ -60,14 +43,12 @@
60
43
  :duration-live-position="durationLivePosition"
61
44
  :player-error="playerError"
62
45
  :listen-time="listenTime"
63
- @updateNotListenTime="$emit('update:notListenTime', $event)"
64
- />
65
- <RadioProgressBar
66
- v-else
46
+ @update-not-listen-time="$emit('update:notListenTime', $event)"
67
47
  />
48
+ <RadioProgressBar v-else />
68
49
  </div>
69
50
  <button
70
- :title="''!=transcriptText ? $t('View transcript'): $t('Enlarge')"
51
+ :title="'' != transcriptText ? $t('View transcript') : $t('Enlarge')"
71
52
  class="btn play-button-box btn-transparent text-light saooti-up me-0"
72
53
  @click="changePlayerLargeVersion"
73
54
  />
@@ -84,55 +65,59 @@
84
65
  </div>
85
66
  </template>
86
67
  <script lang="ts">
87
- import { CommentPodcast } from '@/stores/class/general/comment';
88
- import { playerDisplay } from '../../mixins/player/playerDisplay';
89
- import imageProxy from '../../mixins/imageProxy';
90
- import Spinner from '../Spinner.vue';
91
- import PlayerTimeline from './PlayerTimeline.vue';
92
- import { defineAsyncComponent, defineComponent } from 'vue';
93
- const RadioProgressBar = defineAsyncComponent(() => import('./radio/RadioProgressBar.vue'));
94
- const PlayerProgressBar = defineAsyncComponent(() => import('./PlayerProgressBar.vue'));
68
+ import { CommentPodcast } from "@/stores/class/general/comment";
69
+ import { playerDisplay } from "../../mixins/player/playerDisplay";
70
+ import imageProxy from "../../mixins/imageProxy";
71
+ import ClassicSpinner from "../ClassicSpinner.vue";
72
+ import PlayerTimeline from "./PlayerTimeline.vue";
73
+ import { defineAsyncComponent, defineComponent } from "vue";
74
+ const RadioProgressBar = defineAsyncComponent(
75
+ () => import("./radio/RadioProgressBar.vue"),
76
+ );
77
+ const PlayerProgressBar = defineAsyncComponent(
78
+ () => import("./PlayerProgressBar.vue"),
79
+ );
95
80
  export default defineComponent({
96
- name: 'PlayerCompact',
81
+ name: "PlayerCompact",
97
82
 
98
83
  components: {
99
84
  PlayerProgressBar,
100
85
  RadioProgressBar,
101
86
  PlayerTimeline,
102
- Spinner
87
+ ClassicSpinner,
103
88
  },
104
- mixins:[playerDisplay, imageProxy],
89
+ mixins: [playerDisplay, imageProxy],
105
90
 
106
91
  props: {
107
- playerError: { default: false, type: Boolean},
108
- notListenTime: { default: 0 , type: Number},
109
- comments: { default: ()=>[] , type: Array as ()=> Array<CommentPodcast> },
110
- displayAlertBar: { default: false , type: Boolean},
111
- percentLiveProgress: { default: 0 , type: Number},
112
- durationLivePosition: { default: 0 , type: Number},
113
- listenTime: { default: 0 , type: Number},
92
+ playerError: { default: false, type: Boolean },
93
+ notListenTime: { default: 0, type: Number },
94
+ comments: { default: () => [], type: Array as () => Array<CommentPodcast> },
95
+ displayAlertBar: { default: false, type: Boolean },
96
+ percentLiveProgress: { default: 0, type: Number },
97
+ durationLivePosition: { default: 0, type: Number },
98
+ listenTime: { default: 0, type: Number },
114
99
  },
115
100
 
116
- emits: ['stopPlayer', 'update:notListenTime', 'changePlayerLargeVersion'],
101
+ emits: ["stopPlayer", "update:notListenTime", "changePlayerLargeVersion"],
117
102
  data() {
118
103
  return {
119
104
  showTimeline: false as boolean,
120
105
  };
121
106
  },
122
- methods:{
123
- stopPlayer(){
124
- this.$emit('stopPlayer');
107
+ methods: {
108
+ stopPlayer() {
109
+ this.$emit("stopPlayer");
125
110
  },
126
- changePlayerLargeVersion(){
127
- this.$emit('changePlayerLargeVersion');
128
- }
129
- }
130
- })
111
+ changePlayerLargeVersion() {
112
+ this.$emit("changePlayerLargeVersion");
113
+ },
114
+ },
115
+ });
131
116
  </script>
132
117
 
133
118
  <style lang="scss">
134
- @import '@scss/_variables.scss';
135
- .octopus-app{
119
+ @import "@scss/_variables.scss";
120
+ .octopus-app {
136
121
  .player-grow-content {
137
122
  display: flex;
138
123
  flex-direction: column;
@@ -167,4 +152,4 @@ export default defineComponent({
167
152
  cursor: pointer;
168
153
  }
169
154
  }
170
- </style>
155
+ </style>
@@ -7,7 +7,7 @@
7
7
  <template v-if="display">
8
8
  <audio
9
9
  id="audio-player"
10
- :src="!playerLive && !playerRadio? audioUrlToPlay: undefined"
10
+ :src="!playerLive && !playerRadio ? audioUrlToPlay : undefined"
11
11
  autoplay
12
12
  @timeupdate="onTimeUpdate"
13
13
  @ended="onFinished"
@@ -26,8 +26,8 @@
26
26
  :percent-live-progress="percentLiveProgress"
27
27
  :duration-live-position="durationLivePosition"
28
28
  :listen-time="listenTime"
29
- @stopPlayer="stopPlayer"
30
- @changePlayerLargeVersion="playerUpdateLargeVersion(true)"
29
+ @stop-player="stopPlayer"
30
+ @change-player-large-version="playerUpdateLargeVersion(true)"
31
31
  />
32
32
  <PlayerLarge
33
33
  v-else
@@ -38,95 +38,103 @@
38
38
  :percent-live-progress="percentLiveProgress"
39
39
  :duration-live-position="durationLivePosition"
40
40
  :listen-time="listenTime"
41
- @stopPlayer="stopPlayer"
42
- @changePlayerLargeVersion="playerUpdateLargeVersion(false)"
41
+ @stop-player="stopPlayer"
42
+ @change-player-large-version="playerUpdateLargeVersion(false)"
43
43
  />
44
44
  </template>
45
45
  </div>
46
46
  </template>
47
47
  <script lang="ts">
48
- import { CommentPodcast } from '@/stores/class/general/comment';
49
- import { playerLogic } from '../../mixins/player/playerLogic';
50
- import PlayerCompact from '../player/PlayerCompact.vue';
51
- import PlayerLarge from '../player/PlayerLarge.vue';
52
- import { usePlayerStore } from '@/stores/PlayerStore';
53
- import { mapState, mapActions } from 'pinia';
54
- import { defineComponent } from 'vue';
48
+ import { CommentPodcast } from "@/stores/class/general/comment";
49
+ import { playerLogic } from "../../mixins/player/playerLogic";
50
+ import PlayerCompact from "../player/PlayerCompact.vue";
51
+ import PlayerLarge from "../player/PlayerLarge.vue";
52
+ import { usePlayerStore } from "@/stores/PlayerStore";
53
+ import { mapState, mapActions } from "pinia";
54
+ import { defineComponent } from "vue";
55
55
  export default defineComponent({
56
- name: 'Player',
56
+ name: "PlayerComponent",
57
57
 
58
58
  components: {
59
59
  PlayerCompact,
60
- PlayerLarge
60
+ PlayerLarge,
61
61
  },
62
- mixins:[playerLogic],
63
- emits: ['hide'],
62
+ mixins: [playerLogic],
63
+ emits: ["hide"],
64
64
  data() {
65
65
  return {
66
66
  forceHide: false as boolean,
67
67
  listenTime: 0 as number,
68
68
  notListenTime: 0 as number,
69
69
  lastSend: 0 as number,
70
- downloadId: null as string|null,
70
+ downloadId: null as string | null,
71
71
  playerError: false as boolean,
72
72
  listenError: false as boolean,
73
73
  percentLiveProgress: 0 as number,
74
74
  durationLivePosition: 0 as number,
75
75
  displayAlertBar: false as boolean,
76
76
  comments: [] as Array<CommentPodcast>,
77
- audioUrlToPlay: "" as string
77
+ audioUrlToPlay: "" as string,
78
78
  };
79
79
  },
80
80
  computed: {
81
- ...mapState(usePlayerStore, ['playerStatus', 'playerHeight', 'playerLargeVersion']),
82
- display(){
83
- return 'STOPPED' !== this.playerStatus;
81
+ ...mapState(usePlayerStore, [
82
+ "playerStatus",
83
+ "playerHeight",
84
+ "playerLargeVersion",
85
+ ]),
86
+ display() {
87
+ return "STOPPED" !== this.playerStatus;
84
88
  },
85
89
  },
86
90
 
87
91
  watch: {
88
92
  playerHeight(): void {
89
- this.$emit('hide', 0 === this.playerHeight);
93
+ this.$emit("hide", 0 === this.playerHeight);
90
94
  },
91
95
  },
92
-
96
+
93
97
  methods: {
94
- ...mapActions(usePlayerStore, ['playerPlay', 'playerUpdateLargeVersion', 'playerChangeStatus']),
98
+ ...mapActions(usePlayerStore, [
99
+ "playerPlay",
100
+ "playerUpdateLargeVersion",
101
+ "playerChangeStatus",
102
+ ]),
95
103
  onHidden(): void {
96
104
  if (this.forceHide) {
97
105
  this.playerPlay();
98
106
  this.forceHide = false;
99
107
  }
100
108
  },
101
- onPause(){
102
- if("PLAYING"===this.playerStatus){
109
+ onPause() {
110
+ if ("PLAYING" === this.playerStatus) {
103
111
  this.playerChangeStatus(true);
104
112
  }
105
- }
113
+ },
106
114
  },
107
- })
115
+ });
108
116
  </script>
109
117
 
110
118
  <style lang="scss">
111
- .octopus-app{
112
- .player-container {
113
- max-height: 94%;
114
- position: sticky;
115
- overflow: hidden;
116
- z-index: 12;
117
- width: 100%;
118
- bottom: 0;
119
- display: flex;
120
- flex-direction: column;
121
- transition: height 1s;
122
- background: #282828 !important;
123
- font-size: 1rem;
119
+ .octopus-app {
120
+ .player-container {
121
+ max-height: 94%;
122
+ position: sticky;
123
+ overflow: hidden;
124
+ z-index: 12;
125
+ width: 100%;
126
+ bottom: 0;
127
+ display: flex;
128
+ flex-direction: column;
129
+ transition: height 1s;
130
+ background: #282828 !important;
131
+ font-size: 1rem;
124
132
 
125
- @media (max-width: 960px) {
126
- .d-flex {
127
- flex-wrap: nowrap !important;
133
+ @media (max-width: 960px) {
134
+ .d-flex {
135
+ flex-wrap: nowrap !important;
136
+ }
128
137
  }
129
138
  }
130
139
  }
131
- }
132
- </style>
140
+ </style>
@@ -7,24 +7,18 @@
7
7
  class="player-reduce-button btn bg-transparent text-light saooti-down"
8
8
  @click="changePlayerLargeVersion"
9
9
  />
10
- <router-link
11
- v-if="isImage && podcastImage"
12
- :to="podcastShareUrl"
13
- >
10
+ <router-link v-if="isImage && podcastImage" :to="podcastShareUrl">
14
11
  <img
15
- v-lazy="proxyImageUrl(podcastImage,'200')"
12
+ v-lazy="proxyImageUrl(podcastImage, '200')"
16
13
  width="200"
17
14
  height="200"
18
15
  :alt="$t('Podcast image')"
19
16
  class="img-box"
20
- >
17
+ />
21
18
  </router-link>
22
19
  <div class="d-flex w-100 px-2 mt-2 text-center">
23
- <div
24
- v-if="playerError"
25
- class="text-warning mx-2"
26
- >
27
- {{ $t('Podcast play error') + ' - ' }}
20
+ <div v-if="playerError" class="text-warning mx-2">
21
+ {{ $t("Podcast play error") + " - " }}
28
22
  </div>
29
23
  <div class="flex-grow-1 text-truncate h3">
30
24
  {{ podcastTitle }}
@@ -42,7 +36,7 @@
42
36
  :duration-live-position="durationLivePosition"
43
37
  :player-error="playerError"
44
38
  :listen-time="listenTime"
45
- @updateNotListenTime="$emit('update:notListenTime', $event)"
39
+ @update-not-listen-time="$emit('update:notListenTime', $event)"
46
40
  />
47
41
  <RadioProgressBar v-else />
48
42
  <div class="d-flex justify-content-between">
@@ -51,9 +45,9 @@
51
45
  </div>
52
46
  <RadioHistory v-if="radioUrl" />
53
47
  </div>
54
-
48
+
55
49
  <div
56
- v-if="''!=transcriptText"
50
+ v-if="'' != transcriptText"
57
51
  class="flex-grow-1 d-flex align-items-center w-100"
58
52
  >
59
53
  <div class="flex-grow-1 p-1 text-center mx-3 transcript-bg rounded">
@@ -63,7 +57,7 @@
63
57
  <div class="d-flex align-items-center flex-grow-1">
64
58
  <button
65
59
  title="-15''"
66
- class="btn fs-1 bg-transparent text-light saooti-backward"
60
+ class="btn fs-1 bg-transparent text-light saooti-recule"
67
61
  @click="seekClick(-15)"
68
62
  />
69
63
  <button
@@ -72,94 +66,100 @@
72
66
  :class="{
73
67
  'saooti-play': isPaused,
74
68
  'saooti-pause': isPlaying,
75
- '':!isPaused&&!isPlaying
69
+ '': !isPaused && !isPlaying,
76
70
  }"
77
71
  class="btn play-big-button-box text-light bg-primary"
78
72
  @click="switchPausePlay"
79
73
  >
80
- <Spinner
81
- v-if="!isPaused&&!isPlaying"
82
- />
74
+ <ClassicSpinner v-if="!isPaused && !isPlaying" />
83
75
  </button>
84
76
  <button
85
77
  title="+15''"
86
- class="btn fs-1 bg-transparent text-light saooti-forward"
78
+ class="btn fs-1 bg-transparent text-light saooti-avance"
87
79
  @click="seekClick(15)"
88
80
  />
89
81
  </div>
90
- <PlayerTimeline
91
- v-model:showTimeline="showTimeline"
92
- :comments="comments"
93
- />
82
+ <PlayerTimeline v-model:showTimeline="showTimeline" :comments="comments" />
94
83
  </div>
95
84
  </template>
96
85
  <script lang="ts">
97
- import Spinner from '../Spinner.vue';
98
- import { playerDisplay } from '../../mixins/player/playerDisplay';
99
- import imageProxy from '../../mixins/imageProxy';
100
- import PlayerTimeline from './PlayerTimeline.vue';
101
- import { defineAsyncComponent, defineComponent } from 'vue';
102
- import { CommentPodcast } from '@/stores/class/general/comment';
103
- const RadioProgressBar = defineAsyncComponent(() => import('./radio/RadioProgressBar.vue'));
104
- const RadioHistory = defineAsyncComponent(() => import('./radio/RadioHistory.vue'));
105
- const PlayerProgressBar = defineAsyncComponent(() => import('./PlayerProgressBar.vue'));
86
+ import ClassicSpinner from "../ClassicSpinner.vue";
87
+ import { playerDisplay } from "../../mixins/player/playerDisplay";
88
+ import imageProxy from "../../mixins/imageProxy";
89
+ import PlayerTimeline from "./PlayerTimeline.vue";
90
+ import { defineAsyncComponent, defineComponent } from "vue";
91
+ import { CommentPodcast } from "@/stores/class/general/comment";
92
+ const RadioProgressBar = defineAsyncComponent(
93
+ () => import("./radio/RadioProgressBar.vue"),
94
+ );
95
+ const RadioHistory = defineAsyncComponent(
96
+ () => import("./radio/RadioHistory.vue"),
97
+ );
98
+ const PlayerProgressBar = defineAsyncComponent(
99
+ () => import("./PlayerProgressBar.vue"),
100
+ );
106
101
  export default defineComponent({
107
- name: 'PlayerLarge',
102
+ name: "PlayerLarge",
108
103
 
109
104
  components: {
110
105
  PlayerProgressBar,
111
106
  RadioProgressBar,
112
107
  PlayerTimeline,
113
- Spinner,
114
- RadioHistory
108
+ ClassicSpinner,
109
+ RadioHistory,
115
110
  },
116
- mixins:[playerDisplay, imageProxy],
111
+ mixins: [playerDisplay, imageProxy],
117
112
 
118
113
  props: {
119
- playerError: { default: false, type: Boolean},
120
- notListenTime: { default: 0 , type: Number},
121
- comments: { default: ()=>[] , type: Array as ()=> Array<CommentPodcast> },
122
- displayAlertBar: { default: false , type: Boolean},
123
- percentLiveProgress: { default: 0 , type: Number},
124
- durationLivePosition: { default: 0 , type: Number},
125
- listenTime: { default: 0 , type: Number},
114
+ playerError: { default: false, type: Boolean },
115
+ notListenTime: { default: 0, type: Number },
116
+ comments: { default: () => [], type: Array as () => Array<CommentPodcast> },
117
+ displayAlertBar: { default: false, type: Boolean },
118
+ percentLiveProgress: { default: 0, type: Number },
119
+ durationLivePosition: { default: 0, type: Number },
120
+ listenTime: { default: 0, type: Number },
126
121
  },
127
122
 
128
- emits: ['stopPlayer', 'update:notListenTime', 'changePlayerLargeVersion'],
123
+ emits: ["stopPlayer", "update:notListenTime", "changePlayerLargeVersion"],
129
124
  data() {
130
125
  return {
131
126
  showTimeline: false as boolean,
132
127
  };
133
128
  },
134
- methods:{
135
- stopPlayer(){
136
- this.$emit('stopPlayer');
129
+ methods: {
130
+ stopPlayer() {
131
+ this.$emit("stopPlayer");
137
132
  },
138
- changePlayerLargeVersion(){
139
- this.$emit('changePlayerLargeVersion');
133
+ changePlayerLargeVersion() {
134
+ this.$emit("changePlayerLargeVersion");
140
135
  },
141
- seekClick(addTime: number):void{
142
- const audioPlayer: HTMLAudioElement|null = document.querySelector('#audio-player');
143
- if(!audioPlayer){return;}
136
+ seekClick(addTime: number): void {
137
+ const audioPlayer: HTMLAudioElement | null =
138
+ document.querySelector("#audio-player");
139
+ if (!audioPlayer) {
140
+ return;
141
+ }
144
142
  const seekTo = audioPlayer.currentTime + addTime;
145
- (this.$refs.progressbar as InstanceType<typeof PlayerProgressBar>).isSeekTo(audioPlayer, seekTo >0?seekTo: 0);
143
+ (
144
+ this.$refs.progressbar as InstanceType<typeof PlayerProgressBar>
145
+ ).isSeekTo(audioPlayer, seekTo > 0 ? seekTo : 0);
146
146
  },
147
- }
148
- })
147
+ },
148
+ });
149
149
  </script>
150
150
 
151
151
  <style lang="scss">
152
- .octopus-app{
153
- .player-container .img-box{
152
+ .octopus-app {
153
+ .player-container .img-box {
154
154
  width: 10rem;
155
155
  height: 10rem;
156
156
  }
157
- .player-reduce-button{
157
+ .player-reduce-button {
158
158
  position: absolute;
159
159
  right: 0;
160
160
  font-size: 1.2rem !important;
161
161
  }
162
- .player-grow-large-content{
162
+ .player-grow-large-content {
163
163
  width: 100%;
164
164
  padding: 1rem 2rem;
165
165
  @media (max-width: 960px) {
@@ -178,8 +178,12 @@ export default defineComponent({
178
178
  flex-shrink: 0;
179
179
  cursor: pointer;
180
180
  }
181
- .transcript-bg{
181
+ .saooti-recule,
182
+ .saooti-avance {
183
+ font-size: 2rem !important;
184
+ }
185
+ .transcript-bg {
182
186
  background: #3e3e3e;
183
187
  }
184
188
  }
185
- </style>
189
+ </style>
@@ -3,7 +3,7 @@
3
3
  v-if="!playerError"
4
4
  :main-progress="percentProgress"
5
5
  :secondary-progress="percentLiveProgress"
6
- :alert-bar="displayAlertBar?durationLivePosition:undefined"
6
+ :alert-bar="displayAlertBar ? durationLivePosition : undefined"
7
7
  :class="classProgress"
8
8
  @mouseup="seekTo"
9
9
  />
@@ -15,44 +15,55 @@
15
15
  </template>
16
16
 
17
17
  <script lang="ts">
18
- import ProgressBar from '../ProgressBar.vue'
19
- import { CommentPodcast } from '@/stores/class/general/comment';
20
- import { usePlayerStore } from '@/stores/PlayerStore';
21
- import { mapState } from 'pinia';
22
- import { defineComponent, defineAsyncComponent } from 'vue';
23
- const CommentPlayer = defineAsyncComponent(() => import('../../display/comments/CommentPlayer.vue'));
18
+ import ProgressBar from "../ProgressBar.vue";
19
+ import { CommentPodcast } from "@/stores/class/general/comment";
20
+ import { usePlayerStore } from "@/stores/PlayerStore";
21
+ import { mapState } from "pinia";
22
+ import { defineComponent, defineAsyncComponent } from "vue";
23
+ const CommentPlayer = defineAsyncComponent(
24
+ () => import("../../display/comments/CommentPlayer.vue"),
25
+ );
24
26
  export default defineComponent({
25
- name: 'PlayerProgressBar',
27
+ name: "PlayerProgressBar",
26
28
 
27
29
  components: {
28
30
  CommentPlayer,
29
- ProgressBar
31
+ ProgressBar,
30
32
  },
31
33
  props: {
32
- classProgress:{ default: "", type: String},
33
- showTimeline: { default: false, type: Boolean},
34
- comments: { default: ()=>[], type: Array as ()=>Array<CommentPodcast>},
35
- displayAlertBar: { default: false, type: Boolean},
36
- percentLiveProgress: { default: 0, type: Number},
37
- durationLivePosition: { default: 0, type: Number},
38
- playerError: { default: false, type: Boolean},
39
- listenTime: { default: 0, type: Number},
34
+ classProgress: { default: "", type: String },
35
+ showTimeline: { default: false, type: Boolean },
36
+ comments: { default: () => [], type: Array as () => Array<CommentPodcast> },
37
+ displayAlertBar: { default: false, type: Boolean },
38
+ percentLiveProgress: { default: 0, type: Number },
39
+ durationLivePosition: { default: 0, type: Number },
40
+ playerError: { default: false, type: Boolean },
41
+ listenTime: { default: 0, type: Number },
40
42
  },
41
- emits: ['updateNotListenTime'],
42
-
43
+ emits: ["updateNotListenTime"],
44
+
43
45
  computed: {
44
- ...mapState(usePlayerStore, ['playerElapsed', 'playerTotal', 'playerPodcast', 'playerLive']),
45
- percentProgress(): number{
46
- if(!this.playerElapsed){return 0;}
46
+ ...mapState(usePlayerStore, [
47
+ "playerElapsed",
48
+ "playerTotal",
49
+ "playerPodcast",
50
+ "playerLive",
51
+ ]),
52
+ percentProgress(): number {
53
+ if (!this.playerElapsed) {
54
+ return 0;
55
+ }
47
56
  return this.playerElapsed * 100;
48
57
  },
49
58
  },
50
59
 
51
-
52
60
  methods: {
53
61
  seekTo(event: MouseEvent): void {
54
- const audioPlayer: HTMLAudioElement|null = document.querySelector('#audio-player');
55
- if(!audioPlayer || null===event.currentTarget){return;}
62
+ const audioPlayer: HTMLAudioElement | null =
63
+ document.querySelector("#audio-player");
64
+ if (!audioPlayer || null === event.currentTarget) {
65
+ return;
66
+ }
56
67
  const rect = (event.currentTarget as Element).getBoundingClientRect();
57
68
  const barWidth = (event.currentTarget as Element).clientWidth;
58
69
  const x = event.clientX - rect.left;
@@ -63,11 +74,10 @@ export default defineComponent({
63
74
  },
64
75
  isSeekTo(audioPlayer: HTMLAudioElement, seekTime: number): void {
65
76
  if (this.playerPodcast || this.playerLive) {
66
- this.$emit('updateNotListenTime',seekTime - this.listenTime);
77
+ this.$emit("updateNotListenTime", seekTime - this.listenTime);
67
78
  }
68
79
  audioPlayer.currentTime = seekTime;
69
- }
70
-
80
+ },
71
81
  },
72
- })
73
- </script>
82
+ });
83
+ </script>