ep-lib-ts 1.1.13 → 1.1.14

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 (142) hide show
  1. package/dist/components/basics/EpBtn.vue.js +2 -2
  2. package/dist/components/basics/EpBtn.vue.js.map +1 -1
  3. package/dist/components/basics/EpChip.vue.js +2 -2
  4. package/dist/components/basics/EpChip.vue.js.map +1 -1
  5. package/dist/components/basics/EpHover.vue.js +1 -1
  6. package/dist/components/basics/EpHover.vue.js.map +1 -1
  7. package/dist/components/basics/EpHoverCard.vue.js +6 -6
  8. package/dist/components/basics/EpHoverCard.vue.js.map +1 -1
  9. package/dist/components/basics/EpImg.vue.js +8 -8
  10. package/dist/components/basics/EpImg.vue.js.map +1 -1
  11. package/dist/components/basics/EpImgCarousel.vue.js +8 -8
  12. package/dist/components/basics/EpImgCarousel.vue.js.map +1 -1
  13. package/dist/components/basics/EpSection.vue.js +25 -25
  14. package/dist/components/basics/EpSection.vue.js.map +1 -1
  15. package/dist/components/basics/EpSectionCols.vue.js +29 -29
  16. package/dist/components/basics/EpSectionCols.vue.js.map +1 -1
  17. package/dist/components/basics/EpSpinner.vue.js +5 -5
  18. package/dist/components/basics/EpSpinner.vue.js.map +1 -1
  19. package/dist/components/basics/EpStackedList.vue.js +4 -4
  20. package/dist/components/basics/EpStackedList.vue.js.map +1 -1
  21. package/dist/components/charts/EpBarChart.vue.js +3 -3
  22. package/dist/components/charts/EpBarChart.vue.js.map +1 -1
  23. package/dist/components/charts/EpFunnelChart.vue.js +4 -4
  24. package/dist/components/charts/EpFunnelChart.vue.js.map +1 -1
  25. package/dist/components/charts/EpLineChart.vue.js +3 -3
  26. package/dist/components/charts/EpLineChart.vue.js.map +1 -1
  27. package/dist/components/charts/EpPieChart.vue.js +4 -4
  28. package/dist/components/charts/EpPieChart.vue.js.map +1 -1
  29. package/dist/components/educationals/EpBranchingScenario.vue2.js +19 -19
  30. package/dist/components/educationals/EpBranchingScenario.vue2.js.map +1 -1
  31. package/dist/components/educationals/EpCodeblock.vue.js +1 -1
  32. package/dist/components/educationals/EpCodeblock.vue.js.map +1 -1
  33. package/dist/components/educationals/EpConclusion.vue.js +3 -3
  34. package/dist/components/educationals/EpConclusion.vue.js.map +1 -1
  35. package/dist/components/educationals/EpDescription.vue.js +1 -1
  36. package/dist/components/educationals/EpDocument.vue.js +4 -4
  37. package/dist/components/educationals/EpDocument.vue.js.map +1 -1
  38. package/dist/components/educationals/EpEdu.vue.js +4 -4
  39. package/dist/components/educationals/EpEdu.vue.js.map +1 -1
  40. package/dist/components/educationals/EpFillBlanks.vue.js +1 -1
  41. package/dist/components/educationals/EpFillBlanks.vue.js.map +1 -1
  42. package/dist/components/educationals/EpInstructions.vue.js +1 -1
  43. package/dist/components/educationals/EpIntroduction.vue.js +6 -6
  44. package/dist/components/educationals/EpIntroduction.vue.js.map +1 -1
  45. package/dist/components/educationals/EpObjective.vue.js +3 -3
  46. package/dist/components/educationals/EpObjective.vue.js.map +1 -1
  47. package/dist/components/educationals/EpReading.vue.js +3 -3
  48. package/dist/components/educationals/EpReading.vue.js.map +1 -1
  49. package/dist/components/educationals/EpResource.vue.js +3 -3
  50. package/dist/components/educationals/EpResource.vue.js.map +1 -1
  51. package/dist/components/educationals/EpScope.vue.js +2 -2
  52. package/dist/components/educationals/EpScope.vue.js.map +1 -1
  53. package/dist/components/educationals/EpSegmentedBox.vue.js +1 -1
  54. package/dist/components/educationals/EpSegmentedBox.vue.js.map +1 -1
  55. package/dist/components/educationals/EpSpecificObjective.vue.js +10 -10
  56. package/dist/components/educationals/EpSpecificObjective.vue.js.map +1 -1
  57. package/dist/components/forms/EpSelect.vue.js +3 -3
  58. package/dist/components/forms/EpSelect.vue.js.map +1 -1
  59. package/dist/components/forms/EpTextarea.vue2.js +1 -1
  60. package/dist/components/forms/EpTextarea.vue2.js.map +1 -1
  61. package/dist/components/forms/EpToggle.vue2.js +1 -1
  62. package/dist/components/forms/EpToggle.vue2.js.map +1 -1
  63. package/dist/components/interactions/EpAccordeon.vue2.js +1 -1
  64. package/dist/components/interactions/EpAccordeon.vue2.js.map +1 -1
  65. package/dist/components/interactions/EpAssociation.vue.js +13 -14
  66. package/dist/components/interactions/EpAssociation.vue.js.map +1 -1
  67. package/dist/components/interactions/EpContentSlider.vue.js +2 -2
  68. package/dist/components/interactions/EpContentSlider.vue.js.map +1 -1
  69. package/dist/components/interactions/EpFlipCard.vue2.js +17 -17
  70. package/dist/components/interactions/EpFlipCard.vue2.js.map +1 -1
  71. package/dist/components/interactions/EpHotSpot.vue.js +1 -1
  72. package/dist/components/interactions/EpHotSpot.vue.js.map +1 -1
  73. package/dist/components/interactions/EpImageCompare.vue.js +6 -6
  74. package/dist/components/interactions/EpImageCompare.vue.js.map +1 -1
  75. package/dist/components/interactions/EpModal.vue.js +4 -4
  76. package/dist/components/interactions/EpModal.vue.js.map +1 -1
  77. package/dist/components/interactions/EpQuestion.vue.js +8 -8
  78. package/dist/components/interactions/EpQuestion.vue.js.map +1 -1
  79. package/dist/components/interactions/EpSummativeTable.vue.js +3 -3
  80. package/dist/components/interactions/EpSummativeTable.vue.js.map +1 -1
  81. package/dist/components/interactions/EpTooltip.vue.js +1 -1
  82. package/dist/components/interactions/EpTooltip.vue.js.map +1 -1
  83. package/dist/components/medias/EpAudio.vue.js +3 -3
  84. package/dist/components/medias/EpAudio.vue.js.map +1 -1
  85. package/dist/components/medias/EpCardLink.vue.js +16 -16
  86. package/dist/components/medias/EpCardLink.vue.js.map +1 -1
  87. package/dist/components/medias/EpCarousel.vue.js +10 -10
  88. package/dist/components/medias/EpCarousel.vue.js.map +1 -1
  89. package/dist/components/medias/EpHierarchy.vue2.js +1 -1
  90. package/dist/components/medias/EpHierarchy.vue2.js.map +1 -1
  91. package/dist/components/medias/EpIframe.vue.js +3 -3
  92. package/dist/components/medias/EpIframe.vue.js.map +1 -1
  93. package/dist/components/medias/EpKatex.vue2.js +4 -4
  94. package/dist/components/medias/EpKatex.vue2.js.map +1 -1
  95. package/dist/components/medias/EpLink.vue.js +2 -2
  96. package/dist/components/medias/EpLink.vue.js.map +1 -1
  97. package/dist/components/medias/EpLinkVersion.vue.js +1 -1
  98. package/dist/components/medias/EpLinkVersion.vue.js.map +1 -1
  99. package/dist/components/medias/EpLottieSvg.vue.js +8 -8
  100. package/dist/components/medias/EpLottieSvg.vue.js.map +1 -1
  101. package/dist/components/medias/EpSensibleImage.vue2.js +18 -18
  102. package/dist/components/medias/EpSensibleImage.vue2.js.map +1 -1
  103. package/dist/components/medias/EpSoftware.vue.js +3 -3
  104. package/dist/components/medias/EpSoftware.vue.js.map +1 -1
  105. package/dist/components/medias/EpSvg.vue.js +4 -4
  106. package/dist/components/medias/EpSvg.vue.js.map +1 -1
  107. package/dist/components/medias/EpTerm.vue.js +6 -6
  108. package/dist/components/medias/EpTerm.vue.js.map +1 -1
  109. package/dist/components/medias/EpVideo.vue.js +2 -2
  110. package/dist/components/medias/EpVideo.vue.js.map +1 -1
  111. package/dist/components/medias/EpVideoPanopto.vue.js +3 -3
  112. package/dist/components/medias/EpVideoPanopto.vue.js.map +1 -1
  113. package/dist/components/medias/EpWordDef.vue.js +39 -39
  114. package/dist/components/medias/EpWordDef.vue.js.map +1 -1
  115. package/dist/components/signages/EpAlert.vue2.js +1 -1
  116. package/dist/components/signages/EpHeader.vue.js +22 -22
  117. package/dist/components/signages/EpHeader.vue.js.map +1 -1
  118. package/dist/components/signages/EpQuote.vue.js +1 -1
  119. package/dist/components/signages/EpSkeleton.vue2.js +1 -1
  120. package/dist/components/tools/AssociationNode.vue2.js +8 -8
  121. package/dist/components/tools/AssociationNode.vue2.js.map +1 -1
  122. package/dist/components/tools/AsyncKatexRender.vue2.js +1 -1
  123. package/dist/components/tools/AsyncKatexRender.vue2.js.map +1 -1
  124. package/dist/components/tools/Details.vue.js +1 -56
  125. package/dist/components/tools/Details.vue.js.map +1 -1
  126. package/dist/components/tools/Details.vue2.js +56 -1
  127. package/dist/components/tools/Details.vue2.js.map +1 -1
  128. package/dist/components/tools/RenderTextNode.vue.js +1 -19
  129. package/dist/components/tools/RenderTextNode.vue.js.map +1 -1
  130. package/dist/components/tools/RenderTextNode.vue2.js +19 -1
  131. package/dist/components/tools/RenderTextNode.vue2.js.map +1 -1
  132. package/dist/components/tools/SegmentedBox.vue2.js +3 -3
  133. package/dist/components/tools/SegmentedBox.vue2.js.map +1 -1
  134. package/dist/components/tools/TextMedia.vue.js +1 -50
  135. package/dist/components/tools/TextMedia.vue.js.map +1 -1
  136. package/dist/components/tools/TextMedia.vue2.js +50 -1
  137. package/dist/components/tools/TextMedia.vue2.js.map +1 -1
  138. package/dist/components/tools/TimelineItem.vue2.js +1 -1
  139. package/dist/components/tools/TwoColsMedia.vue2.js +4 -4
  140. package/dist/components/tools/TwoColsMedia.vue2.js.map +1 -1
  141. package/dist/style.css +81 -81
  142. package/package.json +40 -43
@@ -1 +1 @@
1
- {"version":3,"file":"EpBranchingScenario.vue2.js","sources":["../../../src/components/educationals/EpBranchingScenario.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, computed, watchEffect } from \"vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { TreeNode } from \"~/types/Hierarchy\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport Details from \"~/components/tools/Details.vue\";\nimport EpModal from \"~/components/interactions/EpModal.vue\";\nimport EpHierarchy from \"~/components/medias/EpHierarchy.vue\";\nimport EpBtn from \"../basics/EpBtn.vue\";\nimport { mdiArrowLeft } from \"@mdi/js\";\nimport TextMedia from \"~/components/tools/TextMedia.vue\";\nimport type { EpBranchingScenarioProps } from \"~/types/educationals/EpBranchingScenario\";\n\nconst props = withDefaults(defineProps<EpBranchingScenarioProps>(), {\n initialInstruction: null,\n transitionAnimation: \"fade\",\n labelFinish: \"Vous avez terminé le scénario!\",\n labelYourPath: \"Votre parcours\",\n labelShowFullPath: \"Voir le parcours au complet\",\n labelClose: \"Fermer\",\n labelRestart: \"Recommencer\",\n labelStart: \"Commencer\",\n labelBtnFinish: \"Fin du scénario\",\n colorRect: \"fill-main-color-400\",\n colorPath: \"stroke-yellow-400\",\n});\n\nconst showPath = ref(false);\nconst path = ref<TreeNode[]>([]);\nconst userPath = ref<TreeNode | null>(null);\nconst currentOption = ref<TreeNode | null>(null);\n\n// Manage the introductory part\nconst isIntroductoryPart = ref(true);\n\nconst start = () => {\n isIntroductoryPart.value = false;\n currentOption.value = props.decisionTree;\n path.value = [props.decisionTree];\n};\n\nconst styleIntro = computed(() => {\n const noInstruction = !props.initialInstruction;\n const noMedia = !props.media;\n\n if (noInstruction && noMedia) {\n return \"pt-44\";\n }\n\n return \"\";\n});\n\n// Return function\nconst goToPrevious = () => {\n //if(notTheEnd.value){\n if (path.value.length === 1) {\n isIntroductoryPart.value = true;\n currentOption.value = null;\n return;\n }\n\n path.value.pop();\n // Get the previous option in the path\n const lastOption = path.value[path.value.length - 1];\n\n if (lastOption) {\n currentOption.value = lastOption;\n isTheLastOne.value = false\n } else {\n currentOption.value = props.decisionTree;\n }\n};\n\n// Restart function\nconst restart = () => {\n //currentSlide.value = 0;\n currentOption.value = null;\n isIntroductoryPart.value = true;\n path.value = [];\n isTheLastOne.value = false\n};\n\nconst isTheLastOne = ref(false)\n\nconst nextSlide = (option: TreeNode) => {\n //currentSlide.value++\n path.value.push(option);\n //console.log(option)\n if (option.children && option.children.length > 0 && !isTheLastOne.value) {\n currentOption.value = option; // drill into next level\n } else {\n //currentOption.value = null; // reached the end (leaf node)\n isTheLastOne.value = true\n currentOption.value = option\n }\n \n};\n\nconst finish = () => {\n currentOption.value = null\n userPath.value = convertOptionToTreeNode(props.decisionTree, path.value); \n}\n\n//helper function\nfunction convertOptionToTreeNode(option: TreeNode, path: TreeNode[]): TreeNode {\n const isActive = path.includes(option);\n return {\n name: option.name,\n label: option.label ?? \"\",\n text: option.text,\n component: option.component,\n active: isActive,\n children: option.children?.map((child) =>\n convertOptionToTreeNode(child, path)\n ),\n };\n}\n\n</script>\n\n<template>\n <div>\n <div\n class=\"bg-surface-2 dark:bg-surface-2-dark rounded-md p-4 flex flex-col\"\n :style=\"{ minHeight: '500px', backgroundColor: bgColor }\"\n >\n <!-- <div v-for=\"item in path\" :key=\"item.name\">\n <span class=\"text-xs\">{{ item.name }}</span>\n </div> -->\n <!-- Header (fixed at top of card) -->\n <div class=\"mb-2\">\n <h1 class=\"font-bold text-3xl text-center\">{{ title }}</h1>\n <h2 class=\"font-semibold text-xl text-center\" v-if=\"currentOption\">{{ currentOption.name }}</h2>\n <div v-if=\"currentOption\" class=\"mt-2\">\n <EpBtn\n type=\"primary\"\n rounded\n size=\"small\"\n :extra-class=\"`${transitionAnimation}`\"\n @click=\"goToPrevious\"\n >\n <EpIcon :icon-path=\"mdiArrowLeft\" size=\"25\" />\n </EpBtn>\n </div>\n </div>\n\n <!-- Content Area -->\n <div>\n <!-- Introductory Part -->\n <div v-if=\"isIntroductoryPart\" class=\"w-full flex flex-col space-y-6\">\n <TextMedia\n :text=\"initialInstruction ?? ''\"\n :media=\"media\"\n :cols=\"initialTwoCols\"\n flex-col\n />\n <div :class=\"`justify-center flex ${styleIntro}`\">\n <EpBtn type=\"primary\" rounded @click=\"start\">{{\n labelStart\n }}</EpBtn>\n </div>\n </div>\n\n <!-- Slides -->\n <template v-else-if=\"currentOption && !isIntroductoryPart\">\n <div class=\"w-full\">\n <div :class=\"`${transitionAnimation} my-12`\">\n <TextMedia\n :text=\"currentOption.text ?? ''\"\n :media=\"currentOption.component\"\n :cols=\"currentOption.cols\"\n flex-col\n />\n\n <div\n :class=\"`w-full my-4 mx-4 flex flex-wrap gap-2 justify-center items-center`\"\n >\n <template\n v-for=\"(option, index) in currentOption.children\"\n :key=\"`option-${index}`\"\n >\n <EpBtn\n rounded\n type=\"primary\"\n class=\"flex-1 min-w-[120px] sm:min-w-[160px] max-w-xs\"\n @click=\"nextSlide(option)\"\n >\n {{ option.name }}\n </EpBtn>\n </template>\n <template v-if=\"isTheLastOne\">\n <EpBtn\n rounded\n type=\"primary\"\n class=\"flex-1 min-w-[120px] sm:min-w-[160px] max-w-xs\"\n @click=\"finish\"\n >\n {{labelBtnFinish}}\n </EpBtn>\n </template>\n </div>\n </div>\n </div>\n </template>\n\n <!--show path-->\n <div v-else>\n <!-- <template v-if=\"userPath\">\n <EpHierarchy :nodes=\"userPath\"/>\n </template> -->\n <h3 class=\"text-xl text-center font-semibold\">{{ labelFinish }}</h3>\n <div\n :class=\"`flex gap-6 mt-3 ${\n !generalFeedback ? 'w-3/6 mx-auto' : ''\n }`\"\n >\n <div class=\"w-full\">\n <h3 class=\"font-semibold mb-3\">{{ labelYourPath }}</h3>\n <div class=\"overflow-auto p-2\" :style=\"{ height: '200px' }\">\n <template v-for=\"(item, i) in path\" :key=\"`user-choice-${i}`\">\n <template v-if=\"i !== 0\">\n <div class=\"mb-2\">\n <Details\n :content=\"path[i-1].text ?? ''\"\n :title=\"item.name\"\n :media=\"path[i-1].component\"\n />\n </div>\n </template>\n </template>\n </div>\n <div class=\"flex justify-center mt-2\">\n <EpBtn type=\"info\" rounded @click=\"showPath = true\">{{\n labelShowFullPath\n }}</EpBtn>\n </div>\n <EpModal v-if=\"userPath\" v-model=\"showPath\">\n <EpHierarchy\n :max-width=\"2000\"\n :nodes=\"userPath\"\n :is-cluster=\"props.isCluster\"\n :color-path=\"props.colorPath\"\n :color-rect=\"props.colorRect\"\n />\n <div class=\"flex justify-end mt-4\">\n <EpBtn\n @click=\"showPath = false\"\n type=\"error\"\n outlined\n rounded\n >{{ labelClose }}</EpBtn\n >\n </div>\n </EpModal>\n </div>\n <div\n v-if=\"generalFeedback\"\n class=\"flex w-full flex-col col-span-1 items-center px-4 border-l-2 border-gray-700 overflow-auto\"\n >\n <div v-html=\"useRenderText(generalFeedback)\" />\n </div>\n </div>\n\n <div class=\"flex justify-center mt-2\">\n <EpBtn rounded type=\"warning\" @click=\"restart\">{{\n labelRestart\n }}</EpBtn>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n@keyframes fade {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n\n@keyframes scale {\n 0% {\n transform: scale(0.5);\n opacity: 0;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n@keyframes slideY {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n}\n\n/* Transition animation */\n.fade {\n animation: fade 1s;\n}\n\n.scale {\n animation: scale 1s;\n}\n\n.slideY {\n animation: slideY 1s;\n}\n</style>\n"],"names":["path","_createElementBlock","_createElementVNode","_toDisplayString","_openBlock","_createVNode","EpBtn","EpIcon","_unref","TextMedia","_Fragment","_createBlock","_createTextVNode","_normalizeClass","_renderList","Details","_a","EpModal","EpHierarchy"],"mappings":"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"}
1
+ {"version":3,"file":"EpBranchingScenario.vue2.js","sources":["../../../src/components/educationals/EpBranchingScenario.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, computed, watchEffect } from \"vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { TreeNode } from \"~/types/Hierarchy\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport Details from \"~/components/tools/Details.vue\";\nimport EpModal from \"~/components/interactions/EpModal.vue\";\nimport EpHierarchy from \"~/components/medias/EpHierarchy.vue\";\nimport EpBtn from \"../basics/EpBtn.vue\";\nimport { mdiArrowLeft } from \"@mdi/js\";\nimport TextMedia from \"~/components/tools/TextMedia.vue\";\nimport type { EpBranchingScenarioProps } from \"~/types/educationals/EpBranchingScenario\";\n\nconst props = withDefaults(defineProps<EpBranchingScenarioProps>(), {\n initialInstruction: null,\n transitionAnimation: \"fade\",\n labelFinish: \"Vous avez terminé le scénario!\",\n labelYourPath: \"Votre parcours\",\n labelShowFullPath: \"Voir le parcours au complet\",\n labelClose: \"Fermer\",\n labelRestart: \"Recommencer\",\n labelStart: \"Commencer\",\n labelBtnFinish: \"Fin du scénario\",\n colorRect: \"fill-main-color-400\",\n colorPath: \"stroke-yellow-400\",\n});\n\nconst showPath = ref(false);\nconst path = ref<TreeNode[]>([]);\nconst userPath = ref<TreeNode | null>(null);\nconst currentOption = ref<TreeNode | null>(null);\n\n// Manage the introductory part\nconst isIntroductoryPart = ref(true);\n\nconst start = () => {\n isIntroductoryPart.value = false;\n currentOption.value = props.decisionTree;\n path.value = [props.decisionTree];\n};\n\nconst styleIntro = computed(() => {\n const noInstruction = !props.initialInstruction;\n const noMedia = !props.media;\n\n if (noInstruction && noMedia) {\n return \"pt-44\";\n }\n\n return \"\";\n});\n\n// Return function\nconst goToPrevious = () => {\n //if(notTheEnd.value){\n if (path.value.length === 1) {\n isIntroductoryPart.value = true;\n currentOption.value = null;\n return;\n }\n\n path.value.pop();\n // Get the previous option in the path\n const lastOption = path.value[path.value.length - 1];\n\n if (lastOption) {\n currentOption.value = lastOption;\n isTheLastOne.value = false\n } else {\n currentOption.value = props.decisionTree;\n }\n};\n\n// Restart function\nconst restart = () => {\n //currentSlide.value = 0;\n currentOption.value = null;\n isIntroductoryPart.value = true;\n path.value = [];\n isTheLastOne.value = false\n};\n\nconst isTheLastOne = ref(false)\n\nconst nextSlide = (option: TreeNode) => {\n //currentSlide.value++\n path.value.push(option);\n //console.log(option)\n if (option.children && option.children.length > 0 && !isTheLastOne.value) {\n currentOption.value = option; // drill into next level\n } else {\n //currentOption.value = null; // reached the end (leaf node)\n isTheLastOne.value = true\n currentOption.value = option\n }\n \n};\n\nconst finish = () => {\n currentOption.value = null\n userPath.value = convertOptionToTreeNode(props.decisionTree, path.value); \n}\n\n//helper function\nfunction convertOptionToTreeNode(option: TreeNode, path: TreeNode[]): TreeNode {\n const isActive = path.includes(option);\n return {\n name: option.name,\n label: option.label ?? \"\",\n text: option.text,\n component: option.component,\n active: isActive,\n children: option.children?.map((child) =>\n convertOptionToTreeNode(child, path)\n ),\n };\n}\n\n</script>\n\n<template>\n <div>\n <div\n class=\"bg-surface-2 dark:bg-surface-2-dark rounded-md p-4 flex flex-col\"\n :style=\"{ minHeight: '500px', backgroundColor: bgColor }\"\n >\n <!-- <div v-for=\"item in path\" :key=\"item.name\">\n <span class=\"text-xs\">{{ item.name }}</span>\n </div> -->\n <!-- Header (fixed at top of card) -->\n <div class=\"mb-2\">\n <h1 class=\"font-bold text-3xl text-center\">{{ title }}</h1>\n <h2 class=\"font-semibold text-xl text-center\" v-if=\"currentOption\">{{ currentOption.name }}</h2>\n <div v-if=\"currentOption\" class=\"mt-2\">\n <EpBtn\n type=\"primary\"\n rounded\n size=\"small\"\n :extra-class=\"`${transitionAnimation}`\"\n @click=\"goToPrevious\"\n >\n <EpIcon :icon-path=\"mdiArrowLeft\" size=\"25\" />\n </EpBtn>\n </div>\n </div>\n\n <!-- Content Area -->\n <div>\n <!-- Introductory Part -->\n <div v-if=\"isIntroductoryPart\" class=\"w-full flex flex-col space-y-6\">\n <TextMedia\n :text=\"initialInstruction ?? ''\"\n :media=\"media\"\n :cols=\"initialTwoCols\"\n flex-col\n />\n <div :class=\"`justify-center flex ${styleIntro}`\">\n <EpBtn type=\"primary\" rounded @click=\"start\">{{\n labelStart\n }}</EpBtn>\n </div>\n </div>\n\n <!-- Slides -->\n <template v-else-if=\"currentOption && !isIntroductoryPart\">\n <div class=\"w-full\">\n <div :class=\"`${transitionAnimation} my-12`\">\n <TextMedia\n :text=\"currentOption.text ?? ''\"\n :media=\"currentOption.component\"\n :cols=\"currentOption.cols\"\n flex-col\n />\n\n <div\n :class=\"`w-full my-4 mx-4 flex flex-wrap gap-2 justify-center items-center`\"\n >\n <template\n v-for=\"(option, index) in currentOption.children\"\n :key=\"`option-${index}`\"\n >\n <EpBtn\n rounded\n type=\"primary\"\n class=\"flex-1 min-w-[120px] sm:min-w-[160px] max-w-xs\"\n @click=\"nextSlide(option)\"\n >\n {{ option.name }}\n </EpBtn>\n </template>\n <template v-if=\"isTheLastOne\">\n <EpBtn\n rounded\n type=\"primary\"\n class=\"flex-1 min-w-[120px] sm:min-w-[160px] max-w-xs\"\n @click=\"finish\"\n >\n {{labelBtnFinish}}\n </EpBtn>\n </template>\n </div>\n </div>\n </div>\n </template>\n\n <!--show path-->\n <div v-else>\n <!-- <template v-if=\"userPath\">\n <EpHierarchy :nodes=\"userPath\"/>\n </template> -->\n <h3 class=\"text-xl text-center font-semibold\">{{ labelFinish }}</h3>\n <div\n :class=\"`flex gap-6 mt-3 ${\n !generalFeedback ? 'w-3/6 mx-auto' : ''\n }`\"\n >\n <div class=\"w-full\">\n <h3 class=\"font-semibold mb-3\">{{ labelYourPath }}</h3>\n <div class=\"overflow-auto p-2\" :style=\"{ height: '200px' }\">\n <template v-for=\"(item, i) in path\" :key=\"`user-choice-${i}`\">\n <template v-if=\"i !== 0\">\n <div class=\"mb-2\">\n <Details\n :content=\"path[i-1].text ?? ''\"\n :title=\"item.name\"\n :media=\"path[i-1].component\"\n />\n </div>\n </template>\n </template>\n </div>\n <div class=\"flex justify-center mt-2\">\n <EpBtn type=\"info\" rounded @click=\"showPath = true\">{{\n labelShowFullPath\n }}</EpBtn>\n </div>\n <EpModal v-if=\"userPath\" v-model=\"showPath\">\n <EpHierarchy\n :max-width=\"2000\"\n :nodes=\"userPath\"\n :is-cluster=\"props.isCluster\"\n :color-path=\"props.colorPath\"\n :color-rect=\"props.colorRect\"\n />\n <div class=\"flex justify-end mt-4\">\n <EpBtn\n @click=\"showPath = false\"\n type=\"error\"\n outlined\n rounded\n >{{ labelClose }}</EpBtn\n >\n </div>\n </EpModal>\n </div>\n <div\n v-if=\"generalFeedback\"\n class=\"flex w-full flex-col col-span-1 items-center px-4 border-l-2 border-gray-700 overflow-auto\"\n >\n <div v-html=\"useRenderText(generalFeedback)\" />\n </div>\n </div>\n\n <div class=\"flex justify-center mt-2\">\n <EpBtn rounded type=\"warning\" @click=\"restart\">{{\n labelRestart\n }}</EpBtn>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n@keyframes fade {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n\n@keyframes scale {\n 0% {\n transform: scale(0.5);\n opacity: 0;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n@keyframes slideY {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n}\n\n/* Transition animation */\n.fade {\n animation: fade 1s;\n}\n\n.scale {\n animation: scale 1s;\n}\n\n.slideY {\n animation: slideY 1s;\n}\n</style>\n"],"names":["path","_createElementBlock","_createElementVNode","bgColor","_toDisplayString","title","_openBlock","_createVNode","EpBtn","transitionAnimation","EpIcon","_unref","TextMedia","initialInstruction","media","initialTwoCols","labelStart","_Fragment","_createBlock","_createTextVNode","labelBtnFinish","labelFinish","_normalizeClass","generalFeedback","labelYourPath","_renderList","Details","_a","labelShowFullPath","EpModal","EpHierarchy","labelClose","labelRestart"],"mappings":"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"}
@@ -33,7 +33,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
33
33
  return props.theme;
34
34
  });
35
35
  return (_ctx, _cache) => {
36
- return !__props.compact ? (openBlock(), createBlock(unref(VCodeBlock), {
36
+ return !_ctx.compact ? (openBlock(), createBlock(unref(VCodeBlock), {
37
37
  key: 0,
38
38
  code: code.value,
39
39
  highlightjs: "",
@@ -1 +1 @@
1
- {"version":3,"file":"EpCodeblock.vue.js","sources":["../../../src/components/educationals/EpCodeblock.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport VCodeBlock from \"@wdns/vue-code-block\";\nimport { defaultOption } from \"~/types/Codeblock\";\nimport EpAccordeon from \"~/components/interactions/EpAccordeon.vue\";\nimport { computed } from \"vue\";\nimport { ref } from \"vue\";\nimport type { EpCodeblockProps } from \"~/types/educationals/EpCodeblock\";\n\nconst props = withDefaults(defineProps<EpCodeblockProps>(), {\n code: \"\",\n label: \"\",\n lang: \"javascript\",\n theme: defaultOption,\n compact: false,\n});\n\nconst renderTitle = computed(() => {\n if (!props.title) {\n return \"En savoir plus\";\n }\n return props.title;\n});\n\nconst code = computed(() => {\n return ref(props.code);\n});\nconst label = computed(() => {\n return props.label;\n});\nconst lang = computed(() => {\n return props.lang;\n});\nconst theme = computed(() => {\n return props.theme;\n});\n</script>\n\n<template>\n <VCodeBlock\n :code=\"code\"\n highlightjs\n :label=\"label\"\n :lang=\"lang\"\n :theme=\"theme\"\n v-if=\"!compact\"\n />\n\n <EpAccordeon outlined :title=\"renderTitle\" v-else>\n <VCodeBlock\n :code=\"code\"\n highlightjs\n :label=\"label\"\n :lang=\"lang\"\n :theme=\"theme\"\n />\n </EpAccordeon>\n</template>\n<style>\npre {\n white-space: break-spaces;\n}\n</style>\n"],"names":["_createBlock","_unref","EpAccordeon","_createVNode"],"mappings":";;;;;;;;;;;;;;;AAQA,UAAM,QAAQ;AAQd,UAAM,cAAc,SAAS,MAAM;AACjC,UAAI,CAAC,MAAM,OAAO;AAChB,eAAO;AAAA,MACT;AACA,aAAO,MAAM;AAAA,IACf,CAAC;AAED,UAAM,OAAO,SAAS,MAAM;AAC1B,aAAO,IAAI,MAAM,IAAI;AAAA,IACvB,CAAC;AACD,UAAM,QAAQ,SAAS,MAAM;AAC3B,aAAO,MAAM;AAAA,IACf,CAAC;AACD,UAAM,OAAO,SAAS,MAAM;AAC1B,aAAO,MAAM;AAAA,IACf,CAAC;AACD,UAAM,QAAQ,SAAS,MAAM;AAC3B,aAAO,MAAM;AAAA,IACf,CAAC;;cAUU,QAAA,wBANTA,YAOEC,MAAA,UAAA,GAAA;AAAA;QANC,MAAM,KAAA;AAAA,QACP,aAAA;AAAA,QACC,OAAO,MAAA;AAAA,QACP,MAAM,KAAA;AAAA,QACN,OAAO,MAAA;AAAA,MAAA,iEAIVD,YAQcE,MAAA;AAAA;QARD,UAAA;AAAA,QAAU,OAAO,YAAA;AAAA,MAAA;yBAC5B,MAME;AAAA,UANFC,YAMEF,MAAA,UAAA,GAAA;AAAA,YALC,MAAM,KAAA;AAAA,YACP,aAAA;AAAA,YACC,OAAO,MAAA;AAAA,YACP,MAAM,KAAA;AAAA,YACN,OAAO,MAAA;AAAA,UAAA;;;;;;;"}
1
+ {"version":3,"file":"EpCodeblock.vue.js","sources":["../../../src/components/educationals/EpCodeblock.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport VCodeBlock from \"@wdns/vue-code-block\";\nimport { defaultOption } from \"~/types/Codeblock\";\nimport EpAccordeon from \"~/components/interactions/EpAccordeon.vue\";\nimport { computed } from \"vue\";\nimport { ref } from \"vue\";\nimport type { EpCodeblockProps } from \"~/types/educationals/EpCodeblock\";\n\nconst props = withDefaults(defineProps<EpCodeblockProps>(), {\n code: \"\",\n label: \"\",\n lang: \"javascript\",\n theme: defaultOption,\n compact: false,\n});\n\nconst renderTitle = computed(() => {\n if (!props.title) {\n return \"En savoir plus\";\n }\n return props.title;\n});\n\nconst code = computed(() => {\n return ref(props.code);\n});\nconst label = computed(() => {\n return props.label;\n});\nconst lang = computed(() => {\n return props.lang;\n});\nconst theme = computed(() => {\n return props.theme;\n});\n</script>\n\n<template>\n <VCodeBlock\n :code=\"code\"\n highlightjs\n :label=\"label\"\n :lang=\"lang\"\n :theme=\"theme\"\n v-if=\"!compact\"\n />\n\n <EpAccordeon outlined :title=\"renderTitle\" v-else>\n <VCodeBlock\n :code=\"code\"\n highlightjs\n :label=\"label\"\n :lang=\"lang\"\n :theme=\"theme\"\n />\n </EpAccordeon>\n</template>\n<style>\npre {\n white-space: break-spaces;\n}\n</style>\n"],"names":["compact","_createBlock","_unref","EpAccordeon","_createVNode"],"mappings":";;;;;;;;;;;;;;;AAQA,UAAM,QAAQ;AAQd,UAAM,cAAc,SAAS,MAAM;AACjC,UAAI,CAAC,MAAM,OAAO;AAChB,eAAO;AAAA,MACT;AACA,aAAO,MAAM;AAAA,IACf,CAAC;AAED,UAAM,OAAO,SAAS,MAAM;AAC1B,aAAO,IAAI,MAAM,IAAI;AAAA,IACvB,CAAC;AACD,UAAM,QAAQ,SAAS,MAAM;AAC3B,aAAO,MAAM;AAAA,IACf,CAAC;AACD,UAAM,OAAO,SAAS,MAAM;AAC1B,aAAO,MAAM;AAAA,IACf,CAAC;AACD,UAAM,QAAQ,SAAS,MAAM;AAC3B,aAAO,MAAM;AAAA,IACf,CAAC;;cAUUA,KAAAA,wBANTC,YAOEC,MAAA,UAAA,GAAA;AAAA;QANC,MAAM,KAAA;AAAA,QACP,aAAA;AAAA,QACC,OAAO,MAAA;AAAA,QACP,MAAM,KAAA;AAAA,QACN,OAAO,MAAA;AAAA,MAAA,iEAIVD,YAQcE,MAAA;AAAA;QARD,UAAA;AAAA,QAAU,OAAO,YAAA;AAAA,MAAA;yBAC5B,MAME;AAAA,UANFC,YAMEF,MAAA,UAAA,GAAA;AAAA,YALC,MAAM,KAAA;AAAA,YACP,aAAA;AAAA,YACC,OAAO,MAAA;AAAA,YACP,MAAM,KAAA;AAAA,YACN,OAAO,MAAA;AAAA,UAAA;;;;;;;"}
@@ -3,7 +3,7 @@ import _sfc_main$4 from "../basics/EpIcon.vue.js";
3
3
  import _sfc_main$2 from "../interactions/EpModal.vue.js";
4
4
  /* empty css */
5
5
  import _sfc_main$1 from "../basics/EpBtn.vue.js";
6
- import _sfc_main$3 from "../tools/RenderTextNode.vue.js";
6
+ import _sfc_main$3 from "../tools/RenderTextNode.vue2.js";
7
7
  const _hoisted_1 = { class: "lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4" };
8
8
  const _hoisted_2 = { class: "py-2" };
9
9
  const _hoisted_3 = {
@@ -63,7 +63,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
63
63
  createElementVNode("div", _hoisted_2, [
64
64
  unref(subtitle) ? (openBlock(), createElementBlock("h3", _hoisted_3, toDisplayString(unref(subtitle)), 1)) : createCommentVNode("", true),
65
65
  createElementVNode("div", null, [
66
- createVNode(_sfc_main$3, { content: __props.content }, null, 8, ["content"])
66
+ createVNode(_sfc_main$3, { content: _ctx.content }, null, 8, ["content"])
67
67
  ])
68
68
  ])
69
69
  ])
@@ -85,7 +85,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
85
85
  createElementVNode("div", _hoisted_8, [
86
86
  unref(subtitle) ? (openBlock(), createElementBlock("h3", _hoisted_9, toDisplayString(unref(subtitle)), 1)) : createCommentVNode("", true),
87
87
  createElementVNode("div", null, [
88
- createVNode(_sfc_main$3, { content: __props.content }, null, 8, ["content"])
88
+ createVNode(_sfc_main$3, { content: _ctx.content }, null, 8, ["content"])
89
89
  ])
90
90
  ])
91
91
  ])
@@ -1 +1 @@
1
- {"version":3,"file":"EpConclusion.vue.js","sources":["../../../src/components/educationals/EpConclusion.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs } from \"vue\";\nimport { ref } from \"vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport EpModal from \"~/components/interactions/EpModal.vue\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport type { EpConclusionProps } from \"~/types/educationals/EpConclusion\";\nimport RenderTextNode from \"~/components/tools/RenderTextNode.vue\";\nconst props = withDefaults(defineProps<EpConclusionProps>(), {\n modal: true,\n title: \"Conclusion\",\n btnType: \"base\",\n btnRounded: true,\n btnOutlined: true,\n});\nconst { title, icon, subtitle, modal, btnType, btnRounded, btnOutlined } = toRefs(props);\n\nconst showDefaultModal = ref(false);\n\n\n</script>\n<template>\n <div>\n <EpBtn\n v-if=\"modal\"\n :btnType=\"btnType\"\n :rounded=\"btnRounded\"\n :outlined=\"btnOutlined\"\n @click=\"showDefaultModal = true\"\n >\n {{ title }}\n </EpBtn>\n <EpModal v-if=\"modal\" v-model=\"showDefaultModal\" :title=\"title\">\n <div\n class=\"lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4\"\n >\n <div class=\"py-2\">\n <h3\n v-if=\"subtitle\"\n class=\"text-base font-semibold leading-7 \"\n >\n {{ subtitle }}\n </h3>\n <div>\n <RenderTextNode :content=\"content\" />\n </div>\n </div>\n </div>\n </EpModal>\n <div v-else class=\"mt-6 lg:col-span-5 lg:mt-0 lg:flex lg:items-center w-full\">\n <div class=\"lg:col-span-2\">\n <h2\n class=\"text-pretty text-3xl font-semibold tracking-tight sm:text-xl pr-4\"\n >\n <EpIcon v-if=\"icon\" :icon-path=\"icon\" size=\"28\" extraClass=\"mr-2\" />\n {{ title }}\n </h2>\n </div>\n <div\n class=\"lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4\"\n >\n <div class=\"py-2\">\n <h3\n v-if=\"subtitle\"\n class=\"text-base font-semibold leading-7\"\n >\n {{ subtitle }}\n </h3>\n <div>\n <RenderTextNode :content=\"content\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"names":["_createElementBlock","_unref","_createBlock","EpBtn","EpModal","_createElementVNode","_toDisplayString","_createVNode","RenderTextNode","_openBlock","EpIcon","_createTextVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,UAAM,QAAQ;AAOd,UAAM,EAAE,OAAO,MAAM,UAAU,OAAO,SAAS,YAAY,YAAA,IAAgB,OAAO,KAAK;AAEvF,UAAM,mBAAmB,IAAI,KAAK;;0BAKhCA,mBAoDM,OAAA,MAAA;AAAA,QAlDIC,MAAA,KAAA,kBADRC,YAQQC,aAAA;AAAA;UANL,SAASF,MAAA,OAAA;AAAA,UACT,SAASA,MAAA,UAAA;AAAA,UACT,UAAUA,MAAA,WAAA;AAAA,UACV,+CAAO,iBAAA,QAAgB;AAAA,QAAA;2BAExB,MAAW;AAAA,4CAARA,MAAA,KAAA,CAAK,GAAA,CAAA;AAAA,UAAA;;;QAEKA,MAAA,KAAA,kBAAfC,YAgBUE,aAAA;AAAA;sBAhBqB,iBAAA;AAAA,uEAAA,iBAAgB,QAAA;AAAA,UAAG,OAAOH,MAAA,KAAA;AAAA,QAAA;2BACvD,MAcM;AAAA,YAdNI,mBAcM,OAdN,YAcM;AAAA,cAXJA,mBAUM,OAVN,YAUM;AAAA,gBARIJ,MAAA,QAAA,kBADRD,mBAKK,MALL,YAKKM,gBADAL,MAAA,QAAA,CAAQ,GAAA,CAAA;gBAEbI,mBAEM,OAAA,MAAA;AAAA,kBADHE,YAAqCC,aAAA,EAApB,SAAS,QAAA,QAAA,GAAO,MAAA,GAAA,CAAA,SAAA,CAAA;AAAA,gBAAA;;;;;2CAK1CC,aAAAT,mBAwBM,OAxBN,YAwBM;AAAA,UAvBJK,mBAOM,OAPN,YAOM;AAAA,YANJA,mBAKK,MALL,YAKK;AAAA,cAFWJ,MAAA,IAAA,kBAAdC,YAAoEQ,aAAA;AAAA;gBAA/C,aAAWT,MAAA,IAAA;AAAA,gBAAM,MAAK;AAAA,gBAAK,YAAW;AAAA,cAAA;cAASU,gBAAA,sBACjEV,MAAA,KAAA,CAAK,GAAA,CAAA;AAAA,YAAA;;UAGZI,mBAcM,OAdN,YAcM;AAAA,YAXJA,mBAUM,OAVN,YAUM;AAAA,cARIJ,MAAA,QAAA,kBADRD,mBAKK,MALL,YAKKM,gBADAL,MAAA,QAAA,CAAQ,GAAA,CAAA;cAEbI,mBAEM,OAAA,MAAA;AAAA,gBADHE,YAAqCC,aAAA,EAApB,SAAS,QAAA,QAAA,GAAO,MAAA,GAAA,CAAA,SAAA,CAAA;AAAA,cAAA;;;;;;;;"}
1
+ {"version":3,"file":"EpConclusion.vue.js","sources":["../../../src/components/educationals/EpConclusion.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs } from \"vue\";\nimport { ref } from \"vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport EpModal from \"~/components/interactions/EpModal.vue\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport type { EpConclusionProps } from \"~/types/educationals/EpConclusion\";\nimport RenderTextNode from \"~/components/tools/RenderTextNode.vue\";\nconst props = withDefaults(defineProps<EpConclusionProps>(), {\n modal: true,\n title: \"Conclusion\",\n btnType: \"base\",\n btnRounded: true,\n btnOutlined: true,\n});\nconst { title, icon, subtitle, modal, btnType, btnRounded, btnOutlined } = toRefs(props);\n\nconst showDefaultModal = ref(false);\n\n\n</script>\n<template>\n <div>\n <EpBtn\n v-if=\"modal\"\n :btnType=\"btnType\"\n :rounded=\"btnRounded\"\n :outlined=\"btnOutlined\"\n @click=\"showDefaultModal = true\"\n >\n {{ title }}\n </EpBtn>\n <EpModal v-if=\"modal\" v-model=\"showDefaultModal\" :title=\"title\">\n <div\n class=\"lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4\"\n >\n <div class=\"py-2\">\n <h3\n v-if=\"subtitle\"\n class=\"text-base font-semibold leading-7 \"\n >\n {{ subtitle }}\n </h3>\n <div>\n <RenderTextNode :content=\"content\" />\n </div>\n </div>\n </div>\n </EpModal>\n <div v-else class=\"mt-6 lg:col-span-5 lg:mt-0 lg:flex lg:items-center w-full\">\n <div class=\"lg:col-span-2\">\n <h2\n class=\"text-pretty text-3xl font-semibold tracking-tight sm:text-xl pr-4\"\n >\n <EpIcon v-if=\"icon\" :icon-path=\"icon\" size=\"28\" extraClass=\"mr-2\" />\n {{ title }}\n </h2>\n </div>\n <div\n class=\"lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4\"\n >\n <div class=\"py-2\">\n <h3\n v-if=\"subtitle\"\n class=\"text-base font-semibold leading-7\"\n >\n {{ subtitle }}\n </h3>\n <div>\n <RenderTextNode :content=\"content\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"names":["_createElementBlock","_unref","_createBlock","EpBtn","EpModal","_createElementVNode","_toDisplayString","_createVNode","RenderTextNode","content","_openBlock","EpIcon","_createTextVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,UAAM,QAAQ;AAOd,UAAM,EAAE,OAAO,MAAM,UAAU,OAAO,SAAS,YAAY,YAAA,IAAgB,OAAO,KAAK;AAEvF,UAAM,mBAAmB,IAAI,KAAK;;0BAKhCA,mBAoDM,OAAA,MAAA;AAAA,QAlDIC,MAAA,KAAA,kBADRC,YAQQC,aAAA;AAAA;UANL,SAASF,MAAA,OAAA;AAAA,UACT,SAASA,MAAA,UAAA;AAAA,UACT,UAAUA,MAAA,WAAA;AAAA,UACV,+CAAO,iBAAA,QAAgB;AAAA,QAAA;2BAExB,MAAW;AAAA,4CAARA,MAAA,KAAA,CAAK,GAAA,CAAA;AAAA,UAAA;;;QAEKA,MAAA,KAAA,kBAAfC,YAgBUE,aAAA;AAAA;sBAhBqB,iBAAA;AAAA,uEAAA,iBAAgB,QAAA;AAAA,UAAG,OAAOH,MAAA,KAAA;AAAA,QAAA;2BACvD,MAcM;AAAA,YAdNI,mBAcM,OAdN,YAcM;AAAA,cAXJA,mBAUM,OAVN,YAUM;AAAA,gBARIJ,MAAA,QAAA,kBADRD,mBAKK,MALL,YAKKM,gBADAL,MAAA,QAAA,CAAQ,GAAA,CAAA;gBAEbI,mBAEM,OAAA,MAAA;AAAA,kBADHE,YAAqCC,aAAA,EAApB,SAASC,KAAAA,QAAAA,GAAO,MAAA,GAAA,CAAA,SAAA,CAAA;AAAA,gBAAA;;;;;2CAK1CC,aAAAV,mBAwBM,OAxBN,YAwBM;AAAA,UAvBJK,mBAOM,OAPN,YAOM;AAAA,YANJA,mBAKK,MALL,YAKK;AAAA,cAFWJ,MAAA,IAAA,kBAAdC,YAAoES,aAAA;AAAA;gBAA/C,aAAWV,MAAA,IAAA;AAAA,gBAAM,MAAK;AAAA,gBAAK,YAAW;AAAA,cAAA;cAASW,gBAAA,sBACjEX,MAAA,KAAA,CAAK,GAAA,CAAA;AAAA,YAAA;;UAGZI,mBAcM,OAdN,YAcM;AAAA,YAXJA,mBAUM,OAVN,YAUM;AAAA,cARIJ,MAAA,QAAA,kBADRD,mBAKK,MALL,YAKKM,gBADAL,MAAA,QAAA,CAAQ,GAAA,CAAA;cAEbI,mBAEM,OAAA,MAAA;AAAA,gBADHE,YAAqCC,aAAA,EAApB,SAASC,KAAAA,QAAAA,GAAO,MAAA,GAAA,CAAA,SAAA,CAAA;AAAA,cAAA;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, toRefs, createElementBlock, openBlock, createElementVNode, createBlock, createCommentVNode, createTextVNode, unref, toDisplayString, createVNode } from "vue";
2
2
  import _sfc_main$1 from "../basics/EpIcon.vue.js";
3
- import _sfc_main$2 from "../tools/RenderTextNode.vue.js";
3
+ import _sfc_main$2 from "../tools/RenderTextNode.vue2.js";
4
4
  const _hoisted_1 = { class: "lg:grid lg:grid-cols-12 lg:gap-8" };
5
5
  const _hoisted_2 = { class: "lg:col-span-2" };
6
6
  const _hoisted_3 = { class: "text-pretty text-3xl font-semibold tracking-tight sm:text-xl" };
@@ -91,14 +91,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
91
91
  createElementVNode("div", {
92
92
  class: normalizeClass(`py-6 flex-1 ${unref(hideIcon) ? "px-6" : "pr-2"}`)
93
93
  }, [
94
- __props.title ? (openBlock(), createElementBlock("h4", _hoisted_7, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
95
- __props.description ? (openBlock(), createElementBlock("div", {
94
+ _ctx.title ? (openBlock(), createElementBlock("h4", _hoisted_7, toDisplayString(_ctx.title), 1)) : createCommentVNode("", true),
95
+ _ctx.description ? (openBlock(), createElementBlock("div", {
96
96
  key: 1,
97
97
  class: "mb-3",
98
- innerHTML: unref(useRenderText)(__props.description)
98
+ innerHTML: unref(useRenderText)(_ctx.description)
99
99
  }, null, 8, _hoisted_8)) : createCommentVNode("", true),
100
100
  createVNode(_sfc_main$3, {
101
- href: __props.url,
101
+ href: _ctx.url,
102
102
  block: "",
103
103
  type: "primary",
104
104
  rounded: "",
@@ -1 +1 @@
1
- {"version":3,"file":"EpDocument.vue.js","sources":["../../../src/components/educationals/EpDocument.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs, computed } from \"vue\";\nimport EpCard from \"~/components/basics/EpCard.vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport { mdiFile } from \"@mdi/js\";\nimport { mdiArrowCollapseDown } from \"@mdi/js\";\nimport { mdiOpenInNew } from \"@mdi/js\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { EpDocumentProps } from \"~/types/educationals/EpDocument\";\n\nconst props = withDefaults(defineProps<EpDocumentProps>(), {\n src: null,\n hideIcon: false,\n labelDownload: \"Télécharger\",\n labelOpen: \"Ouvrir\",\n});\n\nconst fileDownloadExtensions = [\n \"doc\",\n \"docx\",\n \"xls\",\n \"xlsx\",\n \"ppt\",\n \"pptx\",\n \"rtf\",\n \"odt\",\n \"ods\",\n \"odp\",\n];\n\nconst getExtension = (url: string): string => {\n const queryRemoved = url.split(\"?\")[0];\n const parts = queryRemoved.split(\".\");\n return parts.length > 1 ? parts.pop()!.toLowerCase() : \"\";\n};\n\nconst shouldDownload = computed(() => {\n const ext = getExtension(props.url);\n return fileDownloadExtensions.includes(ext);\n});\n\nconst iconBtn = computed(() => {\n return shouldDownload.value ? mdiArrowCollapseDown : mdiOpenInNew;\n});\n\nconst label = computed(() => {\n return shouldDownload.value ? props.labelDownload : props.labelOpen;\n});\n\nconst renderIcon = computed(() => {\n return props.icon ? props.icon : mdiFile;\n});\n\nconst { src, hideIcon } = toRefs(props);\n</script>\n\n<template>\n <div class=\"w-5/6 mx-auto\">\n <EpCard>\n <div :class=\"`md:flex md:flex-wrap rounded-md`\">\n <div class=\"w-1/5 mr-6\" v-if=\"src\">\n <img\n :class=\"`md:w-full md:h-full md:object-cover rounded-md`\"\n :src=\"src\"\n alt=\"Image of quote\"\n />\n </div>\n <div\n class=\"flex items-center justify-center px-7\"\n v-else-if=\"!hideIcon\"\n >\n <div class=\"text-base dark:text-white'\">\n <EpIcon\n :size=\"60\"\n :icon-path=\"renderIcon\"\n extra-class=\"dark:text-white\"\n />\n </div>\n </div>\n <div :class=\"`py-6 flex-1 ${hideIcon ? 'px-6' : 'pr-2'}`\">\n <h4 class=\"text-2xl font-semibold mb-4\" v-if=\"title\">{{ title }}</h4>\n <div\n class=\"mb-3\"\n v-if=\"description\"\n v-html=\"useRenderText(description)\"\n />\n <EpBtn\n :href=\"url\"\n block\n type=\"primary\"\n rounded\n :prepend-icon=\"iconBtn\"\n >\n {{ label }}\n </EpBtn>\n </div>\n </div>\n </EpCard>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_createVNode","EpCard","_createElementVNode","_unref","EpIcon","_toDisplayString","EpBtn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,UAAM,QAAQ;AAOd,UAAM,yBAAyB;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,UAAM,eAAe,CAAC,QAAwB;AAC5C,YAAM,eAAe,IAAI,MAAM,GAAG,EAAE,CAAC;AACrC,YAAM,QAAQ,aAAa,MAAM,GAAG;AACpC,aAAO,MAAM,SAAS,IAAI,MAAM,IAAA,EAAO,gBAAgB;AAAA,IACzD;AAEA,UAAM,iBAAiB,SAAS,MAAM;AACpC,YAAM,MAAM,aAAa,MAAM,GAAG;AAClC,aAAO,uBAAuB,SAAS,GAAG;AAAA,IAC5C,CAAC;AAED,UAAM,UAAU,SAAS,MAAM;AAC7B,aAAO,eAAe,QAAQ,uBAAuB;AAAA,IACvD,CAAC;AAED,UAAM,QAAQ,SAAS,MAAM;AAC3B,aAAO,eAAe,QAAQ,MAAM,gBAAgB,MAAM;AAAA,IAC5D,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,MAAM,OAAO,MAAM,OAAO;AAAA,IACnC,CAAC;AAED,UAAM,EAAE,KAAK,aAAa,OAAO,KAAK;;AAIpC,aAAAA,UAAA,GAAAC,mBAyCM,OAzCN,YAyCM;AAAA,QAxCJC,YAuCSC,aAAA,MAAA;AAAA,2BAtCP,MAqCM;AAAA,YArCNC,mBAqCM,OArCN,YAqCM;AAAA,cApC0BC,MAAA,GAAA,KAA9BL,aAAAC,mBAMM,OANN,YAMM;AAAA,gBALJG,mBAIE,OAAA;AAAA,kBAHC,sBAAO,gDAAgD;AAAA,kBACvD,KAAKC,MAAA,GAAA;AAAA,kBACN,KAAI;AAAA,gBAAA;qBAKMA,MAAA,QAAA,KAFdL,UAAA,GAAAC,mBAWM,OAXN,YAWM;AAAA,gBAPJG,mBAMM,OANN,YAMM;AAAA,kBALJF,YAIEI,aAAA;AAAA,oBAHC,MAAM;AAAA,oBACN,aAAW,WAAA;AAAA,oBACZ,eAAY;AAAA,kBAAA;;;cAIlBF,mBAgBM,OAAA;AAAA,gBAhBA,qCAAsBC,MAAA,QAAA,IAAQ,SAAA,MAAA,EAAA;AAAA,cAAA;gBACY,QAAA,sBAA9CJ,mBAAqE,MAArE,YAAqEM,gBAAb,QAAA,KAAK,GAAA,CAAA;gBAGrD,QAAA,4BAFRN,mBAIE,OAAA;AAAA;kBAHA,OAAM;AAAA,kBAEN,WAAQI,MAAA,aAAA,EAAc,QAAA,WAAW;AAAA,gBAAA;gBAEnCH,YAQQM,aAAA;AAAA,kBAPL,MAAM,QAAA;AAAA,kBACP,OAAA;AAAA,kBACA,MAAK;AAAA,kBACL,SAAA;AAAA,kBACC,gBAAc,QAAA;AAAA,gBAAA;mCAEf,MAAW;AAAA,oDAAR,MAAA,KAAK,GAAA,CAAA;AAAA,kBAAA;;;;;;;;;;;;"}
1
+ {"version":3,"file":"EpDocument.vue.js","sources":["../../../src/components/educationals/EpDocument.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs, computed } from \"vue\";\nimport EpCard from \"~/components/basics/EpCard.vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport { mdiFile } from \"@mdi/js\";\nimport { mdiArrowCollapseDown } from \"@mdi/js\";\nimport { mdiOpenInNew } from \"@mdi/js\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { EpDocumentProps } from \"~/types/educationals/EpDocument\";\n\nconst props = withDefaults(defineProps<EpDocumentProps>(), {\n src: null,\n hideIcon: false,\n labelDownload: \"Télécharger\",\n labelOpen: \"Ouvrir\",\n});\n\nconst fileDownloadExtensions = [\n \"doc\",\n \"docx\",\n \"xls\",\n \"xlsx\",\n \"ppt\",\n \"pptx\",\n \"rtf\",\n \"odt\",\n \"ods\",\n \"odp\",\n];\n\nconst getExtension = (url: string): string => {\n const queryRemoved = url.split(\"?\")[0];\n const parts = queryRemoved.split(\".\");\n return parts.length > 1 ? parts.pop()!.toLowerCase() : \"\";\n};\n\nconst shouldDownload = computed(() => {\n const ext = getExtension(props.url);\n return fileDownloadExtensions.includes(ext);\n});\n\nconst iconBtn = computed(() => {\n return shouldDownload.value ? mdiArrowCollapseDown : mdiOpenInNew;\n});\n\nconst label = computed(() => {\n return shouldDownload.value ? props.labelDownload : props.labelOpen;\n});\n\nconst renderIcon = computed(() => {\n return props.icon ? props.icon : mdiFile;\n});\n\nconst { src, hideIcon } = toRefs(props);\n</script>\n\n<template>\n <div class=\"w-5/6 mx-auto\">\n <EpCard>\n <div :class=\"`md:flex md:flex-wrap rounded-md`\">\n <div class=\"w-1/5 mr-6\" v-if=\"src\">\n <img\n :class=\"`md:w-full md:h-full md:object-cover rounded-md`\"\n :src=\"src\"\n alt=\"Image of quote\"\n />\n </div>\n <div\n class=\"flex items-center justify-center px-7\"\n v-else-if=\"!hideIcon\"\n >\n <div class=\"text-base dark:text-white'\">\n <EpIcon\n :size=\"60\"\n :icon-path=\"renderIcon\"\n extra-class=\"dark:text-white\"\n />\n </div>\n </div>\n <div :class=\"`py-6 flex-1 ${hideIcon ? 'px-6' : 'pr-2'}`\">\n <h4 class=\"text-2xl font-semibold mb-4\" v-if=\"title\">{{ title }}</h4>\n <div\n class=\"mb-3\"\n v-if=\"description\"\n v-html=\"useRenderText(description)\"\n />\n <EpBtn\n :href=\"url\"\n block\n type=\"primary\"\n rounded\n :prepend-icon=\"iconBtn\"\n >\n {{ label }}\n </EpBtn>\n </div>\n </div>\n </EpCard>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_createVNode","EpCard","_createElementVNode","_unref","EpIcon","title","_toDisplayString","description","EpBtn","url"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,UAAM,QAAQ;AAOd,UAAM,yBAAyB;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,UAAM,eAAe,CAAC,QAAwB;AAC5C,YAAM,eAAe,IAAI,MAAM,GAAG,EAAE,CAAC;AACrC,YAAM,QAAQ,aAAa,MAAM,GAAG;AACpC,aAAO,MAAM,SAAS,IAAI,MAAM,IAAA,EAAO,gBAAgB;AAAA,IACzD;AAEA,UAAM,iBAAiB,SAAS,MAAM;AACpC,YAAM,MAAM,aAAa,MAAM,GAAG;AAClC,aAAO,uBAAuB,SAAS,GAAG;AAAA,IAC5C,CAAC;AAED,UAAM,UAAU,SAAS,MAAM;AAC7B,aAAO,eAAe,QAAQ,uBAAuB;AAAA,IACvD,CAAC;AAED,UAAM,QAAQ,SAAS,MAAM;AAC3B,aAAO,eAAe,QAAQ,MAAM,gBAAgB,MAAM;AAAA,IAC5D,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,MAAM,OAAO,MAAM,OAAO;AAAA,IACnC,CAAC;AAED,UAAM,EAAE,KAAK,aAAa,OAAO,KAAK;;AAIpC,aAAAA,UAAA,GAAAC,mBAyCM,OAzCN,YAyCM;AAAA,QAxCJC,YAuCSC,aAAA,MAAA;AAAA,2BAtCP,MAqCM;AAAA,YArCNC,mBAqCM,OArCN,YAqCM;AAAA,cApC0BC,MAAA,GAAA,KAA9BL,aAAAC,mBAMM,OANN,YAMM;AAAA,gBALJG,mBAIE,OAAA;AAAA,kBAHC,sBAAO,gDAAgD;AAAA,kBACvD,KAAKC,MAAA,GAAA;AAAA,kBACN,KAAI;AAAA,gBAAA;qBAKMA,MAAA,QAAA,KAFdL,UAAA,GAAAC,mBAWM,OAXN,YAWM;AAAA,gBAPJG,mBAMM,OANN,YAMM;AAAA,kBALJF,YAIEI,aAAA;AAAA,oBAHC,MAAM;AAAA,oBACN,aAAW,WAAA;AAAA,oBACZ,eAAY;AAAA,kBAAA;;;cAIlBF,mBAgBM,OAAA;AAAA,gBAhBA,qCAAsBC,MAAA,QAAA,IAAQ,SAAA,MAAA,EAAA;AAAA,cAAA;gBACYE,KAAAA,sBAA9CN,mBAAqE,MAArE,YAAqEO,gBAAbD,KAAAA,KAAK,GAAA,CAAA;gBAGrDE,KAAAA,4BAFRR,mBAIE,OAAA;AAAA;kBAHA,OAAM;AAAA,kBAEN,WAAQI,MAAA,aAAA,EAAcI,KAAAA,WAAW;AAAA,gBAAA;gBAEnCP,YAQQQ,aAAA;AAAA,kBAPL,MAAMC,KAAAA;AAAAA,kBACP,OAAA;AAAA,kBACA,MAAK;AAAA,kBACL,SAAA;AAAA,kBACC,gBAAc,QAAA;AAAA,gBAAA;mCAEf,MAAW;AAAA,oDAAR,MAAA,KAAK,GAAA,CAAA;AAAA,kBAAA;;;;;;;;;;;;"}
@@ -78,7 +78,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
78
78
  return openBlock(), createElementBlock("div", {
79
79
  class: normalizeClass(`${containerStyle.value} ${bgColor.value}`)
80
80
  }, [
81
- unref(title) || __props.mandateLevel ? (openBlock(), createElementBlock("div", {
81
+ unref(title) || _ctx.mandateLevel ? (openBlock(), createElementBlock("div", {
82
82
  key: 0,
83
83
  class: normalizeClass(`${topBarStyle.value} ${paddingTopStyle.value}`)
84
84
  }, [
@@ -91,16 +91,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
91
91
  }, null, 8, ["iconPath"])) : createCommentVNode("", true),
92
92
  createElementVNode("span", _hoisted_1, toDisplayString(unref(title)), 1)
93
93
  ]),
94
- __props.mandateLevel ? (openBlock(), createBlock(_sfc_main$2, {
94
+ _ctx.mandateLevel ? (openBlock(), createBlock(_sfc_main$2, {
95
95
  key: 0,
96
- mandateLevel: __props.mandateLevel
96
+ mandateLevel: _ctx.mandateLevel
97
97
  }, null, 8, ["mandateLevel"])) : createCommentVNode("", true)
98
98
  ], 2)) : createCommentVNode("", true),
99
99
  createElementVNode("div", {
100
100
  class: normalizeClass(`${boxPaddingStyle.value} `)
101
101
  }, [
102
102
  hasIntentions.value ? (openBlock(), createElementBlock("div", _hoisted_2, [
103
- __props.labelIntentions ? (openBlock(), createElementBlock("h4", _hoisted_3, toDisplayString(__props.labelIntentions), 1)) : createCommentVNode("", true),
103
+ _ctx.labelIntentions ? (openBlock(), createElementBlock("h4", _hoisted_3, toDisplayString(_ctx.labelIntentions), 1)) : createCommentVNode("", true),
104
104
  renderSlot(_ctx.$slots, "intentions"),
105
105
  createVNode(_sfc_main$3)
106
106
  ])) : createCommentVNode("", true),
@@ -1 +1 @@
1
- {"version":3,"file":"EpEdu.vue.js","sources":["../../../src/components/educationals/EpEdu.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs, computed, useSlots, type SetupContext } from \"vue\";\nimport { mediaVariants } from \"~/types/Medias\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport EpDivider from \"~/components/basics/EpDivider.vue\";\nimport EpScope from \"~/components/educationals/EpScope.vue\";\nimport { mdiLeadPencil } from \"@mdi/js\";\nimport type { EpEduProps } from \"~/types/educationals/EpEdu\";\n\nconst props = withDefaults(defineProps<EpEduProps>(), {\n title: null,\n type: \"neutral\",\n hideIcon: false,\n flat: true,\n labelIntentions: \"\",\n card: false\n});\n\n//get slots\nconst slots: SetupContext[\"slots\"] = useSlots();\n\nconst hasIntentions = computed(() => {\n return slots.intentions ? true : false;\n});\n\nconst hasActions = computed(() => {\n return slots.actions ? true : false;\n});\n\nconst renderIcon = computed(() => {\n if (props.icon) {\n return props.icon;\n }\n return mdiLeadPencil;\n});\n\nconst topBarStyle = computed(() => {\n return `${mediaVariants[props.type]} text-left ${\n props.flat ? \"\" : \"rounded-t-md\"\n } flex justify-between items-center `;\n});\n\nconst bottomBarStyle = computed(() => {\n return `${mediaVariants[props.type]} text-right`;\n});\n\nconst paddingTopStyle = computed(() => {\n if (props.type != \"neutral\") {\n return `px-5 py-2`;\n }\n});\n\nconst paddingBottomStyle = computed(() => {\n if (props.type != \"neutral\") {\n return `pr-5`;\n }\n});\nconst boxPaddingStyle = computed(() => {\n if (props.type != \"neutral\") {\n return `px-5`;\n }\n});\n\nconst containerStyle = computed(() => {\n if (hasActions.value || hasIntentions.value || props.title) {\n return ` overflow-hidden ${\n props.flat ? \"\" : \"shadow-md\"\n } flex flex-col justify-start h-full`;\n }\n return `flex flex-col justify-between`;\n});\n\n\nconst bgColor = computed(()=> {\n return props.card ? 'bg-surface-2 dark:bg-surface-2-dark rounded p-4' : ''\n})\n\n\n\nconst { title, hideIcon } = toRefs(props);\n</script>\n\n<template>\n <div :class=\"`${containerStyle} ${bgColor}`\">\n <div\n :class=\"`${topBarStyle} ${paddingTopStyle}`\"\n v-if=\"title || mandateLevel\"\n >\n <!-- <EpIcon :size=\"24\" :icon-path=\"mdiBookOpenVariant\"/> -->\n <h3>\n <EpIcon\n v-if=\"!hideIcon\"\n :iconPath=\"renderIcon\"\n size=\"24\"\n class=\"mr-2\"\n />\n <span class=\"font-bold align-middle\">{{ title }}</span>\n </h3>\n <EpScope v-if=\"mandateLevel\" :mandateLevel=\"mandateLevel\"></EpScope>\n </div>\n <div :class=\"`${boxPaddingStyle} `\">\n <div class=\"py-4\" v-if=\"hasIntentions\">\n <!-- <EpIcon :size=\"24\" :icon-path=\"mdiInformationOutline\"/> -->\n <h4\n v-if=\"labelIntentions\"\n class=\"font-light text-sm pb-1 tracking-wide\"\n >\n {{ labelIntentions }}\n </h4>\n <slot name=\"intentions\" />\n <EpDivider />\n </div>\n <div class=\"pt-2\">\n <slot name=\"content\" />\n </div>\n </div>\n <div\n :class=\"`${bottomBarStyle} ${paddingBottomStyle}`\"\n v-if=\"hasActions\"\n >\n <slot name=\"actions\" />\n </div>\n </div>\n</template>\n"],"names":["_createElementBlock","_normalizeClass","_unref","_createElementVNode","_createBlock","EpIcon","_toDisplayString","EpScope","_openBlock","_renderSlot","_createVNode","EpDivider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,UAAM,QAAQ;AAUd,UAAM,QAA+B,SAAA;AAErC,UAAM,gBAAgB,SAAS,MAAM;AACnC,aAAO,MAAM,aAAa,OAAO;AAAA,IACnC,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,MAAM,UAAU,OAAO;AAAA,IAChC,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,MAAM,MAAM;AACd,eAAO,MAAM;AAAA,MACf;AACA,aAAO;AAAA,IACT,CAAC;AAED,UAAM,cAAc,SAAS,MAAM;AACjC,aAAO,GAAG,cAAc,MAAM,IAAI,CAAC,eACjC,MAAM,OAAO,KAAK,cACpB;AAAA,IACF,CAAC;AAED,UAAM,iBAAiB,SAAS,MAAM;AACpC,aAAO,GAAG,cAAc,MAAM,IAAI,CAAC;AAAA,IACrC,CAAC;AAED,UAAM,kBAAkB,SAAS,MAAM;AACrC,UAAI,MAAM,QAAQ,WAAW;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AAED,UAAM,qBAAqB,SAAS,MAAM;AACxC,UAAI,MAAM,QAAQ,WAAW;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AACD,UAAM,kBAAkB,SAAS,MAAM;AACrC,UAAI,MAAM,QAAQ,WAAW;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AAED,UAAM,iBAAiB,SAAS,MAAM;AACpC,UAAI,WAAW,SAAS,cAAc,SAAS,MAAM,OAAO;AAC1D,eAAO,oBACL,MAAM,OAAO,KAAK,WACpB;AAAA,MACF;AACA,aAAO;AAAA,IACT,CAAC;AAGD,UAAM,UAAU,SAAS,MAAK;AAC3B,aAAO,MAAM,OAAO,oDAAoD;AAAA,IAC3E,CAAC;AAID,UAAM,EAAE,OAAO,aAAa,OAAO,KAAK;;0BAItCA,mBAuCM,OAAA;AAAA,QAvCA,OAAKC,eAAA,GAAK,eAAA,KAAc,IAAI,QAAA,KAAO,EAAA;AAAA,MAAA;QAG/BC,MAAA,KAAA,KAAS,QAAA,6BAFjBF,mBAeM,OAAA;AAAA;UAdH,OAAKC,eAAA,GAAK,YAAA,KAAW,IAAI,gBAAA,KAAe,EAAA;AAAA,QAAA;UAIzCE,mBAQK,MAAA,MAAA;AAAA,aANMD,MAAA,QAAA,kBADTE,YAKEC,aAAA;AAAA;cAHC,UAAU,WAAA;AAAA,cACX,MAAK;AAAA,cACL,OAAM;AAAA,YAAA;YAERF,mBAAuD,QAAvD,YAAuDG,gBAAfJ,MAAA,KAAA,CAAK,GAAA,CAAA;AAAA,UAAA;UAEhC,QAAA,6BAAfE,YAAoEG,aAAA;AAAA;YAAtC,cAAc,QAAA;AAAA,UAAA;;QAE9CJ,mBAeM,OAAA;AAAA,UAfA,yBAAU,gBAAA,KAAe,GAAA;AAAA,QAAA;UACL,cAAA,SAAxBK,UAAA,GAAAR,mBAUM,OAVN,YAUM;AAAA,YAPI,QAAA,gCADRA,mBAKK,MALL,YAKKM,gBADA,QAAA,eAAe,GAAA,CAAA;YAEpBG,WAA0B,KAAA,QAAA,YAAA;AAAA,YAC1BC,YAAaC,WAAA;AAAA,UAAA;UAEfR,mBAEM,OAFN,YAEM;AAAA,YADJM,WAAuB,KAAA,QAAA,SAAA;AAAA,UAAA;;QAKnB,WAAA,sBAFRT,mBAKM,OAAA;AAAA;UAJH,OAAKC,eAAA,GAAK,eAAA,KAAc,IAAI,mBAAA,KAAkB,EAAA;AAAA,QAAA;UAG/CQ,WAAuB,KAAA,QAAA,SAAA;AAAA,QAAA;;;;;"}
1
+ {"version":3,"file":"EpEdu.vue.js","sources":["../../../src/components/educationals/EpEdu.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs, computed, useSlots, type SetupContext } from \"vue\";\nimport { mediaVariants } from \"~/types/Medias\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport EpDivider from \"~/components/basics/EpDivider.vue\";\nimport EpScope from \"~/components/educationals/EpScope.vue\";\nimport { mdiLeadPencil } from \"@mdi/js\";\nimport type { EpEduProps } from \"~/types/educationals/EpEdu\";\n\nconst props = withDefaults(defineProps<EpEduProps>(), {\n title: null,\n type: \"neutral\",\n hideIcon: false,\n flat: true,\n labelIntentions: \"\",\n card: false\n});\n\n//get slots\nconst slots: SetupContext[\"slots\"] = useSlots();\n\nconst hasIntentions = computed(() => {\n return slots.intentions ? true : false;\n});\n\nconst hasActions = computed(() => {\n return slots.actions ? true : false;\n});\n\nconst renderIcon = computed(() => {\n if (props.icon) {\n return props.icon;\n }\n return mdiLeadPencil;\n});\n\nconst topBarStyle = computed(() => {\n return `${mediaVariants[props.type]} text-left ${\n props.flat ? \"\" : \"rounded-t-md\"\n } flex justify-between items-center `;\n});\n\nconst bottomBarStyle = computed(() => {\n return `${mediaVariants[props.type]} text-right`;\n});\n\nconst paddingTopStyle = computed(() => {\n if (props.type != \"neutral\") {\n return `px-5 py-2`;\n }\n});\n\nconst paddingBottomStyle = computed(() => {\n if (props.type != \"neutral\") {\n return `pr-5`;\n }\n});\nconst boxPaddingStyle = computed(() => {\n if (props.type != \"neutral\") {\n return `px-5`;\n }\n});\n\nconst containerStyle = computed(() => {\n if (hasActions.value || hasIntentions.value || props.title) {\n return ` overflow-hidden ${\n props.flat ? \"\" : \"shadow-md\"\n } flex flex-col justify-start h-full`;\n }\n return `flex flex-col justify-between`;\n});\n\n\nconst bgColor = computed(()=> {\n return props.card ? 'bg-surface-2 dark:bg-surface-2-dark rounded p-4' : ''\n})\n\n\n\nconst { title, hideIcon } = toRefs(props);\n</script>\n\n<template>\n <div :class=\"`${containerStyle} ${bgColor}`\">\n <div\n :class=\"`${topBarStyle} ${paddingTopStyle}`\"\n v-if=\"title || mandateLevel\"\n >\n <!-- <EpIcon :size=\"24\" :icon-path=\"mdiBookOpenVariant\"/> -->\n <h3>\n <EpIcon\n v-if=\"!hideIcon\"\n :iconPath=\"renderIcon\"\n size=\"24\"\n class=\"mr-2\"\n />\n <span class=\"font-bold align-middle\">{{ title }}</span>\n </h3>\n <EpScope v-if=\"mandateLevel\" :mandateLevel=\"mandateLevel\"></EpScope>\n </div>\n <div :class=\"`${boxPaddingStyle} `\">\n <div class=\"py-4\" v-if=\"hasIntentions\">\n <!-- <EpIcon :size=\"24\" :icon-path=\"mdiInformationOutline\"/> -->\n <h4\n v-if=\"labelIntentions\"\n class=\"font-light text-sm pb-1 tracking-wide\"\n >\n {{ labelIntentions }}\n </h4>\n <slot name=\"intentions\" />\n <EpDivider />\n </div>\n <div class=\"pt-2\">\n <slot name=\"content\" />\n </div>\n </div>\n <div\n :class=\"`${bottomBarStyle} ${paddingBottomStyle}`\"\n v-if=\"hasActions\"\n >\n <slot name=\"actions\" />\n </div>\n </div>\n</template>\n"],"names":["_createElementBlock","_normalizeClass","_unref","mandateLevel","_createElementVNode","_createBlock","EpIcon","_toDisplayString","EpScope","_openBlock","labelIntentions","_renderSlot","_createVNode","EpDivider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,UAAM,QAAQ;AAUd,UAAM,QAA+B,SAAA;AAErC,UAAM,gBAAgB,SAAS,MAAM;AACnC,aAAO,MAAM,aAAa,OAAO;AAAA,IACnC,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,MAAM,UAAU,OAAO;AAAA,IAChC,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,MAAM,MAAM;AACd,eAAO,MAAM;AAAA,MACf;AACA,aAAO;AAAA,IACT,CAAC;AAED,UAAM,cAAc,SAAS,MAAM;AACjC,aAAO,GAAG,cAAc,MAAM,IAAI,CAAC,eACjC,MAAM,OAAO,KAAK,cACpB;AAAA,IACF,CAAC;AAED,UAAM,iBAAiB,SAAS,MAAM;AACpC,aAAO,GAAG,cAAc,MAAM,IAAI,CAAC;AAAA,IACrC,CAAC;AAED,UAAM,kBAAkB,SAAS,MAAM;AACrC,UAAI,MAAM,QAAQ,WAAW;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AAED,UAAM,qBAAqB,SAAS,MAAM;AACxC,UAAI,MAAM,QAAQ,WAAW;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AACD,UAAM,kBAAkB,SAAS,MAAM;AACrC,UAAI,MAAM,QAAQ,WAAW;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AAED,UAAM,iBAAiB,SAAS,MAAM;AACpC,UAAI,WAAW,SAAS,cAAc,SAAS,MAAM,OAAO;AAC1D,eAAO,oBACL,MAAM,OAAO,KAAK,WACpB;AAAA,MACF;AACA,aAAO;AAAA,IACT,CAAC;AAGD,UAAM,UAAU,SAAS,MAAK;AAC3B,aAAO,MAAM,OAAO,oDAAoD;AAAA,IAC3E,CAAC;AAID,UAAM,EAAE,OAAO,aAAa,OAAO,KAAK;;0BAItCA,mBAuCM,OAAA;AAAA,QAvCA,OAAKC,eAAA,GAAK,eAAA,KAAc,IAAI,QAAA,KAAO,EAAA;AAAA,MAAA;QAG/BC,MAAA,KAAA,KAASC,KAAAA,6BAFjBH,mBAeM,OAAA;AAAA;UAdH,OAAKC,eAAA,GAAK,YAAA,KAAW,IAAI,gBAAA,KAAe,EAAA;AAAA,QAAA;UAIzCG,mBAQK,MAAA,MAAA;AAAA,aANMF,MAAA,QAAA,kBADTG,YAKEC,aAAA;AAAA;cAHC,UAAU,WAAA;AAAA,cACX,MAAK;AAAA,cACL,OAAM;AAAA,YAAA;YAERF,mBAAuD,QAAvD,YAAuDG,gBAAfL,MAAA,KAAA,CAAK,GAAA,CAAA;AAAA,UAAA;UAEhCC,KAAAA,6BAAfE,YAAoEG,aAAA;AAAA;YAAtC,cAAcL,KAAAA;AAAAA,UAAAA;;QAE9CC,mBAeM,OAAA;AAAA,UAfA,yBAAU,gBAAA,KAAe,GAAA;AAAA,QAAA;UACL,cAAA,SAAxBK,UAAA,GAAAT,mBAUM,OAVN,YAUM;AAAA,YAPIU,KAAAA,gCADRV,mBAKK,MALL,YAKKO,gBADAG,KAAAA,eAAe,GAAA,CAAA;YAEpBC,WAA0B,KAAA,QAAA,YAAA;AAAA,YAC1BC,YAAaC,WAAA;AAAA,UAAA;UAEfT,mBAEM,OAFN,YAEM;AAAA,YADJO,WAAuB,KAAA,QAAA,SAAA;AAAA,UAAA;;QAKnB,WAAA,sBAFRX,mBAKM,OAAA;AAAA;UAJH,OAAKC,eAAA,GAAK,eAAA,KAAc,IAAI,mBAAA,KAAkB,EAAA;AAAA,QAAA;UAG/CU,WAAuB,KAAA,QAAA,SAAA;AAAA,QAAA;;;;;"}
@@ -94,7 +94,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
94
94
  };
95
95
  return (_ctx, _cache) => {
96
96
  return openBlock(), createElementBlock("div", _hoisted_1, [
97
- __props.title ? (openBlock(), createElementBlock("h3", _hoisted_2, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
97
+ _ctx.title ? (openBlock(), createElementBlock("h3", _hoisted_2, toDisplayString(_ctx.title), 1)) : createCommentVNode("", true),
98
98
  createElementVNode("div", null, [
99
99
  (openBlock(true), createElementBlock(Fragment, null, renderList(renderText.value, (node, i) => {
100
100
  return openBlock(), createBlock(resolveDynamicComponent(node), { key: i });
@@ -1 +1 @@
1
- {"version":3,"file":"EpFillBlanks.vue.js","sources":["../../../src/components/educationals/EpFillBlanks.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, h, type VNode, reactive } from \"vue\";\nimport { isHtml } from \"~/composables/isHtml\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { EpFillBlanksProps } from \"~/types/educationals/EpFillBlanks\";\nimport EpSelect from \"../forms/EpSelect.vue\";\n\n\nconst props = withDefaults(defineProps<EpFillBlanksProps>(), {});\n\nconst values = reactive<Record<string, any>>({});\nconst refsMap = reactive<Record<string, any>>({});\n\nfunction parseHtmlToVNodes(html: string): (VNode | string)[] {\n const container = document.createElement(\"div\");\n container.innerHTML = html;\n\n const nodes: (VNode | string)[] = [];\n\n container.childNodes.forEach((node) => {\n if (node.nodeType === 3) {\n // Text node\n const text = node.textContent;\n \n if (text && text.replace(/\\s/g, '').length > 0) nodes.push(text);\n } else if (node.nodeType === 1) {\n const el = node as HTMLElement;\n\n // Select part\n if(el.classList.contains(\"ep-select\")){\n const id = el.getAttribute(\"data-id\");\n if(id !== null) {\n const selectProps = props.selects.filter((item) => item.id == id);\n if(selectProps.length > 0) {\n nodes.push(\n h(\n \"div\",\n { \n style: \"display:inline-block; border-width: 2px; border-radius: 7px; min-width: 150px; margin: 3px;\", \n id,\n ref: (el) => {\n if (el) refsMap[id] = el;\n }\n },\n h(EpSelect, {\n block: false,\n options: selectProps[0].options,\n modelValue: values[id],\n 'onUpdate:modelValue': (val) => {\n values[id] = val;\n }\n })\n )\n );\n }\n }\n return;\n }\n\n nodes.push(\n h(\n el.tagName.toLowerCase(),\n getElementAttrs(el),\n parseHtmlToVNodes(el.innerHTML) \n )\n );\n }\n });\n\n return nodes;\n}\n\nconst renderText = computed(() => {\n if (!props.content) return [h(\"div\")];\n if (!isHtml(props.content)) {\n return [h(\"div\", { innerHTML: useRenderText(props.content) })];\n }\n\n const formatted = useRenderText(props.content)\n\n return parseHtmlToVNodes(`<div> ${formatted} </div>`);\n});\n\n\n//get attributes from element html \nfunction getElementAttrs(el: HTMLElement): Record<string, any> {\n const attrs: Record<string, any> = {};\n\n for (const attr of Array.from(el.attributes)) {\n attrs[attr.name] = attr.value;\n }\n\n if (el.tagName.toLowerCase() === \"a\") {\n attrs.target = \"_blank\";\n attrs.rel = \"noopener noreferrer\";\n }\n\n return attrs;\n}\n\nconst validate = () => {\n props.selects.forEach((select) => {\n refsMap[select.id].style.borderColor = (values[select.id] == select.correctValue) ? 'green' : 'red';\n })\n}\n\n</script>\n\n<template>\n <div class=\"px-2\">\n <h3 v-if=\"title\" class=\"font-bold text-center my-2 text-xl\">{{ title }}</h3>\n <div>\n <component :is=\"node\" v-for=\"(node, i) in renderText\" :key=\"i\" />\n </div>\n <div class=\"flex items-center justify-around\">\n <button\n class=\"bg-blue-500 text-white px-3 py-2 m-2 rounded-md text-center\"\n @click=\"validate\"\n >\n Valider\n </button>\n </div>\n </div>\n</template>\n"],"names":["el","EpSelect","_openBlock","_createElementBlock","_toDisplayString","_createElementVNode","_Fragment","_renderList","_createBlock","_resolveDynamicComponent"],"mappings":"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"}
1
+ {"version":3,"file":"EpFillBlanks.vue.js","sources":["../../../src/components/educationals/EpFillBlanks.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, h, type VNode, reactive } from \"vue\";\nimport { isHtml } from \"~/composables/isHtml\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { EpFillBlanksProps } from \"~/types/educationals/EpFillBlanks\";\nimport EpSelect from \"../forms/EpSelect.vue\";\n\n\nconst props = withDefaults(defineProps<EpFillBlanksProps>(), {});\n\nconst values = reactive<Record<string, any>>({});\nconst refsMap = reactive<Record<string, any>>({});\n\nfunction parseHtmlToVNodes(html: string): (VNode | string)[] {\n const container = document.createElement(\"div\");\n container.innerHTML = html;\n\n const nodes: (VNode | string)[] = [];\n\n container.childNodes.forEach((node) => {\n if (node.nodeType === 3) {\n // Text node\n const text = node.textContent;\n \n if (text && text.replace(/\\s/g, '').length > 0) nodes.push(text);\n } else if (node.nodeType === 1) {\n const el = node as HTMLElement;\n\n // Select part\n if(el.classList.contains(\"ep-select\")){\n const id = el.getAttribute(\"data-id\");\n if(id !== null) {\n const selectProps = props.selects.filter((item) => item.id == id);\n if(selectProps.length > 0) {\n nodes.push(\n h(\n \"div\",\n { \n style: \"display:inline-block; border-width: 2px; border-radius: 7px; min-width: 150px; margin: 3px;\", \n id,\n ref: (el) => {\n if (el) refsMap[id] = el;\n }\n },\n h(EpSelect, {\n block: false,\n options: selectProps[0].options,\n modelValue: values[id],\n 'onUpdate:modelValue': (val) => {\n values[id] = val;\n }\n })\n )\n );\n }\n }\n return;\n }\n\n nodes.push(\n h(\n el.tagName.toLowerCase(),\n getElementAttrs(el),\n parseHtmlToVNodes(el.innerHTML) \n )\n );\n }\n });\n\n return nodes;\n}\n\nconst renderText = computed(() => {\n if (!props.content) return [h(\"div\")];\n if (!isHtml(props.content)) {\n return [h(\"div\", { innerHTML: useRenderText(props.content) })];\n }\n\n const formatted = useRenderText(props.content)\n\n return parseHtmlToVNodes(`<div> ${formatted} </div>`);\n});\n\n\n//get attributes from element html \nfunction getElementAttrs(el: HTMLElement): Record<string, any> {\n const attrs: Record<string, any> = {};\n\n for (const attr of Array.from(el.attributes)) {\n attrs[attr.name] = attr.value;\n }\n\n if (el.tagName.toLowerCase() === \"a\") {\n attrs.target = \"_blank\";\n attrs.rel = \"noopener noreferrer\";\n }\n\n return attrs;\n}\n\nconst validate = () => {\n props.selects.forEach((select) => {\n refsMap[select.id].style.borderColor = (values[select.id] == select.correctValue) ? 'green' : 'red';\n })\n}\n\n</script>\n\n<template>\n <div class=\"px-2\">\n <h3 v-if=\"title\" class=\"font-bold text-center my-2 text-xl\">{{ title }}</h3>\n <div>\n <component :is=\"node\" v-for=\"(node, i) in renderText\" :key=\"i\" />\n </div>\n <div class=\"flex items-center justify-around\">\n <button\n class=\"bg-blue-500 text-white px-3 py-2 m-2 rounded-md text-center\"\n @click=\"validate\"\n >\n Valider\n </button>\n </div>\n </div>\n</template>\n"],"names":["el","EpSelect","_openBlock","_createElementBlock","title","_toDisplayString","_createElementVNode","_Fragment","_renderList","_createBlock","_resolveDynamicComponent"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { defineComponent, toRefs, createElementBlock, openBlock, createElementVN
2
2
  import _sfc_main$1 from "../basics/EpIcon.vue.js";
3
3
  import Comp from "../interactions/EpAccordeon.vue.js";
4
4
  import _sfc_main$3 from "../basics/EpImg.vue.js";
5
- import _sfc_main$2 from "../tools/RenderTextNode.vue.js";
5
+ import _sfc_main$2 from "../tools/RenderTextNode.vue2.js";
6
6
  const _hoisted_1 = { class: "lg:grid lg:grid-cols-12 lg:gap-8" };
7
7
  const _hoisted_2 = { class: "lg:col-span-2" };
8
8
  const _hoisted_3 = { class: "text-pretty text-3xl font-semibold tracking-tight sm:text-xl" };
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, createElementBlock, openBlock, createElementVNode, createBlock, createCommentVNode, createTextVNode, toDisplayString, createVNode } from "vue";
2
2
  import _sfc_main$1 from "../basics/EpIcon.vue.js";
3
- import _sfc_main$2 from "../tools/RenderTextNode.vue.js";
3
+ import _sfc_main$2 from "../tools/RenderTextNode.vue2.js";
4
4
  const _hoisted_1 = { class: "lg:grid lg:grid-cols-12 lg:gap-8" };
5
5
  const _hoisted_2 = { class: "lg:col-span-2" };
6
6
  const _hoisted_3 = { class: "text-pretty text-3xl font-semibold tracking-tight sm:text-xl" };
@@ -23,20 +23,20 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
23
23
  return openBlock(), createElementBlock("div", _hoisted_1, [
24
24
  createElementVNode("div", _hoisted_2, [
25
25
  createElementVNode("h2", _hoisted_3, [
26
- __props.icon ? (openBlock(), createBlock(_sfc_main$1, {
26
+ _ctx.icon ? (openBlock(), createBlock(_sfc_main$1, {
27
27
  key: 0,
28
- "icon-path": __props.icon,
28
+ "icon-path": _ctx.icon,
29
29
  size: "28",
30
30
  extraClass: "mr-2"
31
31
  }, null, 8, ["icon-path"])) : createCommentVNode("", true),
32
- createTextVNode(" " + toDisplayString(__props.title), 1)
32
+ createTextVNode(" " + toDisplayString(_ctx.title), 1)
33
33
  ])
34
34
  ]),
35
35
  createElementVNode("div", _hoisted_4, [
36
36
  createElementVNode("div", _hoisted_5, [
37
- __props.subtitle ? (openBlock(), createElementBlock("h3", _hoisted_6, toDisplayString(__props.subtitle), 1)) : createCommentVNode("", true),
37
+ _ctx.subtitle ? (openBlock(), createElementBlock("h3", _hoisted_6, toDisplayString(_ctx.subtitle), 1)) : createCommentVNode("", true),
38
38
  createElementVNode("div", null, [
39
- createVNode(_sfc_main$2, { content: __props.content }, null, 8, ["content"])
39
+ createVNode(_sfc_main$2, { content: _ctx.content }, null, 8, ["content"])
40
40
  ])
41
41
  ])
42
42
  ])
@@ -1 +1 @@
1
- {"version":3,"file":"EpIntroduction.vue.js","sources":["../../../src/components/educationals/EpIntroduction.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport type { EpIntroductionProps } from \"~/types/educationals/EpIntroduction\";\nimport RenderTextNode from \"~/components/tools/RenderTextNode.vue\";\nconst {\n title = \"Introduction\",\n icon,\n subtitle,\n content,\n} = defineProps<EpIntroductionProps>();\n\n</script>\n<template>\n <div class=\"lg:grid lg:grid-cols-12 lg:gap-8\">\n <div class=\"lg:col-span-2\">\n <h2\n class=\"text-pretty text-3xl font-semibold tracking-tight sm:text-xl\"\n >\n <EpIcon v-if=\"icon\" :icon-path=\"icon\" size=\"28\" extraClass=\"mr-2\" />\n {{ title }}\n </h2>\n </div>\n <div class=\"lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4\">\n <div class=\"py-2\">\n <h3\n v-if=\"subtitle\"\n class=\"text-base font-semibold leading-7\"\n >\n {{ subtitle }}\n </h3>\n <div>\n <RenderTextNode :content=\"content\" />\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_createElementVNode","_createBlock","EpIcon","_createTextVNode","_toDisplayString","_createVNode","RenderTextNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAaE,aAAAA,UAAA,GAAAC,mBAsBM,OAtBN,YAsBM;AAAA,QArBJC,mBAOM,OAPN,YAOM;AAAA,UANJA,mBAKK,MALL,YAKK;AAAA,YAFW,QAAA,qBAAdC,YAAoEC,aAAA;AAAA;cAA/C,aAAW,QAAA;AAAA,cAAM,MAAK;AAAA,cAAK,YAAW;AAAA,YAAA;YAASC,gBAAA,sBACjE,QAAA,KAAK,GAAA,CAAA;AAAA,UAAA;;QAGZH,mBAYM,OAZN,YAYM;AAAA,UAXJA,mBAUM,OAVN,YAUM;AAAA,YARI,QAAA,yBADRD,mBAKK,MALL,YAKKK,gBADA,QAAA,QAAQ,GAAA,CAAA;YAEbJ,mBAEM,OAAA,MAAA;AAAA,cADLK,YAAqCC,aAAA,EAApB,SAAS,QAAA,QAAA,GAAO,MAAA,GAAA,CAAA,SAAA,CAAA;AAAA,YAAA;;;;;;;"}
1
+ {"version":3,"file":"EpIntroduction.vue.js","sources":["../../../src/components/educationals/EpIntroduction.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport type { EpIntroductionProps } from \"~/types/educationals/EpIntroduction\";\nimport RenderTextNode from \"~/components/tools/RenderTextNode.vue\";\nconst {\n title = \"Introduction\",\n icon,\n subtitle,\n content,\n} = defineProps<EpIntroductionProps>();\n\n</script>\n<template>\n <div class=\"lg:grid lg:grid-cols-12 lg:gap-8\">\n <div class=\"lg:col-span-2\">\n <h2\n class=\"text-pretty text-3xl font-semibold tracking-tight sm:text-xl\"\n >\n <EpIcon v-if=\"icon\" :icon-path=\"icon\" size=\"28\" extraClass=\"mr-2\" />\n {{ title }}\n </h2>\n </div>\n <div class=\"lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4\">\n <div class=\"py-2\">\n <h3\n v-if=\"subtitle\"\n class=\"text-base font-semibold leading-7\"\n >\n {{ subtitle }}\n </h3>\n <div>\n <RenderTextNode :content=\"content\" />\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_createElementVNode","icon","_createBlock","EpIcon","_createTextVNode","title","subtitle","_toDisplayString","_createVNode","RenderTextNode","content"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAaE,aAAAA,UAAA,GAAAC,mBAsBM,OAtBN,YAsBM;AAAA,QArBJC,mBAOM,OAPN,YAOM;AAAA,UANJA,mBAKK,MALL,YAKK;AAAA,YAFWC,KAAAA,qBAAdC,YAAoEC,aAAA;AAAA;cAA/C,aAAWF,KAAAA;AAAAA,cAAM,MAAK;AAAA,cAAK,YAAW;AAAA,YAAA;YAASG,gBAAA,sBACjEC,KAAAA,KAAK,GAAA,CAAA;AAAA,UAAA;;QAGZL,mBAYM,OAZN,YAYM;AAAA,UAXJA,mBAUM,OAVN,YAUM;AAAA,YARIM,KAAAA,yBADRP,mBAKK,MALL,YAKKQ,gBADAD,KAAAA,QAAQ,GAAA,CAAA;YAEbN,mBAEM,OAAA,MAAA;AAAA,cADLQ,YAAqCC,aAAA,EAApB,SAASC,KAAAA,QAAAA,GAAO,MAAA,GAAA,CAAA,SAAA,CAAA;AAAA,YAAA;;;;;;;"}
@@ -14,7 +14,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
14
14
  return (_ctx, _cache) => {
15
15
  return openBlock(), createElementBlock("div", {
16
16
  class: normalizeClass(`border-l-8
17
- ${__props.color}
17
+ ${_ctx.color}
18
18
  p-4
19
19
  my-3
20
20
  transition
@@ -30,9 +30,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
30
30
  dark:hover:outline-gray-700`)
31
31
  }, [
32
32
  createElementVNode("div", _hoisted_1, [
33
- createElementVNode("div", _hoisted_2, toDisplayString(__props.nameApproach), 1),
33
+ createElementVNode("div", _hoisted_2, toDisplayString(_ctx.nameApproach), 1),
34
34
  createElementVNode("div", _hoisted_3, [
35
- createElementVNode("h4", _hoisted_4, toDisplayString(__props.title), 1),
35
+ createElementVNode("h4", _hoisted_4, toDisplayString(_ctx.title), 1),
36
36
  renderSlot(_ctx.$slots, "default")
37
37
  ])
38
38
  ])
@@ -1 +1 @@
1
- {"version":3,"file":"EpObjective.vue.js","sources":["../../../src/components/educationals/EpObjective.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { EpObjectiveProps } from \"~/types/educationals/EpObjective\";\n\nconst {\n color = \"border-gray\",\n nameApproach,\n title,\n} = defineProps<EpObjectiveProps>();\n</script>\n\n<template>\n <div\n :class=\"`border-l-8\n ${color} \n p-4 \n my-3 \n transition \n duration-200 \n ease-in-out \n outline-primary \n focus-within:outline \n focus-within:outline-1 \n outline-offset-4 \n hover:outline \n hover:outline-1 \n hover:outline-gray-200 \n dark:hover:outline-gray-700`\"\n >\n <!-- mobile: stacked, lg+: row with divider -->\n <div class=\"flex flex-col gap-y-2 lg:flex-row lg:divide-x lg:gap-x-4\">\n <div class=\"w-full lg:w-32 lg:flex-none\">\n {{ nameApproach }}\n </div>\n <div class=\"flex-1 lg:pl-4\">\n <h4 class=\"font-medium mb-1\">{{ title }}</h4>\n <slot />\n </div>\n </div>\n </div>\n</template>\n"],"names":["_createElementBlock","_normalizeClass","_createElementVNode","_toDisplayString","_renderSlot"],"mappings":";;;;;;;;;;;;;;0BAWEA,mBA2BM,OAAA;AAAA,QA1BH,OAAKC,eAAA;AAAA,MAAoB,QAAA,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;QAiB/BC,mBAQM,OARN,YAQM;AAAA,UAPJA,mBAEM,OAFN,YAEMC,gBADD,QAAA,YAAY,GAAA,CAAA;AAAA,UAEjBD,mBAGM,OAHN,YAGM;AAAA,YAFJA,mBAA6C,MAA7C,YAA6CC,gBAAb,QAAA,KAAK,GAAA,CAAA;AAAA,YACrCC,WAAQ,KAAA,QAAA,SAAA;AAAA,UAAA;;;;;;"}
1
+ {"version":3,"file":"EpObjective.vue.js","sources":["../../../src/components/educationals/EpObjective.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { EpObjectiveProps } from \"~/types/educationals/EpObjective\";\n\nconst {\n color = \"border-gray\",\n nameApproach,\n title,\n} = defineProps<EpObjectiveProps>();\n</script>\n\n<template>\n <div\n :class=\"`border-l-8\n ${color} \n p-4 \n my-3 \n transition \n duration-200 \n ease-in-out \n outline-primary \n focus-within:outline \n focus-within:outline-1 \n outline-offset-4 \n hover:outline \n hover:outline-1 \n hover:outline-gray-200 \n dark:hover:outline-gray-700`\"\n >\n <!-- mobile: stacked, lg+: row with divider -->\n <div class=\"flex flex-col gap-y-2 lg:flex-row lg:divide-x lg:gap-x-4\">\n <div class=\"w-full lg:w-32 lg:flex-none\">\n {{ nameApproach }}\n </div>\n <div class=\"flex-1 lg:pl-4\">\n <h4 class=\"font-medium mb-1\">{{ title }}</h4>\n <slot />\n </div>\n </div>\n </div>\n</template>\n"],"names":["_createElementBlock","_normalizeClass","color","_createElementVNode","_toDisplayString","nameApproach","title","_renderSlot"],"mappings":";;;;;;;;;;;;;;0BAWEA,mBA2BM,OAAA;AAAA,QA1BH,OAAKC,eAAA;AAAA,MAAoBC,KAAAA,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;QAiB/BC,mBAQM,OARN,YAQM;AAAA,UAPJA,mBAEM,OAFN,YAEMC,gBADDC,KAAAA,YAAY,GAAA,CAAA;AAAA,UAEjBF,mBAGM,OAHN,YAGM;AAAA,YAFJA,mBAA6C,MAA7C,YAA6CC,gBAAbE,KAAAA,KAAK,GAAA,CAAA;AAAA,YACrCC,WAAQ,KAAA,QAAA,SAAA;AAAA,UAAA;;;;;;"}
@@ -144,7 +144,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
144
144
  }
145
145
  };
146
146
  return (_ctx, _cache) => {
147
- return !__props.compact ? (openBlock(), createElementBlock("div", _hoisted_1, [
147
+ return !_ctx.compact ? (openBlock(), createElementBlock("div", _hoisted_1, [
148
148
  !unref(hideCover) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
149
149
  hasCover.value ? (openBlock(), createElementBlock("div", _hoisted_2, [
150
150
  createElementVNode("img", {
@@ -166,7 +166,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
166
166
  icon: unref(mdiBookOpenVariant),
167
167
  flat: "",
168
168
  type: unref(type),
169
- hideIcon: __props.hideIcon,
169
+ hideIcon: _ctx.hideIcon,
170
170
  mandateLevel: unref(mandateLevel),
171
171
  card: ""
172
172
  }, createSlots({
@@ -239,7 +239,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
239
239
  icon: unref(mdiBookOpenVariant),
240
240
  flat: "",
241
241
  type: unref(type),
242
- hideIcon: __props.hideIcon
242
+ hideIcon: _ctx.hideIcon
243
243
  }, createSlots({
244
244
  content: withCtx(() => [
245
245
  createElementVNode("div", _hoisted_20, [
@@ -1 +1 @@
1
- {"version":3,"file":"EpReading.vue.js","sources":["../../../src/components/educationals/EpReading.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, toRefs, computed } from \"vue\";\nimport EpIcon from \"~/components//basics/EpIcon.vue\";\nimport EpBtn from \"~/components//basics/EpBtn.vue\";\nimport DisplayBox from \"~/components/tools/DisplayBox.vue\";\nimport EpModal from \"~/components/interactions/EpModal.vue\";\nimport EpEdu from \"~/components/educationals/EpEdu.vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport { mdiBookmarkBox } from \"@mdi/js\";\nimport { mdiBookOpenVariant } from \"@mdi/js\";\nimport { mdiBookOpenPageVariant } from \"@mdi/js\";\nimport { mdiOpenInNew } from \"@mdi/js\";\nimport type { EpReadingProps } from \"~/types/educationals/EpReading\";\n\nconst props = withDefaults(defineProps<EpReadingProps>(), {\n title: null,\n cover: \"\",\n icon: \"mdiBookmarkBox\",\n hideCover: false,\n compact: false,\n type: \"neutral\",\n hideIcon: false,\n labelIn: \"dans\",\n labelRead: \"Lire\",\n labelClose: \"Fermer\",\n labelDetails: \"détails\",\n labelCard: \"Lecture\",\n labelIntentions: \"Intentions de lecture\",\n});\n\nconst old_image =\n \"https://live.staticflickr.com/4868/45940268562_c5f7fdd06b_q.jpg\";\nconst bad_image =\n \"https://farm5.staticflickr.com/4868/45940268562_9452f09a61_o.png\";\n\nconst modalCompact = ref(false)\n\nconst hasCover = computed(() => {\n if (\n props.cover === old_image ||\n props.cover.trim().length === 0 ||\n props.cover === bad_image\n ) {\n return false;\n }\n return true;\n});\n\nconst hasDetails = computed(() => {\n if (props.author || props.editor || props.container || props.year) {\n return true;\n }\n return false;\n});\n\nconst {\n title,\n intentions,\n cover,\n hideCover,\n year,\n author,\n container,\n editor,\n pages,\n type,\n mandateLevel,\n url,\n labelIn,\n labelRead,\n labelClose,\n labelDetails,\n labelCard,\n labelIntentions,\n} = toRefs(props);\n\nconst errorImg = (event: Event) => {\n const imgElement = event.target as HTMLImageElement;\n if (imgElement.src) {\n imgElement.src =\n \"https://live.staticflickr.com/4868/45940268562_c5f7fdd06b_q.jpg\";\n }\n};\n</script>\n\n<template>\n <div\n class=\"flex shadow-sm rounded-lg overflow-hidden bg-surface-2 dark:bg-surface-2-dark md:flex-row\"\n v-if=\"!compact\"\n >\n <template v-if=\"!hideCover\">\n <div\n v-if=\"hasCover\"\n class=\"h-96 mr-2 w-full rounded-t-lg md:h-auto md:w-56 md:rounded-none md:rounded-l-lg flex justify-center items-center text-gray-300\"\n >\n <img\n :src=\"cover\"\n :alt=\"`image de la lecture ${title}`\"\n @error=\"errorImg\"\n />\n </div>\n\n <div\n v-else\n class=\"h-96 w-full rounded-t-lg md:h-auto md:w-56 md:rounded-none md:rounded-l-lg flex justify-center items-center text-gray-300 dark:bg-dark\"\n >\n <EpIcon :icon-path=\"mdiBookOpenPageVariant\" size=\"95\" />\n </div>\n </template>\n <div class=\"flex py-3 flex-col w-full\">\n <EpEdu\n :title=\"labelCard\"\n :labelIntentions=\"labelIntentions\"\n :icon=\"mdiBookOpenVariant\"\n flat\n :type=\"type\"\n :hideIcon=\"hideIcon\"\n :mandateLevel=\"mandateLevel\"\n card\n >\n <template #intentions v-if=\"intentions\">\n <div v-html=\"useRenderText(intentions)\" />\n </template>\n <template #content>\n <div class=\"w-full\">\n <h4\n :class=\"`text-xl font-semibold ${\n hasDetails || pages ? 'border-b' : ''\n }`\"\n >\n {{ title }}\n </h4>\n <div class=\"flex\">\n <div class=\"flex-1 py-2\" v-if=\"hasDetails\">\n <p class=\"font-medium\">\n <span class=\"font-bold mr-1\" v-if=\"author\">{{ author }}</span>\n <span v-if=\"year\">({{ year }})</span>\n <span v-if=\"year && editor\">, </span>\n <span v-if=\"editor\">{{ editor }}</span>\n </p>\n <p v-if=\"container\">\n <span class=\"text-sm italic pr-1\">{{ labelIn }}</span>\n <span class=\"\">{{ container }}</span>\n </p>\n </div>\n <div\n :class=\"`flex-1 pt-2 pb-2 ${hasDetails ? 'border-l pl-2' : ''}`\"\n v-if=\"pages\"\n >\n <EpIcon :size=\"24\" :icon-path=\"mdiBookmarkBox\" />\n <span class=\"pl-2 align-middle\">{{ pages }}</span>\n </div>\n </div>\n </div>\n </template>\n <template #actions>\n <EpBtn rounded text :href=\"url\" v-if=\"url\" type=\"primary\">\n <EpIcon :size=\"20\" :icon-path=\"mdiOpenInNew\" /> {{ labelRead }}\n </EpBtn>\n </template>\n </EpEdu>\n </div>\n </div>\n <!--compact mode-->\n <EpEdu\n :title=\"labelCard\"\n :labelIntentions=\"labelIntentions\"\n :icon=\"mdiBookOpenVariant\"\n flat\n :type=\"type\"\n :hideIcon=\"hideIcon\"\n v-else\n >\n <template #intentions v-if=\"intentions\">\n <div v-html=\"useRenderText(intentions)\" />\n </template>\n <template #content>\n <div class=\"flex flex-row justify-between\">\n <div class=\"p-5\">\n <span class=\"text-lg leading-6 font-semibold font-sans\">{{\n title\n }}</span>\n </div>\n <div class=\"flex\">\n <div class=\"p-5\">\n <EpBtn rounded text @click.stop=\"modalCompact = true\" type=\"primary\">\n {{ labelDetails }}\n </EpBtn>\n <EpModal v-model=\"modalCompact\" size=\"compact\">\n <div class=\"w-full\">\n <div\n class=\"flex flex-col md:flex-row\"\n >\n <template v-if=\"!hideCover\">\n <img\n v-if=\"hasCover\"\n class=\"object-cover h-96 w-full rounded-t-lg md:h-auto md:w-56 md:rounded-none md:rounded-l-lg\"\n :src=\"cover\"\n :alt=\"`image de la lecture ${title}`\"\n @error=\"errorImg\"\n />\n <div\n v-else\n class=\"h-96 w-full rounded-t-lg md:h-auto md:w-56 md:rounded-none md:rounded-l-lg flex justify-center items-center\"\n >\n <EpIcon :icon-path=\"mdiBookOpenPageVariant\" size=\"95\" />\n </div>\n </template>\n <div class=\"flex flex-col justify-between w-full\">\n <div\n class=\"text-left px-5 py-2\"\n >\n <EpIcon :size=\"24\" :icon-path=\"mdiBookOpenVariant\" />\n <span class=\"pl-2 align-middle\">{{ labelCard }}</span>\n </div>\n <div class=\"w-full px-5\">\n <h4\n :class=\"`text-xl font-semibold py-4 ${\n hasDetails || pages ? 'border-b' : ''\n }`\"\n >\n {{ title }}\n </h4>\n <div class=\"flex\">\n <div class=\"flex-1 py-2\" v-if=\"hasDetails\">\n <p class=\"font-medium\">\n <span class=\"font-bold mr-2\" v-if=\"author\">{{\n author\n }}</span>\n <span v-if=\"year\"> ({{ year }})</span>\n <span v-if=\"year && editor\">, </span>\n <span v-if=\"editor\">{{ editor }}</span>\n </p>\n <p v-if=\"container\">\n <span class=\"text-sm italic pr-1\">{{\n labelIn\n }}</span>\n <span>{{ container }}</span>\n </p>\n </div>\n <div\n :class=\"`flex-1 pt-2 pb-2 ${\n hasDetails ? 'border-l pl-2' : ''\n }`\"\n v-if=\"pages\"\n >\n <EpIcon :size=\"24\" :icon-path=\"mdiBookmarkBox\" />\n <span class=\"pl-2 align-middle\">{{ pages }}</span>\n </div>\n </div>\n </div>\n <div\n class=\"text-right pr-5\"\n >\n <EpBtn rounded size=\"small\" @click.stop=\"modalCompact = false\" type=\"error\">\n {{ labelClose }}\n </EpBtn>\n </div>\n </div>\n </div>\n </div>\n \n </EpModal>\n </div>\n\n <div class=\"border-l p-5\">\n <EpBtn rounded text :href=\"url\" v-if=\"url\" type=\"primary\">\n <EpIcon :size=\"20\" :icon-path=\"mdiOpenInNew\" /> {{ labelRead }}\n </EpBtn>\n </div>\n </div>\n </div>\n </template>\n </EpEdu>\n</template>\n"],"names":["_openBlock","_createElementBlock","_unref","_Fragment","_createElementVNode","_createVNode","EpIcon","EpEdu","_normalizeClass","_toDisplayString","_createBlock","EpBtn","_createTextVNode","EpModal"],"mappings":"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"}
1
+ {"version":3,"file":"EpReading.vue.js","sources":["../../../src/components/educationals/EpReading.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, toRefs, computed } from \"vue\";\nimport EpIcon from \"~/components//basics/EpIcon.vue\";\nimport EpBtn from \"~/components//basics/EpBtn.vue\";\nimport DisplayBox from \"~/components/tools/DisplayBox.vue\";\nimport EpModal from \"~/components/interactions/EpModal.vue\";\nimport EpEdu from \"~/components/educationals/EpEdu.vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport { mdiBookmarkBox } from \"@mdi/js\";\nimport { mdiBookOpenVariant } from \"@mdi/js\";\nimport { mdiBookOpenPageVariant } from \"@mdi/js\";\nimport { mdiOpenInNew } from \"@mdi/js\";\nimport type { EpReadingProps } from \"~/types/educationals/EpReading\";\n\nconst props = withDefaults(defineProps<EpReadingProps>(), {\n title: null,\n cover: \"\",\n icon: \"mdiBookmarkBox\",\n hideCover: false,\n compact: false,\n type: \"neutral\",\n hideIcon: false,\n labelIn: \"dans\",\n labelRead: \"Lire\",\n labelClose: \"Fermer\",\n labelDetails: \"détails\",\n labelCard: \"Lecture\",\n labelIntentions: \"Intentions de lecture\",\n});\n\nconst old_image =\n \"https://live.staticflickr.com/4868/45940268562_c5f7fdd06b_q.jpg\";\nconst bad_image =\n \"https://farm5.staticflickr.com/4868/45940268562_9452f09a61_o.png\";\n\nconst modalCompact = ref(false)\n\nconst hasCover = computed(() => {\n if (\n props.cover === old_image ||\n props.cover.trim().length === 0 ||\n props.cover === bad_image\n ) {\n return false;\n }\n return true;\n});\n\nconst hasDetails = computed(() => {\n if (props.author || props.editor || props.container || props.year) {\n return true;\n }\n return false;\n});\n\nconst {\n title,\n intentions,\n cover,\n hideCover,\n year,\n author,\n container,\n editor,\n pages,\n type,\n mandateLevel,\n url,\n labelIn,\n labelRead,\n labelClose,\n labelDetails,\n labelCard,\n labelIntentions,\n} = toRefs(props);\n\nconst errorImg = (event: Event) => {\n const imgElement = event.target as HTMLImageElement;\n if (imgElement.src) {\n imgElement.src =\n \"https://live.staticflickr.com/4868/45940268562_c5f7fdd06b_q.jpg\";\n }\n};\n</script>\n\n<template>\n <div\n class=\"flex shadow-sm rounded-lg overflow-hidden bg-surface-2 dark:bg-surface-2-dark md:flex-row\"\n v-if=\"!compact\"\n >\n <template v-if=\"!hideCover\">\n <div\n v-if=\"hasCover\"\n class=\"h-96 mr-2 w-full rounded-t-lg md:h-auto md:w-56 md:rounded-none md:rounded-l-lg flex justify-center items-center text-gray-300\"\n >\n <img\n :src=\"cover\"\n :alt=\"`image de la lecture ${title}`\"\n @error=\"errorImg\"\n />\n </div>\n\n <div\n v-else\n class=\"h-96 w-full rounded-t-lg md:h-auto md:w-56 md:rounded-none md:rounded-l-lg flex justify-center items-center text-gray-300 dark:bg-dark\"\n >\n <EpIcon :icon-path=\"mdiBookOpenPageVariant\" size=\"95\" />\n </div>\n </template>\n <div class=\"flex py-3 flex-col w-full\">\n <EpEdu\n :title=\"labelCard\"\n :labelIntentions=\"labelIntentions\"\n :icon=\"mdiBookOpenVariant\"\n flat\n :type=\"type\"\n :hideIcon=\"hideIcon\"\n :mandateLevel=\"mandateLevel\"\n card\n >\n <template #intentions v-if=\"intentions\">\n <div v-html=\"useRenderText(intentions)\" />\n </template>\n <template #content>\n <div class=\"w-full\">\n <h4\n :class=\"`text-xl font-semibold ${\n hasDetails || pages ? 'border-b' : ''\n }`\"\n >\n {{ title }}\n </h4>\n <div class=\"flex\">\n <div class=\"flex-1 py-2\" v-if=\"hasDetails\">\n <p class=\"font-medium\">\n <span class=\"font-bold mr-1\" v-if=\"author\">{{ author }}</span>\n <span v-if=\"year\">({{ year }})</span>\n <span v-if=\"year && editor\">, </span>\n <span v-if=\"editor\">{{ editor }}</span>\n </p>\n <p v-if=\"container\">\n <span class=\"text-sm italic pr-1\">{{ labelIn }}</span>\n <span class=\"\">{{ container }}</span>\n </p>\n </div>\n <div\n :class=\"`flex-1 pt-2 pb-2 ${hasDetails ? 'border-l pl-2' : ''}`\"\n v-if=\"pages\"\n >\n <EpIcon :size=\"24\" :icon-path=\"mdiBookmarkBox\" />\n <span class=\"pl-2 align-middle\">{{ pages }}</span>\n </div>\n </div>\n </div>\n </template>\n <template #actions>\n <EpBtn rounded text :href=\"url\" v-if=\"url\" type=\"primary\">\n <EpIcon :size=\"20\" :icon-path=\"mdiOpenInNew\" /> {{ labelRead }}\n </EpBtn>\n </template>\n </EpEdu>\n </div>\n </div>\n <!--compact mode-->\n <EpEdu\n :title=\"labelCard\"\n :labelIntentions=\"labelIntentions\"\n :icon=\"mdiBookOpenVariant\"\n flat\n :type=\"type\"\n :hideIcon=\"hideIcon\"\n v-else\n >\n <template #intentions v-if=\"intentions\">\n <div v-html=\"useRenderText(intentions)\" />\n </template>\n <template #content>\n <div class=\"flex flex-row justify-between\">\n <div class=\"p-5\">\n <span class=\"text-lg leading-6 font-semibold font-sans\">{{\n title\n }}</span>\n </div>\n <div class=\"flex\">\n <div class=\"p-5\">\n <EpBtn rounded text @click.stop=\"modalCompact = true\" type=\"primary\">\n {{ labelDetails }}\n </EpBtn>\n <EpModal v-model=\"modalCompact\" size=\"compact\">\n <div class=\"w-full\">\n <div\n class=\"flex flex-col md:flex-row\"\n >\n <template v-if=\"!hideCover\">\n <img\n v-if=\"hasCover\"\n class=\"object-cover h-96 w-full rounded-t-lg md:h-auto md:w-56 md:rounded-none md:rounded-l-lg\"\n :src=\"cover\"\n :alt=\"`image de la lecture ${title}`\"\n @error=\"errorImg\"\n />\n <div\n v-else\n class=\"h-96 w-full rounded-t-lg md:h-auto md:w-56 md:rounded-none md:rounded-l-lg flex justify-center items-center\"\n >\n <EpIcon :icon-path=\"mdiBookOpenPageVariant\" size=\"95\" />\n </div>\n </template>\n <div class=\"flex flex-col justify-between w-full\">\n <div\n class=\"text-left px-5 py-2\"\n >\n <EpIcon :size=\"24\" :icon-path=\"mdiBookOpenVariant\" />\n <span class=\"pl-2 align-middle\">{{ labelCard }}</span>\n </div>\n <div class=\"w-full px-5\">\n <h4\n :class=\"`text-xl font-semibold py-4 ${\n hasDetails || pages ? 'border-b' : ''\n }`\"\n >\n {{ title }}\n </h4>\n <div class=\"flex\">\n <div class=\"flex-1 py-2\" v-if=\"hasDetails\">\n <p class=\"font-medium\">\n <span class=\"font-bold mr-2\" v-if=\"author\">{{\n author\n }}</span>\n <span v-if=\"year\"> ({{ year }})</span>\n <span v-if=\"year && editor\">, </span>\n <span v-if=\"editor\">{{ editor }}</span>\n </p>\n <p v-if=\"container\">\n <span class=\"text-sm italic pr-1\">{{\n labelIn\n }}</span>\n <span>{{ container }}</span>\n </p>\n </div>\n <div\n :class=\"`flex-1 pt-2 pb-2 ${\n hasDetails ? 'border-l pl-2' : ''\n }`\"\n v-if=\"pages\"\n >\n <EpIcon :size=\"24\" :icon-path=\"mdiBookmarkBox\" />\n <span class=\"pl-2 align-middle\">{{ pages }}</span>\n </div>\n </div>\n </div>\n <div\n class=\"text-right pr-5\"\n >\n <EpBtn rounded size=\"small\" @click.stop=\"modalCompact = false\" type=\"error\">\n {{ labelClose }}\n </EpBtn>\n </div>\n </div>\n </div>\n </div>\n \n </EpModal>\n </div>\n\n <div class=\"border-l p-5\">\n <EpBtn rounded text :href=\"url\" v-if=\"url\" type=\"primary\">\n <EpIcon :size=\"20\" :icon-path=\"mdiOpenInNew\" /> {{ labelRead }}\n </EpBtn>\n </div>\n </div>\n </div>\n </template>\n </EpEdu>\n</template>\n"],"names":["compact","_openBlock","_createElementBlock","_unref","_Fragment","_createElementVNode","_createVNode","EpIcon","EpEdu","hideIcon","_normalizeClass","_toDisplayString","_createBlock","EpBtn","_createTextVNode","EpModal"],"mappings":"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"}