{"version":3,"file":"ProductorSearch-CLFSPAwG.mjs","names":[],"sources":["../src/components/display/filter/ProductorSearch.vue","../src/components/display/filter/ProductorSearch.vue"],"sourcesContent":["<template>\n  <div id=\"productor-search\" class=\"d-flex-column align-items-center my-3\">\n    <div\n      v-if=\"!state.generalParameters.podcastmaker && !filterStore.filterOrgaId\"\n      class=\"w-50-responsive pe-3 position-relative\"\n    >\n      <OrganisationChooser\n        :defaultanswer=\"t('No organisation filter')\"\n        :orga-id-selected=\"organisationId\"\n        @selected=\"onOrganisationSelected\"\n      />\n      <template  v-if=\"!authStore.authOrgaId ||authStore.authOrgaId ===organisationId\">\n        <ClassicCheckbox\n          v-model:text-init=\"keepOrganisation\"\n          :class=\"!!organisationId ? '' : 'invisible'\"\n          class=\"m-3\"\n          :label=\"\n            t(\n              'check this box if you want to keep this filter for the rest of your visit',\n            )\n          \"\n          :display-label=\"false\"\n          id-checkbox=\"organisation-checkbox\"\n          @click-action=\"onKeepOrganisation\"\n        />\n        <div v-if=\"showBubble\" class=\"filter-speech-bubble\">\n          {{\n            t(\n              \"check this box if you want to keep this filter for the rest of your visit\",\n            )\n          }}\n        </div>\n      </template>\n    </div>\n    <ClassicSearch\n      :text-init=\"searchPattern\"\n      class=\"w-50-responsive\"\n      :autofocus=\"true\"\n      id-search=\"productor-search-input\"\n      :label=\"searchText\"\n      @update:text-init=\"updateSearchPattern\"\n    />\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useRouteUpdateParams } from \"../../composable/route/useRouteUpdateParams\";\nimport ClassicSearch from \"../../form/ClassicSearch.vue\";\nimport { state } from \"../../../stores/ParamSdkStore\";\nimport { Organisation } from \"../../../stores/class/general/organisation\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { defineAsyncComponent, ref, computed, watch, onBeforeMount } from \"vue\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute, useRouter } from \"vue-router\";\nconst OrganisationChooser = defineAsyncComponent(\n  () => import(\"../organisation/OrganisationChooser.vue\"),\n);\nconst ClassicCheckbox = defineAsyncComponent(\n  () => import(\"../../form/ClassicCheckbox.vue\"),\n);\n\n//Props \nconst props = defineProps({\n  organisationId: { default: undefined, type: String },\n  searchPattern: { default: \"\", type: String },\n  type: { default: \"podcast\", type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"update:organisationId\", \"update:searchPattern\"]);\n\n//Data \nconst keepOrganisation = ref(false);\nconst showBubble = ref(false);\n\n//Composables\nconst { t } = useI18n();\nconst { updateRouteParam } = useRouteUpdateParams();\nconst filterStore = useFilterStore();\nconst authStore = useAuthStore();\nconst router = useRouter();\nconst route = useRoute();\n\n\n//Computed\nconst searchText = computed(() => {\n  if (\"emission\" === props.type) return t(\"Look for emission name\");\n  if (\"participant\" === props.type)\n    return t(\"Look for participant name\");\n  if (\"playlist\" === props.type) return t(\"Look for playlist name\");\n  return t(\"Look for podcast name\");\n});\n\n\n//Watch\nwatch(()=>filterStore.filterOrgaId, async () => {\n  keepOrganisation.value = undefined !== filterStore.filterOrgaId;\n  if (filterStore.filterOrgaId) {\n    emit(\"update:organisationId\", filterStore.filterOrgaId);\n  }else{\n    updateRouteParam({ o: props.organisationId, productor:undefined});\n  }\n});\n \n\nonBeforeMount(()=>{\n  if (!props.organisationId) return;\n  if (filterStore.filterOrgaId === props.organisationId) {\n    keepOrganisation.value = true;\n  }\n})\n\n\n//Methods\nfunction updateSearchPattern(newSearch: string) {\n  emit(\"update:searchPattern\", newSearch);\n}\nfunction onOrganisationSelected(organisation: Organisation): void {\n  updateRouteParam({ o: organisation.id, productor: undefined });\n  keepOrganisation.value = false;\n  if (!organisation?.id) {\n    emit(\"update:organisationId\", undefined);\n  }\n  emit(\"update:organisationId\", organisation.id);\n  if (undefined===authStore.authOrgaId && \"PUBLIC\" !== organisation.privacy) {\n    onKeepOrganisation(organisation.id);\n  } else {\n    showBubble.value = true;\n    setTimeout(() => {\n      showBubble.value = false;\n    }, 6000);\n  }\n}\nasync function onKeepOrganisation(orgaId: string|undefined = undefined): Promise<void> {\n  const orgaToApply= orgaId ?? props.organisationId;\n  if (!orgaToApply) {\n    return;\n  }\n  router.push({\n    query: { ...route.query, ...{ productor: orgaToApply, o:undefined }},\n  });\n}\n</script>\n\n<style lang=\"scss\">\n\n.octopus-app {\n  .filter-speech-bubble {\n    position: absolute;\n    background: var(--octopus-primary);\n    border-radius: var(--octopus-border-radius);\n    width: 10rem;\n    right: 4rem;\n    padding: 5px;\n    animation: fadein 1s;\n    color: white;\n  }\n\n  .filter-speech-bubble::after {\n    content: \"\";\n    position: absolute;\n    right: 0;\n    top: 50%;\n    width: 0;\n    height: 0;\n    border: 18px solid transparent;\n    border-left-color: var(--octopus-primary);\n    border-right: 0;\n    border-bottom: 0;\n    margin-top: -9px;\n    margin-right: -18px;\n    animation: fadein 1s;\n  }\n  @keyframes fadein {\n    from { opacity: 0; }\n    to { opacity: 1; }\n  }\n}\n</style>\n","<template>\n  <div id=\"productor-search\" class=\"d-flex-column align-items-center my-3\">\n    <div\n      v-if=\"!state.generalParameters.podcastmaker && !filterStore.filterOrgaId\"\n      class=\"w-50-responsive pe-3 position-relative\"\n    >\n      <OrganisationChooser\n        :defaultanswer=\"t('No organisation filter')\"\n        :orga-id-selected=\"organisationId\"\n        @selected=\"onOrganisationSelected\"\n      />\n      <template  v-if=\"!authStore.authOrgaId ||authStore.authOrgaId ===organisationId\">\n        <ClassicCheckbox\n          v-model:text-init=\"keepOrganisation\"\n          :class=\"!!organisationId ? '' : 'invisible'\"\n          class=\"m-3\"\n          :label=\"\n            t(\n              'check this box if you want to keep this filter for the rest of your visit',\n            )\n          \"\n          :display-label=\"false\"\n          id-checkbox=\"organisation-checkbox\"\n          @click-action=\"onKeepOrganisation\"\n        />\n        <div v-if=\"showBubble\" class=\"filter-speech-bubble\">\n          {{\n            t(\n              \"check this box if you want to keep this filter for the rest of your visit\",\n            )\n          }}\n        </div>\n      </template>\n    </div>\n    <ClassicSearch\n      :text-init=\"searchPattern\"\n      class=\"w-50-responsive\"\n      :autofocus=\"true\"\n      id-search=\"productor-search-input\"\n      :label=\"searchText\"\n      @update:text-init=\"updateSearchPattern\"\n    />\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useRouteUpdateParams } from \"../../composable/route/useRouteUpdateParams\";\nimport ClassicSearch from \"../../form/ClassicSearch.vue\";\nimport { state } from \"../../../stores/ParamSdkStore\";\nimport { Organisation } from \"../../../stores/class/general/organisation\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { defineAsyncComponent, ref, computed, watch, onBeforeMount } from \"vue\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute, useRouter } from \"vue-router\";\nconst OrganisationChooser = defineAsyncComponent(\n  () => import(\"../organisation/OrganisationChooser.vue\"),\n);\nconst ClassicCheckbox = defineAsyncComponent(\n  () => import(\"../../form/ClassicCheckbox.vue\"),\n);\n\n//Props \nconst props = defineProps({\n  organisationId: { default: undefined, type: String },\n  searchPattern: { default: \"\", type: String },\n  type: { default: \"podcast\", type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"update:organisationId\", \"update:searchPattern\"]);\n\n//Data \nconst keepOrganisation = ref(false);\nconst showBubble = ref(false);\n\n//Composables\nconst { t } = useI18n();\nconst { updateRouteParam } = useRouteUpdateParams();\nconst filterStore = useFilterStore();\nconst authStore = useAuthStore();\nconst router = useRouter();\nconst route = useRoute();\n\n\n//Computed\nconst searchText = computed(() => {\n  if (\"emission\" === props.type) return t(\"Look for emission name\");\n  if (\"participant\" === props.type)\n    return t(\"Look for participant name\");\n  if (\"playlist\" === props.type) return t(\"Look for playlist name\");\n  return t(\"Look for podcast name\");\n});\n\n\n//Watch\nwatch(()=>filterStore.filterOrgaId, async () => {\n  keepOrganisation.value = undefined !== filterStore.filterOrgaId;\n  if (filterStore.filterOrgaId) {\n    emit(\"update:organisationId\", filterStore.filterOrgaId);\n  }else{\n    updateRouteParam({ o: props.organisationId, productor:undefined});\n  }\n});\n \n\nonBeforeMount(()=>{\n  if (!props.organisationId) return;\n  if (filterStore.filterOrgaId === props.organisationId) {\n    keepOrganisation.value = true;\n  }\n})\n\n\n//Methods\nfunction updateSearchPattern(newSearch: string) {\n  emit(\"update:searchPattern\", newSearch);\n}\nfunction onOrganisationSelected(organisation: Organisation): void {\n  updateRouteParam({ o: organisation.id, productor: undefined });\n  keepOrganisation.value = false;\n  if (!organisation?.id) {\n    emit(\"update:organisationId\", undefined);\n  }\n  emit(\"update:organisationId\", organisation.id);\n  if (undefined===authStore.authOrgaId && \"PUBLIC\" !== organisation.privacy) {\n    onKeepOrganisation(organisation.id);\n  } else {\n    showBubble.value = true;\n    setTimeout(() => {\n      showBubble.value = false;\n    }, 6000);\n  }\n}\nasync function onKeepOrganisation(orgaId: string|undefined = undefined): Promise<void> {\n  const orgaToApply= orgaId ?? props.organisationId;\n  if (!orgaToApply) {\n    return;\n  }\n  router.push({\n    query: { ...route.query, ...{ productor: orgaToApply, o:undefined }},\n  });\n}\n</script>\n\n<style lang=\"scss\">\n\n.octopus-app {\n  .filter-speech-bubble {\n    position: absolute;\n    background: var(--octopus-primary);\n    border-radius: var(--octopus-border-radius);\n    width: 10rem;\n    right: 4rem;\n    padding: 5px;\n    animation: fadein 1s;\n    color: white;\n  }\n\n  .filter-speech-bubble::after {\n    content: \"\";\n    position: absolute;\n    right: 0;\n    top: 50%;\n    width: 0;\n    height: 0;\n    border: 18px solid transparent;\n    border-left-color: var(--octopus-primary);\n    border-right: 0;\n    border-bottom: 0;\n    margin-top: -9px;\n    margin-right: -18px;\n    animation: fadein 1s;\n  }\n  @keyframes fadein {\n    from { opacity: 0; }\n    to { opacity: 1; }\n  }\n}\n</style>\n"],"mappings":"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"}