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":"EpTooltip.vue.js","sources":["../../../src/components/interactions/EpTooltip.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { typeTooltip } from \"~/types/Tooltip\";\nimport type { EpTooltipProps } from \"~/types/interactions/EpTooltip\";\n\nconst props = withDefaults(defineProps<EpTooltipProps>(), {\n styles: \"light\",\n placement: \"top\",\n arrow: \"none\",\n});\n\nconst finalType = computed(() => {\n return props.placement;\n});\n\nconst arrowStyle = computed(() => {\n if (props.arrow == \"arrow\") {\n if (props.styles == \"dark\") {\n return \"arrowdark\";\n } else {\n return \"arrow\";\n }\n } else {\n if (props.styles == \"light\") {\n return \"default\";\n } else {\n return \"dark\";\n }\n }\n});\n\nconst finalStyles = computed(() => {\n return `${typeTooltip[finalType.value]?.[arrowStyle.value]}`;\n});\n</script>\n<template>\n <div class=\"group relative w-max\">\n <slot />\n <span\n :class=\"`pointer-events-none absolute w-max rounded px-2 py-1 text-sm font-medium opacity-0 shadow transition-opacity group-hover:opacity-100 ${finalStyles} `\"\n >{{ text }}</span\n >\n </div>\n</template>\n\n"],"names":["_openBlock","_createElementBlock","_renderSlot","_createElementVNode"],"mappings":";;;;;;;;;;;;;AAKA,UAAM,QAAQ;AAMd,UAAM,YAAY,SAAS,MAAM;AAC/B,aAAO,MAAM;AAAA,IACf,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,MAAM,SAAS,SAAS;AAC1B,YAAI,MAAM,UAAU,QAAQ;AAC1B,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF,OAAO;AACL,YAAI,MAAM,UAAU,SAAS;AAC3B,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,CAAC;AAED,UAAM,cAAc,SAAS,MAAM;;AACjC,aAAO,IAAG,iBAAY,UAAU,KAAK,MAA3B,mBAA+B,WAAW,MAAM;AAAA,IAC5D,CAAC;;AAGC,aAAAA,UAAA,GAAAC,mBAMM,OANN,YAMM;AAAA,QALJC,WAAQ,KAAA,QAAA,SAAA;AAAA,QACRC,mBAGC,QAAA;AAAA,UAFE,kKAAmJ,YAAA,KAAW,GAAA;AAAA,QAAA,mBAC3J,QAAA,IAAI,GAAA,CAAA;AAAA,MAAA;;;;"}
1
+ {"version":3,"file":"EpTooltip.vue.js","sources":["../../../src/components/interactions/EpTooltip.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { typeTooltip } from \"~/types/Tooltip\";\nimport type { EpTooltipProps } from \"~/types/interactions/EpTooltip\";\n\nconst props = withDefaults(defineProps<EpTooltipProps>(), {\n styles: \"light\",\n placement: \"top\",\n arrow: \"none\",\n});\n\nconst finalType = computed(() => {\n return props.placement;\n});\n\nconst arrowStyle = computed(() => {\n if (props.arrow == \"arrow\") {\n if (props.styles == \"dark\") {\n return \"arrowdark\";\n } else {\n return \"arrow\";\n }\n } else {\n if (props.styles == \"light\") {\n return \"default\";\n } else {\n return \"dark\";\n }\n }\n});\n\nconst finalStyles = computed(() => {\n return `${typeTooltip[finalType.value]?.[arrowStyle.value]}`;\n});\n</script>\n<template>\n <div class=\"group relative w-max\">\n <slot />\n <span\n :class=\"`pointer-events-none absolute w-max rounded px-2 py-1 text-sm font-medium opacity-0 shadow transition-opacity group-hover:opacity-100 ${finalStyles} `\"\n >{{ text }}</span\n >\n </div>\n</template>\n\n"],"names":["_openBlock","_createElementBlock","_renderSlot","_createElementVNode","text"],"mappings":";;;;;;;;;;;;;AAKA,UAAM,QAAQ;AAMd,UAAM,YAAY,SAAS,MAAM;AAC/B,aAAO,MAAM;AAAA,IACf,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,MAAM,SAAS,SAAS;AAC1B,YAAI,MAAM,UAAU,QAAQ;AAC1B,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF,OAAO;AACL,YAAI,MAAM,UAAU,SAAS;AAC3B,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,CAAC;AAED,UAAM,cAAc,SAAS,MAAM;;AACjC,aAAO,IAAG,iBAAY,UAAU,KAAK,MAA3B,mBAA+B,WAAW,MAAM;AAAA,IAC5D,CAAC;;AAGC,aAAAA,UAAA,GAAAC,mBAMM,OANN,YAMM;AAAA,QALJC,WAAQ,KAAA,QAAA,SAAA;AAAA,QACRC,mBAGC,QAAA;AAAA,UAFE,kKAAmJ,YAAA,KAAW,GAAA;AAAA,QAAA,mBAC3JC,KAAAA,IAAI,GAAA,CAAA;AAAA,MAAA;;;;"}
@@ -55,8 +55,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
55
55
  return (_ctx, _cache) => {
56
56
  return openBlock(), createBlock(_sfc_main$1, {
57
57
  title: unref(title),
58
- labelIntentions: __props.labelIntentions,
59
- type: __props.type,
58
+ labelIntentions: _ctx.labelIntentions,
59
+ type: _ctx.type,
60
60
  hideIcon: unref(hideIcon),
61
61
  icon: unref(mdiHeadphones),
62
62
  mandateLevel: unref(mandateLevel)
@@ -80,7 +80,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
80
80
  key: 3,
81
81
  type: "error",
82
82
  outlined: "",
83
- content: __props.messageError
83
+ content: _ctx.messageError
84
84
  }, null, 8, ["content"]))
85
85
  ])
86
86
  ]),
@@ -1 +1 @@
1
- {"version":3,"file":"EpAudio.vue.js","sources":["../../../src/components/medias/EpAudio.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, toRefs } from \"vue\";\nimport { isHtml } from \"~/composables/isHtml\";\nimport { useMarkdown } from \"~/composables/useMarkdown\";\nimport { mdiHeadphones } from \"@mdi/js\";\nimport BgAudio from \"~/components/tools/BgAudio.vue\";\nimport EpAlert from \"~/components/signages/EpAlert.vue\";\nimport EpEdu from \"~/components/educationals/EpEdu.vue\";\nimport type { EpAudioProps } from \"~/types/medias/EpAudio\";\n\nconst props = withDefaults(defineProps<EpAudioProps>(), {\n type: \"neutral\",\n hideIcon: false,\n labelIntentions: \"Intentions d'écoute\",\n messageError: \"Mauvais url\",\n});\n\n//regex url panopto udem\nconst hasmp4 = /\\.mp4\\?/;\n\nconst cleanSrc = computed(() => {\n let srcString = props.src;\n const isPanopto = hasmp4.test(props.src);\n if (isPanopto) {\n srcString = srcString.replace(/\\.mp4.*$/, \".mp4\");\n }\n return srcString;\n});\n\nconst isAudioFormat = computed(() => {\n if (\n cleanSrc.value.endsWith(\".mp3\") ||\n cleanSrc.value.endsWith(\".mp4\") ||\n cleanSrc.value.endsWith(\".ogg\") ||\n cleanSrc.value.endsWith(\".wav\")\n ) {\n return true;\n }\n return false;\n});\n\nconst bgColor = computed(() => {\n return props.type\n});\n\nconst renderText = computed(() => {\n if (!props.intentions) {\n return null;\n }\n if (!isHtml(props.intentions)) {\n return useMarkdown(props.intentions);\n }\n return props.intentions;\n});\n\n//controls\n//const controls = useMediaControls(video, {src:props.src})\n\nconst { src, title, hideIcon, mandateLevel, bgImg } = toRefs(props);\n</script>\n\n<template>\n <EpEdu\n :title=\"title\"\n :labelIntentions=\"labelIntentions\"\n :type=\"type\"\n :hideIcon=\"hideIcon\"\n :icon=\"mdiHeadphones\"\n :mandateLevel=\"mandateLevel\"\n >\n <template #intentions v-if=\"renderText\">\n <div v-html=\"renderText\" />\n </template>\n <template #content>\n <div class=\"max-w-screen-sm mx-auto\">\n <BgAudio :fill=\"bgColor\" v-if=\"!bgImg\"></BgAudio>\n <img v-else :src=\"bgImg\" />\n <audio\n v-if=\"isAudioFormat\"\n ref=\"video\"\n controls\n :src=\"cleanSrc\"\n controlsList=\"nodownload\"\n ></audio>\n <EpAlert type=\"error\" outlined v-else :content=\"messageError\"/>\n </div>\n </template>\n <!-- <template #actions>\n <EpBtn :color=\"type=='base'?'text-gray-700':'text-white'\" :type=\"type\">[Repair btn style... to change]</EpBtn>\n </template> -->\n </EpEdu>\n</template>\n"],"names":["_createBlock","EpEdu","_unref","_createElementVNode","BgAudio","_createElementBlock","EpAlert"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAUA,UAAM,QAAQ;AAQd,UAAM,SAAS;AAEf,UAAM,WAAW,SAAS,MAAM;AAC9B,UAAI,YAAY,MAAM;AACtB,YAAM,YAAY,OAAO,KAAK,MAAM,GAAG;AACvC,UAAI,WAAW;AACb,oBAAY,UAAU,QAAQ,YAAY,MAAM;AAAA,MAClD;AACA,aAAO;AAAA,IACT,CAAC;AAED,UAAM,gBAAgB,SAAS,MAAM;AACnC,UACE,SAAS,MAAM,SAAS,MAAM,KAC9B,SAAS,MAAM,SAAS,MAAM,KAC9B,SAAS,MAAM,SAAS,MAAM,KAC9B,SAAS,MAAM,SAAS,MAAM,GAC9B;AACA,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT,CAAC;AAED,UAAM,UAAU,SAAS,MAAM;AAC7B,aAAO,MAAM;AAAA,IACf,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,CAAC,MAAM,YAAY;AACrB,eAAO;AAAA,MACT;AACA,UAAI,CAAC,OAAO,MAAM,UAAU,GAAG;AAC7B,eAAO,YAAY,MAAM,UAAU;AAAA,MACrC;AACA,aAAO,MAAM;AAAA,IACf,CAAC;AAKD,UAAM,EAAO,OAAO,UAAU,cAAc,MAAA,IAAU,OAAO,KAAK;;0BAIhEA,YA4BQC,aAAA;AAAA,QA3BL,OAAOC,MAAA,KAAA;AAAA,QACP,iBAAiB,QAAA;AAAA,QACjB,MAAM,QAAA;AAAA,QACN,UAAUA,MAAA,QAAA;AAAA,QACV,MAAMA,MAAA,aAAA;AAAA,QACN,cAAcA,MAAA,YAAA;AAAA,MAAA;QAKJ,iBACT,MAWM;AAAA,UAXNC,mBAWM,OAXN,YAWM;AAAA,aAV4BD,MAAA,KAAA,kBAAhCF,YAAiDI,aAAA;AAAA;cAAvC,MAAM,QAAA;AAAA,YAAA,uCAChBC,mBAA2B,OAAA;AAAA;cAAd,KAAKH,MAAA,KAAA;AAAA,YAAA;YAEV,cAAA,sBADRG,mBAMS,SAAA;AAAA;cAJP,KAAI;AAAA,cACJ,UAAA;AAAA,cACC,KAAK,SAAA;AAAA,cACN,cAAa;AAAA,YAAA,yCAEfL,YAA+DM,MAAA;AAAA;cAAtD,MAAK;AAAA,cAAQ,UAAA;AAAA,cAAiB,SAAS,QAAA;AAAA,YAAA;;;;;QAdxB,WAAA;gBAAjB;AAAA,sBACT,MAA2B;AAAA,YAA3BH,mBAA2B,OAAA,EAAtB,WAAQ,WAAA,SAAU,MAAA,GAAA,UAAA;AAAA,UAAA;;;;;;;"}
1
+ {"version":3,"file":"EpAudio.vue.js","sources":["../../../src/components/medias/EpAudio.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, toRefs } from \"vue\";\nimport { isHtml } from \"~/composables/isHtml\";\nimport { useMarkdown } from \"~/composables/useMarkdown\";\nimport { mdiHeadphones } from \"@mdi/js\";\nimport BgAudio from \"~/components/tools/BgAudio.vue\";\nimport EpAlert from \"~/components/signages/EpAlert.vue\";\nimport EpEdu from \"~/components/educationals/EpEdu.vue\";\nimport type { EpAudioProps } from \"~/types/medias/EpAudio\";\n\nconst props = withDefaults(defineProps<EpAudioProps>(), {\n type: \"neutral\",\n hideIcon: false,\n labelIntentions: \"Intentions d'écoute\",\n messageError: \"Mauvais url\",\n});\n\n//regex url panopto udem\nconst hasmp4 = /\\.mp4\\?/;\n\nconst cleanSrc = computed(() => {\n let srcString = props.src;\n const isPanopto = hasmp4.test(props.src);\n if (isPanopto) {\n srcString = srcString.replace(/\\.mp4.*$/, \".mp4\");\n }\n return srcString;\n});\n\nconst isAudioFormat = computed(() => {\n if (\n cleanSrc.value.endsWith(\".mp3\") ||\n cleanSrc.value.endsWith(\".mp4\") ||\n cleanSrc.value.endsWith(\".ogg\") ||\n cleanSrc.value.endsWith(\".wav\")\n ) {\n return true;\n }\n return false;\n});\n\nconst bgColor = computed(() => {\n return props.type\n});\n\nconst renderText = computed(() => {\n if (!props.intentions) {\n return null;\n }\n if (!isHtml(props.intentions)) {\n return useMarkdown(props.intentions);\n }\n return props.intentions;\n});\n\n//controls\n//const controls = useMediaControls(video, {src:props.src})\n\nconst { src, title, hideIcon, mandateLevel, bgImg } = toRefs(props);\n</script>\n\n<template>\n <EpEdu\n :title=\"title\"\n :labelIntentions=\"labelIntentions\"\n :type=\"type\"\n :hideIcon=\"hideIcon\"\n :icon=\"mdiHeadphones\"\n :mandateLevel=\"mandateLevel\"\n >\n <template #intentions v-if=\"renderText\">\n <div v-html=\"renderText\" />\n </template>\n <template #content>\n <div class=\"max-w-screen-sm mx-auto\">\n <BgAudio :fill=\"bgColor\" v-if=\"!bgImg\"></BgAudio>\n <img v-else :src=\"bgImg\" />\n <audio\n v-if=\"isAudioFormat\"\n ref=\"video\"\n controls\n :src=\"cleanSrc\"\n controlsList=\"nodownload\"\n ></audio>\n <EpAlert type=\"error\" outlined v-else :content=\"messageError\"/>\n </div>\n </template>\n <!-- <template #actions>\n <EpBtn :color=\"type=='base'?'text-gray-700':'text-white'\" :type=\"type\">[Repair btn style... to change]</EpBtn>\n </template> -->\n </EpEdu>\n</template>\n"],"names":["_createBlock","EpEdu","_unref","labelIntentions","type","_createElementVNode","BgAudio","_createElementBlock","EpAlert","messageError"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAUA,UAAM,QAAQ;AAQd,UAAM,SAAS;AAEf,UAAM,WAAW,SAAS,MAAM;AAC9B,UAAI,YAAY,MAAM;AACtB,YAAM,YAAY,OAAO,KAAK,MAAM,GAAG;AACvC,UAAI,WAAW;AACb,oBAAY,UAAU,QAAQ,YAAY,MAAM;AAAA,MAClD;AACA,aAAO;AAAA,IACT,CAAC;AAED,UAAM,gBAAgB,SAAS,MAAM;AACnC,UACE,SAAS,MAAM,SAAS,MAAM,KAC9B,SAAS,MAAM,SAAS,MAAM,KAC9B,SAAS,MAAM,SAAS,MAAM,KAC9B,SAAS,MAAM,SAAS,MAAM,GAC9B;AACA,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT,CAAC;AAED,UAAM,UAAU,SAAS,MAAM;AAC7B,aAAO,MAAM;AAAA,IACf,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,CAAC,MAAM,YAAY;AACrB,eAAO;AAAA,MACT;AACA,UAAI,CAAC,OAAO,MAAM,UAAU,GAAG;AAC7B,eAAO,YAAY,MAAM,UAAU;AAAA,MACrC;AACA,aAAO,MAAM;AAAA,IACf,CAAC;AAKD,UAAM,EAAO,OAAO,UAAU,cAAc,MAAA,IAAU,OAAO,KAAK;;0BAIhEA,YA4BQC,aAAA;AAAA,QA3BL,OAAOC,MAAA,KAAA;AAAA,QACP,iBAAiBC,KAAAA;AAAAA,QACjB,MAAMC,KAAAA;AAAAA,QACN,UAAUF,MAAA,QAAA;AAAA,QACV,MAAMA,MAAA,aAAA;AAAA,QACN,cAAcA,MAAA,YAAA;AAAA,MAAA;QAKJ,iBACT,MAWM;AAAA,UAXNG,mBAWM,OAXN,YAWM;AAAA,aAV4BH,MAAA,KAAA,kBAAhCF,YAAiDM,aAAA;AAAA;cAAvC,MAAM,QAAA;AAAA,YAAA,uCAChBC,mBAA2B,OAAA;AAAA;cAAd,KAAKL,MAAA,KAAA;AAAA,YAAA;YAEV,cAAA,sBADRK,mBAMS,SAAA;AAAA;cAJP,KAAI;AAAA,cACJ,UAAA;AAAA,cACC,KAAK,SAAA;AAAA,cACN,cAAa;AAAA,YAAA,yCAEfP,YAA+DQ,MAAA;AAAA;cAAtD,MAAK;AAAA,cAAQ,UAAA;AAAA,cAAiB,SAASC,KAAAA;AAAAA,YAAAA;;;;;QAdxB,WAAA;gBAAjB;AAAA,sBACT,MAA2B;AAAA,YAA3BJ,mBAA2B,OAAA,EAAtB,WAAQ,WAAA,SAAU,MAAA,GAAA,UAAA;AAAA,UAAA;;;;;;;"}
@@ -45,34 +45,34 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
45
45
  });
46
46
  return (_ctx, _cache) => {
47
47
  return openBlock(), createElementBlock("div", {
48
- class: normalizeClass(`${centerCard.value} ${__props.maxWidth} ${__props.inline ? "m-2 w-full inline-block align-bottom" : __props.thumbnail ? "m-2 inline-block align-bottom " + styleSizeThumbnail.value : ""}`)
48
+ class: normalizeClass(`${centerCard.value} ${_ctx.maxWidth} ${_ctx.inline ? "m-2 w-full inline-block align-bottom" : _ctx.thumbnail ? "m-2 inline-block align-bottom " + styleSizeThumbnail.value : ""}`)
49
49
  }, [
50
- __props.isExternal ? (openBlock(), createElementBlock("a", {
50
+ _ctx.isExternal ? (openBlock(), createElementBlock("a", {
51
51
  key: 0,
52
- href: __props.to,
52
+ href: _ctx.to,
53
53
  target: "_blank",
54
54
  rel: "noopener noreferrer"
55
55
  }, [
56
56
  createVNode(_sfc_main$1, {
57
- title: __props.title,
58
- subtitle: __props.subtitle,
59
- src: __props.src,
60
- svg: __props.svg,
61
- maxWidth: __props.maxWidth,
62
- icon: __props.iconlink,
57
+ title: _ctx.title,
58
+ subtitle: _ctx.subtitle,
59
+ src: _ctx.src,
60
+ svg: _ctx.svg,
61
+ maxWidth: _ctx.maxWidth,
62
+ icon: _ctx.iconlink,
63
63
  isLink: ""
64
64
  }, null, 8, ["title", "subtitle", "src", "svg", "maxWidth", "icon"])
65
65
  ], 8, _hoisted_1)) : (openBlock(), createElementBlock("div", {
66
66
  key: 1,
67
- onClick: _cache[0] || (_cache[0] = ($event) => navigate(__props.to))
67
+ onClick: _cache[0] || (_cache[0] = ($event) => navigate(_ctx.to))
68
68
  }, [
69
69
  createVNode(_sfc_main$1, {
70
- title: __props.title,
71
- subtitle: __props.subtitle,
72
- src: __props.src,
73
- svg: __props.svg,
74
- maxWidth: __props.maxWidth,
75
- icon: __props.iconlink,
70
+ title: _ctx.title,
71
+ subtitle: _ctx.subtitle,
72
+ src: _ctx.src,
73
+ svg: _ctx.svg,
74
+ maxWidth: _ctx.maxWidth,
75
+ icon: _ctx.iconlink,
76
76
  isLink: ""
77
77
  }, null, 8, ["title", "subtitle", "src", "svg", "maxWidth", "icon"])
78
78
  ]))
@@ -1 +1 @@
1
- {"version":3,"file":"EpCardLink.vue.js","sources":["../../../src/components/medias/EpCardLink.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { useRouter } from \"vue-router\";\nimport EpCard from \"~/components/basics/EpCard.vue\";\nimport { mdiChevronRight } from \"@mdi/js\";\nimport type { EpCardLinkProps } from \"~/types/medias/EpCardLink\";\nimport { sizeCardThumbnailStyle } from \"~/types/Card\";\n\nconst props = withDefaults(defineProps<EpCardLinkProps>(), {\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><title>dog</title><path d=\"M18,4C16.29,4 15.25,4.33 14.65,4.61C13.88,4.23 13,4 12,4C11,4 10.12,4.23 9.35,4.61C8.75,4.33 7.71,4 6,4C3,4 1,12 1,14C1,14.83 2.32,15.59 4.14,15.9C4.78,18.14 7.8,19.85 11.5,20V15.72C10.91,15.35 10,14.68 10,14C10,13 12,13 12,13C12,13 14,13 14,14C14,14.68 13.09,15.35 12.5,15.72V20C16.2,19.85 19.22,18.14 19.86,15.9C21.68,15.59 23,14.83 23,14C23,12 21,4 18,4M4.15,13.87C3.65,13.75 3.26,13.61 3,13.5C3.25,10.73 5.2,6.4 6.05,6C6.59,6 7,6.06 7.37,6.11C5.27,8.42 4.44,12.04 4.15,13.87M9,12A1,1 0 0,1 8,11C8,10.46 8.45,10 9,10A1,1 0 0,1 10,11C10,11.56 9.55,12 9,12M15,12A1,1 0 0,1 14,11C14,10.46 14.45,10 15,10A1,1 0 0,1 16,11C16,11.56 15.55,12 15,12M19.85,13.87C19.56,12.04 18.73,8.42 16.63,6.11C17,6.06 17.41,6 17.95,6C18.8,6.4 20.75,10.73 21,13.5C20.75,13.61 20.36,13.75 19.85,13.87Z\" /></svg>',\n maxWidth: \"max-w-md\",\n center: false,\n iconlink: mdiChevronRight,\n nuxtLink: false,\n to: \"/\",\n isExternal: false,\n disabled: false,\n thumbnail: false,\n inline: false,\n sizeThumbnail: \"medium\"\n});\n\nconst centerCard = computed(() => {\n if (props.center && !props.thumbnail && !props.inline) {\n return \"mx-auto\";\n }\n return \"\";\n});\n\nconst router = useRouter();\n\nconst navigate = (to: string) => {\n if (!props.isExternal && !props.disabled) {\n router.push(to);\n }\n};\n\n\nconst styleSizeThumbnail = computed(() => {\n return sizeCardThumbnailStyle[props.sizeThumbnail];\n});\n</script>\n\n<template>\n <div :class=\"`${centerCard} ${maxWidth} ${(inline)? 'm-2 w-full inline-block align-bottom' : (thumbnail)? ('m-2 inline-block align-bottom ' + styleSizeThumbnail) : ''}`\">\n <a v-if=\"isExternal\" :href=\"to\" target=\"_blank\" rel=\"noopener noreferrer\">\n <EpCard\n :title=\"title\"\n :subtitle=\"subtitle\"\n :src=\"src\"\n :svg=\"svg\"\n :maxWidth=\"maxWidth\"\n :icon=\"iconlink\"\n isLink\n />\n </a>\n <div @click=\"navigate(to)\" v-else>\n <EpCard\n :title=\"title\"\n :subtitle=\"subtitle\"\n :src=\"src\"\n :svg=\"svg\"\n :maxWidth=\"maxWidth\"\n :icon=\"iconlink\"\n isLink\n />\n </div>\n </div>\n</template>\n"],"names":["_createElementBlock","_normalizeClass","_createVNode","EpCard"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,UAAM,QAAQ;AAcd,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,MAAM,UAAU,CAAC,MAAM,aAAa,CAAC,MAAM,QAAQ;AACrD,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT,CAAC;AAED,UAAM,SAAS,UAAA;AAEf,UAAM,WAAW,CAAC,OAAe;AAC/B,UAAI,CAAC,MAAM,cAAc,CAAC,MAAM,UAAU;AACxC,eAAO,KAAK,EAAE;AAAA,MAChB;AAAA,IACF;AAGA,UAAM,qBAAqB,SAAS,MAAM;AACxC,aAAO,uBAAuB,MAAM,aAAa;AAAA,IACnD,CAAC;;0BAICA,mBAuBM,OAAA;AAAA,QAvBA,OAAKC,eAAA,GAAK,gBAAU,IAAI,QAAA,QAAQ,IAAK,QAAA,SAAM,yCAA6C,QAAA,YAAS,mCAAuC,mBAAA,QAAkB,EAAA,EAAA;AAAA,MAAA;QACrJ,QAAA,2BAATD,mBAUI,KAAA;AAAA;UAVkB,MAAM,QAAA;AAAA,UAAI,QAAO;AAAA,UAAS,KAAI;AAAA,QAAA;UAClDE,YAQEC,aAAA;AAAA,YAPC,OAAO,QAAA;AAAA,YACP,UAAU,QAAA;AAAA,YACV,KAAK,QAAA;AAAA,YACL,KAAK,QAAA;AAAA,YACL,UAAU,QAAA;AAAA,YACV,MAAM,QAAA;AAAA,YACP,QAAA;AAAA,UAAA;2CAGJH,mBAUM,OAAA;AAAA;UAVA,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAE,SAAS,QAAA,EAAE;AAAA,QAAA;UACtBE,YAQEC,aAAA;AAAA,YAPC,OAAO,QAAA;AAAA,YACP,UAAU,QAAA;AAAA,YACV,KAAK,QAAA;AAAA,YACL,KAAK,QAAA;AAAA,YACL,UAAU,QAAA;AAAA,YACV,MAAM,QAAA;AAAA,YACP,QAAA;AAAA,UAAA;;;;;;"}
1
+ {"version":3,"file":"EpCardLink.vue.js","sources":["../../../src/components/medias/EpCardLink.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { useRouter } from \"vue-router\";\nimport EpCard from \"~/components/basics/EpCard.vue\";\nimport { mdiChevronRight } from \"@mdi/js\";\nimport type { EpCardLinkProps } from \"~/types/medias/EpCardLink\";\nimport { sizeCardThumbnailStyle } from \"~/types/Card\";\n\nconst props = withDefaults(defineProps<EpCardLinkProps>(), {\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><title>dog</title><path d=\"M18,4C16.29,4 15.25,4.33 14.65,4.61C13.88,4.23 13,4 12,4C11,4 10.12,4.23 9.35,4.61C8.75,4.33 7.71,4 6,4C3,4 1,12 1,14C1,14.83 2.32,15.59 4.14,15.9C4.78,18.14 7.8,19.85 11.5,20V15.72C10.91,15.35 10,14.68 10,14C10,13 12,13 12,13C12,13 14,13 14,14C14,14.68 13.09,15.35 12.5,15.72V20C16.2,19.85 19.22,18.14 19.86,15.9C21.68,15.59 23,14.83 23,14C23,12 21,4 18,4M4.15,13.87C3.65,13.75 3.26,13.61 3,13.5C3.25,10.73 5.2,6.4 6.05,6C6.59,6 7,6.06 7.37,6.11C5.27,8.42 4.44,12.04 4.15,13.87M9,12A1,1 0 0,1 8,11C8,10.46 8.45,10 9,10A1,1 0 0,1 10,11C10,11.56 9.55,12 9,12M15,12A1,1 0 0,1 14,11C14,10.46 14.45,10 15,10A1,1 0 0,1 16,11C16,11.56 15.55,12 15,12M19.85,13.87C19.56,12.04 18.73,8.42 16.63,6.11C17,6.06 17.41,6 17.95,6C18.8,6.4 20.75,10.73 21,13.5C20.75,13.61 20.36,13.75 19.85,13.87Z\" /></svg>',\n maxWidth: \"max-w-md\",\n center: false,\n iconlink: mdiChevronRight,\n nuxtLink: false,\n to: \"/\",\n isExternal: false,\n disabled: false,\n thumbnail: false,\n inline: false,\n sizeThumbnail: \"medium\"\n});\n\nconst centerCard = computed(() => {\n if (props.center && !props.thumbnail && !props.inline) {\n return \"mx-auto\";\n }\n return \"\";\n});\n\nconst router = useRouter();\n\nconst navigate = (to: string) => {\n if (!props.isExternal && !props.disabled) {\n router.push(to);\n }\n};\n\n\nconst styleSizeThumbnail = computed(() => {\n return sizeCardThumbnailStyle[props.sizeThumbnail];\n});\n</script>\n\n<template>\n <div :class=\"`${centerCard} ${maxWidth} ${(inline)? 'm-2 w-full inline-block align-bottom' : (thumbnail)? ('m-2 inline-block align-bottom ' + styleSizeThumbnail) : ''}`\">\n <a v-if=\"isExternal\" :href=\"to\" target=\"_blank\" rel=\"noopener noreferrer\">\n <EpCard\n :title=\"title\"\n :subtitle=\"subtitle\"\n :src=\"src\"\n :svg=\"svg\"\n :maxWidth=\"maxWidth\"\n :icon=\"iconlink\"\n isLink\n />\n </a>\n <div @click=\"navigate(to)\" v-else>\n <EpCard\n :title=\"title\"\n :subtitle=\"subtitle\"\n :src=\"src\"\n :svg=\"svg\"\n :maxWidth=\"maxWidth\"\n :icon=\"iconlink\"\n isLink\n />\n </div>\n </div>\n</template>\n"],"names":["_createElementBlock","_normalizeClass","maxWidth","inline","thumbnail","isExternal","to","_createVNode","EpCard","title","subtitle","src","svg","iconlink"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,UAAM,QAAQ;AAcd,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,MAAM,UAAU,CAAC,MAAM,aAAa,CAAC,MAAM,QAAQ;AACrD,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT,CAAC;AAED,UAAM,SAAS,UAAA;AAEf,UAAM,WAAW,CAAC,OAAe;AAC/B,UAAI,CAAC,MAAM,cAAc,CAAC,MAAM,UAAU;AACxC,eAAO,KAAK,EAAE;AAAA,MAChB;AAAA,IACF;AAGA,UAAM,qBAAqB,SAAS,MAAM;AACxC,aAAO,uBAAuB,MAAM,aAAa;AAAA,IACnD,CAAC;;0BAICA,mBAuBM,OAAA;AAAA,QAvBA,OAAKC,eAAA,GAAK,gBAAU,IAAIC,KAAAA,QAAQ,IAAKC,KAAAA,SAAM,yCAA6CC,KAAAA,YAAS,mCAAuC,mBAAA,QAAkB,EAAA,EAAA;AAAA,MAAA;QACrJC,KAAAA,2BAATL,mBAUI,KAAA;AAAA;UAVkB,MAAMM,KAAAA;AAAAA,UAAI,QAAO;AAAA,UAAS,KAAI;AAAA,QAAA;UAClDC,YAQEC,aAAA;AAAA,YAPC,OAAOC,KAAAA;AAAAA,YACP,UAAUC,KAAAA;AAAAA,YACV,KAAKC,KAAAA;AAAAA,YACL,KAAKC,KAAAA;AAAAA,YACL,UAAUV,KAAAA;AAAAA,YACV,MAAMW,KAAAA;AAAAA,YACP,QAAA;AAAA,UAAA;2CAGJb,mBAUM,OAAA;AAAA;UAVA,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAE,SAASM,KAAAA,EAAE;AAAA,QAAA;UACtBC,YAQEC,aAAA;AAAA,YAPC,OAAOC,KAAAA;AAAAA,YACP,UAAUC,KAAAA;AAAAA,YACV,KAAKC,KAAAA;AAAAA,YACL,KAAKC,KAAAA;AAAAA,YACL,UAAUV,KAAAA;AAAAA,YACV,MAAMW,KAAAA;AAAAA,YACP,QAAA;AAAA,UAAA;;;;;;"}
@@ -92,7 +92,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
92
92
  var _a, _b;
93
93
  return openBlock(), createElementBlock(Fragment, null, [
94
94
  props.title ? (openBlock(), createElementBlock("h2", _hoisted_1, toDisplayString(props.title), 1)) : createCommentVNode("", true),
95
- !__props.gallery ? (openBlock(), createElementBlock("div", _hoisted_2, [
95
+ !_ctx.gallery ? (openBlock(), createElementBlock("div", _hoisted_2, [
96
96
  createElementVNode("div", _hoisted_3, [
97
97
  createElementVNode("button", {
98
98
  class: "p-2",
@@ -122,7 +122,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
122
122
  dark: ""
123
123
  }, {
124
124
  default: withCtx(() => [
125
- createTextVNode(toDisplayString(__props.labelRef), 1)
125
+ createTextVNode(toDisplayString(_ctx.labelRef), 1)
126
126
  ]),
127
127
  _: 1
128
128
  })
@@ -131,7 +131,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
131
131
  createVNode(_sfc_main$3, {
132
132
  modelValue: dialog.value,
133
133
  "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => dialog.value = $event),
134
- title: __props.labelRefLib
134
+ title: _ctx.labelRefLib
135
135
  }, {
136
136
  default: withCtx(() => [
137
137
  createElementVNode("div", {
@@ -144,7 +144,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
144
144
  dark: ""
145
145
  }, {
146
146
  default: withCtx(() => [
147
- createTextVNode(toDisplayString(__props.labelClose), 1)
147
+ createTextVNode(toDisplayString(_ctx.labelClose), 1)
148
148
  ]),
149
149
  _: 1
150
150
  })
@@ -152,7 +152,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
152
152
  ]),
153
153
  _: 1
154
154
  }, 8, ["modelValue", "title"])
155
- ])) : !__props.puzzle ? (openBlock(), createElementBlock("div", {
155
+ ])) : !_ctx.puzzle ? (openBlock(), createElementBlock("div", {
156
156
  key: 2,
157
157
  class: normalizeClass(`flex flex-wrap ${isCenterStyle.value}`)
158
158
  }, [
@@ -162,8 +162,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
162
162
  src: image.src,
163
163
  bib: image.bib,
164
164
  caption: image.caption,
165
- "label-ref": __props.labelRef,
166
- "label-close": __props.labelClose,
165
+ "label-ref": _ctx.labelRef,
166
+ "label-close": _ctx.labelClose,
167
167
  "size-thumbnail": unref(sizeThumbnail),
168
168
  "managed-modal": "",
169
169
  onNewFocus: ($event) => newFocus(index),
@@ -172,15 +172,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
172
172
  onNextSlide: managedNextSlide
173
173
  }, null, 8, ["src", "bib", "caption", "label-ref", "label-close", "size-thumbnail", "onNewFocus", "info-modal"]);
174
174
  }), 128))
175
- ], 2)) : __props.puzzle ? (openBlock(), createElementBlock("div", _hoisted_10, [
175
+ ], 2)) : _ctx.puzzle ? (openBlock(), createElementBlock("div", _hoisted_10, [
176
176
  (openBlock(true), createElementBlock(Fragment, null, renderList(unref(carrouselImg), (image, index) => {
177
177
  return openBlock(), createBlock(_sfc_main$4, {
178
178
  key: `image-${image == null ? void 0 : image.uid}`,
179
179
  src: image.src,
180
180
  bib: image.bib,
181
181
  caption: image.caption,
182
- "label-ref": __props.labelRef,
183
- "label-close": __props.labelClose,
182
+ "label-ref": _ctx.labelRef,
183
+ "label-close": _ctx.labelClose,
184
184
  puzzle: "",
185
185
  "managed-modal": "",
186
186
  onNewFocus: ($event) => newFocus(index),
@@ -1 +1 @@
1
- {"version":3,"file":"EpCarousel.vue.js","sources":["../../../src/components/medias/EpCarousel.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs, ref, computed } from \"vue\";\nimport { mdiChevronLeftCircleOutline } from \"@mdi/js\";\nimport { mdiChevronRightCircleOutline } from \"@mdi/js\";\nimport type { InfoModal } from \"~/types/Image\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport EpModal from \"~/components/interactions/EpModal.vue\";\nimport EpImgCarousel from \"~/components/basics/EpImgCarousel.vue\";\nimport type { EpCarouselProps } from \"~/types/medias/EpCarousel\";\n\nconst props = withDefaults(defineProps<EpCarouselProps>(), {\n gallery: false,\n isCenter: false,\n puzzle: false,\n sizeThumbnail: \"medium\",\n labelRef: \"Référence\",\n labelClose: \"Fermer\",\n labelRefLib: \"Référence bibliographique\",\n});\n\n// Logique Carousel normal\nconst currentIndex = ref<number>(0);\nconst dialog = ref<boolean>(false);\n\nconst prevSlide = () => {\n const isFirstSlide = currentIndex.value === 0;\n const newIndex = isFirstSlide\n ? props.carrouselImg.length - 1\n : currentIndex.value - 1;\n currentIndex.value = newIndex;\n};\n\nconst nextSlide = () => {\n const isTheLastSlide = currentIndex.value === props.carrouselImg.length - 1;\n const newIndex = isTheLastSlide ? 0 : currentIndex.value + 1;\n currentIndex.value = newIndex;\n};\n\nconst isCenterStyle = computed(() => {\n return props.isCenter ? \"justify-center\" : \"\";\n});\n\n// Logique Carousel gallery\nconst managedIndex = ref(0);\nconst managedInfoModal = ref({ src: \"\", caption: \"\", bib: \"\" } as InfoModal);\n\nconst newFocus = (index: number) => {\n managedIndex.value = index;\n managedInfoModal.value = {\n src: props.carrouselImg[index].src,\n caption: props.carrouselImg[index].caption,\n bib: props.carrouselImg[index].bib,\n };\n};\n\nconst managedPrevSlide = () => {\n const isFirstSlide = managedIndex.value === 0;\n const newIndex = isFirstSlide\n ? props.carrouselImg.length - 1\n : managedIndex.value - 1;\n managedIndex.value = newIndex;\n managedInfoModal.value = {\n src: props.carrouselImg[newIndex].src,\n caption: props.carrouselImg[newIndex].caption,\n bib: props.carrouselImg[newIndex].bib,\n };\n};\n\nconst managedNextSlide = () => {\n const isTheLastSlide = managedIndex.value === props.carrouselImg.length - 1;\n const newIndex = isTheLastSlide ? 0 : managedIndex.value + 1;\n managedIndex.value = newIndex;\n managedInfoModal.value = {\n src: props.carrouselImg[newIndex].src,\n caption: props.carrouselImg[newIndex].caption,\n bib: props.carrouselImg[newIndex].bib,\n };\n};\n\nconst { carrouselImg, sizeThumbnail } = toRefs(props);\n</script>\n\n<template>\n <h2 v-if=\"props.title\" class=\"text-xl font-semibold mt-10 mb-4 text-center\">\n {{ props.title }}\n </h2>\n\n <div v-if=\"!gallery\">\n <div class=\"flex items-center justify-center mb-2\">\n <button class=\"p-2\" @click=\"prevSlide\">\n <EpIcon :icon-path=\"mdiChevronLeftCircleOutline\" />\n </button>\n {{ currentIndex + 1 }}/{{ carrouselImg.length }}\n <button class=\"p-2\" @click=\"nextSlide\">\n <EpIcon :icon-path=\"mdiChevronRightCircleOutline\" />\n </button>\n </div>\n <div\n class=\"dark:bg-surface-2-dark shadow-xl p-4 lg:max-w-[800px] mx-auto border-solid border\"\n >\n <!-- <div class=\"max-w-[800px] h-[550px] m-auto relative\">\n <div\n class=\"w-full h-full bg-center duration-500\"\n :style=\"`background-image:url('${carrouselImg[currentIndex].src}')`\"\n />\n </div> -->\n\n <img\n :src=\"carrouselImg[currentIndex].src\"\n alt=\"image\"\n class=\"rounded-sm m-auto\"\n />\n\n <div\n v-if=\"carrouselImg[currentIndex]?.caption\"\n class=\"mt-2 text-sm text-center\"\n >\n {{ carrouselImg[currentIndex].caption }}\n </div>\n <div v-if=\"carrouselImg[currentIndex]?.bib\" class=\"flex justify-end mt-2\">\n <EpBtn type=\"primary\" @click=\"dialog = true\" dark>{{ labelRef }}</EpBtn>\n </div>\n </div>\n <EpModal v-model=\"dialog\" :title=\"labelRefLib\">\n <div v-html=\"carrouselImg[currentIndex].bib\" />\n <div class=\"flex justify-end\">\n <EpBtn @click=\"dialog = false\" type=\"primary\" dark>{{\n labelClose\n }}</EpBtn>\n </div>\n </EpModal>\n </div>\n\n <div v-else-if=\"!puzzle\" :class=\"`flex flex-wrap ${isCenterStyle}`\">\n <template\n v-for=\"(image, index) in carrouselImg\"\n :key=\"`image-${image?.uid}`\"\n >\n <EpImgCarousel\n :src=\"image.src\"\n :bib=\"image.bib\"\n :caption=\"image.caption\"\n :label-ref=\"labelRef\"\n :label-close=\"labelClose\"\n :size-thumbnail=\"sizeThumbnail\"\n managed-modal\n @new-focus=\"newFocus(index)\"\n :info-modal=\"managedInfoModal\"\n @prev-slide=\"managedPrevSlide\"\n @next-slide=\"managedNextSlide\"\n ></EpImgCarousel>\n </template>\n </div>\n\n <div v-else-if=\"puzzle\" :class=\"`columns-3xs mx-5 gap-2`\">\n <template\n v-for=\"(image, index) in carrouselImg\"\n :key=\"`image-${image?.uid}`\"\n >\n <EpImgCarousel\n :src=\"image.src\"\n :bib=\"image.bib\"\n :caption=\"image.caption\"\n :label-ref=\"labelRef\"\n :label-close=\"labelClose\"\n puzzle\n managed-modal\n @new-focus=\"newFocus(index)\"\n :info-modal=\"managedInfoModal\"\n @prev-slide=\"managedPrevSlide\"\n @next-slide=\"managedNextSlide\"\n ></EpImgCarousel>\n </template>\n </div>\n</template>\n\n\n"],"names":["_openBlock","_createElementBlock","_toDisplayString","_createElementVNode","_createVNode","EpIcon","_unref","EpBtn","EpModal","_Fragment","_renderList","_createBlock","EpImgCarousel"],"mappings":"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"}
1
+ {"version":3,"file":"EpCarousel.vue.js","sources":["../../../src/components/medias/EpCarousel.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs, ref, computed } from \"vue\";\nimport { mdiChevronLeftCircleOutline } from \"@mdi/js\";\nimport { mdiChevronRightCircleOutline } from \"@mdi/js\";\nimport type { InfoModal } from \"~/types/Image\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport EpModal from \"~/components/interactions/EpModal.vue\";\nimport EpImgCarousel from \"~/components/basics/EpImgCarousel.vue\";\nimport type { EpCarouselProps } from \"~/types/medias/EpCarousel\";\n\nconst props = withDefaults(defineProps<EpCarouselProps>(), {\n gallery: false,\n isCenter: false,\n puzzle: false,\n sizeThumbnail: \"medium\",\n labelRef: \"Référence\",\n labelClose: \"Fermer\",\n labelRefLib: \"Référence bibliographique\",\n});\n\n// Logique Carousel normal\nconst currentIndex = ref<number>(0);\nconst dialog = ref<boolean>(false);\n\nconst prevSlide = () => {\n const isFirstSlide = currentIndex.value === 0;\n const newIndex = isFirstSlide\n ? props.carrouselImg.length - 1\n : currentIndex.value - 1;\n currentIndex.value = newIndex;\n};\n\nconst nextSlide = () => {\n const isTheLastSlide = currentIndex.value === props.carrouselImg.length - 1;\n const newIndex = isTheLastSlide ? 0 : currentIndex.value + 1;\n currentIndex.value = newIndex;\n};\n\nconst isCenterStyle = computed(() => {\n return props.isCenter ? \"justify-center\" : \"\";\n});\n\n// Logique Carousel gallery\nconst managedIndex = ref(0);\nconst managedInfoModal = ref({ src: \"\", caption: \"\", bib: \"\" } as InfoModal);\n\nconst newFocus = (index: number) => {\n managedIndex.value = index;\n managedInfoModal.value = {\n src: props.carrouselImg[index].src,\n caption: props.carrouselImg[index].caption,\n bib: props.carrouselImg[index].bib,\n };\n};\n\nconst managedPrevSlide = () => {\n const isFirstSlide = managedIndex.value === 0;\n const newIndex = isFirstSlide\n ? props.carrouselImg.length - 1\n : managedIndex.value - 1;\n managedIndex.value = newIndex;\n managedInfoModal.value = {\n src: props.carrouselImg[newIndex].src,\n caption: props.carrouselImg[newIndex].caption,\n bib: props.carrouselImg[newIndex].bib,\n };\n};\n\nconst managedNextSlide = () => {\n const isTheLastSlide = managedIndex.value === props.carrouselImg.length - 1;\n const newIndex = isTheLastSlide ? 0 : managedIndex.value + 1;\n managedIndex.value = newIndex;\n managedInfoModal.value = {\n src: props.carrouselImg[newIndex].src,\n caption: props.carrouselImg[newIndex].caption,\n bib: props.carrouselImg[newIndex].bib,\n };\n};\n\nconst { carrouselImg, sizeThumbnail } = toRefs(props);\n</script>\n\n<template>\n <h2 v-if=\"props.title\" class=\"text-xl font-semibold mt-10 mb-4 text-center\">\n {{ props.title }}\n </h2>\n\n <div v-if=\"!gallery\">\n <div class=\"flex items-center justify-center mb-2\">\n <button class=\"p-2\" @click=\"prevSlide\">\n <EpIcon :icon-path=\"mdiChevronLeftCircleOutline\" />\n </button>\n {{ currentIndex + 1 }}/{{ carrouselImg.length }}\n <button class=\"p-2\" @click=\"nextSlide\">\n <EpIcon :icon-path=\"mdiChevronRightCircleOutline\" />\n </button>\n </div>\n <div\n class=\"dark:bg-surface-2-dark shadow-xl p-4 lg:max-w-[800px] mx-auto border-solid border\"\n >\n <!-- <div class=\"max-w-[800px] h-[550px] m-auto relative\">\n <div\n class=\"w-full h-full bg-center duration-500\"\n :style=\"`background-image:url('${carrouselImg[currentIndex].src}')`\"\n />\n </div> -->\n\n <img\n :src=\"carrouselImg[currentIndex].src\"\n alt=\"image\"\n class=\"rounded-sm m-auto\"\n />\n\n <div\n v-if=\"carrouselImg[currentIndex]?.caption\"\n class=\"mt-2 text-sm text-center\"\n >\n {{ carrouselImg[currentIndex].caption }}\n </div>\n <div v-if=\"carrouselImg[currentIndex]?.bib\" class=\"flex justify-end mt-2\">\n <EpBtn type=\"primary\" @click=\"dialog = true\" dark>{{ labelRef }}</EpBtn>\n </div>\n </div>\n <EpModal v-model=\"dialog\" :title=\"labelRefLib\">\n <div v-html=\"carrouselImg[currentIndex].bib\" />\n <div class=\"flex justify-end\">\n <EpBtn @click=\"dialog = false\" type=\"primary\" dark>{{\n labelClose\n }}</EpBtn>\n </div>\n </EpModal>\n </div>\n\n <div v-else-if=\"!puzzle\" :class=\"`flex flex-wrap ${isCenterStyle}`\">\n <template\n v-for=\"(image, index) in carrouselImg\"\n :key=\"`image-${image?.uid}`\"\n >\n <EpImgCarousel\n :src=\"image.src\"\n :bib=\"image.bib\"\n :caption=\"image.caption\"\n :label-ref=\"labelRef\"\n :label-close=\"labelClose\"\n :size-thumbnail=\"sizeThumbnail\"\n managed-modal\n @new-focus=\"newFocus(index)\"\n :info-modal=\"managedInfoModal\"\n @prev-slide=\"managedPrevSlide\"\n @next-slide=\"managedNextSlide\"\n ></EpImgCarousel>\n </template>\n </div>\n\n <div v-else-if=\"puzzle\" :class=\"`columns-3xs mx-5 gap-2`\">\n <template\n v-for=\"(image, index) in carrouselImg\"\n :key=\"`image-${image?.uid}`\"\n >\n <EpImgCarousel\n :src=\"image.src\"\n :bib=\"image.bib\"\n :caption=\"image.caption\"\n :label-ref=\"labelRef\"\n :label-close=\"labelClose\"\n puzzle\n managed-modal\n @new-focus=\"newFocus(index)\"\n :info-modal=\"managedInfoModal\"\n @prev-slide=\"managedPrevSlide\"\n @next-slide=\"managedNextSlide\"\n ></EpImgCarousel>\n </template>\n </div>\n</template>\n\n\n"],"names":["_openBlock","_createElementBlock","_toDisplayString","gallery","_createElementVNode","_createVNode","EpIcon","_unref","EpBtn","labelRef","EpModal","labelRefLib","labelClose","puzzle","_Fragment","_renderList","_createBlock","EpImgCarousel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,UAAM,QAAQ;AAWd,UAAM,eAAe,IAAY,CAAC;AAClC,UAAM,SAAS,IAAa,KAAK;AAEjC,UAAM,YAAY,MAAM;AACtB,YAAM,eAAe,aAAa,UAAU;AAC5C,YAAM,WAAW,eACb,MAAM,aAAa,SAAS,IAC5B,aAAa,QAAQ;AACzB,mBAAa,QAAQ;AAAA,IACvB;AAEA,UAAM,YAAY,MAAM;AACtB,YAAM,iBAAiB,aAAa,UAAU,MAAM,aAAa,SAAS;AAC1E,YAAM,WAAW,iBAAiB,IAAI,aAAa,QAAQ;AAC3D,mBAAa,QAAQ;AAAA,IACvB;AAEA,UAAM,gBAAgB,SAAS,MAAM;AACnC,aAAO,MAAM,WAAW,mBAAmB;AAAA,IAC7C,CAAC;AAGD,UAAM,eAAe,IAAI,CAAC;AAC1B,UAAM,mBAAmB,IAAI,EAAE,KAAK,IAAI,SAAS,IAAI,KAAK,IAAiB;AAE3E,UAAM,WAAW,CAAC,UAAkB;AAClC,mBAAa,QAAQ;AACrB,uBAAiB,QAAQ;AAAA,QACvB,KAAK,MAAM,aAAa,KAAK,EAAE;AAAA,QAC/B,SAAS,MAAM,aAAa,KAAK,EAAE;AAAA,QACnC,KAAK,MAAM,aAAa,KAAK,EAAE;AAAA,MAAA;AAAA,IAEnC;AAEA,UAAM,mBAAmB,MAAM;AAC7B,YAAM,eAAe,aAAa,UAAU;AAC5C,YAAM,WAAW,eACb,MAAM,aAAa,SAAS,IAC5B,aAAa,QAAQ;AACzB,mBAAa,QAAQ;AACrB,uBAAiB,QAAQ;AAAA,QACvB,KAAK,MAAM,aAAa,QAAQ,EAAE;AAAA,QAClC,SAAS,MAAM,aAAa,QAAQ,EAAE;AAAA,QACtC,KAAK,MAAM,aAAa,QAAQ,EAAE;AAAA,MAAA;AAAA,IAEtC;AAEA,UAAM,mBAAmB,MAAM;AAC7B,YAAM,iBAAiB,aAAa,UAAU,MAAM,aAAa,SAAS;AAC1E,YAAM,WAAW,iBAAiB,IAAI,aAAa,QAAQ;AAC3D,mBAAa,QAAQ;AACrB,uBAAiB,QAAQ;AAAA,QACvB,KAAK,MAAM,aAAa,QAAQ,EAAE;AAAA,QAClC,SAAS,MAAM,aAAa,QAAQ,EAAE;AAAA,QACtC,KAAK,MAAM,aAAa,QAAQ,EAAE;AAAA,MAAA;AAAA,IAEtC;AAEA,UAAM,EAAE,cAAc,kBAAkB,OAAO,KAAK;;;;QAIxC,MAAM,SAAhBA,UAAA,GAAAC,mBAEK,MAFL,YAEKC,gBADA,MAAM,KAAK,GAAA,CAAA;SAGJC,KAAAA,wBAAZF,mBA4CM,OAAA,YAAA;AAAA,UA3CJG,mBAQM,OARN,YAQM;AAAA,YAPJA,mBAES,UAAA;AAAA,cAFD,OAAM;AAAA,cAAO,SAAO;AAAA,YAAA;cAC1BC,YAAmDC,aAAA,EAA1C,aAAWC,MAAA,2BAAA,EAAA,GAA2B,MAAA,GAAA,CAAA,WAAA,CAAA;AAAA,YAAA;4BACxC,MACTL,gBAAG,qBAAY,CAAA,IAAO,sBAAIK,MAAA,YAAA,EAAa,MAAM,IAAG,KAChD,CAAA;AAAA,YAAAH,mBAES,UAAA;AAAA,cAFD,OAAM;AAAA,cAAO,SAAO;AAAA,YAAA;cAC1BC,YAAoDC,aAAA,EAA3C,aAAWC,MAAA,4BAAA,EAAA,GAA4B,MAAA,GAAA,CAAA,WAAA,CAAA;AAAA,YAAA;;UAGpDH,mBAyBM,OAzBN,YAyBM;AAAA,YAfJA,mBAIE,OAAA;AAAA,cAHC,KAAKG,MAAA,YAAA,EAAa,aAAA,KAAY,EAAE;AAAA,cACjC,KAAI;AAAA,cACJ,OAAM;AAAA,YAAA;cAIAA,WAAA,YAAA,EAAa,aAAA,KAAY,MAAzBA,mBAA4B,YADpCP,aAAAC,mBAKM,OALN,YAKMC,gBADDK,oBAAa,aAAA,KAAY,EAAE,OAAO,GAAA,CAAA;cAE5BA,WAAA,YAAA,EAAa,aAAA,KAAY,MAAzBA,mBAA4B,QAAvCP,aAAAC,mBAEM,OAFN,YAEM;AAAA,cADJI,YAAwEG,aAAA;AAAA,gBAAjE,MAAK;AAAA,gBAAW,+CAAO,OAAA,QAAM;AAAA,gBAAS,MAAA;AAAA,cAAA;iCAAK,MAAc;AAAA,kDAAXC,KAAAA,QAAQ,GAAA,CAAA;AAAA,gBAAA;;;;;UAGjEJ,YAOUK,aAAA;AAAA,wBAPQ,OAAA;AAAA,yEAAA,OAAM,QAAA;AAAA,YAAG,OAAOC,KAAAA;AAAAA,UAAAA;6BAChC,MAA+C;AAAA,cAA/CP,mBAA+C,OAAA;AAAA,gBAA1C,WAAQG,MAAA,YAAA,EAAa,aAAA,KAAY,EAAE;AAAA,cAAA;cACxCH,mBAIM,OAJN,YAIM;AAAA,gBAHJC,YAEUG,aAAA;AAAA,kBAFF,+CAAO,OAAA,QAAM;AAAA,kBAAU,MAAK;AAAA,kBAAU,MAAA;AAAA,gBAAA;mCAAK,MAEjD;AAAA,oDADAI,KAAAA,UAAU,GAAA,CAAA;AAAA,kBAAA;;;;;;;eAMDC,KAAAA,uBAAjBZ,mBAmBM,OAAA;AAAA;UAnBoB,wCAAyB,cAAA,KAAa,EAAA;AAAA,QAAA;WAC9DD,UAAA,IAAA,GAAAC,mBAiBWa,UAAA,MAAAC,WAhBgBR,MAAA,YAAA,GAAY,CAA7B,OAAO,UAAK;gCAGpBS,YAYiBC,aAAA;AAAA,cAdF,KAAA,SAAA,+BAAO,GAAG;AAAA,cAGtB,KAAK,MAAM;AAAA,cACX,KAAK,MAAM;AAAA,cACX,SAAS,MAAM;AAAA,cACf,aAAWR,KAAAA;AAAAA,cACX,eAAaG,KAAAA;AAAAA,cACb,kBAAgBL,MAAA,aAAA;AAAA,cACjB,iBAAA;AAAA,cACC,YAAS,CAAA,WAAE,SAAS,KAAK;AAAA,cACzB,cAAY,iBAAA;AAAA,cACZ,aAAY;AAAA,cACZ,aAAY;AAAA,YAAA;;iBAKHM,KAAAA,UAAhBb,UAAA,GAAAC,mBAmBM,OAnBN,aAmBM;AAAA,WAlBJD,UAAA,IAAA,GAAAC,mBAiBWa,UAAA,MAAAC,WAhBgBR,MAAA,YAAA,GAAY,CAA7B,OAAO,UAAK;gCAGpBS,YAYiBC,aAAA;AAAA,cAdF,KAAA,SAAA,+BAAO,GAAG;AAAA,cAGtB,KAAK,MAAM;AAAA,cACX,KAAK,MAAM;AAAA,cACX,SAAS,MAAM;AAAA,cACf,aAAWR,KAAAA;AAAAA,cACX,eAAaG,KAAAA;AAAAA,cACd,QAAA;AAAA,cACA,iBAAA;AAAA,cACC,YAAS,CAAA,WAAE,SAAS,KAAK;AAAA,cACzB,cAAY,iBAAA;AAAA,cACZ,aAAY;AAAA,cACZ,aAAY;AAAA,YAAA;;;;;;;"}
@@ -238,7 +238,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
238
238
  rounded: ""
239
239
  }, {
240
240
  default: withCtx(() => [
241
- createTextVNode(toDisplayString(__props.labelClose), 1)
241
+ createTextVNode(toDisplayString(_ctx.labelClose), 1)
242
242
  ]),
243
243
  _: 1
244
244
  })
@@ -1 +1 @@
1
- {"version":3,"file":"EpHierarchy.vue2.js","sources":["../../../src/components/medias/EpHierarchy.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, onMounted, computed, defineAsyncComponent } from \"vue\";\nimport {\n hierarchy,\n tree,\n cluster,\n type HierarchyPointLink,\n type HierarchyPointNode,\n} from \"d3-hierarchy\";\nimport * as d3 from \"d3-selection\";\nimport { linkVertical, linkHorizontal } from \"d3-shape\";\nimport * as d3Zoom from \"d3-zoom\";\nimport type { TreeNode } from \"~/types/Hierarchy\";\nimport type { NestedComponents } from \"~/types/Component\";\nimport { useComponent } from \"~/composables/useComponent\";\nimport EpModal from \"~/components/interactions/EpModal.vue\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { EpHierarchyProps } from \"~/types/medias/EpHierarchy\";\n\nconst props = withDefaults(defineProps<EpHierarchyProps>(), {\n labelClose: \"fermer\",\n maxWidth: 800,\n maxHeight: 600,\n isCluster: false,\n colorRect: \"fill-red-400\",\n colorPath: \"stroke-yellow-400\",\n});\n\nconst treeContainer = ref<HTMLDivElement | null>(null);\nconst treeWrapper = ref<HTMLDivElement | null>(null);\n\n/* control modal */\ntype ShowNode = {\n title: string;\n text?: string;\n component?: NestedComponents;\n};\n\nconst currentNode = ref<ShowNode | null>(null);\nconst showModal = ref(false);\n\nconst handleNodeClick = (node: TreeNode) => {\n currentNode.value = {\n title: node.name,\n text: node.text,\n component: node.component,\n };\n showModal.value = true;\n};\n\nconst closeModal = () => {\n showModal.value = false;\n currentNode.value = null;\n};\n//nested component\n\nconst components = import.meta.glob([\n \"./*.vue\", // all components in medias (same folder)\n \"../basics/*.vue\", // components/charts/\n \"../signages/*.vue\", // components/signages/\n]);\n\nconst currentRenderComponent = computed(() => {\n if (!currentNode.value || !currentNode.value.component) {\n return null;\n }\n\n const { path, name } = useComponent(currentNode.value.component.type);\n //console.log(path, name)\n let fullPath = \"\";\n if (path === \"medias\") {\n fullPath = `./${name}.vue`;\n } else {\n fullPath = `../${path}/${name}.vue`;\n }\n //console.log(fullPath)\n const loader = components[fullPath] as\n | (() => Promise<{ default: NestedComponents }>)\n | undefined;\n\n if (!loader) {\n console.warn(`Component not found: ${fullPath}`);\n return null; // or defineAsyncComponent(() => import('../fallbacks/EpNothing.vue'))\n }\n\n return defineAsyncComponent(loader);\n});\n\nonMounted(() => {\n if (!treeContainer.value) return;\n\n if (props.isCluster) {\n clusterView();\n } else {\n treeView();\n }\n});\n\nconst treeView = () => {\n const rectW = 130;\n const rectH = 40;\n const margin = { top: 40, right: 40, bottom: 40, left: 40 };\n\n const root = hierarchy<TreeNode>(props.nodes);\n //const totalLeafCount = root.leaves().length\n const width = Math.max(props.maxWidth);\n const height = props.maxHeight;\n\n const treeLayout = tree<TreeNode>().nodeSize([200, 100]); // [x spacing, y spacing]\n\n const treeData = treeLayout(root);\n\n const svg = d3\n .select(treeContainer.value)\n .append(\"svg\")\n .attr(\"width\", width)\n .attr(\"height\", height);\n\n const g = svg\n .append(\"g\")\n .attr(\"transform\", `translate(${margin.left}, ${margin.top})`);\n\n const zoom = d3Zoom\n .zoom<SVGSVGElement, unknown>()\n .scaleExtent([0.1, 2])\n .on(\"zoom\", (event) => {\n g.attr(\"transform\", event.transform);\n });\n\n svg.call(zoom);\n\n const centerX = width / 2 - treeData.x;\n const centerY = 30; //height / 2 - treeData.y\n const identity = (d3Zoom as any).zoomIdentity;\n svg.call(zoom.transform, identity.translate(centerX, centerY));\n\n // Links\n const linkPath = linkVertical<\n HierarchyPointLink<TreeNode>,\n HierarchyPointNode<TreeNode>\n >()\n .x((d) => d.x)\n .y((d) => d.y);\n\n g.selectAll(\"path.link\")\n .data(treeData.links())\n .enter()\n .append(\"path\")\n .attr(\"d\", (d) => linkPath(d))\n .attr(\"class\", (d) => {\n const link = d.target.data.active\n ? `${props.colorPath} stroke-2`\n : \"stroke-black dark:stroke-white\";\n return `${link} link fill-none`;\n });\n\n // Nodes\n const node = g\n .selectAll(\"g.node\")\n .data(treeData.descendants())\n .enter()\n .append(\"g\")\n .attr(\"class\", \"node\")\n .attr(\"transform\", (d) => `translate(${d.x}, ${d.y})`)\n .style(\"cursor\", (d) =>\n d.data.component || d.data.text ? \"pointer\" : \"default\"\n )\n .each(function (d) {\n if (d.data.component || d.data.text) {\n d3.select(this).on(\"click\", (_event) => handleNodeClick(d.data));\n }\n });\n //.style('cursor', 'pointer')\n //.on('click', (_event, d) => handleNodeClick(d.data))\n\n node.each(function (d) {\n const group = d3.select(this);\n\n // Append text temporarily\n const text = group\n .append(\"text\")\n .attr(\"class\", \"text-sm font-semibold fill-black dark:fill-white\")\n .attr(\"text-anchor\", \"middle\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"dy\", \".35em\")\n .text((d.data.label) ? d.data.label : d.data.name);\n\n // Get bounding box to determine text size\n const bbox = (text.node() as SVGTextElement).getBBox();\n const paddingX = 10;\n const paddingY = 10;\n\n const width = bbox.width + paddingX * 2;\n const height = bbox.height + paddingY * 2;\n\n // Draw rect using text size\n group\n .insert(\"rect\", \"text\")\n .attr(\"class\", props.colorRect)\n .attr(\"x\", -width / 2)\n .attr(\"y\", -height / 2)\n .attr(\"width\", width)\n .attr(\"height\", height)\n .attr(\"rx\", 4)\n .attr(\"ry\", 4);\n });\n\n node\n .append(\"text\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"dy\", \".35em\")\n .attr(\"class\", \"text-sm font-semibold fill-white dark:fill-black\")\n .attr(\"text-anchor\", \"middle\")\n .text((d) => {return (d.data.label) ? d.data.label : d.data.name})\n .style(\"pointer-events\", \"none\");\n};\n\nconst clusterView = () => {\n const rectW = 130;\n const rectH = 40;\n const margin = { top: 40, right: 40, bottom: 40, left: 40 };\n\n const root = hierarchy<TreeNode>(props.nodes);\n //const totalLeafCount = root.leaves().length\n const width = Math.max(props.maxWidth);\n const height = props.maxHeight;\n\n const treeLayout = cluster<TreeNode>().nodeSize([130, 200]); // [x spacing, y spacing]\n\n const treeData = treeLayout(root);\n\n const svg = d3\n .select(treeContainer.value)\n .append(\"svg\")\n .attr(\"width\", width)\n .attr(\"height\", height);\n\n const g = svg\n .append(\"g\")\n .attr(\"transform\", `translate(${margin.left}, ${margin.top})`);\n\n const zoom = d3Zoom\n .zoom<SVGSVGElement, unknown>()\n .scaleExtent([0.1, 4])\n .on(\"zoom\", (event) => {\n g.attr(\"transform\", event.transform);\n });\n\n svg.call(zoom);\n\n const centerX = 30;\n const centerY = height / 2 - treeData.x;\n const identity = (d3Zoom as any).zoomIdentity;\n svg.call(zoom.transform, identity.translate(centerX, centerY));\n\n // Links\n const linkPath = linkHorizontal<\n HierarchyPointLink<TreeNode>,\n HierarchyPointNode<TreeNode>\n >()\n .x((d) => d.y)\n .y((d) => d.x);\n\n g.selectAll(\"path.link\")\n .data(treeData.links())\n .enter()\n .append(\"path\")\n .attr(\"d\", (d) => linkPath(d))\n .attr(\"class\", (d) => {\n const link = d.target.data.active\n ? `${props.colorPath} stroke-2`\n : \"stroke-black dark:stroke-white\";\n return `${link} link fill-none`;\n });\n\n // Nodes\n const node = g\n .selectAll(\"g.node\")\n .data(treeData.descendants())\n .enter()\n .append(\"g\")\n .attr(\"class\", \"node\")\n .attr(\"transform\", (d) => `translate(${d.y}, ${d.x})`)\n .style(\"cursor\", (d) =>\n d.data.component || d.data.text ? \"pointer\" : \"default\"\n )\n .each(function (d) {\n if (d.data.component || d.data.text) {\n d3.select(this).on(\"click\", (_event) => handleNodeClick(d.data));\n }\n });\n //.style('cursor', 'pointer')\n //.on('click', (_event, d) => handleNodeClick(d.data))\n\n node.each(function (d) {\n const group = d3.select(this);\n\n // Append text temporarily\n const text = group\n .append(\"text\")\n .attr(\"class\", \"text-sm font-semibold fill-black dark:fill-white\")\n .attr(\"text-anchor\", \"middle\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"dy\", \".35em\")\n .text((d.data.label) ? d.data.label : d.data.name);\n\n // Get bounding box to determine text size\n const bbox = (text.node() as SVGTextElement).getBBox();\n const paddingX = 10;\n const paddingY = 10;\n\n const width = bbox.width + paddingX * 2;\n const height = bbox.height + paddingY * 2;\n\n // Draw rect using text size\n group\n .insert(\"rect\", \"text\")\n .attr(\"class\", props.colorRect)\n .attr(\"x\", -width / 2)\n .attr(\"y\", -height / 2)\n .attr(\"width\", width)\n .attr(\"height\", height)\n .attr(\"rx\", 4)\n .attr(\"ry\", 4);\n });\n\n node\n .append(\"text\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"dy\", \".35em\")\n .attr(\"class\", \"text-sm font-semibold fill-white dark:fill-black\")\n .attr(\"text-anchor\", \"middle\")\n .text((d) => {return (d.data.label) ? d.data.label : d.data.name})\n .style(\"pointer-events\", \"none\");\n};\n\nconst maxW = computed(() => {\n return `${props.maxWidth.toString()}px`;\n});\n\nconst maxH = computed(() => {\n return `${props.maxWidth.toString()}px`;\n});\n</script>\n\n<template>\n <div>\n <div\n ref=\"treeWrapper\"\n class=\"ep-tree-wrapper mx-auto\"\n :style=\"{ maxHeight: maxH, maxWidth: maxW }\"\n >\n <div ref=\"treeContainer\" class=\"ep-tree-container\" />\n </div>\n <EpModal v-model=\"showModal\" :title=\"currentNode.title\" v-if=\"currentNode\">\n <div v-if=\"currentNode.text\" v-html=\"useRenderText(currentNode.text)\" />\n <template v-if=\"currentRenderComponent && currentNode.component\">\n <component\n :is=\"currentRenderComponent\"\n v-bind=\"{ ...currentNode.component.data }\"\n />\n </template>\n <div class=\"flex justify-end\">\n <EpBtn @click=\"closeModal\" type=\"error\" outlined rounded>{{\n labelClose\n }}</EpBtn>\n </div>\n </EpModal>\n </div>\n</template>\n\n<style scoped>\n.ep-tree-wrapper {\n overflow: auto;\n border: 1px solid #ddd;\n}\n\n.ep-tree-container {\n width: 100%;\n overflow-x: auto;\n}\n</style>\n"],"names":["width","height","_createElementBlock","_createElementVNode","_normalizeStyle","_createBlock","EpModal","_unref","_openBlock","_resolveDynamicComponent","_normalizeProps","_mergeProps","_createVNode","EpBtn"],"mappings":"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"}
1
+ {"version":3,"file":"EpHierarchy.vue2.js","sources":["../../../src/components/medias/EpHierarchy.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, onMounted, computed, defineAsyncComponent } from \"vue\";\nimport {\n hierarchy,\n tree,\n cluster,\n type HierarchyPointLink,\n type HierarchyPointNode,\n} from \"d3-hierarchy\";\nimport * as d3 from \"d3-selection\";\nimport { linkVertical, linkHorizontal } from \"d3-shape\";\nimport * as d3Zoom from \"d3-zoom\";\nimport type { TreeNode } from \"~/types/Hierarchy\";\nimport type { NestedComponents } from \"~/types/Component\";\nimport { useComponent } from \"~/composables/useComponent\";\nimport EpModal from \"~/components/interactions/EpModal.vue\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { EpHierarchyProps } from \"~/types/medias/EpHierarchy\";\n\nconst props = withDefaults(defineProps<EpHierarchyProps>(), {\n labelClose: \"fermer\",\n maxWidth: 800,\n maxHeight: 600,\n isCluster: false,\n colorRect: \"fill-red-400\",\n colorPath: \"stroke-yellow-400\",\n});\n\nconst treeContainer = ref<HTMLDivElement | null>(null);\nconst treeWrapper = ref<HTMLDivElement | null>(null);\n\n/* control modal */\ntype ShowNode = {\n title: string;\n text?: string;\n component?: NestedComponents;\n};\n\nconst currentNode = ref<ShowNode | null>(null);\nconst showModal = ref(false);\n\nconst handleNodeClick = (node: TreeNode) => {\n currentNode.value = {\n title: node.name,\n text: node.text,\n component: node.component,\n };\n showModal.value = true;\n};\n\nconst closeModal = () => {\n showModal.value = false;\n currentNode.value = null;\n};\n//nested component\n\nconst components = import.meta.glob([\n \"./*.vue\", // all components in medias (same folder)\n \"../basics/*.vue\", // components/charts/\n \"../signages/*.vue\", // components/signages/\n]);\n\nconst currentRenderComponent = computed(() => {\n if (!currentNode.value || !currentNode.value.component) {\n return null;\n }\n\n const { path, name } = useComponent(currentNode.value.component.type);\n //console.log(path, name)\n let fullPath = \"\";\n if (path === \"medias\") {\n fullPath = `./${name}.vue`;\n } else {\n fullPath = `../${path}/${name}.vue`;\n }\n //console.log(fullPath)\n const loader = components[fullPath] as\n | (() => Promise<{ default: NestedComponents }>)\n | undefined;\n\n if (!loader) {\n console.warn(`Component not found: ${fullPath}`);\n return null; // or defineAsyncComponent(() => import('../fallbacks/EpNothing.vue'))\n }\n\n return defineAsyncComponent(loader);\n});\n\nonMounted(() => {\n if (!treeContainer.value) return;\n\n if (props.isCluster) {\n clusterView();\n } else {\n treeView();\n }\n});\n\nconst treeView = () => {\n const rectW = 130;\n const rectH = 40;\n const margin = { top: 40, right: 40, bottom: 40, left: 40 };\n\n const root = hierarchy<TreeNode>(props.nodes);\n //const totalLeafCount = root.leaves().length\n const width = Math.max(props.maxWidth);\n const height = props.maxHeight;\n\n const treeLayout = tree<TreeNode>().nodeSize([200, 100]); // [x spacing, y spacing]\n\n const treeData = treeLayout(root);\n\n const svg = d3\n .select(treeContainer.value)\n .append(\"svg\")\n .attr(\"width\", width)\n .attr(\"height\", height);\n\n const g = svg\n .append(\"g\")\n .attr(\"transform\", `translate(${margin.left}, ${margin.top})`);\n\n const zoom = d3Zoom\n .zoom<SVGSVGElement, unknown>()\n .scaleExtent([0.1, 2])\n .on(\"zoom\", (event) => {\n g.attr(\"transform\", event.transform);\n });\n\n svg.call(zoom);\n\n const centerX = width / 2 - treeData.x;\n const centerY = 30; //height / 2 - treeData.y\n const identity = (d3Zoom as any).zoomIdentity;\n svg.call(zoom.transform, identity.translate(centerX, centerY));\n\n // Links\n const linkPath = linkVertical<\n HierarchyPointLink<TreeNode>,\n HierarchyPointNode<TreeNode>\n >()\n .x((d) => d.x)\n .y((d) => d.y);\n\n g.selectAll(\"path.link\")\n .data(treeData.links())\n .enter()\n .append(\"path\")\n .attr(\"d\", (d) => linkPath(d))\n .attr(\"class\", (d) => {\n const link = d.target.data.active\n ? `${props.colorPath} stroke-2`\n : \"stroke-black dark:stroke-white\";\n return `${link} link fill-none`;\n });\n\n // Nodes\n const node = g\n .selectAll(\"g.node\")\n .data(treeData.descendants())\n .enter()\n .append(\"g\")\n .attr(\"class\", \"node\")\n .attr(\"transform\", (d) => `translate(${d.x}, ${d.y})`)\n .style(\"cursor\", (d) =>\n d.data.component || d.data.text ? \"pointer\" : \"default\"\n )\n .each(function (d) {\n if (d.data.component || d.data.text) {\n d3.select(this).on(\"click\", (_event) => handleNodeClick(d.data));\n }\n });\n //.style('cursor', 'pointer')\n //.on('click', (_event, d) => handleNodeClick(d.data))\n\n node.each(function (d) {\n const group = d3.select(this);\n\n // Append text temporarily\n const text = group\n .append(\"text\")\n .attr(\"class\", \"text-sm font-semibold fill-black dark:fill-white\")\n .attr(\"text-anchor\", \"middle\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"dy\", \".35em\")\n .text((d.data.label) ? d.data.label : d.data.name);\n\n // Get bounding box to determine text size\n const bbox = (text.node() as SVGTextElement).getBBox();\n const paddingX = 10;\n const paddingY = 10;\n\n const width = bbox.width + paddingX * 2;\n const height = bbox.height + paddingY * 2;\n\n // Draw rect using text size\n group\n .insert(\"rect\", \"text\")\n .attr(\"class\", props.colorRect)\n .attr(\"x\", -width / 2)\n .attr(\"y\", -height / 2)\n .attr(\"width\", width)\n .attr(\"height\", height)\n .attr(\"rx\", 4)\n .attr(\"ry\", 4);\n });\n\n node\n .append(\"text\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"dy\", \".35em\")\n .attr(\"class\", \"text-sm font-semibold fill-white dark:fill-black\")\n .attr(\"text-anchor\", \"middle\")\n .text((d) => {return (d.data.label) ? d.data.label : d.data.name})\n .style(\"pointer-events\", \"none\");\n};\n\nconst clusterView = () => {\n const rectW = 130;\n const rectH = 40;\n const margin = { top: 40, right: 40, bottom: 40, left: 40 };\n\n const root = hierarchy<TreeNode>(props.nodes);\n //const totalLeafCount = root.leaves().length\n const width = Math.max(props.maxWidth);\n const height = props.maxHeight;\n\n const treeLayout = cluster<TreeNode>().nodeSize([130, 200]); // [x spacing, y spacing]\n\n const treeData = treeLayout(root);\n\n const svg = d3\n .select(treeContainer.value)\n .append(\"svg\")\n .attr(\"width\", width)\n .attr(\"height\", height);\n\n const g = svg\n .append(\"g\")\n .attr(\"transform\", `translate(${margin.left}, ${margin.top})`);\n\n const zoom = d3Zoom\n .zoom<SVGSVGElement, unknown>()\n .scaleExtent([0.1, 4])\n .on(\"zoom\", (event) => {\n g.attr(\"transform\", event.transform);\n });\n\n svg.call(zoom);\n\n const centerX = 30;\n const centerY = height / 2 - treeData.x;\n const identity = (d3Zoom as any).zoomIdentity;\n svg.call(zoom.transform, identity.translate(centerX, centerY));\n\n // Links\n const linkPath = linkHorizontal<\n HierarchyPointLink<TreeNode>,\n HierarchyPointNode<TreeNode>\n >()\n .x((d) => d.y)\n .y((d) => d.x);\n\n g.selectAll(\"path.link\")\n .data(treeData.links())\n .enter()\n .append(\"path\")\n .attr(\"d\", (d) => linkPath(d))\n .attr(\"class\", (d) => {\n const link = d.target.data.active\n ? `${props.colorPath} stroke-2`\n : \"stroke-black dark:stroke-white\";\n return `${link} link fill-none`;\n });\n\n // Nodes\n const node = g\n .selectAll(\"g.node\")\n .data(treeData.descendants())\n .enter()\n .append(\"g\")\n .attr(\"class\", \"node\")\n .attr(\"transform\", (d) => `translate(${d.y}, ${d.x})`)\n .style(\"cursor\", (d) =>\n d.data.component || d.data.text ? \"pointer\" : \"default\"\n )\n .each(function (d) {\n if (d.data.component || d.data.text) {\n d3.select(this).on(\"click\", (_event) => handleNodeClick(d.data));\n }\n });\n //.style('cursor', 'pointer')\n //.on('click', (_event, d) => handleNodeClick(d.data))\n\n node.each(function (d) {\n const group = d3.select(this);\n\n // Append text temporarily\n const text = group\n .append(\"text\")\n .attr(\"class\", \"text-sm font-semibold fill-black dark:fill-white\")\n .attr(\"text-anchor\", \"middle\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"dy\", \".35em\")\n .text((d.data.label) ? d.data.label : d.data.name);\n\n // Get bounding box to determine text size\n const bbox = (text.node() as SVGTextElement).getBBox();\n const paddingX = 10;\n const paddingY = 10;\n\n const width = bbox.width + paddingX * 2;\n const height = bbox.height + paddingY * 2;\n\n // Draw rect using text size\n group\n .insert(\"rect\", \"text\")\n .attr(\"class\", props.colorRect)\n .attr(\"x\", -width / 2)\n .attr(\"y\", -height / 2)\n .attr(\"width\", width)\n .attr(\"height\", height)\n .attr(\"rx\", 4)\n .attr(\"ry\", 4);\n });\n\n node\n .append(\"text\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"dy\", \".35em\")\n .attr(\"class\", \"text-sm font-semibold fill-white dark:fill-black\")\n .attr(\"text-anchor\", \"middle\")\n .text((d) => {return (d.data.label) ? d.data.label : d.data.name})\n .style(\"pointer-events\", \"none\");\n};\n\nconst maxW = computed(() => {\n return `${props.maxWidth.toString()}px`;\n});\n\nconst maxH = computed(() => {\n return `${props.maxWidth.toString()}px`;\n});\n</script>\n\n<template>\n <div>\n <div\n ref=\"treeWrapper\"\n class=\"ep-tree-wrapper mx-auto\"\n :style=\"{ maxHeight: maxH, maxWidth: maxW }\"\n >\n <div ref=\"treeContainer\" class=\"ep-tree-container\" />\n </div>\n <EpModal v-model=\"showModal\" :title=\"currentNode.title\" v-if=\"currentNode\">\n <div v-if=\"currentNode.text\" v-html=\"useRenderText(currentNode.text)\" />\n <template v-if=\"currentRenderComponent && currentNode.component\">\n <component\n :is=\"currentRenderComponent\"\n v-bind=\"{ ...currentNode.component.data }\"\n />\n </template>\n <div class=\"flex justify-end\">\n <EpBtn @click=\"closeModal\" type=\"error\" outlined rounded>{{\n labelClose\n }}</EpBtn>\n </div>\n </EpModal>\n </div>\n</template>\n\n<style scoped>\n.ep-tree-wrapper {\n overflow: auto;\n border: 1px solid #ddd;\n}\n\n.ep-tree-container {\n width: 100%;\n overflow-x: auto;\n}\n</style>\n"],"names":["width","height","_createElementBlock","_createElementVNode","_normalizeStyle","_createBlock","EpModal","_unref","_openBlock","_resolveDynamicComponent","_normalizeProps","_mergeProps","_createVNode","EpBtn","labelClose"],"mappings":"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"}
@@ -48,11 +48,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
48
48
  return (_ctx, _cache) => {
49
49
  return openBlock(), createBlock(_sfc_main$1, {
50
50
  title: unref(title),
51
- labelIntentions: __props.labelIntentions,
52
- type: __props.type,
51
+ labelIntentions: _ctx.labelIntentions,
52
+ type: _ctx.type,
53
53
  hideIcon: unref(hideIcon),
54
54
  icon: unref(mdiApplicationBrackets),
55
- mandateLevel: __props.mandateLevel
55
+ mandateLevel: _ctx.mandateLevel
56
56
  }, createSlots({
57
57
  content: withCtx(() => [
58
58
  createElementVNode("iframe", {
@@ -1 +1 @@
1
- {"version":3,"file":"EpIframe.vue.js","sources":["../../../src/components/medias/EpIframe.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs, computed } from \"vue\";\nimport EpEdu from \"~/components/educationals/EpEdu.vue\";\nimport { isHtml } from \"~/composables/isHtml\";\nimport { useMarkdown } from \"~/composables/useMarkdown\";\nimport { mdiApplicationBrackets } from \"@mdi/js\";\nimport type { EpIframeProps } from \"~/types/medias/EpIframe\";\n\nconst props = withDefaults(defineProps<EpIframeProps>(), {\n type: \"neutral\",\n big: false,\n hideIcon: false,\n});\n\nconst renderText = computed(() => {\n if (!props.intentions) {\n return null;\n }\n if (!isHtml(props.intentions)) {\n return useMarkdown(props.intentions);\n }\n return props.intentions;\n});\n\nconst height = computed(() => {\n if (props.customHeight) {\n return props.customHeight;\n }\n return props.big ? \"1000\" : \"520\";\n});\n\nconst _src = computed(() => {\n let lastLetter = props.src[props.src.length - 1];\n let isNum = /^\\d+$/.test(lastLetter);\n let studiumUrl = props.src.includes(\"https://studium.umontreal.ca\");\n if (isNum && studiumUrl) {\n return props.src + \"&embed=1\";\n }\n return props.src;\n});\n\nconst { title, hideIcon } = toRefs(props);\n</script>\n\n<template>\n <EpEdu\n :title=\"title\"\n :labelIntentions=\"labelIntentions\"\n :type=\"type\"\n :hideIcon=\"hideIcon\"\n :icon=\"mdiApplicationBrackets\"\n :mandateLevel=\"mandateLevel\"\n >\n <template #intentions v-if=\"renderText\">\n <div v-html=\"renderText\" />\n </template>\n <template #content>\n <iframe :src=\"_src\" class=\"w-full\" :height=\"height\"></iframe>\n </template>\n <!-- <template #actions>\n <EpBtn :color=\"type=='base'?'text-gray-700':'text-white'\" :type=\"type\">[Repair btn style... to change]</EpBtn>\n </template> -->\n </EpEdu>\n</template>\n"],"names":["_createBlock","EpEdu","_unref","_createElementVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAQA,UAAM,QAAQ;AAMd,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,CAAC,MAAM,YAAY;AACrB,eAAO;AAAA,MACT;AACA,UAAI,CAAC,OAAO,MAAM,UAAU,GAAG;AAC7B,eAAO,YAAY,MAAM,UAAU;AAAA,MACrC;AACA,aAAO,MAAM;AAAA,IACf,CAAC;AAED,UAAM,SAAS,SAAS,MAAM;AAC5B,UAAI,MAAM,cAAc;AACtB,eAAO,MAAM;AAAA,MACf;AACA,aAAO,MAAM,MAAM,SAAS;AAAA,IAC9B,CAAC;AAED,UAAM,OAAO,SAAS,MAAM;AAC1B,UAAI,aAAa,MAAM,IAAI,MAAM,IAAI,SAAS,CAAC;AAC/C,UAAI,QAAQ,QAAQ,KAAK,UAAU;AACnC,UAAI,aAAa,MAAM,IAAI,SAAS,8BAA8B;AAClE,UAAI,SAAS,YAAY;AACvB,eAAO,MAAM,MAAM;AAAA,MACrB;AACA,aAAO,MAAM;AAAA,IACf,CAAC;AAED,UAAM,EAAE,OAAO,aAAa,OAAO,KAAK;;0BAItCA,YAiBQC,aAAA;AAAA,QAhBL,OAAOC,MAAA,KAAA;AAAA,QACP,iBAAiB,QAAA;AAAA,QACjB,MAAM,QAAA;AAAA,QACN,UAAUA,MAAA,QAAA;AAAA,QACV,MAAMA,MAAA,sBAAA;AAAA,QACN,cAAc,QAAA;AAAA,MAAA;QAKJ,iBACT,MAA6D;AAAA,UAA7DC,mBAA6D,UAAA;AAAA,YAApD,KAAK,KAAA;AAAA,YAAM,OAAM;AAAA,YAAU,QAAQ,OAAA;AAAA,UAAA;;;;QAJlB,WAAA;gBAAjB;AAAA,sBACT,MAA2B;AAAA,YAA3BA,mBAA2B,OAAA,EAAtB,WAAQ,WAAA,SAAU,MAAA,GAAA,UAAA;AAAA,UAAA;;;;;;;"}
1
+ {"version":3,"file":"EpIframe.vue.js","sources":["../../../src/components/medias/EpIframe.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs, computed } from \"vue\";\nimport EpEdu from \"~/components/educationals/EpEdu.vue\";\nimport { isHtml } from \"~/composables/isHtml\";\nimport { useMarkdown } from \"~/composables/useMarkdown\";\nimport { mdiApplicationBrackets } from \"@mdi/js\";\nimport type { EpIframeProps } from \"~/types/medias/EpIframe\";\n\nconst props = withDefaults(defineProps<EpIframeProps>(), {\n type: \"neutral\",\n big: false,\n hideIcon: false,\n});\n\nconst renderText = computed(() => {\n if (!props.intentions) {\n return null;\n }\n if (!isHtml(props.intentions)) {\n return useMarkdown(props.intentions);\n }\n return props.intentions;\n});\n\nconst height = computed(() => {\n if (props.customHeight) {\n return props.customHeight;\n }\n return props.big ? \"1000\" : \"520\";\n});\n\nconst _src = computed(() => {\n let lastLetter = props.src[props.src.length - 1];\n let isNum = /^\\d+$/.test(lastLetter);\n let studiumUrl = props.src.includes(\"https://studium.umontreal.ca\");\n if (isNum && studiumUrl) {\n return props.src + \"&embed=1\";\n }\n return props.src;\n});\n\nconst { title, hideIcon } = toRefs(props);\n</script>\n\n<template>\n <EpEdu\n :title=\"title\"\n :labelIntentions=\"labelIntentions\"\n :type=\"type\"\n :hideIcon=\"hideIcon\"\n :icon=\"mdiApplicationBrackets\"\n :mandateLevel=\"mandateLevel\"\n >\n <template #intentions v-if=\"renderText\">\n <div v-html=\"renderText\" />\n </template>\n <template #content>\n <iframe :src=\"_src\" class=\"w-full\" :height=\"height\"></iframe>\n </template>\n <!-- <template #actions>\n <EpBtn :color=\"type=='base'?'text-gray-700':'text-white'\" :type=\"type\">[Repair btn style... to change]</EpBtn>\n </template> -->\n </EpEdu>\n</template>\n"],"names":["_createBlock","EpEdu","_unref","labelIntentions","type","mandateLevel","_createElementVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAQA,UAAM,QAAQ;AAMd,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,CAAC,MAAM,YAAY;AACrB,eAAO;AAAA,MACT;AACA,UAAI,CAAC,OAAO,MAAM,UAAU,GAAG;AAC7B,eAAO,YAAY,MAAM,UAAU;AAAA,MACrC;AACA,aAAO,MAAM;AAAA,IACf,CAAC;AAED,UAAM,SAAS,SAAS,MAAM;AAC5B,UAAI,MAAM,cAAc;AACtB,eAAO,MAAM;AAAA,MACf;AACA,aAAO,MAAM,MAAM,SAAS;AAAA,IAC9B,CAAC;AAED,UAAM,OAAO,SAAS,MAAM;AAC1B,UAAI,aAAa,MAAM,IAAI,MAAM,IAAI,SAAS,CAAC;AAC/C,UAAI,QAAQ,QAAQ,KAAK,UAAU;AACnC,UAAI,aAAa,MAAM,IAAI,SAAS,8BAA8B;AAClE,UAAI,SAAS,YAAY;AACvB,eAAO,MAAM,MAAM;AAAA,MACrB;AACA,aAAO,MAAM;AAAA,IACf,CAAC;AAED,UAAM,EAAE,OAAO,aAAa,OAAO,KAAK;;0BAItCA,YAiBQC,aAAA;AAAA,QAhBL,OAAOC,MAAA,KAAA;AAAA,QACP,iBAAiBC,KAAAA;AAAAA,QACjB,MAAMC,KAAAA;AAAAA,QACN,UAAUF,MAAA,QAAA;AAAA,QACV,MAAMA,MAAA,sBAAA;AAAA,QACN,cAAcG,KAAAA;AAAAA,MAAAA;QAKJ,iBACT,MAA6D;AAAA,UAA7DC,mBAA6D,UAAA;AAAA,YAApD,KAAK,KAAA;AAAA,YAAM,OAAM;AAAA,YAAU,QAAQ,OAAA;AAAA,UAAA;;;;QAJlB,WAAA;gBAAjB;AAAA,sBACT,MAA2B;AAAA,YAA3BA,mBAA2B,OAAA,EAAtB,WAAQ,WAAA,SAAU,MAAA,GAAA,UAAA;AAAA,UAAA;;;;;;;"}
@@ -39,11 +39,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
39
39
  const { center } = toRefs(props);
40
40
  return (_ctx, _cache) => {
41
41
  return openBlock(), createBlock(_sfc_main$1, {
42
- title: __props.title,
43
- type: __props.type,
44
- hideIcon: __props.hideIcon,
42
+ title: _ctx.title,
43
+ type: _ctx.type,
44
+ hideIcon: _ctx.hideIcon,
45
45
  icon: unref(mdiFunctionVariant),
46
- labelIntentions: __props.labelIntentions
46
+ labelIntentions: _ctx.labelIntentions
47
47
  }, createSlots({
48
48
  content: withCtx(() => [
49
49
  createElementVNode("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"EpKatex.vue2.js","sources":["../../../src/components/medias/EpKatex.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { onMounted, ref, computed, toRefs } from \"vue\";\nimport katex from \"katex\";\nimport EpEdu from \"~/components/educationals/EpEdu.vue\";\nimport { mdiFunctionVariant } from \"@mdi/js\";\nimport { isHtml } from \"~/composables/isHtml\";\nimport { useMarkdown } from \"~/composables/useMarkdown\";\nimport type { EpKatexProps } from \"~/types/medias/EpKatex\";\n\nconst props = withDefaults(defineProps<EpKatexProps>(), {\n center: false,\n});\n\nconst renderKatex = ref<HTMLDivElement>();\n\nonMounted(() => {\n if (renderKatex.value) {\n katex.render(String.raw`${props.content}`, renderKatex.value, {\n throwOnError: false,\n output: \"html\",\n });\n }\n});\n\nconst renderText = computed(() => {\n if (!props.intentions) {\n return null;\n }\n if (!isHtml(props.intentions)) {\n return useMarkdown(props.intentions);\n }\n return props.intentions;\n});\n\nconst { center } = toRefs(props);\n</script>\n\n<template>\n <EpEdu\n :title=\"title\"\n :type=\"type\"\n :hideIcon=\"hideIcon\"\n :icon=\"mdiFunctionVariant\"\n :labelIntentions=\"labelIntentions\"\n >\n <template #intentions v-if=\"renderText\">\n <div v-html=\"renderText\" />\n </template>\n <template #content>\n <div :class=\"`p-4 ${center ? 'flex justify-center' : ''}`\">\n <div ref=\"renderKatex\" />\n </div>\n </template>\n <!-- <template #actions>\n <EpBtn :color=\"type=='base'?'text-gray-700':'text-white'\" :type=\"type\">[Repair btn style... to change]</EpBtn>\n </template> -->\n </EpEdu>\n</template>\n\n<style scoped>\n.katex {\n font-size: 1.6em;\n}\n</style>\n"],"names":["_createBlock","EpEdu","_unref","_createElementVNode"],"mappings":";;;;;;;;;;;;;;;;;;;AASA,UAAM,QAAQ;AAId,UAAM,cAAc,IAAA;AAEpB,cAAU,MAAM;AACd,UAAI,YAAY,OAAO;AACrB,cAAM,OAAO,OAAO,MAAM,MAAM,OAAO,IAAI,YAAY,OAAO;AAAA,UAC5D,cAAc;AAAA,UACd,QAAQ;AAAA,QAAA,CACT;AAAA,MACH;AAAA,IACF,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,CAAC,MAAM,YAAY;AACrB,eAAO;AAAA,MACT;AACA,UAAI,CAAC,OAAO,MAAM,UAAU,GAAG;AAC7B,eAAO,YAAY,MAAM,UAAU;AAAA,MACrC;AACA,aAAO,MAAM;AAAA,IACf,CAAC;AAED,UAAM,EAAE,OAAA,IAAW,OAAO,KAAK;;0BAI7BA,YAkBQC,aAAA;AAAA,QAjBL,OAAO,QAAA;AAAA,QACP,MAAM,QAAA;AAAA,QACN,UAAU,QAAA;AAAA,QACV,MAAMC,MAAA,kBAAA;AAAA,QACN,iBAAiB,QAAA;AAAA,MAAA;QAKP,iBACT,MAEM;AAAA,UAFNC,mBAEM,OAAA;AAAA,YAFA,6BAAcD,MAAA,MAAA,IAAM,wBAAA,EAAA,EAAA;AAAA,UAAA;YACxBC,mBAAyB,OAAA;AAAA,uBAAhB;AAAA,cAAJ,KAAI;AAAA,YAAA;;;;;QALe,WAAA;gBAAjB;AAAA,sBACT,MAA2B;AAAA,YAA3BA,mBAA2B,OAAA,EAAtB,WAAQ,WAAA,SAAU,MAAA,GAAA,UAAA;AAAA,UAAA;;;;;;;"}
1
+ {"version":3,"file":"EpKatex.vue2.js","sources":["../../../src/components/medias/EpKatex.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { onMounted, ref, computed, toRefs } from \"vue\";\nimport katex from \"katex\";\nimport EpEdu from \"~/components/educationals/EpEdu.vue\";\nimport { mdiFunctionVariant } from \"@mdi/js\";\nimport { isHtml } from \"~/composables/isHtml\";\nimport { useMarkdown } from \"~/composables/useMarkdown\";\nimport type { EpKatexProps } from \"~/types/medias/EpKatex\";\n\nconst props = withDefaults(defineProps<EpKatexProps>(), {\n center: false,\n});\n\nconst renderKatex = ref<HTMLDivElement>();\n\nonMounted(() => {\n if (renderKatex.value) {\n katex.render(String.raw`${props.content}`, renderKatex.value, {\n throwOnError: false,\n output: \"html\",\n });\n }\n});\n\nconst renderText = computed(() => {\n if (!props.intentions) {\n return null;\n }\n if (!isHtml(props.intentions)) {\n return useMarkdown(props.intentions);\n }\n return props.intentions;\n});\n\nconst { center } = toRefs(props);\n</script>\n\n<template>\n <EpEdu\n :title=\"title\"\n :type=\"type\"\n :hideIcon=\"hideIcon\"\n :icon=\"mdiFunctionVariant\"\n :labelIntentions=\"labelIntentions\"\n >\n <template #intentions v-if=\"renderText\">\n <div v-html=\"renderText\" />\n </template>\n <template #content>\n <div :class=\"`p-4 ${center ? 'flex justify-center' : ''}`\">\n <div ref=\"renderKatex\" />\n </div>\n </template>\n <!-- <template #actions>\n <EpBtn :color=\"type=='base'?'text-gray-700':'text-white'\" :type=\"type\">[Repair btn style... to change]</EpBtn>\n </template> -->\n </EpEdu>\n</template>\n\n<style scoped>\n.katex {\n font-size: 1.6em;\n}\n</style>\n"],"names":["_createBlock","EpEdu","title","type","hideIcon","_unref","labelIntentions","_createElementVNode"],"mappings":";;;;;;;;;;;;;;;;;;;AASA,UAAM,QAAQ;AAId,UAAM,cAAc,IAAA;AAEpB,cAAU,MAAM;AACd,UAAI,YAAY,OAAO;AACrB,cAAM,OAAO,OAAO,MAAM,MAAM,OAAO,IAAI,YAAY,OAAO;AAAA,UAC5D,cAAc;AAAA,UACd,QAAQ;AAAA,QAAA,CACT;AAAA,MACH;AAAA,IACF,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,CAAC,MAAM,YAAY;AACrB,eAAO;AAAA,MACT;AACA,UAAI,CAAC,OAAO,MAAM,UAAU,GAAG;AAC7B,eAAO,YAAY,MAAM,UAAU;AAAA,MACrC;AACA,aAAO,MAAM;AAAA,IACf,CAAC;AAED,UAAM,EAAE,OAAA,IAAW,OAAO,KAAK;;0BAI7BA,YAkBQC,aAAA;AAAA,QAjBL,OAAOC,KAAAA;AAAAA,QACP,MAAMC,KAAAA;AAAAA,QACN,UAAUC,KAAAA;AAAAA,QACV,MAAMC,MAAA,kBAAA;AAAA,QACN,iBAAiBC,KAAAA;AAAAA,MAAAA;QAKP,iBACT,MAEM;AAAA,UAFNC,mBAEM,OAAA;AAAA,YAFA,6BAAcF,MAAA,MAAA,IAAM,wBAAA,EAAA,EAAA;AAAA,UAAA;YACxBE,mBAAyB,OAAA;AAAA,uBAAhB;AAAA,cAAJ,KAAI;AAAA,YAAA;;;;;QALe,WAAA;gBAAjB;AAAA,sBACT,MAA2B;AAAA,YAA3BA,mBAA2B,OAAA,EAAtB,WAAQ,WAAA,SAAU,MAAA,GAAA,UAAA;AAAA,UAAA;;;;;;;"}
@@ -34,12 +34,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
34
34
  const { url, title, intentions, mandateLevel, hideIcon } = toRefs(props);
35
35
  return (_ctx, _cache) => {
36
36
  return openBlock(), createBlock(_sfc_main$1, {
37
- title: __props.labelCard,
37
+ title: _ctx.labelCard,
38
38
  icon: renderIcon.value,
39
39
  flat: "",
40
40
  hideIcon: unref(hideIcon),
41
41
  mandateLevel: unref(mandateLevel),
42
- labelIntentions: __props.labelIntentions
42
+ labelIntentions: _ctx.labelIntentions
43
43
  }, createSlots({
44
44
  content: withCtx(() => [
45
45
  createElementVNode("div", _hoisted_2, [
@@ -1 +1 @@
1
- {"version":3,"file":"EpLink.vue.js","sources":["../../../src/components/medias/EpLink.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, toRefs } from \"vue\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport { mdiLinkVariant } from \"@mdi/js\";\nimport EpEdu from \"~/components/educationals/EpEdu.vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { EpLinkProps } from \"~/types/medias/EpLink\";\n\nconst props = withDefaults(defineProps<EpLinkProps>(), {\n type: \"neutral\",\n hideIcon: false,\n});\n\nconst renderIcon = computed(() => {\n if (props.icon) {\n return props.icon;\n }\n return mdiLinkVariant;\n});\n\nconst hoverColor = computed(() => {\n return `absolute bg bottom-0 w-0 left-1/2 h-full -translate-x-1/2 transition-all ease-in-out duration-300 group-hover:w-[105%] -z-[1] group-focus:w-[105%]`;\n});\n\nconst { url, title, intentions, mandateLevel, hideIcon } = toRefs(props);\n</script>\n\n<template>\n <EpEdu\n :title=\"labelCard\"\n :icon=\"renderIcon\"\n flat\n :hideIcon=\"hideIcon\"\n :mandateLevel=\"mandateLevel\"\n :labelIntentions=\"labelIntentions\"\n >\n <template #intentions v-if=\"intentions\">\n <div v-html=\"useRenderText(intentions)\" />\n </template>\n <template #content>\n <div class=\"flex justify-center\">\n <div class=\"w-4/5\">\n <EpBtn\n block\n rounded\n type=\"primary\"\n :prependIcon=\"renderIcon\"\n :href=\"url\"\n extraClass=\"group font-medium tracking-wide relative inline-flex justify-center overflow-hidden z-10 transition-all duration-300 ease-in-out \"\n >\n <div>\n <span class=\"font-medium tracking-wider\">{{ title }}</span>\n <span :class=\"hoverColor\" />\n </div>\n </EpBtn>\n </div>\n </div>\n </template>\n </EpEdu>\n</template>\n"],"names":["_createBlock","EpEdu","_unref","_createElementVNode","_createVNode","EpBtn","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAQA,UAAM,QAAQ;AAKd,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,MAAM,MAAM;AACd,eAAO,MAAM;AAAA,MACf;AACA,aAAO;AAAA,IACT,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO;AAAA,IACT,CAAC;AAED,UAAM,EAAE,KAAK,OAAO,YAAY,cAAc,SAAA,IAAa,OAAO,KAAK;;0BAIrEA,YA8BQC,aAAA;AAAA,QA7BL,OAAO,QAAA;AAAA,QACP,MAAM,WAAA;AAAA,QACP,MAAA;AAAA,QACC,UAAUC,MAAA,QAAA;AAAA,QACV,cAAcA,MAAA,YAAA;AAAA,QACd,iBAAiB,QAAA;AAAA,MAAA;QAKP,iBACT,MAgBM;AAAA,UAhBNC,mBAgBM,OAhBN,YAgBM;AAAA,YAfJA,mBAcM,OAdN,YAcM;AAAA,cAbJC,YAYQC,aAAA;AAAA,gBAXN,OAAA;AAAA,gBACA,SAAA;AAAA,gBACA,MAAK;AAAA,gBACJ,aAAa,WAAA;AAAA,gBACb,MAAMH,MAAA,GAAA;AAAA,gBACP,YAAW;AAAA,cAAA;iCAEX,MAGM;AAAA,kBAHNC,mBAGM,OAAA,MAAA;AAAA,oBAFJA,mBAA2D,QAA3D,YAA2DG,gBAAfJ,MAAA,KAAA,CAAK,GAAA,CAAA;AAAA,oBACjDC,mBAA4B,QAAA;AAAA,sBAArB,sBAAO,WAAA,KAAU;AAAA,oBAAA;;;;;;;;;;QAhBND,MAAA,UAAA;gBAAjB;AAAA,sBACT,MAA0C;AAAA,YAA1CC,mBAA0C,OAAA;AAAA,cAArC,WAAQD,MAAA,aAAA,EAAcA,MAAA,UAAA,CAAU;AAAA,YAAA;;;;;;;;"}
1
+ {"version":3,"file":"EpLink.vue.js","sources":["../../../src/components/medias/EpLink.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, toRefs } from \"vue\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport { mdiLinkVariant } from \"@mdi/js\";\nimport EpEdu from \"~/components/educationals/EpEdu.vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { EpLinkProps } from \"~/types/medias/EpLink\";\n\nconst props = withDefaults(defineProps<EpLinkProps>(), {\n type: \"neutral\",\n hideIcon: false,\n});\n\nconst renderIcon = computed(() => {\n if (props.icon) {\n return props.icon;\n }\n return mdiLinkVariant;\n});\n\nconst hoverColor = computed(() => {\n return `absolute bg bottom-0 w-0 left-1/2 h-full -translate-x-1/2 transition-all ease-in-out duration-300 group-hover:w-[105%] -z-[1] group-focus:w-[105%]`;\n});\n\nconst { url, title, intentions, mandateLevel, hideIcon } = toRefs(props);\n</script>\n\n<template>\n <EpEdu\n :title=\"labelCard\"\n :icon=\"renderIcon\"\n flat\n :hideIcon=\"hideIcon\"\n :mandateLevel=\"mandateLevel\"\n :labelIntentions=\"labelIntentions\"\n >\n <template #intentions v-if=\"intentions\">\n <div v-html=\"useRenderText(intentions)\" />\n </template>\n <template #content>\n <div class=\"flex justify-center\">\n <div class=\"w-4/5\">\n <EpBtn\n block\n rounded\n type=\"primary\"\n :prependIcon=\"renderIcon\"\n :href=\"url\"\n extraClass=\"group font-medium tracking-wide relative inline-flex justify-center overflow-hidden z-10 transition-all duration-300 ease-in-out \"\n >\n <div>\n <span class=\"font-medium tracking-wider\">{{ title }}</span>\n <span :class=\"hoverColor\" />\n </div>\n </EpBtn>\n </div>\n </div>\n </template>\n </EpEdu>\n</template>\n"],"names":["_createBlock","EpEdu","labelCard","_unref","labelIntentions","_createElementVNode","_createVNode","EpBtn","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAQA,UAAM,QAAQ;AAKd,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,MAAM,MAAM;AACd,eAAO,MAAM;AAAA,MACf;AACA,aAAO;AAAA,IACT,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO;AAAA,IACT,CAAC;AAED,UAAM,EAAE,KAAK,OAAO,YAAY,cAAc,SAAA,IAAa,OAAO,KAAK;;0BAIrEA,YA8BQC,aAAA;AAAA,QA7BL,OAAOC,KAAAA;AAAAA,QACP,MAAM,WAAA;AAAA,QACP,MAAA;AAAA,QACC,UAAUC,MAAA,QAAA;AAAA,QACV,cAAcA,MAAA,YAAA;AAAA,QACd,iBAAiBC,KAAAA;AAAAA,MAAAA;QAKP,iBACT,MAgBM;AAAA,UAhBNC,mBAgBM,OAhBN,YAgBM;AAAA,YAfJA,mBAcM,OAdN,YAcM;AAAA,cAbJC,YAYQC,aAAA;AAAA,gBAXN,OAAA;AAAA,gBACA,SAAA;AAAA,gBACA,MAAK;AAAA,gBACJ,aAAa,WAAA;AAAA,gBACb,MAAMJ,MAAA,GAAA;AAAA,gBACP,YAAW;AAAA,cAAA;iCAEX,MAGM;AAAA,kBAHNE,mBAGM,OAAA,MAAA;AAAA,oBAFJA,mBAA2D,QAA3D,YAA2DG,gBAAfL,MAAA,KAAA,CAAK,GAAA,CAAA;AAAA,oBACjDE,mBAA4B,QAAA;AAAA,sBAArB,sBAAO,WAAA,KAAU;AAAA,oBAAA;;;;;;;;;;QAhBNF,MAAA,UAAA;gBAAjB;AAAA,sBACT,MAA0C;AAAA,YAA1CE,mBAA0C,OAAA;AAAA,cAArC,WAAQF,MAAA,aAAA,EAAcA,MAAA,UAAA,CAAU;AAAA,YAAA;;;;;;;;"}
@@ -33,7 +33,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
33
33
  big: unref(big),
34
34
  "custom-height": unref(customHeight)
35
35
  }, null, 8, ["title", "src", "big", "custom-height"])
36
- ])) : (openBlock(), createElementBlock("div", _hoisted_3, toDisplayString(__props.labels.noData), 1));
36
+ ])) : (openBlock(), createElementBlock("div", _hoisted_3, toDisplayString(_ctx.labels.noData), 1));
37
37
  };
38
38
  }
39
39
  });
@@ -1 +1 @@
1
- {"version":3,"file":"EpLinkVersion.vue.js","sources":["../../../src/components/medias/EpLinkVersion.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs } from \"vue\";\nimport EpLink from \"~/components/medias/EpLink.vue\";\nimport EpIframe from \"~/components/medias/EpIframe.vue\";\nimport type { EpLinkVersionProps } from \"~/types/medias/EpLinkVersion\";\n\nconst props = withDefaults(defineProps<EpLinkVersionProps>(), {\n big: false,\n labels: () => {\n return {\n noData: \"no data\",\n };\n },\n});\n\nconst { type, link, big, customHeight } = toRefs(props);\n</script>\n\n<template>\n <div v-if=\"type === 'button'\">\n <EpLink :title=\"link.title\" :url=\"link.url\"></EpLink>\n </div>\n <div v-else-if=\"type === 'iframe'\">\n <EpIframe\n :title=\"link.title\"\n :src=\"link.url\"\n :big=\"big\"\n :custom-height=\"customHeight\"\n ></EpIframe>\n </div>\n <div v-else>\n {{ labels.noData }}\n </div>\n</template>\n"],"names":["_unref","_createElementBlock","_createVNode","EpLink","EpIframe","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;;;;;;AAMA,UAAM,QAAQ;AASd,UAAM,EAAE,MAAM,MAAM,KAAK,aAAA,IAAiB,OAAO,KAAK;;aAIzCA,MAAA,IAAA,MAAI,yBAAfC,mBAEM,OAAA,YAAA;AAAA,QADJC,YAAqDC,aAAA;AAAA,UAA5C,OAAOH,MAAA,IAAA,EAAK;AAAA,UAAQ,KAAKA,MAAA,IAAA,EAAK;AAAA,QAAA;YAEzBA,MAAA,IAAA,MAAI,yBAApBC,mBAOM,OAAA,YAAA;AAAA,QANJC,YAKYE,aAAA;AAAA,UAJT,OAAOJ,MAAA,IAAA,EAAK;AAAA,UACZ,KAAKA,MAAA,IAAA,EAAK;AAAA,UACV,KAAKA,MAAA,GAAA;AAAA,UACL,iBAAeA,MAAA,YAAA;AAAA,QAAA;0BAGpBC,mBAEM,OAAA,YAAAI,gBADD,QAAA,OAAO,MAAM,GAAA,CAAA;AAAA;;;"}
1
+ {"version":3,"file":"EpLinkVersion.vue.js","sources":["../../../src/components/medias/EpLinkVersion.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs } from \"vue\";\nimport EpLink from \"~/components/medias/EpLink.vue\";\nimport EpIframe from \"~/components/medias/EpIframe.vue\";\nimport type { EpLinkVersionProps } from \"~/types/medias/EpLinkVersion\";\n\nconst props = withDefaults(defineProps<EpLinkVersionProps>(), {\n big: false,\n labels: () => {\n return {\n noData: \"no data\",\n };\n },\n});\n\nconst { type, link, big, customHeight } = toRefs(props);\n</script>\n\n<template>\n <div v-if=\"type === 'button'\">\n <EpLink :title=\"link.title\" :url=\"link.url\"></EpLink>\n </div>\n <div v-else-if=\"type === 'iframe'\">\n <EpIframe\n :title=\"link.title\"\n :src=\"link.url\"\n :big=\"big\"\n :custom-height=\"customHeight\"\n ></EpIframe>\n </div>\n <div v-else>\n {{ labels.noData }}\n </div>\n</template>\n"],"names":["_unref","_createElementBlock","_createVNode","EpLink","EpIframe","_toDisplayString","labels"],"mappings":";;;;;;;;;;;;;;;;;;;;AAMA,UAAM,QAAQ;AASd,UAAM,EAAE,MAAM,MAAM,KAAK,aAAA,IAAiB,OAAO,KAAK;;aAIzCA,MAAA,IAAA,MAAI,yBAAfC,mBAEM,OAAA,YAAA;AAAA,QADJC,YAAqDC,aAAA;AAAA,UAA5C,OAAOH,MAAA,IAAA,EAAK;AAAA,UAAQ,KAAKA,MAAA,IAAA,EAAK;AAAA,QAAA;YAEzBA,MAAA,IAAA,MAAI,yBAApBC,mBAOM,OAAA,YAAA;AAAA,QANJC,YAKYE,aAAA;AAAA,UAJT,OAAOJ,MAAA,IAAA,EAAK;AAAA,UACZ,KAAKA,MAAA,IAAA,EAAK;AAAA,UACV,KAAKA,MAAA,GAAA;AAAA,UACL,iBAAeA,MAAA,YAAA;AAAA,QAAA;0BAGpBC,mBAEM,OAAA,YAAAI,gBADDC,KAAAA,OAAO,MAAM,GAAA,CAAA;AAAA;;;"}
@@ -42,17 +42,17 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
42
42
  return (_ctx, _cache) => {
43
43
  return openBlock(), createElementBlock("div", _hoisted_1, [
44
44
  createVNode(unref(DotLottieVue), {
45
- src: __props.src,
46
- loop: __props.loop,
47
- autoplay: __props.autoPlay,
48
- style: normalizeStyle(`width: ${__props.width}px; height: ${__props.height}px;`),
49
- speed: Number(__props.speed),
50
- "play-on-hover": __props.playOnHover,
45
+ src: _ctx.src,
46
+ loop: _ctx.loop,
47
+ autoplay: _ctx.autoPlay,
48
+ style: normalizeStyle(`width: ${_ctx.width}px; height: ${_ctx.height}px;`),
49
+ speed: Number(_ctx.speed),
50
+ "play-on-hover": _ctx.playOnHover,
51
51
  ref_key: "playerRef",
52
52
  ref: playerRef,
53
- onClick: _cache[0] || (_cache[0] = ($event) => __props.pauseOnClick ? managePlayState() : "")
53
+ onClick: _cache[0] || (_cache[0] = ($event) => _ctx.pauseOnClick ? managePlayState() : "")
54
54
  }, null, 8, ["src", "loop", "autoplay", "style", "speed", "play-on-hover"]),
55
- __props.pauseButton ? (openBlock(), createElementBlock("button", {
55
+ _ctx.pauseButton ? (openBlock(), createElementBlock("button", {
56
56
  key: 0,
57
57
  class: "rounded bg-blue-500 text-white py-2 px-4 min-w-28 my-3",
58
58
  onClick: managePlayState
@@ -1 +1 @@
1
- {"version":3,"file":"EpLottieSvg.vue.js","sources":["../../../src/components/medias/EpLottieSvg.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { DotLottieVue } from \"@lottiefiles/dotlottie-vue\";\nimport { ref, watchEffect } from \"vue\";\nimport type { EpLottieSvgProps } from \"~/types/medias/EpLottieSvg\";\n\nconst props = withDefaults(defineProps<EpLottieSvgProps>(), {\n autoPlay: false,\n loop: false,\n speed: 1,\n width: 150,\n height: 150,\n pauseOnClick: false,\n pauseButton: false,\n playOnHover: false,\n});\n\nconst buttonText = ref(props.autoPlay ? \"Arrêter\" : \"Jouer\");\n\nconst playerRef = ref<any | null>(null);\n\nconst managePlayState = () => {\n if (playerRef.value) {\n if (playerRef.value.getDotLottieInstance().isPlaying) {\n playerRef.value.getDotLottieInstance().pause();\n buttonText.value = \"Jouer\";\n } else {\n playerRef.value.getDotLottieInstance().play();\n buttonText.value = \"Arrêter\";\n }\n }\n};\n\nwatchEffect(() => {\n if (playerRef.value) {\n playerRef.value.getDotLottieInstance().addEventListener(\"complete\", () => {\n if (props.onComplete) {\n props.onComplete();\n }\n });\n }\n});\n</script>\n\n<template>\n <div class=\"flex flex-col items-center\">\n <DotLottieVue\n :src=\"src\"\n :loop=\"loop\"\n :autoplay=\"autoPlay\"\n :style=\"`width: ${width}px; height: ${height}px;`\"\n :speed=\"Number(speed)\"\n :play-on-hover=\"playOnHover\"\n ref=\"playerRef\"\n @click=\"pauseOnClick ? managePlayState() : ''\"\n />\n <button\n class=\"rounded bg-blue-500 text-white py-2 px-4 min-w-28 my-3\"\n v-if=\"pauseButton\"\n @click=\"managePlayState\"\n >\n {{ buttonText }}\n </button>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_createVNode","_unref","_normalizeStyle"],"mappings":";;;;;;;;;;;;;;;;;;AAKA,UAAM,QAAQ;AAWd,UAAM,aAAa,IAAI,MAAM,WAAW,YAAY,OAAO;AAE3D,UAAM,YAAY,IAAgB,IAAI;AAEtC,UAAM,kBAAkB,MAAM;AAC5B,UAAI,UAAU,OAAO;AACnB,YAAI,UAAU,MAAM,qBAAA,EAAuB,WAAW;AACpD,oBAAU,MAAM,qBAAA,EAAuB,MAAA;AACvC,qBAAW,QAAQ;AAAA,QACrB,OAAO;AACL,oBAAU,MAAM,qBAAA,EAAuB,KAAA;AACvC,qBAAW,QAAQ;AAAA,QACrB;AAAA,MACF;AAAA,IACF;AAEA,gBAAY,MAAM;AAChB,UAAI,UAAU,OAAO;AACnB,kBAAU,MAAM,qBAAA,EAAuB,iBAAiB,YAAY,MAAM;AACxE,cAAI,MAAM,YAAY;AACpB,kBAAM,WAAA;AAAA,UACR;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,CAAC;;AAIC,aAAAA,UAAA,GAAAC,mBAkBM,OAlBN,YAkBM;AAAA,QAjBJC,YASEC,MAAA,YAAA,GAAA;AAAA,UARC,KAAK,QAAA;AAAA,UACL,MAAM,QAAA;AAAA,UACN,UAAU,QAAA;AAAA,UACV,OAAKC,eAAA,UAAY,QAAA,KAAK,eAAe,QAAA,MAAM,KAAA;AAAA,UAC3C,OAAO,OAAO,QAAA,KAAK;AAAA,UACnB,iBAAe,QAAA;AAAA,mBACZ;AAAA,UAAJ,KAAI;AAAA,UACH,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAE,QAAA,eAAe,gBAAA,IAAe;AAAA,QAAA;QAIhC,QAAA,4BAFRH,mBAMS,UAAA;AAAA;UALP,OAAM;AAAA,UAEL,SAAO;AAAA,QAAA,mBAEL,WAAA,KAAU,GAAA,CAAA;;;;;"}
1
+ {"version":3,"file":"EpLottieSvg.vue.js","sources":["../../../src/components/medias/EpLottieSvg.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { DotLottieVue } from \"@lottiefiles/dotlottie-vue\";\nimport { ref, watchEffect } from \"vue\";\nimport type { EpLottieSvgProps } from \"~/types/medias/EpLottieSvg\";\n\nconst props = withDefaults(defineProps<EpLottieSvgProps>(), {\n autoPlay: false,\n loop: false,\n speed: 1,\n width: 150,\n height: 150,\n pauseOnClick: false,\n pauseButton: false,\n playOnHover: false,\n});\n\nconst buttonText = ref(props.autoPlay ? \"Arrêter\" : \"Jouer\");\n\nconst playerRef = ref<any | null>(null);\n\nconst managePlayState = () => {\n if (playerRef.value) {\n if (playerRef.value.getDotLottieInstance().isPlaying) {\n playerRef.value.getDotLottieInstance().pause();\n buttonText.value = \"Jouer\";\n } else {\n playerRef.value.getDotLottieInstance().play();\n buttonText.value = \"Arrêter\";\n }\n }\n};\n\nwatchEffect(() => {\n if (playerRef.value) {\n playerRef.value.getDotLottieInstance().addEventListener(\"complete\", () => {\n if (props.onComplete) {\n props.onComplete();\n }\n });\n }\n});\n</script>\n\n<template>\n <div class=\"flex flex-col items-center\">\n <DotLottieVue\n :src=\"src\"\n :loop=\"loop\"\n :autoplay=\"autoPlay\"\n :style=\"`width: ${width}px; height: ${height}px;`\"\n :speed=\"Number(speed)\"\n :play-on-hover=\"playOnHover\"\n ref=\"playerRef\"\n @click=\"pauseOnClick ? managePlayState() : ''\"\n />\n <button\n class=\"rounded bg-blue-500 text-white py-2 px-4 min-w-28 my-3\"\n v-if=\"pauseButton\"\n @click=\"managePlayState\"\n >\n {{ buttonText }}\n </button>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_createVNode","_unref","src","loop","autoPlay","_normalizeStyle","width","height","speed","playOnHover","pauseOnClick","pauseButton"],"mappings":";;;;;;;;;;;;;;;;;;AAKA,UAAM,QAAQ;AAWd,UAAM,aAAa,IAAI,MAAM,WAAW,YAAY,OAAO;AAE3D,UAAM,YAAY,IAAgB,IAAI;AAEtC,UAAM,kBAAkB,MAAM;AAC5B,UAAI,UAAU,OAAO;AACnB,YAAI,UAAU,MAAM,qBAAA,EAAuB,WAAW;AACpD,oBAAU,MAAM,qBAAA,EAAuB,MAAA;AACvC,qBAAW,QAAQ;AAAA,QACrB,OAAO;AACL,oBAAU,MAAM,qBAAA,EAAuB,KAAA;AACvC,qBAAW,QAAQ;AAAA,QACrB;AAAA,MACF;AAAA,IACF;AAEA,gBAAY,MAAM;AAChB,UAAI,UAAU,OAAO;AACnB,kBAAU,MAAM,qBAAA,EAAuB,iBAAiB,YAAY,MAAM;AACxE,cAAI,MAAM,YAAY;AACpB,kBAAM,WAAA;AAAA,UACR;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,CAAC;;AAIC,aAAAA,UAAA,GAAAC,mBAkBM,OAlBN,YAkBM;AAAA,QAjBJC,YASEC,MAAA,YAAA,GAAA;AAAA,UARC,KAAKC,KAAAA;AAAAA,UACL,MAAMC,KAAAA;AAAAA,UACN,UAAUC,KAAAA;AAAAA,UACV,OAAKC,eAAA,UAAYC,KAAAA,KAAK,eAAeC,KAAAA,MAAM,KAAA;AAAA,UAC3C,OAAO,OAAOC,KAAAA,KAAK;AAAA,UACnB,iBAAeC,KAAAA;AAAAA,mBACZ;AAAA,UAAJ,KAAI;AAAA,UACH,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEC,KAAAA,eAAe,gBAAA,IAAe;AAAA,QAAA;QAIhCC,KAAAA,4BAFRZ,mBAMS,UAAA;AAAA;UALP,OAAM;AAAA,UAEL,SAAO;AAAA,QAAA,mBAEL,WAAA,KAAU,GAAA,CAAA;;;;;"}