ep-lib-ts 1.0.62 → 1.0.64
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.
- package/dist/components/basics/EpAvatar.vue.js +54 -1
- package/dist/components/basics/EpAvatar.vue.js.map +1 -1
- package/dist/components/basics/EpAvatar.vue2.js +1 -54
- package/dist/components/basics/EpAvatar.vue2.js.map +1 -1
- package/dist/components/basics/EpBadge.vue2.js +1 -10
- package/dist/components/basics/EpBadge.vue2.js.map +1 -1
- package/dist/components/basics/EpBtn.vue.js.map +1 -1
- package/dist/components/basics/EpCard.vue.js +2 -3
- package/dist/components/basics/EpCard.vue.js.map +1 -1
- package/dist/components/basics/EpChip.vue.js.map +1 -1
- package/dist/components/basics/EpDivider.vue.js +1 -2
- package/dist/components/basics/EpDivider.vue.js.map +1 -1
- package/dist/components/basics/EpFlex.vue.js.map +1 -1
- package/dist/components/basics/EpHover.vue.js.map +1 -1
- package/dist/components/basics/EpHoverCard.vue.js +2 -3
- package/dist/components/basics/EpHoverCard.vue.js.map +1 -1
- package/dist/components/basics/EpIcon.vue.js.map +1 -1
- package/dist/components/basics/EpImg.vue.js +1 -1
- package/dist/components/basics/EpImg.vue.js.map +1 -1
- package/dist/components/basics/EpImgCarousel.vue.js.map +1 -1
- package/dist/components/basics/EpListItem.vue.js +1 -1
- package/dist/components/basics/EpListItem.vue.js.map +1 -1
- package/dist/components/basics/EpSection.vue.js.map +1 -1
- package/dist/components/basics/EpSectionCols.vue.js.map +1 -1
- package/dist/components/basics/EpSpinner.vue.js +1 -2
- package/dist/components/basics/EpSpinner.vue.js.map +1 -1
- package/dist/components/basics/EpStackedList.vue.js +1 -1
- package/dist/components/basics/EpStackedList.vue.js.map +1 -1
- package/dist/components/basics/EpTable.vue.js.map +1 -1
- package/dist/components/basics/EpText.vue.js +4 -3
- package/dist/components/basics/EpText.vue.js.map +1 -1
- package/dist/components/charts/EpBarChart.vue.js.map +1 -1
- package/dist/components/charts/EpFunnelChart.vue.js.map +1 -1
- package/dist/components/charts/EpLineChart.vue.js.map +1 -1
- package/dist/components/charts/EpPieChart.vue.js.map +1 -1
- package/dist/components/educationals/EpBranchingScenario.vue.js +1 -1
- package/dist/components/educationals/EpBranchingScenario.vue2.js.map +1 -1
- package/dist/components/educationals/EpCodeblock.vue.js.map +1 -1
- package/dist/components/educationals/EpConclusion.vue.js.map +1 -1
- package/dist/components/educationals/EpDescription.vue.js.map +1 -1
- package/dist/components/educationals/EpDocument.vue.js.map +1 -1
- package/dist/components/educationals/EpEdu.vue.js.map +1 -1
- package/dist/components/educationals/EpInstructions.vue.js.map +1 -1
- package/dist/components/educationals/EpIntroduction.vue.js.map +1 -1
- package/dist/components/educationals/EpObjective.vue.js.map +1 -1
- package/dist/components/educationals/EpReading.vue.js.map +1 -1
- package/dist/components/educationals/EpResource.vue.js +1 -1
- package/dist/components/educationals/EpResource.vue.js.map +1 -1
- package/dist/components/educationals/EpScope.vue.js.map +1 -1
- package/dist/components/educationals/EpSpecificObjective.vue.js.map +1 -1
- package/dist/components/forms/EpCheckbox.vue2.js.map +1 -1
- package/dist/components/forms/EpInput.vue2.js.map +1 -1
- package/dist/components/forms/EpRadio.vue2.js.map +1 -1
- package/dist/components/forms/EpRadioSummative.vue2.js.map +1 -1
- package/dist/components/forms/EpSelect.vue2.js.map +1 -1
- package/dist/components/forms/EpSwitch.vue2.js.map +1 -1
- package/dist/components/forms/EpTextarea.vue2.js.map +1 -1
- package/dist/components/forms/EpToggle.vue2.js.map +1 -1
- package/dist/components/interactions/EpAccordeon.vue.js +1 -1
- package/dist/components/interactions/EpAccordeon.vue2.js +2 -6
- package/dist/components/interactions/EpAccordeon.vue2.js.map +1 -1
- package/dist/components/interactions/EpContentSlider.vue.js +4 -5
- package/dist/components/interactions/EpContentSlider.vue.js.map +1 -1
- package/dist/components/interactions/EpDraggable.vue.js.map +1 -1
- package/dist/components/interactions/EpHotSpot.vue.js.map +1 -1
- package/dist/components/interactions/EpModal.vue.js +3 -3
- package/dist/components/interactions/EpModal.vue.js.map +1 -1
- package/dist/components/interactions/EpQuestion.vue.js +1 -1
- package/dist/components/interactions/EpQuestion.vue.js.map +1 -1
- package/dist/components/interactions/EpSummativeTable.vue.js.map +1 -1
- package/dist/components/interactions/EpSvgShow.vue.js.map +1 -1
- package/dist/components/interactions/EpTooltip.vue.js.map +1 -1
- package/dist/components/interactions/{EpTooltip.vue3.js → EpTooltip.vue2.js} +1 -2
- package/dist/components/interactions/EpTooltip.vue2.js.map +1 -0
- package/dist/components/medias/EpAudio.vue.js +1 -2
- package/dist/components/medias/EpAudio.vue.js.map +1 -1
- package/dist/components/medias/EpCardLink.vue.js.map +1 -1
- package/dist/components/medias/EpCarousel.vue.js +197 -5
- package/dist/components/medias/EpCarousel.vue.js.map +1 -1
- package/dist/components/medias/EpCarousel.vue2.js +1 -196
- package/dist/components/medias/EpCarousel.vue2.js.map +1 -1
- package/dist/components/medias/EpHierarchy.vue.js +1 -1
- package/dist/components/medias/EpHierarchy.vue2.js +6 -6
- package/dist/components/medias/EpHierarchy.vue2.js.map +1 -1
- package/dist/components/medias/EpIframe.vue.js.map +1 -1
- package/dist/components/medias/EpKatex.vue.js +1 -1
- package/dist/components/medias/EpKatex.vue2.js.map +1 -1
- package/dist/components/medias/EpLink.vue.js +1 -5
- package/dist/components/medias/EpLink.vue.js.map +1 -1
- package/dist/components/medias/EpLinkVersion.vue.js.map +1 -1
- package/dist/components/medias/EpLottieSvg.vue.js.map +1 -1
- package/dist/components/medias/EpSensibleImage.vue.js +1 -1
- package/dist/components/medias/EpSensibleImage.vue2.js +2 -2
- package/dist/components/medias/EpSensibleImage.vue2.js.map +1 -1
- package/dist/components/medias/EpSoftware.vue.js.map +1 -1
- package/dist/components/medias/EpSvg.vue.js.map +1 -1
- package/dist/components/medias/EpTerm.vue.js.map +1 -1
- package/dist/components/medias/EpTimeLine.vue.js +5 -98
- package/dist/components/medias/EpTimeLine.vue.js.map +1 -1
- package/dist/components/medias/EpTimeLine.vue2.js +101 -0
- package/dist/components/medias/EpTimeLine.vue2.js.map +1 -0
- package/dist/components/medias/EpVideo.vue.js.map +1 -1
- package/dist/components/medias/EpVideoPanopto.vue.js.map +1 -1
- package/dist/components/medias/EpWordDef.vue.js.map +1 -1
- package/dist/components/signages/EpAlert.vue.js +1 -1
- package/dist/components/signages/EpAlert.vue2.js.map +1 -1
- package/dist/components/signages/EpBadge.vue.js.map +1 -1
- package/dist/components/signages/EpHeader.vue.js.map +1 -1
- package/dist/components/signages/EpQuote.vue.js.map +1 -1
- package/dist/components/signages/EpSkeleton.vue.js +5 -40
- package/dist/components/signages/EpSkeleton.vue.js.map +1 -1
- package/dist/components/signages/EpSkeleton.vue2.js +43 -0
- package/dist/components/signages/EpSkeleton.vue2.js.map +1 -0
- package/dist/components/tools/DisplayBox.vue2.js +1 -1
- package/dist/components/tools/DisplayBox.vue2.js.map +1 -1
- package/dist/components/tools/TextMedia.vue2.js +1 -1
- package/dist/components/tools/TextMedia.vue2.js.map +1 -1
- package/dist/components/tools/TimelineItem.vue.js +1 -1
- package/dist/components/tools/TimelineItem.vue2.js +1 -1
- package/dist/components/tools/TimelineItem.vue2.js.map +1 -1
- package/dist/components/tools/TwoColsMedia.vue2.js +2 -2
- package/dist/components/tools/TwoColsMedia.vue2.js.map +1 -1
- package/dist/entry/basics/EpBtn.d.ts +3 -2
- package/dist/entry/basics/EpBtn.js +3 -1
- package/dist/entry/basics/EpBtn.js.map +1 -1
- package/dist/entry/basics/EpCard.d.ts +3 -2
- package/dist/entry/basics/EpCard.js +3 -1
- package/dist/entry/basics/EpCard.js.map +1 -1
- package/dist/entry/basics/EpChip.d.ts +3 -2
- package/dist/entry/basics/EpChip.js +3 -1
- package/dist/entry/basics/EpChip.js.map +1 -1
- package/dist/entry/basics/EpDivider.d.ts +3 -2
- package/dist/entry/basics/EpDivider.js +3 -1
- package/dist/entry/basics/EpDivider.js.map +1 -1
- package/dist/entry/basics/EpFlex.d.ts +3 -2
- package/dist/entry/basics/EpFlex.js +3 -1
- package/dist/entry/basics/EpFlex.js.map +1 -1
- package/dist/entry/basics/EpHover.d.ts +3 -2
- package/dist/entry/basics/EpHover.js +3 -1
- package/dist/entry/basics/EpHover.js.map +1 -1
- package/dist/entry/basics/EpHoverCard.d.ts +3 -2
- package/dist/entry/basics/EpHoverCard.js +3 -1
- package/dist/entry/basics/EpHoverCard.js.map +1 -1
- package/dist/entry/basics/EpIcon.d.ts +3 -2
- package/dist/entry/basics/EpIcon.js +3 -1
- package/dist/entry/basics/EpIcon.js.map +1 -1
- package/dist/entry/basics/EpImg.d.ts +3 -2
- package/dist/entry/basics/EpImg.js +3 -1
- package/dist/entry/basics/EpImg.js.map +1 -1
- package/dist/entry/basics/EpImgCarousel.d.ts +3 -2
- package/dist/entry/basics/EpImgCarousel.js +3 -1
- package/dist/entry/basics/EpImgCarousel.js.map +1 -1
- package/dist/entry/basics/EpList.d.ts +3 -2
- package/dist/entry/basics/EpList.js +3 -1
- package/dist/entry/basics/EpList.js.map +1 -1
- package/dist/entry/basics/EpListItem.d.ts +3 -2
- package/dist/entry/basics/EpListItem.js +3 -1
- package/dist/entry/basics/EpListItem.js.map +1 -1
- package/dist/entry/basics/EpSection.d.ts +3 -2
- package/dist/entry/basics/EpSection.js +3 -1
- package/dist/entry/basics/EpSection.js.map +1 -1
- package/dist/entry/basics/EpSectionCols.d.ts +3 -2
- package/dist/entry/basics/EpSectionCols.js +3 -1
- package/dist/entry/basics/EpSectionCols.js.map +1 -1
- package/dist/entry/basics/EpSpinner.d.ts +3 -2
- package/dist/entry/basics/EpSpinner.js +3 -1
- package/dist/entry/basics/EpSpinner.js.map +1 -1
- package/dist/entry/basics/EpStackedList.d.ts +3 -2
- package/dist/entry/basics/EpStackedList.js +3 -1
- package/dist/entry/basics/EpStackedList.js.map +1 -1
- package/dist/entry/basics/EpTable.d.ts +3 -2
- package/dist/entry/basics/EpTable.js +3 -1
- package/dist/entry/basics/EpTable.js.map +1 -1
- package/dist/entry/basics/EpText.d.ts +3 -2
- package/dist/entry/basics/EpText.js +3 -1
- package/dist/entry/basics/EpText.js.map +1 -1
- package/dist/entry/charts/EpBarChart.d.ts +3 -2
- package/dist/entry/charts/EpBarChart.js +3 -1
- package/dist/entry/charts/EpBarChart.js.map +1 -1
- package/dist/entry/charts/EpFunnelChart.d.ts +3 -2
- package/dist/entry/charts/EpFunnelChart.js +3 -1
- package/dist/entry/charts/EpFunnelChart.js.map +1 -1
- package/dist/entry/charts/EpLineChart.d.ts +3 -2
- package/dist/entry/charts/EpLineChart.js +3 -1
- package/dist/entry/charts/EpLineChart.js.map +1 -1
- package/dist/entry/charts/EpPieChart.d.ts +3 -2
- package/dist/entry/charts/EpPieChart.js +3 -1
- package/dist/entry/charts/EpPieChart.js.map +1 -1
- package/dist/entry/educationals/EpBranchingScenario.d.ts +3 -2
- package/dist/entry/educationals/EpBranchingScenario.js +3 -1
- package/dist/entry/educationals/EpBranchingScenario.js.map +1 -1
- package/dist/entry/educationals/EpCodeblock.d.ts +3 -2
- package/dist/entry/educationals/EpCodeblock.js +3 -1
- package/dist/entry/educationals/EpCodeblock.js.map +1 -1
- package/dist/entry/educationals/EpConclusion.d.ts +3 -2
- package/dist/entry/educationals/EpConclusion.js +3 -1
- package/dist/entry/educationals/EpConclusion.js.map +1 -1
- package/dist/entry/educationals/EpDescription.d.ts +3 -2
- package/dist/entry/educationals/EpDescription.js +3 -1
- package/dist/entry/educationals/EpDescription.js.map +1 -1
- package/dist/entry/educationals/EpDocument.d.ts +3 -2
- package/dist/entry/educationals/EpDocument.js +3 -1
- package/dist/entry/educationals/EpDocument.js.map +1 -1
- package/dist/entry/educationals/EpEdu.d.ts +3 -2
- package/dist/entry/educationals/EpEdu.js +3 -1
- package/dist/entry/educationals/EpEdu.js.map +1 -1
- package/dist/entry/educationals/EpInstructions.d.ts +3 -2
- package/dist/entry/educationals/EpInstructions.js +3 -1
- package/dist/entry/educationals/EpInstructions.js.map +1 -1
- package/dist/entry/educationals/EpIntroduction.d.ts +3 -2
- package/dist/entry/educationals/EpIntroduction.js +3 -1
- package/dist/entry/educationals/EpIntroduction.js.map +1 -1
- package/dist/entry/educationals/EpObjective.d.ts +3 -2
- package/dist/entry/educationals/EpObjective.js +3 -1
- package/dist/entry/educationals/EpObjective.js.map +1 -1
- package/dist/entry/educationals/EpReading.d.ts +3 -2
- package/dist/entry/educationals/EpReading.js +3 -1
- package/dist/entry/educationals/EpReading.js.map +1 -1
- package/dist/entry/educationals/EpResource.d.ts +3 -2
- package/dist/entry/educationals/EpResource.js +3 -1
- package/dist/entry/educationals/EpResource.js.map +1 -1
- package/dist/entry/educationals/EpScope.d.ts +3 -2
- package/dist/entry/educationals/EpScope.js +3 -1
- package/dist/entry/educationals/EpScope.js.map +1 -1
- package/dist/entry/educationals/EpSpecificObjective.d.ts +3 -2
- package/dist/entry/educationals/EpSpecificObjective.js +3 -1
- package/dist/entry/educationals/EpSpecificObjective.js.map +1 -1
- package/dist/entry/interactions/EpAccordeon.d.ts +3 -2
- package/dist/entry/interactions/EpAccordeon.js +3 -1
- package/dist/entry/interactions/EpAccordeon.js.map +1 -1
- package/dist/entry/interactions/EpContentSlider.d.ts +3 -2
- package/dist/entry/interactions/EpContentSlider.js +3 -1
- package/dist/entry/interactions/EpContentSlider.js.map +1 -1
- package/dist/entry/interactions/EpDarkMode.d.ts +3 -2
- package/dist/entry/interactions/EpDarkMode.js +3 -1
- package/dist/entry/interactions/EpDarkMode.js.map +1 -1
- package/dist/entry/interactions/EpDraggable.d.ts +3 -2
- package/dist/entry/interactions/EpDraggable.js +3 -1
- package/dist/entry/interactions/EpDraggable.js.map +1 -1
- package/dist/entry/interactions/EpHotSpot.d.ts +3 -2
- package/dist/entry/interactions/EpHotSpot.js +3 -1
- package/dist/entry/interactions/EpHotSpot.js.map +1 -1
- package/dist/entry/interactions/EpModal.d.ts +3 -2
- package/dist/entry/interactions/EpModal.js +3 -1
- package/dist/entry/interactions/EpModal.js.map +1 -1
- package/dist/entry/interactions/EpQuestion.d.ts +3 -2
- package/dist/entry/interactions/EpQuestion.js +3 -1
- package/dist/entry/interactions/EpQuestion.js.map +1 -1
- package/dist/entry/interactions/EpSummativeTable.d.ts +3 -2
- package/dist/entry/interactions/EpSummativeTable.js +3 -1
- package/dist/entry/interactions/EpSummativeTable.js.map +1 -1
- package/dist/entry/interactions/EpSvgShow.d.ts +3 -2
- package/dist/entry/interactions/EpSvgShow.js +3 -1
- package/dist/entry/interactions/EpSvgShow.js.map +1 -1
- package/dist/entry/interactions/EpTabs.d.ts +3 -2
- package/dist/entry/interactions/EpTabs.js +3 -1
- package/dist/entry/interactions/EpTabs.js.map +1 -1
- package/dist/entry/interactions/EpTooltip.d.ts +3 -2
- package/dist/entry/interactions/EpTooltip.js +3 -2
- package/dist/entry/interactions/EpTooltip.js.map +1 -1
- package/dist/entry/medias/EpAudio.d.ts +3 -2
- package/dist/entry/medias/EpAudio.js +3 -1
- package/dist/entry/medias/EpAudio.js.map +1 -1
- package/dist/entry/medias/EpCardLink.d.ts +3 -2
- package/dist/entry/medias/EpCardLink.js +3 -1
- package/dist/entry/medias/EpCardLink.js.map +1 -1
- package/dist/entry/medias/EpCarousel.d.ts +3 -2
- package/dist/entry/medias/EpCarousel.js +4 -2
- package/dist/entry/medias/EpCarousel.js.map +1 -1
- package/dist/entry/medias/EpHierarchy.d.ts +3 -2
- package/dist/entry/medias/EpHierarchy.js +3 -1
- package/dist/entry/medias/EpHierarchy.js.map +1 -1
- package/dist/entry/medias/EpIframe.d.ts +3 -2
- package/dist/entry/medias/EpIframe.js +3 -1
- package/dist/entry/medias/EpIframe.js.map +1 -1
- package/dist/entry/medias/EpKatex.d.ts +3 -2
- package/dist/entry/medias/EpKatex.js +3 -1
- package/dist/entry/medias/EpKatex.js.map +1 -1
- package/dist/entry/medias/EpLink.d.ts +3 -2
- package/dist/entry/medias/EpLink.js +3 -1
- package/dist/entry/medias/EpLink.js.map +1 -1
- package/dist/entry/medias/EpLinkVersion.d.ts +3 -2
- package/dist/entry/medias/EpLinkVersion.js +3 -1
- package/dist/entry/medias/EpLinkVersion.js.map +1 -1
- package/dist/entry/medias/EpLottieSvg.d.ts +3 -2
- package/dist/entry/medias/EpLottieSvg.js +3 -1
- package/dist/entry/medias/EpLottieSvg.js.map +1 -1
- package/dist/entry/medias/EpSoftware.d.ts +3 -2
- package/dist/entry/medias/EpSoftware.js +3 -1
- package/dist/entry/medias/EpSoftware.js.map +1 -1
- package/dist/entry/medias/EpSvg.d.ts +3 -2
- package/dist/entry/medias/EpSvg.js +3 -1
- package/dist/entry/medias/EpSvg.js.map +1 -1
- package/dist/entry/medias/EpTerm.d.ts +3 -2
- package/dist/entry/medias/EpTerm.js +3 -1
- package/dist/entry/medias/EpTerm.js.map +1 -1
- package/dist/entry/medias/EpTimeLine.d.ts +3 -2
- package/dist/entry/medias/EpTimeLine.js +4 -3
- package/dist/entry/medias/EpTimeLine.js.map +1 -1
- package/dist/entry/medias/EpVideo.d.ts +3 -2
- package/dist/entry/medias/EpVideo.js +3 -1
- package/dist/entry/medias/EpVideo.js.map +1 -1
- package/dist/entry/medias/EpVideoPanopto.d.ts +3 -2
- package/dist/entry/medias/EpVideoPanopto.js +3 -1
- package/dist/entry/medias/EpVideoPanopto.js.map +1 -1
- package/dist/entry/medias/EpWordDef.d.ts +3 -2
- package/dist/entry/medias/EpWordDef.js +3 -1
- package/dist/entry/medias/EpWordDef.js.map +1 -1
- package/dist/entry/signages/EpAlert.d.ts +3 -2
- package/dist/entry/signages/EpAlert.js +3 -1
- package/dist/entry/signages/EpAlert.js.map +1 -1
- package/dist/entry/signages/EpBadge.d.ts +3 -2
- package/dist/entry/signages/EpBadge.js +3 -1
- package/dist/entry/signages/EpBadge.js.map +1 -1
- package/dist/entry/signages/EpHeader.d.ts +3 -2
- package/dist/entry/signages/EpHeader.js +3 -1
- package/dist/entry/signages/EpHeader.js.map +1 -1
- package/dist/entry/signages/EpNothing.d.ts +3 -2
- package/dist/entry/signages/EpNothing.js +3 -1
- package/dist/entry/signages/EpNothing.js.map +1 -1
- package/dist/entry/signages/EpQuote.d.ts +3 -2
- package/dist/entry/signages/EpQuote.js +3 -1
- package/dist/entry/signages/EpQuote.js.map +1 -1
- package/dist/entry/signages/EpSkeleton.d.ts +3 -2
- package/dist/entry/signages/EpSkeleton.js +4 -3
- package/dist/entry/signages/EpSkeleton.js.map +1 -1
- package/dist/index.js +171 -173
- package/dist/index.js.map +1 -1
- package/dist/styles.css +587 -0
- package/dist/types/Accordeon.js +1 -1
- package/dist/types/Accordeon.js.map +1 -1
- package/dist/types/Border.d.ts +1 -2
- package/dist/types/Btn.js +24 -24
- package/dist/types/Btn.js.map +1 -1
- package/dist/types/Codeblock.d.ts +1 -2
- package/dist/types/Codeblock.js.map +1 -1
- package/dist/types/Colors.d.ts +1 -0
- package/dist/types/basics/EpAvatar.d.ts +2 -10
- package/dist/types/basics/EpBadge.d.ts +2 -1
- package/package.json +15 -17
- package/dist/assets/components/educationals/EpBranchingScenario.css +0 -40
- package/dist/assets/components/educationals/EpCodeblock.css +0 -4
- package/dist/assets/components/interactions/EpAccordeon.css +0 -5
- package/dist/assets/components/interactions/EpModal.css +0 -38
- package/dist/assets/components/interactions/EpTooltip.css +0 -91
- package/dist/assets/components/medias/EpCarousel.css +0 -9
- package/dist/assets/components/medias/EpHierarchy.css +0 -9
- package/dist/assets/components/medias/EpKatex.css +0 -4
- package/dist/assets/components/medias/EpSensibleImage.css +0 -4
- package/dist/assets/components/medias/EpTimeLine.css +0 -10
- package/dist/assets/components/signages/EpAlert.css +0 -5
- package/dist/assets/components/signages/EpSkeleton.css +0 -5
- package/dist/assets/components/tools/DisplayBox.css +0 -6
- package/dist/assets/components/tools/TimelineItem.css +0 -5
- package/dist/assets/style.css +0 -4968
- package/dist/components/interactions/EpTooltip.vue3.js.map +0 -1
- package/dist/components/medias/EpTimeLine.vue3.js +0 -6
- package/dist/components/medias/EpTimeLine.vue3.js.map +0 -1
- package/dist/components/signages/EpSkeleton.vue3.js +0 -6
- package/dist/components/signages/EpSkeleton.vue3.js.map +0 -1
- package/dist/composables/useColors.js +0 -135
- package/dist/composables/useColors.js.map +0 -1
|
@@ -1,199 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { mdiChevronLeftCircleOutline, mdiChevronRightCircleOutline } from "@mdi/js";
|
|
3
|
-
import _sfc_main$1 from "../basics/EpIcon.vue.js";
|
|
4
|
-
import _sfc_main$2 from "../basics/EpBtn.vue.js";
|
|
5
|
-
import _sfc_main$3 from "../interactions/EpModal.vue.js";
|
|
6
|
-
/* empty css */
|
|
7
|
-
import _sfc_main$4 from "../basics/EpImgCarousel.vue.js";
|
|
8
|
-
const _hoisted_1 = {
|
|
9
|
-
key: 0,
|
|
10
|
-
class: "text-xl font-semibold mt-10 mb-4 text-center"
|
|
11
|
-
};
|
|
12
|
-
const _hoisted_2 = { key: 1 };
|
|
13
|
-
const _hoisted_3 = { class: "flex items-center justify-center mb-2" };
|
|
14
|
-
const _hoisted_4 = { class: "bg-white dark:bg-dark shadow-xl p-4 lg:max-w-[800px] mx-auto border-solid border" };
|
|
15
|
-
const _hoisted_5 = ["src"];
|
|
16
|
-
const _hoisted_6 = {
|
|
17
|
-
key: 0,
|
|
18
|
-
class: "mt-2 text-sm text-center text-base-dark dark:text-white"
|
|
19
|
-
};
|
|
20
|
-
const _hoisted_7 = {
|
|
21
|
-
key: 1,
|
|
22
|
-
class: "flex justify-end mt-2"
|
|
23
|
-
};
|
|
24
|
-
const _hoisted_8 = ["innerHTML"];
|
|
25
|
-
const _hoisted_9 = { class: "flex justify-end" };
|
|
26
|
-
const _hoisted_10 = {
|
|
27
|
-
key: 3,
|
|
28
|
-
class: /* @__PURE__ */ normalizeClass(`columns-3xs mx-5 gap-2`)
|
|
29
|
-
};
|
|
30
|
-
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
31
|
-
__name: "EpCarousel",
|
|
32
|
-
props: {
|
|
33
|
-
carrouselImg: {},
|
|
34
|
-
title: {},
|
|
35
|
-
gallery: { type: Boolean, default: false },
|
|
36
|
-
puzzle: { type: Boolean, default: false },
|
|
37
|
-
sizeThumbnail: { default: "medium" },
|
|
38
|
-
isCenter: { type: Boolean, default: false },
|
|
39
|
-
labelClose: { default: "Fermer" },
|
|
40
|
-
labelRef: { default: "Référence" },
|
|
41
|
-
labelRefLib: { default: "Référence bibliographique" }
|
|
42
|
-
},
|
|
43
|
-
setup(__props) {
|
|
44
|
-
const props = __props;
|
|
45
|
-
const currentIndex = ref(0);
|
|
46
|
-
const dialog = ref(false);
|
|
47
|
-
const prevSlide = () => {
|
|
48
|
-
const isFirstSlide = currentIndex.value === 0;
|
|
49
|
-
const newIndex = isFirstSlide ? props.carrouselImg.length - 1 : currentIndex.value - 1;
|
|
50
|
-
currentIndex.value = newIndex;
|
|
51
|
-
};
|
|
52
|
-
const nextSlide = () => {
|
|
53
|
-
const isTheLastSlide = currentIndex.value === props.carrouselImg.length - 1;
|
|
54
|
-
const newIndex = isTheLastSlide ? 0 : currentIndex.value + 1;
|
|
55
|
-
currentIndex.value = newIndex;
|
|
56
|
-
};
|
|
57
|
-
const isCenterStyle = computed(() => {
|
|
58
|
-
return props.isCenter ? "justify-center" : "";
|
|
59
|
-
});
|
|
60
|
-
const managedIndex = ref(0);
|
|
61
|
-
const managedInfoModal = ref({ src: "", caption: "", bib: "" });
|
|
62
|
-
const newFocus = (index) => {
|
|
63
|
-
managedIndex.value = index;
|
|
64
|
-
managedInfoModal.value = {
|
|
65
|
-
src: props.carrouselImg[index].src,
|
|
66
|
-
caption: props.carrouselImg[index].caption,
|
|
67
|
-
bib: props.carrouselImg[index].bib
|
|
68
|
-
};
|
|
69
|
-
};
|
|
70
|
-
const managedPrevSlide = () => {
|
|
71
|
-
const isFirstSlide = managedIndex.value === 0;
|
|
72
|
-
const newIndex = isFirstSlide ? props.carrouselImg.length - 1 : managedIndex.value - 1;
|
|
73
|
-
managedIndex.value = newIndex;
|
|
74
|
-
managedInfoModal.value = {
|
|
75
|
-
src: props.carrouselImg[newIndex].src,
|
|
76
|
-
caption: props.carrouselImg[newIndex].caption,
|
|
77
|
-
bib: props.carrouselImg[newIndex].bib
|
|
78
|
-
};
|
|
79
|
-
};
|
|
80
|
-
const managedNextSlide = () => {
|
|
81
|
-
const isTheLastSlide = managedIndex.value === props.carrouselImg.length - 1;
|
|
82
|
-
const newIndex = isTheLastSlide ? 0 : managedIndex.value + 1;
|
|
83
|
-
managedIndex.value = newIndex;
|
|
84
|
-
managedInfoModal.value = {
|
|
85
|
-
src: props.carrouselImg[newIndex].src,
|
|
86
|
-
caption: props.carrouselImg[newIndex].caption,
|
|
87
|
-
bib: props.carrouselImg[newIndex].bib
|
|
88
|
-
};
|
|
89
|
-
};
|
|
90
|
-
const { carrouselImg, sizeThumbnail } = toRefs(props);
|
|
91
|
-
return (_ctx, _cache) => {
|
|
92
|
-
var _a, _b;
|
|
93
|
-
return openBlock(), createElementBlock(Fragment, null, [
|
|
94
|
-
props.title ? (openBlock(), createElementBlock("h2", _hoisted_1, toDisplayString(props.title), 1)) : createCommentVNode("", true),
|
|
95
|
-
!_ctx.gallery ? (openBlock(), createElementBlock("div", _hoisted_2, [
|
|
96
|
-
createElementVNode("div", _hoisted_3, [
|
|
97
|
-
createElementVNode("button", {
|
|
98
|
-
class: "p-2",
|
|
99
|
-
onClick: prevSlide
|
|
100
|
-
}, [
|
|
101
|
-
createVNode(_sfc_main$1, { "icon-path": unref(mdiChevronLeftCircleOutline) }, null, 8, ["icon-path"])
|
|
102
|
-
]),
|
|
103
|
-
createTextVNode(" " + toDisplayString(currentIndex.value + 1) + "/" + toDisplayString(unref(carrouselImg).length) + " ", 1),
|
|
104
|
-
createElementVNode("button", {
|
|
105
|
-
class: "p-2",
|
|
106
|
-
onClick: nextSlide
|
|
107
|
-
}, [
|
|
108
|
-
createVNode(_sfc_main$1, { "icon-path": unref(mdiChevronRightCircleOutline) }, null, 8, ["icon-path"])
|
|
109
|
-
])
|
|
110
|
-
]),
|
|
111
|
-
createElementVNode("div", _hoisted_4, [
|
|
112
|
-
createElementVNode("img", {
|
|
113
|
-
src: unref(carrouselImg)[currentIndex.value].src,
|
|
114
|
-
alt: "image",
|
|
115
|
-
class: "rounded-sm m-auto"
|
|
116
|
-
}, null, 8, _hoisted_5),
|
|
117
|
-
((_a = unref(carrouselImg)[currentIndex.value]) == null ? void 0 : _a.caption) ? (openBlock(), createElementBlock("div", _hoisted_6, toDisplayString(unref(carrouselImg)[currentIndex.value].caption), 1)) : createCommentVNode("", true),
|
|
118
|
-
((_b = unref(carrouselImg)[currentIndex.value]) == null ? void 0 : _b.bib) ? (openBlock(), createElementBlock("div", _hoisted_7, [
|
|
119
|
-
createVNode(_sfc_main$2, {
|
|
120
|
-
type: "primary",
|
|
121
|
-
onClick: _cache[0] || (_cache[0] = ($event) => dialog.value = true),
|
|
122
|
-
dark: ""
|
|
123
|
-
}, {
|
|
124
|
-
default: withCtx(() => [
|
|
125
|
-
createTextVNode(toDisplayString(_ctx.labelRef), 1)
|
|
126
|
-
]),
|
|
127
|
-
_: 1
|
|
128
|
-
})
|
|
129
|
-
])) : createCommentVNode("", true)
|
|
130
|
-
]),
|
|
131
|
-
createVNode(_sfc_main$3, {
|
|
132
|
-
modelValue: dialog.value,
|
|
133
|
-
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => dialog.value = $event),
|
|
134
|
-
title: _ctx.labelRefLib
|
|
135
|
-
}, {
|
|
136
|
-
default: withCtx(() => [
|
|
137
|
-
createElementVNode("div", {
|
|
138
|
-
innerHTML: unref(carrouselImg)[currentIndex.value].bib
|
|
139
|
-
}, null, 8, _hoisted_8),
|
|
140
|
-
createElementVNode("div", _hoisted_9, [
|
|
141
|
-
createVNode(_sfc_main$2, {
|
|
142
|
-
onClick: _cache[1] || (_cache[1] = ($event) => dialog.value = false),
|
|
143
|
-
type: "primary",
|
|
144
|
-
dark: ""
|
|
145
|
-
}, {
|
|
146
|
-
default: withCtx(() => [
|
|
147
|
-
createTextVNode(toDisplayString(_ctx.labelClose), 1)
|
|
148
|
-
]),
|
|
149
|
-
_: 1
|
|
150
|
-
})
|
|
151
|
-
])
|
|
152
|
-
]),
|
|
153
|
-
_: 1
|
|
154
|
-
}, 8, ["modelValue", "title"])
|
|
155
|
-
])) : !_ctx.puzzle ? (openBlock(), createElementBlock("div", {
|
|
156
|
-
key: 2,
|
|
157
|
-
class: normalizeClass(`flex flex-wrap ${isCenterStyle.value}`)
|
|
158
|
-
}, [
|
|
159
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(carrouselImg), (image, index) => {
|
|
160
|
-
return openBlock(), createBlock(_sfc_main$4, {
|
|
161
|
-
key: `image-${image == null ? void 0 : image.uid}`,
|
|
162
|
-
src: image.src,
|
|
163
|
-
bib: image.bib,
|
|
164
|
-
caption: image.caption,
|
|
165
|
-
"label-ref": _ctx.labelRef,
|
|
166
|
-
"label-close": _ctx.labelClose,
|
|
167
|
-
"size-thumbnail": unref(sizeThumbnail),
|
|
168
|
-
"managed-modal": "",
|
|
169
|
-
onNewFocus: ($event) => newFocus(index),
|
|
170
|
-
"info-modal": managedInfoModal.value,
|
|
171
|
-
onPrevSlide: managedPrevSlide,
|
|
172
|
-
onNextSlide: managedNextSlide
|
|
173
|
-
}, null, 8, ["src", "bib", "caption", "label-ref", "label-close", "size-thumbnail", "onNewFocus", "info-modal"]);
|
|
174
|
-
}), 128))
|
|
175
|
-
], 2)) : _ctx.puzzle ? (openBlock(), createElementBlock("div", _hoisted_10, [
|
|
176
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(carrouselImg), (image, index) => {
|
|
177
|
-
return openBlock(), createBlock(_sfc_main$4, {
|
|
178
|
-
key: `image-${image == null ? void 0 : image.uid}`,
|
|
179
|
-
src: image.src,
|
|
180
|
-
bib: image.bib,
|
|
181
|
-
caption: image.caption,
|
|
182
|
-
"label-ref": _ctx.labelRef,
|
|
183
|
-
"label-close": _ctx.labelClose,
|
|
184
|
-
puzzle: "",
|
|
185
|
-
"managed-modal": "",
|
|
186
|
-
onNewFocus: ($event) => newFocus(index),
|
|
187
|
-
"info-modal": managedInfoModal.value,
|
|
188
|
-
onPrevSlide: managedPrevSlide,
|
|
189
|
-
onNextSlide: managedNextSlide
|
|
190
|
-
}, null, 8, ["src", "bib", "caption", "label-ref", "label-close", "onNewFocus", "info-modal"]);
|
|
191
|
-
}), 128))
|
|
192
|
-
])) : createCommentVNode("", true)
|
|
193
|
-
], 64);
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
});
|
|
1
|
+
import _sfc_main from "./EpCarousel.vue.js";
|
|
197
2
|
export {
|
|
198
3
|
_sfc_main as default
|
|
199
4
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpCarousel.vue2.js","sources":[
|
|
1
|
+
{"version":3,"file":"EpCarousel.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _sfc_main from "./EpHierarchy.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import _export_sfc from "../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const Comp = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
4
|
+
const Comp = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-17604c55"]]);
|
|
5
5
|
export {
|
|
6
6
|
Comp as default
|
|
7
7
|
};
|
|
@@ -40,7 +40,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
40
40
|
currentNode.value = null;
|
|
41
41
|
};
|
|
42
42
|
const components = /* @__PURE__ */ Object.assign({
|
|
43
|
-
"../basics/EpAvatar.vue": () => import("../basics/EpAvatar.
|
|
43
|
+
"../basics/EpAvatar.vue": () => import("../basics/EpAvatar.vue2.js"),
|
|
44
44
|
"../basics/EpBadge.vue": () => import("../basics/EpBadge.vue.js"),
|
|
45
45
|
"../basics/EpBtn.vue": () => import("../basics/EpBtn.vue2.js"),
|
|
46
46
|
"../basics/EpCard.vue": () => import("../basics/EpCard.vue2.js"),
|
|
@@ -62,7 +62,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
62
62
|
"../basics/EpText.vue": () => import("../basics/EpText.vue2.js"),
|
|
63
63
|
"./EpAudio.vue": () => import("./EpAudio.vue2.js"),
|
|
64
64
|
"./EpCardLink.vue": () => import("./EpCardLink.vue2.js"),
|
|
65
|
-
"./EpCarousel.vue": () => import("./EpCarousel.
|
|
65
|
+
"./EpCarousel.vue": () => import("./EpCarousel.vue2.js"),
|
|
66
66
|
"./EpHierarchy.vue": () => import("./EpHierarchy.vue.js"),
|
|
67
67
|
"./EpIframe.vue": () => import("./EpIframe.vue2.js"),
|
|
68
68
|
"./EpKatex.vue": () => import("./EpKatex.vue.js"),
|
|
@@ -73,7 +73,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
73
73
|
"./EpSoftware.vue": () => import("./EpSoftware.vue2.js"),
|
|
74
74
|
"./EpSvg.vue": () => import("./EpSvg.vue2.js"),
|
|
75
75
|
"./EpTerm.vue": () => import("./EpTerm.vue2.js"),
|
|
76
|
-
"./EpTimeLine.vue": () => import("./EpTimeLine.
|
|
76
|
+
"./EpTimeLine.vue": () => import("./EpTimeLine.vue.js"),
|
|
77
77
|
"./EpVideo.vue": () => import("./EpVideo.vue2.js"),
|
|
78
78
|
"./EpVideoPanopto.vue": () => import("./EpVideoPanopto.vue2.js"),
|
|
79
79
|
"./EpWordDef.vue": () => import("./EpWordDef.vue2.js"),
|
|
@@ -82,7 +82,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
82
82
|
"../signages/EpHeader.vue": () => import("../signages/EpHeader.vue2.js"),
|
|
83
83
|
"../signages/EpNothing.vue": () => import("../signages/EpNothing.vue.js"),
|
|
84
84
|
"../signages/EpQuote.vue": () => import("../signages/EpQuote.vue2.js"),
|
|
85
|
-
"../signages/EpSkeleton.vue": () => import("../signages/EpSkeleton.
|
|
85
|
+
"../signages/EpSkeleton.vue": () => import("../signages/EpSkeleton.vue.js")
|
|
86
86
|
});
|
|
87
87
|
const currentRenderComponent = computed(() => {
|
|
88
88
|
if (!currentNode.value || !currentNode.value.component) {
|
|
@@ -205,13 +205,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
205
205
|
createElementVNode("div", {
|
|
206
206
|
ref_key: "treeWrapper",
|
|
207
207
|
ref: treeWrapper,
|
|
208
|
-
class: "tree-wrapper mx-auto",
|
|
208
|
+
class: "ep-tree-wrapper mx-auto",
|
|
209
209
|
style: normalizeStyle({ maxHeight: maxH.value, maxWidth: maxW.value })
|
|
210
210
|
}, [
|
|
211
211
|
createElementVNode("div", {
|
|
212
212
|
ref_key: "treeContainer",
|
|
213
213
|
ref: treeContainer,
|
|
214
|
-
class: "tree-container"
|
|
214
|
+
class: "ep-tree-container"
|
|
215
215
|
}, null, 512)
|
|
216
216
|
], 4),
|
|
217
217
|
currentNode.value ? (openBlock(), createBlock(_sfc_main$1, {
|
|
@@ -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 { 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-main-color-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([170, 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.5, 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.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) => 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, 130]); // [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.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) => 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=\"tree-wrapper mx-auto\"\n :style=\"{ maxHeight: maxH, maxWidth: maxW }\"\n >\n <div ref=\"treeContainer\" class=\"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.tree-wrapper {\n overflow: auto;\n border: 1px solid #ddd;\n}\n\n.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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"}
|
|
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-main-color-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([170, 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.5, 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.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) => 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, 130]); // [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.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) => 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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"}
|
|
@@ -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 { 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;;;;;;;"}
|
|
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;;;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _sfc_main from "./EpKatex.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import _export_sfc from "../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const Comp = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
4
|
+
const Comp = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-a9b6227c"]]);
|
|
5
5
|
export {
|
|
6
6
|
Comp as default
|
|
7
7
|
};
|
|
@@ -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 { 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;;;;;;;"}
|
|
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;;;;;;;"}
|
|
@@ -2,7 +2,6 @@ import { defineComponent, computed, toRefs, createBlock, openBlock, unref, creat
|
|
|
2
2
|
import _sfc_main$2 from "../basics/EpBtn.vue.js";
|
|
3
3
|
import { mdiLinkVariant } from "@mdi/js";
|
|
4
4
|
import _sfc_main$1 from "../educationals/EpEdu.vue.js";
|
|
5
|
-
import useColors from "../../composables/useColors.js";
|
|
6
5
|
import { useRenderText } from "../../composables/useRenderText.js";
|
|
7
6
|
const _hoisted_1 = ["innerHTML"];
|
|
8
7
|
const _hoisted_2 = { class: "flex justify-center" };
|
|
@@ -30,10 +29,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
30
29
|
return mdiLinkVariant;
|
|
31
30
|
});
|
|
32
31
|
const hoverColor = computed(() => {
|
|
33
|
-
return `absolute
|
|
34
|
-
"bg",
|
|
35
|
-
"primarydark"
|
|
36
|
-
)} 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%]`;
|
|
32
|
+
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%]`;
|
|
37
33
|
});
|
|
38
34
|
const { url, title, intentions, mandateLevel, hideIcon } = toRefs(props);
|
|
39
35
|
return (_ctx, _cache) => {
|
|
@@ -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
|
|
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;;;;;;;;"}
|
|
@@ -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 { 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;;;"}
|
|
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;;;"}
|
|
@@ -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 { 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;;;;;"}
|
|
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;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _sfc_main from "./EpSensibleImage.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import _export_sfc from "../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const EpSensibleImage = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
4
|
+
const EpSensibleImage = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-b3ee44a0"]]);
|
|
5
5
|
export {
|
|
6
6
|
EpSensibleImage as default
|
|
7
7
|
};
|
|
@@ -30,8 +30,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
30
30
|
if (img && img.parentNode) {
|
|
31
31
|
const parent = img.parentNode;
|
|
32
32
|
if (parent instanceof HTMLElement) {
|
|
33
|
-
if (!parent.classList.contains("sensible-content")) {
|
|
34
|
-
parent.classList.add("sensible-content");
|
|
33
|
+
if (!parent.classList.contains("ep-sensible-content")) {
|
|
34
|
+
parent.classList.add("ep-sensible-content");
|
|
35
35
|
hasTarget.value = true;
|
|
36
36
|
parentRef.value = parent;
|
|
37
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpSensibleImage.vue2.js","sources":["../../../src/components/medias/EpSensibleImage.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { watchEffect, ref } from \"vue\";\nimport EpImg from \"~/components/basics/EpImg.vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport { mdiEyeOffOutline } from \"@mdi/js\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport { EpSensibleImageProps } from \"~/types/medias/EpSensibleImage\";\n\nconst props = withDefaults(defineProps<EpSensibleImageProps>(), {\n alt: \"Image snfas\",\n cols: \"6\",\n label:\n \"<h5>Ce contenu est sensible</h5><p>Cliquez pour afficher l'image.</p>\",\n icon:mdiEyeOffOutline\n});\n\nconst epImg = ref<{ imgEl: HTMLImageElement | null } | null>(null);\nconst parentRef = ref<HTMLElement | null>(null);\nconst hasTarget = ref(false);\n\nwatchEffect(() => {\n const img = epImg.value?.imgEl;\n if (img && img.parentNode) {\n const parent = img.parentNode;\n\n // Placer le parent en position relative pour pouvoir positionner l’overlay\n if (parent instanceof HTMLElement) {\n if (!parent.classList.contains(\"sensible-content\")) {\n parent.classList.add(\"sensible-content\");\n hasTarget.value = true;\n parentRef.value = parent;\n }\n }\n }\n});\n\nconst show = ref(false);\nconst toggleShow = () => {\n if (!show.value) {\n show.value = true;\n }\n};\n</script>\n\n<template>\n <div class=\"relative\">\n <EpImg\n ref=\"epImg\"\n :src=\"src\"\n :alt=\"alt\"\n :height=\"height\"\n :width=\"width\"\n :caption=\"caption\"\n :bib=\"bib\"\n :title=\"title\"\n :cols=\"cols\"\n :no-modal=\"noModal\"\n />\n\n <!-- Overlay -->\n <Teleport v-if=\"hasTarget\" :to=\"parentRef\">\n <div\n v-if=\"!show\"\n id=\"overlay\"\n class=\"text-white absolute z-3 top-0 left-0 w-full h-full inset-0 bg-black/50 backdrop-blur-2xl flex flex-col gap-2 justify-center items-center text-center\"\n @click=\"toggleShow\"\n >\n <EpIcon\n :size=\"`${Number(cols) <= 2 ? '45' : '60'}`\"\n :icon-path=\"icon\"\n />\n <div\n :class=\"`${\n Number(cols) <= 2 ? 'hidden md:block' : 'md:text-base'\n } text-xs overflow-auto md:p-1`\"\n v-if=\"Number(cols) > 1\"\n v-html=\"useRenderText(label)\"\n />\n </div>\n </Teleport>\n </div>\n</template>\n\n<style scoped>\n.sensible-content {\n position: relative;\n}\n</style>\n"],"names":["_openBlock","_createElementBlock","_createVNode","EpImg","src","alt","height","width","caption","bib","title","cols","noModal","_createBlock","_Teleport","EpIcon","icon","_normalizeClass","_unref","label"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAgBA,UAAM,QAAQ,IAA+C,IAAI;AACjE,UAAM,YAAY,IAAwB,IAAI;AAC9C,UAAM,YAAY,IAAI,KAAK;AAE3B,gBAAY,MAAM;;AAChB,YAAM,OAAM,WAAM,UAAN,mBAAa;AACzB,UAAI,OAAO,IAAI,YAAY;AACzB,cAAM,SAAS,IAAI;AAGnB,YAAI,kBAAkB,aAAa;AACjC,cAAI,CAAC,OAAO,UAAU,SAAS,
|
|
1
|
+
{"version":3,"file":"EpSensibleImage.vue2.js","sources":["../../../src/components/medias/EpSensibleImage.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { watchEffect, ref } from \"vue\";\nimport EpImg from \"~/components/basics/EpImg.vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport { mdiEyeOffOutline } from \"@mdi/js\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { EpSensibleImageProps } from \"~/types/medias/EpSensibleImage\";\n\nconst props = withDefaults(defineProps<EpSensibleImageProps>(), {\n alt: \"Image snfas\",\n cols: \"6\",\n label:\n \"<h5>Ce contenu est sensible</h5><p>Cliquez pour afficher l'image.</p>\",\n icon:mdiEyeOffOutline\n});\n\nconst epImg = ref<{ imgEl: HTMLImageElement | null } | null>(null);\nconst parentRef = ref<HTMLElement | null>(null);\nconst hasTarget = ref(false);\n\nwatchEffect(() => {\n const img = epImg.value?.imgEl;\n if (img && img.parentNode) {\n const parent = img.parentNode;\n\n // Placer le parent en position relative pour pouvoir positionner l’overlay\n if (parent instanceof HTMLElement) {\n if (!parent.classList.contains(\"ep-sensible-content\")) {\n parent.classList.add(\"ep-sensible-content\");\n hasTarget.value = true;\n parentRef.value = parent;\n }\n }\n }\n});\n\nconst show = ref(false);\nconst toggleShow = () => {\n if (!show.value) {\n show.value = true;\n }\n};\n</script>\n\n<template>\n <div class=\"relative\">\n <EpImg\n ref=\"epImg\"\n :src=\"src\"\n :alt=\"alt\"\n :height=\"height\"\n :width=\"width\"\n :caption=\"caption\"\n :bib=\"bib\"\n :title=\"title\"\n :cols=\"cols\"\n :no-modal=\"noModal\"\n />\n\n <!-- Overlay -->\n <Teleport v-if=\"hasTarget\" :to=\"parentRef\">\n <div\n v-if=\"!show\"\n id=\"overlay\"\n class=\"text-white absolute z-3 top-0 left-0 w-full h-full inset-0 bg-black/50 backdrop-blur-2xl flex flex-col gap-2 justify-center items-center text-center\"\n @click=\"toggleShow\"\n >\n <EpIcon\n :size=\"`${Number(cols) <= 2 ? '45' : '60'}`\"\n :icon-path=\"icon\"\n />\n <div\n :class=\"`${\n Number(cols) <= 2 ? 'hidden md:block' : 'md:text-base'\n } text-xs overflow-auto md:p-1`\"\n v-if=\"Number(cols) > 1\"\n v-html=\"useRenderText(label)\"\n />\n </div>\n </Teleport>\n </div>\n</template>\n\n<style scoped>\n.ep-sensible-content {\n position: relative;\n}\n</style>\n"],"names":["_openBlock","_createElementBlock","_createVNode","EpImg","src","alt","height","width","caption","bib","title","cols","noModal","_createBlock","_Teleport","EpIcon","icon","_normalizeClass","_unref","label"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAgBA,UAAM,QAAQ,IAA+C,IAAI;AACjE,UAAM,YAAY,IAAwB,IAAI;AAC9C,UAAM,YAAY,IAAI,KAAK;AAE3B,gBAAY,MAAM;;AAChB,YAAM,OAAM,WAAM,UAAN,mBAAa;AACzB,UAAI,OAAO,IAAI,YAAY;AACzB,cAAM,SAAS,IAAI;AAGnB,YAAI,kBAAkB,aAAa;AACjC,cAAI,CAAC,OAAO,UAAU,SAAS,qBAAqB,GAAG;AACrD,mBAAO,UAAU,IAAI,qBAAqB;AAC1C,sBAAU,QAAQ;AAClB,sBAAU,QAAQ;AAAA,UACpB;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AAED,UAAM,OAAO,IAAI,KAAK;AACtB,UAAM,aAAa,MAAM;AACvB,UAAI,CAAC,KAAK,OAAO;AACf,aAAK,QAAQ;AAAA,MACf;AAAA,IACF;;AAIE,aAAAA,UAAA,GAAAC,mBAmCM,OAnCN,YAmCM;AAAA,QAlCJC,YAWEC,aAAA;AAAA,mBAVI;AAAA,UAAJ,KAAI;AAAA,UACH,KAAKC,KAAAA;AAAAA,UACL,KAAKC,KAAAA;AAAAA,UACL,QAAQC,KAAAA;AAAAA,UACR,OAAOC,KAAAA;AAAAA,UACP,SAASC,KAAAA;AAAAA,UACT,KAAKC,KAAAA;AAAAA,UACL,OAAOC,KAAAA;AAAAA,UACP,MAAMC,KAAAA;AAAAA,UACN,YAAUC,KAAAA;AAAAA,QAAAA;QAIG,UAAA,sBAAhBC,YAmBWC,UAAA;AAAA;UAnBiB,IAAI,UAAA;AAAA,QAAA;WAErB,KAAA,sBADTb,mBAiBM,OAAA;AAAA;YAfJ,IAAG;AAAA,YACH,OAAM;AAAA,YACL,SAAO;AAAA,UAAA;YAERC,YAGEa,aAAA;AAAA,cAFC,MAAI,GAAK,OAAOJ,KAAAA,IAAI,KAAA,IAAA,OAAA,IAAA;AAAA,cACpB,aAAWK,KAAAA;AAAAA,YAAAA;YAMN,OAAOL,KAAAA,IAAI,IAAA,kBAJnBV,mBAME,OAAA;AAAA;cALC,OAAKgB,eAAA,GAAkB,OAAON,KAAAA,IAAI,KAAA,IAAA,oBAAA;cAInC,WAAQO,MAAA,aAAA,EAAcC,KAAAA,KAAK;AAAA,YAAA;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpSoftware.vue.js","sources":["../../../src/components/medias/EpSoftware.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs, computed } from \"vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport EpChip from \"~/components/basics/EpChip.vue\";\nimport EpEdu from \"~/components/educationals/EpEdu.vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport { mdiLaptop } from \"@mdi/js\";\nimport { mdiOpenInNew } from \"@mdi/js\";\nimport { EpSoftwareProps } from \"~/types/medias/EpSoftware\";\n\nconst props = withDefaults(defineProps<EpSoftwareProps>(), {\n icon: \"mdiLaptop\",\n hideCover: false,\n intentions: \"\",\n cover: \"\",\n type: \"base\",\n hideIcon: false,\n labelAccess: \"Accéder au logiciel\",\n});\n\nconst old_image =\n \"https://live.staticflickr.com/4868/45940268562_c5f7fdd06b_q.jpg\";\n\nconst hasCover = computed(() => {\n if (props.cover === old_image || props.cover.trim().length === 0) {\n return false;\n }\n return true;\n});\n\nconst {\n title,\n intentions,\n cover,\n hideCover,\n version,\n labelCard,\n hideIcon,\n mandateLevel,\n url,\n} = toRefs(props);\n</script>\n\n<template>\n <EpEdu\n :title=\"labelCard\"\n :labelIntentions=\"labelIntentions\"\n :icon=\"mdiLaptop\"\n flat\n :type=\"type\"\n :hideIcon=\"hideIcon\"\n :mandateLevel=\"mandateLevel\"\n >\n <template #intentions v-if=\"intentions\">\n <div v-html=\"useRenderText(intentions)\" />\n </template>\n <template #content>\n <div\n class=\"flex flex-col items-center border rounded-lg bg-base-light md:flex-row mt-2 dark:bg-dark\"\n >\n <template v-if=\"!hideCover\">\n <img\n v-if=\"hasCover\"\n class=\"h-24 w-full rounded-t-lg object-cover md:h-auto md:w-24 md:rounded-none md:rounded-l-lg\"\n :src=\"cover\"\n :alt=\"`image de la lecture ${title}`\"\n />\n <div\n v-else\n class=\"h-96 w-full rounded-t-lg md:h-auto md:w-56 md:rounded-none md:rounded-l-lg flex justify-center items-center text-base-dark dark:text-white\"\n >\n <EpIcon :icon-path=\"mdiLaptop\" size=\"95\" />\n </div>\n </template>\n <div class=\"w-full\">\n <div class=\"w-full px-5\">\n <div class=\"flex justify-between items-center rounded-t-md p-2\">\n <h4>\n {{ title }}\n <EpChip size=\"small\" type=\"primary\" v-if=\"version\">{{\n version\n }}</EpChip>\n </h4>\n <EpBtn\n v-if=\"url\"\n rounded\n type=\"primary\"\n :prependIcon=\"mdiOpenInNew\"\n :href=\"url\"\n >{{ labelAccess }}</EpBtn\n >\n </div>\n </div>\n </div>\n </div>\n </template>\n <template #actions></template>\n </EpEdu>\n</template>\n"],"names":["_createBlock","EpEdu","_unref","labelIntentions","type","_createElementVNode","_createElementBlock","_Fragment","_openBlock","_createVNode","EpIcon","_createTextVNode","_toDisplayString","EpChip","EpBtn","labelAccess"],"mappings":";;;;;;;;;;;;;;;;;AAqBA,MAAM,YACJ;;;;;;;;;;;;;;;;;;AAXF,UAAM,QAAQ;AAad,UAAM,WAAW,SAAS,MAAM;AAC9B,UAAI,MAAM,UAAU,aAAa,MAAM,MAAM,KAAA,EAAO,WAAW,GAAG;AAChE,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT,CAAC;AAED,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACE,OAAO,KAAK;;0BAIdA,YAqDQC,aAAA;AAAA,QApDL,OAAOC,MAAA,SAAA;AAAA,QACP,iBAAiBC,KAAAA;AAAAA,QACjB,MAAMD,MAAA,SAAA;AAAA,QACP,MAAA;AAAA,QACC,MAAME,KAAAA;AAAAA,QACN,UAAUF,MAAA,QAAA;AAAA,QACV,cAAcA,MAAA,YAAA;AAAA,MAAA;QAKJ,iBACT,MAqCM;AAAA,UArCNG,mBAqCM,OArCN,YAqCM;AAAA,aAlCaH,MAAA,SAAA,kBAAjBI,mBAaWC,UAAA,EAAA,KAAA,KAAA;AAAA,cAXD,SAAA,sBADRD,mBAKE,OAAA;AAAA;gBAHA,OAAM;AAAA,gBACL,KAAKJ,MAAA,KAAA;AAAA,gBACL,4BAA4BA,MAAA,KAAA,CAAK;AAAA,cAAA,4BAEpCM,UAAA,GAAAF,mBAKM,OALN,YAKM;AAAA,gBADJG,YAA2CC,aAAA;AAAA,kBAAlC,aAAWR,MAAA,SAAA;AAAA,kBAAW,MAAK;AAAA,gBAAA;;;YAGxCG,mBAmBM,OAnBN,YAmBM;AAAA,cAlBJA,mBAiBM,OAjBN,YAiBM;AAAA,gBAhBJA,mBAeM,OAfN,YAeM;AAAA,kBAdJA,mBAKK,MAAA,MAAA;AAAA,oBAJAM,gBAAAC,gBAAAV,MAAA,KAAA,CAAK,IAAG,KACX,CAAA;AAAA,oBAA0CA,MAAA,OAAA,kBAA1CF,YAEWa,aAAA;AAAA;sBAFH,MAAK;AAAA,sBAAQ,MAAK;AAAA,oBAAA;uCAAyB,MAEjD;AAAA,wDADAX,MAAA,OAAA,CAAO,GAAA,CAAA;AAAA,sBAAA;;;;kBAIHA,MAAA,GAAA,kBADRF,YAOCc,aAAA;AAAA;oBALC,SAAA;AAAA,oBACA,MAAK;AAAA,oBACJ,aAAaZ,MAAA,YAAA;AAAA,oBACb,MAAMA,MAAA,GAAA;AAAA,kBAAA;qCACN,MAAiB;AAAA,sDAAda,KAAAA,WAAW,GAAA,CAAA;AAAA,oBAAA;;;;;;;;QAOhB,iBAAX,MAA8B,EAAA;AAAA;;QA3CFb,MAAA,UAAA;gBAAjB;AAAA,sBACT,MAA0C;AAAA,YAA1CG,mBAA0C,OAAA;AAAA,cAArC,WAAQH,MAAA,aAAA,EAAcA,MAAA,UAAA,CAAU;AAAA,YAAA;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"EpSoftware.vue.js","sources":["../../../src/components/medias/EpSoftware.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs, computed } from \"vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport EpChip from \"~/components/basics/EpChip.vue\";\nimport EpEdu from \"~/components/educationals/EpEdu.vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport { mdiLaptop } from \"@mdi/js\";\nimport { mdiOpenInNew } from \"@mdi/js\";\nimport type { EpSoftwareProps } from \"~/types/medias/EpSoftware\";\n\nconst props = withDefaults(defineProps<EpSoftwareProps>(), {\n icon: \"mdiLaptop\",\n hideCover: false,\n intentions: \"\",\n cover: \"\",\n type: \"base\",\n hideIcon: false,\n labelAccess: \"Accéder au logiciel\",\n});\n\nconst old_image =\n \"https://live.staticflickr.com/4868/45940268562_c5f7fdd06b_q.jpg\";\n\nconst hasCover = computed(() => {\n if (props.cover === old_image || props.cover.trim().length === 0) {\n return false;\n }\n return true;\n});\n\nconst {\n title,\n intentions,\n cover,\n hideCover,\n version,\n labelCard,\n hideIcon,\n mandateLevel,\n url,\n} = toRefs(props);\n</script>\n\n<template>\n <EpEdu\n :title=\"labelCard\"\n :labelIntentions=\"labelIntentions\"\n :icon=\"mdiLaptop\"\n flat\n :type=\"type\"\n :hideIcon=\"hideIcon\"\n :mandateLevel=\"mandateLevel\"\n >\n <template #intentions v-if=\"intentions\">\n <div v-html=\"useRenderText(intentions)\" />\n </template>\n <template #content>\n <div\n class=\"flex flex-col items-center border rounded-lg bg-base-light md:flex-row mt-2 dark:bg-dark\"\n >\n <template v-if=\"!hideCover\">\n <img\n v-if=\"hasCover\"\n class=\"h-24 w-full rounded-t-lg object-cover md:h-auto md:w-24 md:rounded-none md:rounded-l-lg\"\n :src=\"cover\"\n :alt=\"`image de la lecture ${title}`\"\n />\n <div\n v-else\n class=\"h-96 w-full rounded-t-lg md:h-auto md:w-56 md:rounded-none md:rounded-l-lg flex justify-center items-center text-base-dark dark:text-white\"\n >\n <EpIcon :icon-path=\"mdiLaptop\" size=\"95\" />\n </div>\n </template>\n <div class=\"w-full\">\n <div class=\"w-full px-5\">\n <div class=\"flex justify-between items-center rounded-t-md p-2\">\n <h4>\n {{ title }}\n <EpChip size=\"small\" type=\"primary\" v-if=\"version\">{{\n version\n }}</EpChip>\n </h4>\n <EpBtn\n v-if=\"url\"\n rounded\n type=\"primary\"\n :prependIcon=\"mdiOpenInNew\"\n :href=\"url\"\n >{{ labelAccess }}</EpBtn\n >\n </div>\n </div>\n </div>\n </div>\n </template>\n <template #actions></template>\n </EpEdu>\n</template>\n"],"names":["_createBlock","EpEdu","_unref","labelIntentions","type","_createElementVNode","_createElementBlock","_Fragment","_openBlock","_createVNode","EpIcon","_createTextVNode","_toDisplayString","EpChip","EpBtn","labelAccess"],"mappings":";;;;;;;;;;;;;;;;;AAqBA,MAAM,YACJ;;;;;;;;;;;;;;;;;;AAXF,UAAM,QAAQ;AAad,UAAM,WAAW,SAAS,MAAM;AAC9B,UAAI,MAAM,UAAU,aAAa,MAAM,MAAM,KAAA,EAAO,WAAW,GAAG;AAChE,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT,CAAC;AAED,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACE,OAAO,KAAK;;0BAIdA,YAqDQC,aAAA;AAAA,QApDL,OAAOC,MAAA,SAAA;AAAA,QACP,iBAAiBC,KAAAA;AAAAA,QACjB,MAAMD,MAAA,SAAA;AAAA,QACP,MAAA;AAAA,QACC,MAAME,KAAAA;AAAAA,QACN,UAAUF,MAAA,QAAA;AAAA,QACV,cAAcA,MAAA,YAAA;AAAA,MAAA;QAKJ,iBACT,MAqCM;AAAA,UArCNG,mBAqCM,OArCN,YAqCM;AAAA,aAlCaH,MAAA,SAAA,kBAAjBI,mBAaWC,UAAA,EAAA,KAAA,KAAA;AAAA,cAXD,SAAA,sBADRD,mBAKE,OAAA;AAAA;gBAHA,OAAM;AAAA,gBACL,KAAKJ,MAAA,KAAA;AAAA,gBACL,4BAA4BA,MAAA,KAAA,CAAK;AAAA,cAAA,4BAEpCM,UAAA,GAAAF,mBAKM,OALN,YAKM;AAAA,gBADJG,YAA2CC,aAAA;AAAA,kBAAlC,aAAWR,MAAA,SAAA;AAAA,kBAAW,MAAK;AAAA,gBAAA;;;YAGxCG,mBAmBM,OAnBN,YAmBM;AAAA,cAlBJA,mBAiBM,OAjBN,YAiBM;AAAA,gBAhBJA,mBAeM,OAfN,YAeM;AAAA,kBAdJA,mBAKK,MAAA,MAAA;AAAA,oBAJAM,gBAAAC,gBAAAV,MAAA,KAAA,CAAK,IAAG,KACX,CAAA;AAAA,oBAA0CA,MAAA,OAAA,kBAA1CF,YAEWa,aAAA;AAAA;sBAFH,MAAK;AAAA,sBAAQ,MAAK;AAAA,oBAAA;uCAAyB,MAEjD;AAAA,wDADAX,MAAA,OAAA,CAAO,GAAA,CAAA;AAAA,sBAAA;;;;kBAIHA,MAAA,GAAA,kBADRF,YAOCc,aAAA;AAAA;oBALC,SAAA;AAAA,oBACA,MAAK;AAAA,oBACJ,aAAaZ,MAAA,YAAA;AAAA,oBACb,MAAMA,MAAA,GAAA;AAAA,kBAAA;qCACN,MAAiB;AAAA,sDAAda,KAAAA,WAAW,GAAA,CAAA;AAAA,oBAAA;;;;;;;;QAOhB,iBAAX,MAA8B,EAAA;AAAA;;QA3CFb,MAAA,UAAA;gBAAjB;AAAA,sBACT,MAA0C;AAAA,YAA1CG,mBAA0C,OAAA;AAAA,cAArC,WAAQH,MAAA,aAAA,EAAcA,MAAA,UAAA,CAAU;AAAA,YAAA;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpSvg.vue.js","sources":["../../../src/components/medias/EpSvg.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs, computed } from \"vue\";\nimport { cols_img } from \"~/types/Image\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport { mdiImage } from \"@mdi/js\";\nimport EpEdu from \"~/components/educationals/EpEdu.vue\";\nimport { EpSvgProps } from \"~/types/medias/EpSvg\";\n\nconst props = withDefaults(defineProps<EpSvgProps>(), {\n cols: \"6\",\n});\n\nconst renderCols = computed(() => {\n // console.log(+props.cols)\n // console.log(Cols[+props.cols])\n return cols_img[+props.cols];\n});\n\nconst renderText = computed(() => {\n if (props.desc) {\n return useRenderText(props.desc);\n }\n return null;\n});\n\nconst { title, content } = toRefs(props);\n</script>\n\n<template>\n <EpEdu\n :title=\"title\"\n :hideIcon=\"hideIcon\"\n :icon=\"mdiImage\"\n :labelIntentions=\"labelIntentions\"\n flat\n :type=\"type\"\n :mandateLevel=\"mandateLevel\"\n >\n <template #intentions v-if=\"renderText\">\n <div v-html=\"renderText\" />\n </template>\n <template #content>\n <div class=\"flex\">\n <div v-if=\"content\" :class=\"`mx-auto ${renderCols}`\">\n <div v-html=\"content\" class=\"w-full\" />\n </div>\n </div>\n </template>\n </EpEdu>\n</template>\n"],"names":["_createBlock","EpEdu","_unref","hideIcon","labelIntentions","type","mandateLevel","_createElementVNode","_createElementBlock"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAQA,UAAM,QAAQ;AAId,UAAM,aAAa,SAAS,MAAM;AAGhC,aAAO,SAAS,CAAC,MAAM,IAAI;AAAA,IAC7B,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,MAAM,MAAM;AACd,eAAO,cAAc,MAAM,IAAI;AAAA,MACjC;AACA,aAAO;AAAA,IACT,CAAC;AAED,UAAM,EAAE,OAAO,YAAY,OAAO,KAAK;;0BAIrCA,YAmBQC,aAAA;AAAA,QAlBL,OAAOC,MAAA,KAAA;AAAA,QACP,UAAUC,KAAAA;AAAAA,QACV,MAAMD,MAAA,QAAA;AAAA,QACN,iBAAiBE,KAAAA;AAAAA,QAClB,MAAA;AAAA,QACC,MAAMC,KAAAA;AAAAA,QACN,cAAcC,KAAAA;AAAAA,MAAAA;QAKJ,iBACT,MAIM;AAAA,UAJNC,mBAIM,OAJN,YAIM;AAAA,YAHOL,MAAA,OAAA,kBAAXM,mBAEM,OAAA;AAAA;cAFe,iCAAkB,WAAA,KAAU,EAAA;AAAA,YAAA;cAC/CD,mBAAuC,OAAA;AAAA,gBAAlC,WAAQL,MAAA,OAAA;AAAA,gBAAS,OAAM;AAAA,cAAA;;;;;;QANN,WAAA;gBAAjB;AAAA,sBACT,MAA2B;AAAA,YAA3BK,mBAA2B,OAAA,EAAtB,WAAQ,WAAA,SAAU,MAAA,GAAA,UAAA;AAAA,UAAA;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"EpSvg.vue.js","sources":["../../../src/components/medias/EpSvg.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs, computed } from \"vue\";\nimport { cols_img } from \"~/types/Image\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport { mdiImage } from \"@mdi/js\";\nimport EpEdu from \"~/components/educationals/EpEdu.vue\";\nimport type { EpSvgProps } from \"~/types/medias/EpSvg\";\n\nconst props = withDefaults(defineProps<EpSvgProps>(), {\n cols: \"6\",\n});\n\nconst renderCols = computed(() => {\n // console.log(+props.cols)\n // console.log(Cols[+props.cols])\n return cols_img[+props.cols];\n});\n\nconst renderText = computed(() => {\n if (props.desc) {\n return useRenderText(props.desc);\n }\n return null;\n});\n\nconst { title, content } = toRefs(props);\n</script>\n\n<template>\n <EpEdu\n :title=\"title\"\n :hideIcon=\"hideIcon\"\n :icon=\"mdiImage\"\n :labelIntentions=\"labelIntentions\"\n flat\n :type=\"type\"\n :mandateLevel=\"mandateLevel\"\n >\n <template #intentions v-if=\"renderText\">\n <div v-html=\"renderText\" />\n </template>\n <template #content>\n <div class=\"flex\">\n <div v-if=\"content\" :class=\"`mx-auto ${renderCols}`\">\n <div v-html=\"content\" class=\"w-full\" />\n </div>\n </div>\n </template>\n </EpEdu>\n</template>\n"],"names":["_createBlock","EpEdu","_unref","hideIcon","labelIntentions","type","mandateLevel","_createElementVNode","_createElementBlock"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAQA,UAAM,QAAQ;AAId,UAAM,aAAa,SAAS,MAAM;AAGhC,aAAO,SAAS,CAAC,MAAM,IAAI;AAAA,IAC7B,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,MAAM,MAAM;AACd,eAAO,cAAc,MAAM,IAAI;AAAA,MACjC;AACA,aAAO;AAAA,IACT,CAAC;AAED,UAAM,EAAE,OAAO,YAAY,OAAO,KAAK;;0BAIrCA,YAmBQC,aAAA;AAAA,QAlBL,OAAOC,MAAA,KAAA;AAAA,QACP,UAAUC,KAAAA;AAAAA,QACV,MAAMD,MAAA,QAAA;AAAA,QACN,iBAAiBE,KAAAA;AAAAA,QAClB,MAAA;AAAA,QACC,MAAMC,KAAAA;AAAAA,QACN,cAAcC,KAAAA;AAAAA,MAAAA;QAKJ,iBACT,MAIM;AAAA,UAJNC,mBAIM,OAJN,YAIM;AAAA,YAHOL,MAAA,OAAA,kBAAXM,mBAEM,OAAA;AAAA;cAFe,iCAAkB,WAAA,KAAU,EAAA;AAAA,YAAA;cAC/CD,mBAAuC,OAAA;AAAA,gBAAlC,WAAQL,MAAA,OAAA;AAAA,gBAAS,OAAM;AAAA,cAAA;;;;;;QANN,WAAA;gBAAjB;AAAA,sBACT,MAA2B;AAAA,YAA3BK,mBAA2B,OAAA,EAAtB,WAAQ,WAAA,SAAU,MAAA,GAAA,UAAA;AAAA,UAAA;;;;;;;"}
|