@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.
Files changed (174) hide show
  1. package/index.ts +31 -31
  2. package/package.json +1 -1
  3. package/plateform.conf +1 -1
  4. package/src/App.vue +9 -3
  5. package/src/api/classicApi.ts +1 -1
  6. package/src/components/composable/player/usePlayerDisplayTime.ts +33 -0
  7. package/src/components/composable/player/usePlayerLive.ts +150 -0
  8. package/src/components/composable/player/usePlayerLogic.ts +265 -0
  9. package/src/components/composable/player/usePlayerLogicProgress.ts +135 -0
  10. package/src/components/composable/player/usePlayerStitching.ts +213 -0
  11. package/src/components/composable/player/usePlayerTranscript.ts +120 -0
  12. package/src/components/composable/player/usePlayerVast.ts +207 -0
  13. package/src/components/composable/podcasts/useCountdown.ts +53 -0
  14. package/src/components/composable/podcasts/usePodcastView.ts +85 -0
  15. package/src/components/composable/radio/usefetchRadioData.ts +75 -0
  16. package/src/components/composable/route/useAdvancedParamInit.ts +165 -0
  17. package/src/components/composable/route/useRouteUpdateParams.ts +48 -0
  18. package/src/components/composable/route/useRubriquesFilterComputed.ts +24 -0
  19. package/src/components/composable/route/useRubriquesFilterParam.ts +32 -0
  20. package/src/components/composable/route/useSeoTitleUrl.ts +30 -0
  21. package/src/components/composable/route/useSimplePageParam.ts +50 -0
  22. package/src/components/composable/useErrorHandler.ts +25 -0
  23. package/src/components/composable/useImageProxy.ts +28 -0
  24. package/src/components/composable/useInit.ts +38 -0
  25. package/src/components/composable/useMetaTitle.ts +19 -0
  26. package/src/components/composable/useMetaTitleWatch.ts +14 -0
  27. package/src/components/composable/useOrgaComputed.ts +23 -0
  28. package/src/components/composable/useOrganisationFilter.ts +65 -0
  29. package/src/components/composable/useResizePhone.ts +27 -0
  30. package/src/components/composable/useSelenium.ts +10 -0
  31. package/src/components/composable/useTagOf.ts +21 -0
  32. package/src/components/display/accessibility/AccessibilityModal.vue +136 -0
  33. package/src/components/display/aggregator/RssSection.vue +1 -4
  34. package/src/components/display/categories/CategoryChooser.vue +1 -1
  35. package/src/components/display/categories/CategoryFilter.vue +7 -3
  36. package/src/components/display/categories/CategoryList.vue +5 -2
  37. package/src/components/display/comments/CommentInput.vue +0 -3
  38. package/src/components/display/comments/CommentList.vue +6 -2
  39. package/src/components/display/comments/CommentPlayer.vue +5 -2
  40. package/src/components/display/comments/CommentSection.vue +0 -2
  41. package/src/components/display/comments/item/CommentBasicView.vue +4 -4
  42. package/src/components/display/comments/item/CommentItem.vue +0 -4
  43. package/src/components/display/comments/item/CommentMoreActions.vue +6 -2
  44. package/src/components/display/emission/EmissionInlineList.vue +6 -6
  45. package/src/components/display/emission/EmissionItem.vue +13 -6
  46. package/src/components/display/emission/EmissionList.vue +5 -2
  47. package/src/components/display/emission/EmissionPlayerItem.vue +8 -5
  48. package/src/components/display/emission/EmissionPresentationItem.vue +16 -7
  49. package/src/components/display/emission/EmissionPresentationList.vue +10 -7
  50. package/src/components/display/filter/AdvancedSearch.vue +9 -6
  51. package/src/components/display/filter/CategorySearchFilter.vue +0 -2
  52. package/src/components/display/filter/ProductorSearch.vue +8 -3
  53. package/src/components/display/filter/RubriqueFilter.vue +6 -2
  54. package/src/components/display/list/ListPaginate.vue +9 -6
  55. package/src/components/display/list/SwiperList.vue +6 -5
  56. package/src/components/display/live/CountDown.vue +7 -15
  57. package/src/components/display/live/CountdownOctopus.vue +10 -30
  58. package/src/components/display/live/LiveItem.vue +0 -2
  59. package/src/components/display/live/LiveList.vue +9 -4
  60. package/src/components/display/live/RadioCurrently.vue +9 -5
  61. package/src/components/display/live/RadioImage.vue +6 -4
  62. package/src/components/display/live/RadioItem.vue +1 -2
  63. package/src/components/display/live/RadioList.vue +5 -3
  64. package/src/components/display/live/RadioPlanning.vue +10 -7
  65. package/src/components/display/organisation/OrganisationChooser.vue +8 -4
  66. package/src/components/display/participant/ParticipantInlineList.vue +5 -5
  67. package/src/components/display/participant/ParticipantItem.vue +13 -5
  68. package/src/components/display/participant/ParticipantList.vue +6 -3
  69. package/src/components/display/playlist/PlaylistItem.vue +12 -5
  70. package/src/components/display/playlist/PlaylistList.vue +6 -3
  71. package/src/components/display/playlist/PodcastList.vue +8 -4
  72. package/src/components/display/podcastmaker/PodcastmakerHeader.vue +6 -3
  73. package/src/components/display/podcasts/DownloadPodcastButton.vue +2 -4
  74. package/src/components/display/podcasts/PodcastImage.vue +6 -3
  75. package/src/components/display/podcasts/PodcastInlineListTemplate.vue +7 -4
  76. package/src/components/display/podcasts/PodcastItem.vue +1 -1
  77. package/src/components/display/podcasts/PodcastItemInfo.vue +6 -3
  78. package/src/components/display/podcasts/PodcastList.vue +6 -3
  79. package/src/components/display/podcasts/PodcastModuleBox.vue +22 -9
  80. package/src/components/display/podcasts/PodcastPlayBar.vue +1 -3
  81. package/src/components/display/podcasts/PodcastPlayButton.vue +1 -3
  82. package/src/components/display/podcasts/PodcastRawTranscript.vue +79 -10
  83. package/src/components/display/podcasts/PodcastRubriqueList.vue +4 -3
  84. package/src/components/display/podcasts/TagList.vue +5 -2
  85. package/src/components/display/podcasts/VideoModuleBox.vue +6 -3
  86. package/src/components/display/rubriques/RubriqueChooser.vue +0 -2
  87. package/src/components/display/rubriques/RubriqueList.vue +7 -5
  88. package/src/components/display/sharing/ShareButtons.vue +4 -2
  89. package/src/components/display/sharing/ShareDistribution.vue +4 -2
  90. package/src/components/form/ClassicEmojiPicker.vue +5 -3
  91. package/src/components/misc/ClassicLazy.vue +2 -2
  92. package/src/components/misc/FooterGarSection.vue +2 -3
  93. package/src/components/misc/FooterSection.vue +9 -5
  94. package/src/components/misc/MobileMenu.vue +5 -3
  95. package/src/components/misc/TopBar.vue +8 -6
  96. package/src/components/misc/TopBarMainContent.vue +8 -4
  97. package/src/components/misc/modal/ClassicModalInBody.vue +2 -3
  98. package/src/components/misc/modal/ClipboardModal.vue +4 -3
  99. package/src/components/misc/modal/NewsletterModal.vue +4 -3
  100. package/src/components/misc/modal/ShareModalPlayer.vue +4 -2
  101. package/src/components/misc/player/PlayerCompact.vue +30 -41
  102. package/src/components/misc/player/PlayerComponent.vue +69 -84
  103. package/src/components/misc/player/PlayerLarge.vue +43 -58
  104. package/src/components/misc/player/elements/PlayerImage.vue +6 -3
  105. package/src/components/misc/player/elements/PlayerTitle.vue +6 -2
  106. package/src/components/misc/player/radio/RadioHistory.vue +2 -4
  107. package/src/components/misc/player/video/PlayerVideoHls.vue +6 -7
  108. package/src/components/pages/EmissionPage.vue +19 -7
  109. package/src/components/pages/EmissionsPage.vue +31 -23
  110. package/src/components/pages/HomePage.vue +5 -2
  111. package/src/components/pages/PageLogout.vue +0 -2
  112. package/src/components/pages/PageNotFound.vue +11 -15
  113. package/src/components/pages/ParticipantPage.vue +18 -7
  114. package/src/components/pages/ParticipantsPage.vue +16 -21
  115. package/src/components/pages/PlaylistPage.vue +18 -7
  116. package/src/components/pages/PlaylistsPage.vue +20 -29
  117. package/src/components/pages/PodcastPage.vue +12 -6
  118. package/src/components/pages/PodcastsPage.vue +46 -48
  119. package/src/components/pages/RadioPage.vue +9 -6
  120. package/src/components/pages/RubriquePage.vue +41 -52
  121. package/src/components/pages/VideoPage.vue +152 -166
  122. package/src/helper/cookiesHelper.ts +20 -0
  123. package/src/helper/displayHelper.ts +15 -0
  124. package/src/helper/downloadHelper.ts +30 -0
  125. package/src/helper/{fetch.ts → fetchHelper.ts} +0 -1
  126. package/src/helper/loadScript.ts +22 -0
  127. package/src/helper/radio/radioHelper.ts +15 -0
  128. package/src/helper/{string.ts → stringHelper.ts} +5 -0
  129. package/src/locale/de.ts +4 -0
  130. package/src/locale/en.ts +4 -0
  131. package/src/locale/es.ts +4 -0
  132. package/src/locale/fr.ts +4 -0
  133. package/src/locale/it.ts +4 -0
  134. package/src/locale/sl.ts +4 -0
  135. package/src/stores/AuthStore.ts +1 -2
  136. package/src/stores/CommentStore.ts +8 -8
  137. package/src/stores/PlayerStore.ts +1 -1
  138. package/src/style/general.scss +15 -1
  139. package/src/components/mixins/cookies.ts +0 -22
  140. package/src/components/mixins/displayMethods.ts +0 -17
  141. package/src/components/mixins/download.ts +0 -33
  142. package/src/components/mixins/fetchParameters.ts +0 -16
  143. package/src/components/mixins/handle403.ts +0 -22
  144. package/src/components/mixins/imageProxy.ts +0 -28
  145. package/src/components/mixins/init.ts +0 -34
  146. package/src/components/mixins/loadScript.ts +0 -25
  147. package/src/components/mixins/metaTitle.ts +0 -15
  148. package/src/components/mixins/metaTitleWatch.ts +0 -26
  149. package/src/components/mixins/orgaComputed.ts +0 -23
  150. package/src/components/mixins/organisationFilter.ts +0 -56
  151. package/src/components/mixins/player/playerDisplayTime.ts +0 -35
  152. package/src/components/mixins/player/playerLive.ts +0 -144
  153. package/src/components/mixins/player/playerLogic.ts +0 -275
  154. package/src/components/mixins/player/playerLogicProgress.ts +0 -135
  155. package/src/components/mixins/player/playerStitching.ts +0 -202
  156. package/src/components/mixins/player/playerTranscript.ts +0 -113
  157. package/src/components/mixins/player/playerVast.ts +0 -198
  158. package/src/components/mixins/podcast/countdown.ts +0 -45
  159. package/src/components/mixins/podcast/podcastView.ts +0 -63
  160. package/src/components/mixins/radio/fetchRadioData.ts +0 -77
  161. package/src/components/mixins/resizePhone.ts +0 -26
  162. package/src/components/mixins/routeParam/advancedParamInit.ts +0 -202
  163. package/src/components/mixins/routeParam/paginateParamInit.ts +0 -43
  164. package/src/components/mixins/routeParam/routeParams.ts +0 -33
  165. package/src/components/mixins/routeParam/rubriquesFilterComputed.ts +0 -22
  166. package/src/components/mixins/routeParam/rubriquesFilterParam.ts +0 -29
  167. package/src/components/mixins/selenium.ts +0 -7
  168. package/src/components/mixins/seoTitleUrl.ts +0 -26
  169. package/src/components/mixins/tagOfMixins.ts +0 -19
  170. package/src/helper/uuidGenerator.ts +0 -7
  171. /package/src/{helper → components/composable}/useEventListener.ts +0 -0
  172. /package/src/{components/mixins/debounce.ts → helper/debounceHelper.ts} +0 -0
  173. /package/src/helper/{dom.ts → domHelper.ts} +0 -0
  174. /package/src/helper/{duration.ts → durationHelper.ts} +0 -0
@@ -77,7 +77,7 @@
77
77
  >
78
78
  <img
79
79
  v-lazy="
80
- proxyImageUrl(planningItem.podcastData.imageUrl, '150')
80
+ useProxyImageUrl(planningItem.podcastData.imageUrl, '150')
81
81
  "
82
82
  width="150"
83
83
  height="150"
@@ -118,8 +118,8 @@ import dayjs from "dayjs";
118
118
  import utc from "dayjs/plugin/utc";
119
119
  dayjs.extend(utc);
120
120
  import classicApi from "../../../api/classicApi";
121
- import imageProxy from "../../mixins/imageProxy";
122
- import resizePhone from "../../mixins/resizePhone";
121
+ import {useImageProxy} from "../../composable/useImageProxy";
122
+ import {useResizePhone} from "../../composable/useResizePhone";
123
123
  import ClassicLoading from "../../form/ClassicLoading.vue";
124
124
  import { defineComponent } from "vue";
125
125
  import { Canal } from "@/stores/class/radio/canal";
@@ -132,12 +132,17 @@ export default defineComponent({
132
132
  ClassicLoading,
133
133
  },
134
134
 
135
- mixins: [imageProxy,resizePhone],
136
-
137
135
  props: {
138
136
  radio: { default: undefined, type: Object as () => Canal },
139
137
  },
140
138
 
139
+
140
+ setup(){
141
+ const { isPhone } = useResizePhone();
142
+ const { useProxyImageUrl } = useImageProxy();
143
+ return { isPhone, useProxyImageUrl }
144
+ },
145
+
141
146
  data() {
142
147
  return {
143
148
  planning: {} as {
@@ -157,8 +162,6 @@ export default defineComponent({
157
162
  }>,
158
163
  loading: true as boolean,
159
164
  error: false as boolean,
160
- isPhone: false as boolean,
161
- windowWidth: 0 as number,
162
165
  showAllDays: false as boolean
163
166
  };
164
167
  },
@@ -22,7 +22,7 @@
22
22
  :data-selenium="'organisation-chooser-' + seleniumFormat(option.name)"
23
23
  >
24
24
  <img
25
- v-lazy="proxyImageUrl(option.imageUrl, '32')"
25
+ v-lazy="useProxyImageUrl(option.imageUrl, '32')"
26
26
  width="32"
27
27
  height="32"
28
28
  class="me-2"
@@ -41,8 +41,8 @@
41
41
  <script lang="ts">
42
42
  import { useAuthStore } from "../../../stores/AuthStore";
43
43
  import { mapActions, mapState } from "pinia";
44
- import imageProxy from "../../mixins/imageProxy";
45
- import selenium from "../../mixins/selenium";
44
+ import {useImageProxy} from "../../composable/useImageProxy";
45
+ import {useSelenium} from "../../composable/useSelenium";
46
46
  import classicApi from "../../../api/classicApi";
47
47
  import ClassicMultiselect from "../../form/ClassicMultiselect.vue";
48
48
  import { defineComponent } from "vue";
@@ -56,7 +56,6 @@ export default defineComponent({
56
56
  components: {
57
57
  ClassicMultiselect,
58
58
  },
59
- mixins: [selenium, imageProxy],
60
59
  props: {
61
60
  defaultanswer: { default: "", type: String },
62
61
  orgaIdSelected: { default: undefined, type: String },
@@ -69,6 +68,11 @@ export default defineComponent({
69
68
  displayLabel: { default: false, type: Boolean },
70
69
  },
71
70
  emits: ["selected"],
71
+ setup(){
72
+ const { seleniumFormat } = useSelenium();
73
+ const { useProxyImageUrl } = useImageProxy();
74
+ return { seleniumFormat, useProxyImageUrl }
75
+ },
72
76
  data() {
73
77
  return {
74
78
  maxElement: 50 as number,
@@ -29,12 +29,10 @@
29
29
  import ParticipantItem from "./ParticipantItem.vue";
30
30
  import SwiperList from "../list/SwiperList.vue";
31
31
  import classicApi from "../../../api/classicApi";
32
- import { handle403 } from "../../mixins/handle403";
32
+ import {useErrorHandler} from "../../composable/useErrorHandler";
33
33
  import ClassicLoading from "../../form/ClassicLoading.vue";
34
34
  import { defineComponent } from "vue";
35
35
  import { AxiosError } from "axios";
36
- import imageProxy from "../../mixins/imageProxy";
37
- import resizePhone from "../../mixins/resizePhone";
38
36
  import { ListClassicReturn } from "@/stores/class/general/listReturn";
39
37
  import { Participant } from "@/stores/class/general/participant";
40
38
  export default defineComponent({
@@ -46,8 +44,6 @@ export default defineComponent({
46
44
  SwiperList,
47
45
  },
48
46
 
49
- mixins: [handle403, imageProxy, resizePhone],
50
-
51
47
  props: {
52
48
  organisationId: { default: undefined, type: String },
53
49
  href: { default: undefined, type: String },
@@ -55,6 +51,10 @@ export default defineComponent({
55
51
  itemSize: { default: undefined, type: Number },
56
52
  title: { default: "", type: String },
57
53
  },
54
+ setup(){
55
+ const {handle403} = useErrorHandler();
56
+ return { handle403 }
57
+ },
58
58
 
59
59
  data() {
60
60
  return {
@@ -9,7 +9,7 @@
9
9
  :title="$t('Participant name page', { name: name })"
10
10
  >
11
11
  <img
12
- v-lazy="proxyImageUrl(participant.imageUrl, '200')"
12
+ v-lazy="useProxyImageUrl(participant.imageUrl, '200')"
13
13
  width="200"
14
14
  height="200"
15
15
  role="presentation"
@@ -55,9 +55,9 @@
55
55
  import AlertIcon from "vue-material-design-icons/Alert.vue";
56
56
  import classicApi from "../../../api/classicApi";
57
57
  import { Participant } from "@/stores/class/general/participant";
58
- import imageProxy from "../../mixins/imageProxy";
59
- import displayMethods from "../../mixins/displayMethods";
60
- import { orgaComputed } from "../../mixins/orgaComputed";
58
+ import {useImageProxy} from "../../composable/useImageProxy";
59
+ import displayHelper from "../../../helper/displayHelper";
60
+ import {useOrgaComputed} from "../../composable/useOrgaComputed";
61
61
  import { defineComponent } from "vue";
62
62
  import { Podcast } from "@/stores/class/general/podcast";
63
63
  import { ListClassicReturn } from "@/stores/class/general/listReturn";
@@ -66,10 +66,15 @@ export default defineComponent({
66
66
  components: {
67
67
  AlertIcon,
68
68
  },
69
- mixins: [displayMethods, orgaComputed, imageProxy],
70
69
  props: {
71
70
  participant: { default: () => ({}), type: Object as () => Participant },
72
71
  },
72
+ setup(){
73
+ const { useProxyImageUrl } = useImageProxy();
74
+ const { isPodcastmaker, isEditRights } = useOrgaComputed();
75
+ return { useProxyImageUrl, isPodcastmaker, isEditRights }
76
+ },
77
+
73
78
  data() {
74
79
  return {
75
80
  activeParticipant: true as boolean,
@@ -106,6 +111,9 @@ export default defineComponent({
106
111
  }
107
112
  },
108
113
  methods: {
114
+ urlify(text:string|undefined){
115
+ return displayHelper.urlify(text);
116
+ },
109
117
  async hasPodcast(): Promise<void> {
110
118
  const data = await classicApi.fetchData<ListClassicReturn<Podcast>>({
111
119
  api: 0,
@@ -44,7 +44,7 @@
44
44
  <script lang="ts">
45
45
  import ListPaginate from "../list/ListPaginate.vue";
46
46
  import ClassicLazy from "../../misc/ClassicLazy.vue";
47
- import { handle403 } from "../../mixins/handle403";
47
+ import {useErrorHandler} from "../../composable/useErrorHandler";
48
48
  import classicApi from "../../../api/classicApi";
49
49
  import ParticipantItem from "./ParticipantItem.vue";
50
50
  import { useFilterStore } from "../../../stores/FilterStore";
@@ -65,8 +65,6 @@ export default defineComponent({
65
65
  ClassicLazy,
66
66
  },
67
67
 
68
- mixins: [handle403],
69
-
70
68
  props: {
71
69
  first: { default: 0, type: Number },
72
70
  size: { default: 30, type: Number },
@@ -75,6 +73,11 @@ export default defineComponent({
75
73
  showCount: { default: false, type: Boolean },
76
74
  },
77
75
 
76
+ setup(){
77
+ const {handle403} = useErrorHandler();
78
+ return { handle403 }
79
+ },
80
+
78
81
  data() {
79
82
  return {
80
83
  loading: true as boolean,
@@ -35,7 +35,7 @@
35
35
  </router-link>
36
36
  </div>
37
37
  <img
38
- v-lazy="proxyImageUrl(playlist.imageUrl, '250')"
38
+ v-lazy="useProxyImageUrl(playlist.imageUrl, '250')"
39
39
  width="250"
40
40
  height="250"
41
41
  role="presentation"
@@ -50,17 +50,19 @@
50
50
  <script lang="ts">
51
51
  import { Playlist } from "@/stores/class/general/playlist";
52
52
  import { state } from "../../../stores/ParamSdkStore";
53
- import imageProxy from "../../mixins/imageProxy";
54
- import displayMethods from "../../mixins/displayMethods";
53
+ import {useImageProxy} from "../../composable/useImageProxy";
54
+ import displayHelper from "../../../helper/displayHelper";
55
55
  import { defineComponent } from "vue";
56
56
  export default defineComponent({
57
57
  name: "PlaylistItem",
58
58
 
59
- mixins: [displayMethods, imageProxy],
60
-
61
59
  props: {
62
60
  playlist: { default: () => ({}), type: Object as () => Playlist },
63
61
  },
62
+ setup(){
63
+ const { useProxyImageUrl } = useImageProxy();
64
+ return { useProxyImageUrl }
65
+ },
64
66
 
65
67
  computed: {
66
68
  isPodcastmaker(): boolean {
@@ -87,6 +89,11 @@ export default defineComponent({
87
89
  playlistDescContainer.classList.add("after-element-description");
88
90
  }
89
91
  },
92
+ methods:{
93
+ urlify(text:string|undefined){
94
+ return displayHelper.urlify(text);
95
+ },
96
+ }
90
97
  });
91
98
  </script>
92
99
  <style lang="scss">
@@ -43,7 +43,7 @@
43
43
  <script lang="ts">
44
44
  import ClassicLazy from "../../misc/ClassicLazy.vue";
45
45
  import ListPaginate from "../list/ListPaginate.vue";
46
- import { handle403 } from "../../mixins/handle403";
46
+ import {useErrorHandler} from "../../composable/useErrorHandler";
47
47
  import classicApi from "../../../api/classicApi";
48
48
  import PlaylistItem from "./PlaylistItem.vue";
49
49
  import { Playlist, emptyPlaylistData } from "@/stores/class/general/playlist";
@@ -61,8 +61,6 @@ export default defineComponent({
61
61
  ClassicLazy,
62
62
  },
63
63
 
64
- mixins: [handle403],
65
-
66
64
  props: {
67
65
  first: { default: 0, type: Number },
68
66
  size: { default: 30, type: Number },
@@ -70,6 +68,11 @@ export default defineComponent({
70
68
  organisationId: { default: undefined, type: String },
71
69
  },
72
70
 
71
+ setup(){
72
+ const {handle403} = useErrorHandler();
73
+ return { handle403 }
74
+ },
75
+
73
76
  data() {
74
77
  return {
75
78
  loading: true as boolean,
@@ -58,8 +58,8 @@
58
58
 
59
59
  <script lang="ts">
60
60
  import ListPaginate from "../list/ListPaginate.vue";
61
- import { handle403 } from "../../mixins/handle403";
62
- import { orgaComputed } from "../../mixins/orgaComputed";
61
+ import {useErrorHandler} from "../../composable/useErrorHandler";
62
+ import {useOrgaComputed} from "../../composable/useOrgaComputed";
63
63
  import classicApi from "../../../api/classicApi";
64
64
  import PodcastItem from "../podcasts/PodcastItem.vue";
65
65
  import ClassicSearch from "../../form/ClassicSearch.vue";
@@ -78,12 +78,16 @@ export default defineComponent({
78
78
  ClassicLazy,
79
79
  },
80
80
 
81
- mixins: [handle403, orgaComputed],
82
-
83
81
  props: {
84
82
  playlist: { default: () => ({}), type: Object as () => Playlist },
85
83
  },
86
84
 
85
+ setup(){
86
+ const {handle403} = useErrorHandler();
87
+ const { isEditRights } = useOrgaComputed();
88
+ return { handle403, isEditRights }
89
+ },
90
+
87
91
  data() {
88
92
  return {
89
93
  loading: true as boolean,
@@ -8,21 +8,24 @@
8
8
  </template>
9
9
 
10
10
  <script lang="ts">
11
- import imageProxy from "../../mixins/imageProxy";
11
+ import {useImageProxy} from "../../composable/useImageProxy";
12
12
  import { defineComponent } from "vue";
13
13
  export default defineComponent({
14
- mixins: [imageProxy],
15
14
 
16
15
  props: {
17
16
  pageTitle: { default: undefined, type: String },
18
17
  imgUrl: { default: undefined, type: String },
19
18
  },
19
+ setup(){
20
+ const { useProxyImageUrl } = useImageProxy();
21
+ return { useProxyImageUrl }
22
+ },
20
23
  computed: {
21
24
  backgroundDisplay(): string {
22
25
  if (!this.imgUrl) {
23
26
  return "";
24
27
  }
25
- return `background-image: url('${this.proxyImageUrl(
28
+ return `background-image: url('${this.useProxyImageUrl(
26
29
  this.imgUrl,
27
30
  "250",
28
31
  )}');`;
@@ -13,7 +13,7 @@
13
13
  <script lang="ts">
14
14
  import DownloadIcon from "vue-material-design-icons/Download.vue";
15
15
  import { Podcast } from "@/stores/class/general/podcast";
16
- import download from "../../mixins/download";
16
+ import downloadHelper from "../../../helper/downloadHelper";
17
17
  import { defineComponent } from "vue";
18
18
  export default defineComponent({
19
19
  name: "DownloadPodcastButton",
@@ -21,8 +21,6 @@ export default defineComponent({
21
21
  DownloadIcon,
22
22
  },
23
23
 
24
- mixins: [download],
25
-
26
24
  props: {
27
25
  podcast: { default: undefined, type: Object as () => Podcast },
28
26
  },
@@ -34,7 +32,7 @@ export default defineComponent({
34
32
 
35
33
  methods: {
36
34
  downloadPodcast() {
37
- this.onDownload(
35
+ downloadHelper.onDownload(
38
36
  "/download/podcast/" + this.podcast?.podcastId,
39
37
  this.podcast?.title + ".mp3",
40
38
  false,
@@ -4,7 +4,7 @@
4
4
  class="img-box img-box-podcast mb-3 flex-column justify-content-start align-items-start position-relative flex-shrink-0 float-start"
5
5
  >
6
6
  <img
7
- v-lazy="proxyImageUrl(podcast.imageUrl, '270')"
7
+ v-lazy="useProxyImageUrl(podcast.imageUrl, '270')"
8
8
  width="270"
9
9
  height="270"
10
10
  role="presentation"
@@ -52,7 +52,7 @@ import PodcastPlayButton from "./PodcastPlayButton.vue";
52
52
  import { state } from "../../../stores/ParamSdkStore";
53
53
  import { Podcast } from "@/stores/class/general/podcast";
54
54
  import { Conference } from "@/stores/class/conference/conference";
55
- import imageProxy from "../../mixins/imageProxy";
55
+ import {useImageProxy} from "../../composable/useImageProxy";
56
56
  import { defineComponent } from "vue";
57
57
  export default defineComponent({
58
58
  name: "PodcastImage",
@@ -60,7 +60,6 @@ export default defineComponent({
60
60
  PodcastPlayButton,
61
61
  ChevronDownIcon,
62
62
  },
63
- mixins: [imageProxy],
64
63
  props: {
65
64
  podcast: { default: () => ({}), type: Object as () => Podcast },
66
65
  hidePlay: { default: false, type: Boolean },
@@ -70,6 +69,10 @@ export default defineComponent({
70
69
  fetchConference: { default: undefined, type: Object as () => Conference },
71
70
  },
72
71
  emits: ["hideDescription", "showDescription"],
72
+ setup(){
73
+ const { useProxyImageUrl } = useImageProxy();
74
+ return { useProxyImageUrl }
75
+ },
73
76
  data() {
74
77
  return {
75
78
  isDescription: false as boolean,
@@ -58,8 +58,8 @@
58
58
  import PlusIcon from "vue-material-design-icons/Plus.vue";
59
59
  import ChevronLeftIcon from "vue-material-design-icons/ChevronLeft.vue";
60
60
  import ChevronRightIcon from "vue-material-design-icons/ChevronRight.vue";
61
- import { rubriquesFilterComputed } from "../../mixins/routeParam/rubriquesFilterComputed";
62
- import { rubriquesFilterParam } from "../../mixins/routeParam/rubriquesFilterParam";
61
+ import { useRubriquesFilterComputed } from "../../composable/route/useRubriquesFilterComputed";
62
+ import { useRubriquesFilterParam } from "../../composable/route/useRubriquesFilterParam";
63
63
  import { RubriquageFilter } from "@/stores/class/rubrique/rubriquageFilter";
64
64
  import { defineComponent } from "vue";
65
65
  import { RouteLocationRaw } from "vue-router";
@@ -74,8 +74,6 @@ export default defineComponent({
74
74
  PlusIcon,
75
75
  },
76
76
 
77
- mixins: [rubriquesFilterParam, rubriquesFilterComputed],
78
-
79
77
  props: {
80
78
  displayArrow: { default: true, type: Boolean },
81
79
  previousAvailable: { default: false, type: Boolean },
@@ -92,6 +90,11 @@ export default defineComponent({
92
90
  titleTag: { default: "h2", type: String },
93
91
  },
94
92
  emits: ["sortChrono", "sortPopular", "displayPrevious", "displayNext"],
93
+ setup(){
94
+ const { modifyRubriquesFilter } = useRubriquesFilterParam();
95
+ const { rubriqueQueryParam } = useRubriquesFilterComputed();
96
+ return { modifyRubriquesFilter, rubriqueQueryParam }
97
+ },
95
98
  data() {
96
99
  return {};
97
100
  },
@@ -44,7 +44,7 @@
44
44
  </template>
45
45
 
46
46
  <script lang="ts">
47
- import debounce from "../../mixins/debounce";
47
+ import debounce from '../../../helper/debounceHelper';
48
48
  import PodcastItemInfo from "./PodcastItemInfo.vue";
49
49
  import PodcastImage from "./PodcastImage.vue";
50
50
  import dayjs from "dayjs";
@@ -46,7 +46,7 @@
46
46
  <script lang="ts">
47
47
  import AnimatorsItem from "./AnimatorsItem.vue";
48
48
  import { state } from "../../../stores/ParamSdkStore";
49
- import { orgaComputed } from "../../mixins/orgaComputed";
49
+ import {useOrgaComputed} from "../../composable/useOrgaComputed";
50
50
  import dayjs from "dayjs";
51
51
  import { defineAsyncComponent, defineComponent } from "vue";
52
52
  import { Participant } from "@/stores/class/general/participant";
@@ -61,8 +61,6 @@ export default defineComponent({
61
61
  PodcastPlayBar,
62
62
  },
63
63
 
64
- mixins: [orgaComputed],
65
-
66
64
  props: {
67
65
  podcastId: { default: undefined, type: Number },
68
66
  title: { default: "", type: String },
@@ -73,6 +71,11 @@ export default defineComponent({
73
71
  animators: { default: undefined, type: Object as () => Array<Participant> },
74
72
  },
75
73
 
74
+ setup(){
75
+ const { isPodcastmaker, isEditRights } = useOrgaComputed();
76
+ return { isPodcastmaker, isEditRights }
77
+ },
78
+
76
79
  computed: {
77
80
  isProgressBar(): boolean {
78
81
  return state.emissionsPage.progressBar as boolean;
@@ -47,7 +47,7 @@
47
47
 
48
48
  <script lang="ts">
49
49
  import ListPaginate from "../list/ListPaginate.vue";
50
- import { handle403 } from "../../mixins/handle403";
50
+ import {useErrorHandler} from "../../composable/useErrorHandler";
51
51
  import classicApi from "../../../api/classicApi";
52
52
  import PodcastItem from "./PodcastItem.vue";
53
53
  import ClassicLazy from "../../misc/ClassicLazy.vue";
@@ -68,8 +68,6 @@ export default defineComponent({
68
68
  ClassicLazy,
69
69
  },
70
70
 
71
- mixins: [handle403],
72
-
73
71
  props: {
74
72
  first: { default: 0, type: Number },
75
73
  size: { default: 30, type: Number },
@@ -96,6 +94,11 @@ export default defineComponent({
96
94
  },
97
95
  emits: ["fetch", "emptyList"],
98
96
 
97
+ setup(){
98
+ const {handle403} = useErrorHandler();
99
+ return { handle403 }
100
+ },
101
+
99
102
  data() {
100
103
  return {
101
104
  loading: true as boolean,
@@ -156,13 +156,12 @@ import ParticipantDescription from "./ParticipantDescription.vue";
156
156
  import PodcastRawTranscript from "./PodcastRawTranscript.vue";
157
157
  import { state } from "../../../stores/ParamSdkStore";
158
158
  import { useAuthStore } from "../../../stores/AuthStore";
159
- import displayMethods from "../../mixins/displayMethods";
160
- import podcastView from "../../mixins/podcast/podcastView";
161
- import { orgaComputed } from "../../mixins/orgaComputed";
159
+ import displayHelper from "../../../helper/displayHelper";
160
+ import {usePodcastView} from "../../composable/podcasts/usePodcastView";
162
161
  import { Podcast } from "@/stores/class/general/podcast";
163
162
  import { Conference } from "@/stores/class/conference/conference";
164
163
 
165
- import { defineComponent, defineAsyncComponent } from "vue";
164
+ import { defineComponent, defineAsyncComponent, toRefs } from "vue";
166
165
  const ErrorMessage = defineAsyncComponent(
167
166
  () => import("../../misc/ErrorMessage.vue"),
168
167
  );
@@ -211,8 +210,6 @@ export default defineComponent({
211
210
  PodcastRubriqueList
212
211
  },
213
212
 
214
- mixins: [displayMethods, orgaComputed, podcastView],
215
-
216
213
  props: {
217
214
  playingPodcast: { default: undefined, type: Object as () => Podcast },
218
215
  podcast: { default: undefined, type: Object as () => Podcast },
@@ -221,6 +218,22 @@ export default defineComponent({
221
218
 
222
219
  emits: ["updatePodcast"],
223
220
 
221
+ setup(props){
222
+ const propsRef = toRefs(props);
223
+ const {
224
+ isLiveReadyToRecord,
225
+ isCounter,
226
+ timeRemaining,
227
+ isPlannedInProcessor,
228
+ date,
229
+ duration,
230
+ durationIso,
231
+ isPodcastmaker,
232
+ editRight
233
+ } = usePodcastView(propsRef.podcast, propsRef.podcastConference);
234
+ return { isPodcastmaker, editRight, isLiveReadyToRecord, isCounter, timeRemaining, isPlannedInProcessor, date, duration, durationIso }
235
+ },
236
+
224
237
  data() {
225
238
  return {
226
239
  };
@@ -247,9 +260,6 @@ export default defineComponent({
247
260
  isProgressBar(): boolean {
248
261
  return state.emissionsPage.progressBar as boolean;
249
262
  },
250
- editRight(): boolean {
251
- return this.isEditRights(this.podcast?.organisation.id);
252
- },
253
263
  isLiveReady(): boolean {
254
264
  return (
255
265
  undefined !== this.podcast?.conferenceId &&
@@ -289,6 +299,9 @@ export default defineComponent({
289
299
  },
290
300
  },
291
301
  methods: {
302
+ urlify(text:string|undefined){
303
+ return displayHelper.urlify(text);
304
+ },
292
305
  removeDeleted(): void {
293
306
  if (this.isLiveReadyToRecord) {
294
307
  this.$router.push("/main/pub/lives");
@@ -18,8 +18,7 @@
18
18
 
19
19
  <script lang="ts">
20
20
  import ProgressBar from "../../misc/ProgressBar.vue";
21
- import DurationHelper from "../../../helper/duration";
22
- import displayMethods from "../../mixins/displayMethods";
21
+ import DurationHelper from "../../../helper/durationHelper";
23
22
  import { usePlayerStore } from "../../../stores/PlayerStore";
24
23
  import { mapState, mapActions } from "pinia";
25
24
  import { defineComponent } from "vue";
@@ -28,7 +27,6 @@ export default defineComponent({
28
27
  components: {
29
28
  ProgressBar,
30
29
  },
31
- mixins: [displayMethods],
32
30
  props: {
33
31
  podcastId: { default: undefined, type: Number },
34
32
  duration: { default: 0, type: Number },
@@ -49,11 +49,10 @@ import TimerSandEmptyIcon from "vue-material-design-icons/TimerSandEmpty.vue";
49
49
  import EyeOffOutlineIcon from "vue-material-design-icons/EyeOffOutline.vue";
50
50
  import CancelIcon from "vue-material-design-icons/Cancel.vue";
51
51
  import AlertIcon from "vue-material-design-icons/Alert.vue";
52
- import DurationHelper from "../../../helper/duration";
52
+ import DurationHelper from "../../../helper/durationHelper";
53
53
  import { state } from "../../../stores/ParamSdkStore";
54
54
  import { Podcast } from "@/stores/class/general/podcast";
55
55
  import { Conference } from "@/stores/class/conference/conference";
56
- import imageProxy from "../../mixins/imageProxy";
57
56
  import { useAuthStore } from "../../../stores/AuthStore";
58
57
  import { usePlayerStore } from "../../../stores/PlayerStore";
59
58
  import { mapState, mapActions } from "pinia";
@@ -75,7 +74,6 @@ export default defineComponent({
75
74
  PlayVideoIcon,
76
75
  PodcastIsPlaying
77
76
  },
78
- mixins: [imageProxy],
79
77
  props: {
80
78
  podcast: { default: () => ({}), type: Object as () => Podcast },
81
79
  hidePlay: { default: false, type: Boolean },