ep-lib-ts 1.1.13 → 1.1.15
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 +55 -1
- package/dist/components/basics/EpAvatar.vue.js.map +1 -1
- package/dist/components/basics/EpAvatar.vue2.js +1 -55
- package/dist/components/basics/EpAvatar.vue2.js.map +1 -1
- package/dist/components/basics/EpBtn.vue.js +2 -2
- package/dist/components/basics/EpBtn.vue.js.map +1 -1
- package/dist/components/basics/EpChip.vue.js +2 -2
- package/dist/components/basics/EpChip.vue.js.map +1 -1
- package/dist/components/basics/EpHover.vue.js +1 -1
- package/dist/components/basics/EpHover.vue.js.map +1 -1
- package/dist/components/basics/EpHoverCard.vue.js +6 -6
- package/dist/components/basics/EpHoverCard.vue.js.map +1 -1
- package/dist/components/basics/EpImg.vue.js +8 -8
- package/dist/components/basics/EpImg.vue.js.map +1 -1
- package/dist/components/basics/EpImgCarousel.vue.js +8 -8
- package/dist/components/basics/EpImgCarousel.vue.js.map +1 -1
- package/dist/components/basics/EpSection.vue.js +25 -25
- package/dist/components/basics/EpSection.vue.js.map +1 -1
- package/dist/components/basics/EpSectionCols.vue.js +29 -29
- package/dist/components/basics/EpSectionCols.vue.js.map +1 -1
- package/dist/components/basics/EpSpinner.vue.js +5 -5
- package/dist/components/basics/EpSpinner.vue.js.map +1 -1
- package/dist/components/basics/EpStackedList.vue.js +5 -5
- package/dist/components/basics/EpStackedList.vue.js.map +1 -1
- package/dist/components/basics/EpText.vue.js +77 -79
- package/dist/components/basics/EpText.vue.js.map +1 -1
- package/dist/components/charts/EpBarChart.vue.js +3 -3
- package/dist/components/charts/EpBarChart.vue.js.map +1 -1
- package/dist/components/charts/EpFunnelChart.vue.js +4 -4
- package/dist/components/charts/EpFunnelChart.vue.js.map +1 -1
- package/dist/components/charts/EpLineChart.vue.js +3 -3
- package/dist/components/charts/EpLineChart.vue.js.map +1 -1
- package/dist/components/charts/EpPieChart.vue.js +4 -4
- package/dist/components/charts/EpPieChart.vue.js.map +1 -1
- package/dist/components/educationals/EpBranchingScenario.vue2.js +17 -17
- package/dist/components/educationals/EpBranchingScenario.vue2.js.map +1 -1
- package/dist/components/educationals/EpCodeblock.vue.js +1 -1
- package/dist/components/educationals/EpCodeblock.vue.js.map +1 -1
- package/dist/components/educationals/EpConclusion.vue.js +2 -2
- package/dist/components/educationals/EpConclusion.vue.js.map +1 -1
- package/dist/components/educationals/EpDocument.vue.js +4 -4
- package/dist/components/educationals/EpDocument.vue.js.map +1 -1
- package/dist/components/educationals/EpEdu.vue.js +4 -4
- package/dist/components/educationals/EpEdu.vue.js.map +1 -1
- package/dist/components/educationals/EpFillBlanks.vue.js +1 -1
- package/dist/components/educationals/EpFillBlanks.vue.js.map +1 -1
- package/dist/components/educationals/EpIntroduction.vue.js +5 -5
- package/dist/components/educationals/EpIntroduction.vue.js.map +1 -1
- package/dist/components/educationals/EpObjective.vue.js +3 -3
- package/dist/components/educationals/EpObjective.vue.js.map +1 -1
- package/dist/components/educationals/EpReading.vue.js +3 -3
- package/dist/components/educationals/EpReading.vue.js.map +1 -1
- package/dist/components/educationals/EpResource.vue.js +3 -3
- package/dist/components/educationals/EpResource.vue.js.map +1 -1
- package/dist/components/educationals/EpScope.vue.js +2 -2
- package/dist/components/educationals/EpScope.vue.js.map +1 -1
- package/dist/components/educationals/EpSegmentedBox.vue.js +1 -1
- package/dist/components/educationals/EpSegmentedBox.vue.js.map +1 -1
- package/dist/components/educationals/EpSpecificObjective.vue.js +9 -9
- package/dist/components/educationals/EpSpecificObjective.vue.js.map +1 -1
- package/dist/components/forms/EpRadioSummative.vue.js +46 -1
- package/dist/components/forms/EpRadioSummative.vue.js.map +1 -1
- package/dist/components/forms/EpRadioSummative.vue2.js +1 -46
- package/dist/components/forms/EpRadioSummative.vue2.js.map +1 -1
- package/dist/components/forms/EpSelect.vue.js +3 -3
- package/dist/components/forms/EpSelect.vue.js.map +1 -1
- package/dist/components/forms/EpTextarea.vue2.js +1 -1
- package/dist/components/forms/EpTextarea.vue2.js.map +1 -1
- package/dist/components/forms/EpToggle.vue2.js +1 -1
- package/dist/components/forms/EpToggle.vue2.js.map +1 -1
- package/dist/components/interactions/EpAccordeon.vue2.js +1 -1
- package/dist/components/interactions/EpAccordeon.vue2.js.map +1 -1
- package/dist/components/interactions/EpAssociation.vue.js +14 -15
- package/dist/components/interactions/EpAssociation.vue.js.map +1 -1
- package/dist/components/interactions/EpContentSlider.vue.js +3 -3
- package/dist/components/interactions/EpContentSlider.vue.js.map +1 -1
- package/dist/components/interactions/EpFlipCard.vue2.js +17 -17
- package/dist/components/interactions/EpFlipCard.vue2.js.map +1 -1
- package/dist/components/interactions/EpHotSpot.vue.js +1 -1
- package/dist/components/interactions/EpHotSpot.vue.js.map +1 -1
- package/dist/components/interactions/EpImageCompare.vue.js +6 -6
- package/dist/components/interactions/EpImageCompare.vue.js.map +1 -1
- package/dist/components/interactions/EpModal.vue.js +4 -4
- package/dist/components/interactions/EpModal.vue.js.map +1 -1
- package/dist/components/interactions/EpQuestion.vue.js +8 -8
- package/dist/components/interactions/EpQuestion.vue.js.map +1 -1
- package/dist/components/interactions/EpSummativeTable.vue.js +4 -4
- package/dist/components/interactions/EpSummativeTable.vue.js.map +1 -1
- package/dist/components/interactions/EpTooltip.vue.js +1 -1
- package/dist/components/interactions/EpTooltip.vue.js.map +1 -1
- package/dist/components/medias/EpAudio.vue.js +4 -4
- package/dist/components/medias/EpAudio.vue.js.map +1 -1
- package/dist/components/medias/EpCardLink.vue.js +16 -16
- package/dist/components/medias/EpCardLink.vue.js.map +1 -1
- package/dist/components/medias/EpCarousel.vue.js +10 -10
- package/dist/components/medias/EpCarousel.vue.js.map +1 -1
- package/dist/components/medias/EpHierarchy.vue2.js +2 -2
- package/dist/components/medias/EpHierarchy.vue2.js.map +1 -1
- package/dist/components/medias/EpIframe.vue.js +3 -3
- package/dist/components/medias/EpIframe.vue.js.map +1 -1
- package/dist/components/medias/EpKatex.vue2.js +4 -4
- package/dist/components/medias/EpKatex.vue2.js.map +1 -1
- package/dist/components/medias/EpLink.vue.js +2 -2
- package/dist/components/medias/EpLink.vue.js.map +1 -1
- package/dist/components/medias/EpLinkVersion.vue.js +1 -1
- package/dist/components/medias/EpLinkVersion.vue.js.map +1 -1
- package/dist/components/medias/EpLottieSvg.vue.js +8 -8
- package/dist/components/medias/EpLottieSvg.vue.js.map +1 -1
- package/dist/components/medias/EpSensibleImage.vue2.js +18 -18
- package/dist/components/medias/EpSensibleImage.vue2.js.map +1 -1
- package/dist/components/medias/EpSoftware.vue.js +3 -3
- package/dist/components/medias/EpSoftware.vue.js.map +1 -1
- package/dist/components/medias/EpSvg.vue.js +4 -4
- package/dist/components/medias/EpSvg.vue.js.map +1 -1
- package/dist/components/medias/EpTerm.vue.js +6 -6
- package/dist/components/medias/EpTerm.vue.js.map +1 -1
- package/dist/components/medias/EpVideo.vue.js +2 -2
- package/dist/components/medias/EpVideo.vue.js.map +1 -1
- package/dist/components/medias/EpVideoPanopto.vue.js +3 -3
- package/dist/components/medias/EpVideoPanopto.vue.js.map +1 -1
- package/dist/components/medias/EpWordDef.vue.js +39 -39
- package/dist/components/medias/EpWordDef.vue.js.map +1 -1
- package/dist/components/signages/EpHeader.vue.js +22 -22
- package/dist/components/signages/EpHeader.vue.js.map +1 -1
- package/dist/components/signages/EpSkeleton.vue2.js +1 -1
- package/dist/components/tools/AssociationNode.vue.js +82 -1
- package/dist/components/tools/AssociationNode.vue.js.map +1 -1
- package/dist/components/tools/AssociationNode.vue2.js +1 -82
- package/dist/components/tools/AssociationNode.vue2.js.map +1 -1
- package/dist/components/tools/AsyncKatexRender.vue2.js +1 -1
- package/dist/components/tools/AsyncKatexRender.vue2.js.map +1 -1
- package/dist/components/tools/BgAudio.vue.js +52 -1
- package/dist/components/tools/BgAudio.vue.js.map +1 -1
- package/dist/components/tools/BgAudio.vue2.js +1 -52
- package/dist/components/tools/BgAudio.vue2.js.map +1 -1
- package/dist/components/tools/Details.vue.js +5 -5
- package/dist/components/tools/Details.vue.js.map +1 -1
- package/dist/components/tools/SegmentedBox.vue2.js +2 -2
- package/dist/components/tools/SegmentedBox.vue2.js.map +1 -1
- package/dist/components/tools/TextMedia.vue.js +5 -5
- package/dist/components/tools/TextMedia.vue.js.map +1 -1
- package/dist/components/tools/TwoColsMedia.vue2.js +4 -4
- package/dist/components/tools/TwoColsMedia.vue2.js.map +1 -1
- package/dist/style.css +41 -41
- package/package.json +40 -43
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpFunnelChart.vue.js","sources":["../../../src/components/charts/EpFunnelChart.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, toRefs } from \"vue\";\nimport EpEdu from \"~/components/educationals/EpEdu.vue\";\nimport { mdiTriangle } from \"@mdi/js\";\nimport { isHtml } from \"~/composables/isHtml\";\nimport { useMarkdown } from \"~/composables/useMarkdown\";\nimport { useColorMode } from \"@vueuse/core\";\nimport type {
|
|
1
|
+
{"version":3,"file":"EpFunnelChart.vue.js","sources":["../../../src/components/charts/EpFunnelChart.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, toRefs } from \"vue\";\nimport EpEdu from \"~/components/educationals/EpEdu.vue\";\nimport { mdiTriangle } from \"@mdi/js\";\nimport { isHtml } from \"~/composables/isHtml\";\nimport { useMarkdown } from \"~/composables/useMarkdown\";\nimport { useColorMode } from \"@vueuse/core\";\nimport type { EpFunnelChartProps, OptionsFormmater } from \"~/types/charts/EpFunnelChart\";\nimport VueApexCharts from \"vue3-apexcharts\";\n\nconst props = withDefaults(defineProps<EpFunnelChartProps>(), {\n center: true,\n type: \"neutral\",\n width: \"800\",\n height: 350,\n isFunnel: true,\n colors: () => [\n \"#283243\",\n \"#3b4f6d\",\n \"#465e87\",\n \"#5072a5\",\n \"#648bb9\",\n \"#6e9ac3\",\n \"#8ab3d0\",\n \"#b0cee0\",\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 mode = useColorMode();\n\nconst optionsFunnel = computed(() => {\n return {\n chart: {\n type: \"bar\",\n background: \"transparent\",\n height: props.height,\n },\n plotOptions: {\n bar: {\n borderRadius: 0,\n horizontal: true,\n distributed: true,\n barHeight: \"80%\",\n isFunnel: props.isFunnel,\n },\n },\n theme: {\n mode: mode.value,\n },\n colors: props.colors,\n dataLabels: {\n enabled: true,\n formatter: function (val: string, opt: OptionsFormmater) {\n let label = \"\";\n if (opt.w.globals.labels[opt.dataPointIndex]) {\n label = opt.w.globals.labels[opt.dataPointIndex] + \" \";\n }\n return label + val;\n },\n dropShadow: {\n enabled: true,\n },\n },\n xaxis: {\n categories: props.labels,\n },\n legend: {\n show: false,\n },\n };\n});\n\nconst { center, series, source, labels, width } = toRefs(props);\n</script>\n\n<template>\n <EpEdu :title=\"title\" :type=\"type\" :hideIcon=\"hideIcon\" :icon=\"mdiTriangle\">\n <template #intentions v-if=\"renderText\">\n <div v-html=\"renderText\" />\n </template>\n <template #content>\n <div\n :class=\"`p-4 ${center ? 'flex justify-center' : ''}`\"\n v-if=\"labels && series\"\n >\n <VueApexCharts\n type=\"bar\"\n :width=\"width\"\n :height=\"height\"\n :options=\"optionsFunnel\"\n :series=\"series\"\n />\n </div>\n </template>\n <template #actions v-if=\"source\">\n <p>{{ source }}</p>\n </template>\n </EpEdu>\n</template>\n"],"names":["_createBlock","EpEdu","title","type","hideIcon","_unref","_createElementBlock","_createVNode","height","_createElementVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,UAAM,QAAQ;AAkBd,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,OAAO,aAAA;AAEb,UAAM,gBAAgB,SAAS,MAAM;AACnC,aAAO;AAAA,QACL,OAAO;AAAA,UACL,MAAM;AAAA,UACN,YAAY;AAAA,UACZ,QAAQ,MAAM;AAAA,QAAA;AAAA,QAEhB,aAAa;AAAA,UACX,KAAK;AAAA,YACH,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,aAAa;AAAA,YACb,WAAW;AAAA,YACX,UAAU,MAAM;AAAA,UAAA;AAAA,QAClB;AAAA,QAEF,OAAO;AAAA,UACL,MAAM,KAAK;AAAA,QAAA;AAAA,QAEb,QAAQ,MAAM;AAAA,QACd,YAAY;AAAA,UACV,SAAS;AAAA,UACT,WAAW,SAAU,KAAa,KAAuB;AACvD,gBAAI,QAAQ;AACZ,gBAAI,IAAI,EAAE,QAAQ,OAAO,IAAI,cAAc,GAAG;AAC5C,sBAAQ,IAAI,EAAE,QAAQ,OAAO,IAAI,cAAc,IAAI;AAAA,YACrD;AACA,mBAAO,QAAQ;AAAA,UACjB;AAAA,UACA,YAAY;AAAA,YACV,SAAS;AAAA,UAAA;AAAA,QACX;AAAA,QAEF,OAAO;AAAA,UACL,YAAY,MAAM;AAAA,QAAA;AAAA,QAEpB,QAAQ;AAAA,UACN,MAAM;AAAA,QAAA;AAAA,MACR;AAAA,IAEJ,CAAC;AAED,UAAM,EAAE,QAAQ,QAAQ,QAAQ,QAAQ,MAAA,IAAU,OAAO,KAAK;;0BAI5DA,YAqBQC,aAAA;AAAA,QArBA,OAAOC,KAAAA;AAAAA,QAAQ,MAAMC,KAAAA;AAAAA,QAAO,UAAUC,KAAAA;AAAAA,QAAW,MAAMC,MAAA,WAAA;AAAA,MAAA;QAIlD,iBACT,MAWM;AAAA,UATEA,MAAA,MAAA,KAAUA,MAAA,MAAA,kBAFlBC,mBAWM,OAAA;AAAA;YAVH,6BAAcD,MAAA,MAAA,IAAM,wBAAA,EAAA,EAAA;AAAA,UAAA;YAGrBE,YAMEF,MAAA,aAAA,GAAA;AAAA,cALA,MAAK;AAAA,cACJ,OAAOA,MAAA,KAAA;AAAA,cACP,QAAQG,KAAAA;AAAAA,cACR,SAAS,cAAA;AAAA,cACT,QAAQH,MAAA,MAAA;AAAA,YAAA;;;;;QAba,WAAA;gBAAjB;AAAA,sBACT,MAA2B;AAAA,YAA3BI,mBAA2B,OAAA,EAAtB,WAAQ,WAAA,SAAU,MAAA,GAAA,UAAA;AAAA,UAAA;;;QAgBAJ,MAAA,MAAA;gBAAd;AAAA,sBACT,MAAmB;AAAA,YAAnBI,mBAAmB,2BAAbJ,MAAA,MAAA,CAAM,GAAA,CAAA;AAAA,UAAA;;;;;;;"}
|
|
@@ -64,9 +64,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
64
64
|
const { center, series, source, width, dataNoDisponible } = toRefs(props);
|
|
65
65
|
return (_ctx, _cache) => {
|
|
66
66
|
return openBlock(), createBlock(_sfc_main$1, {
|
|
67
|
-
title:
|
|
68
|
-
type:
|
|
69
|
-
hideIcon:
|
|
67
|
+
title: _ctx.title,
|
|
68
|
+
type: _ctx.type,
|
|
69
|
+
hideIcon: _ctx.hideIcon,
|
|
70
70
|
icon: unref(mdiChartLine)
|
|
71
71
|
}, createSlots({
|
|
72
72
|
content: withCtx(() => [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpLineChart.vue.js","sources":["../../../src/components/charts/EpLineChart.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, toRefs } from \"vue\";\nimport EpEdu from \"~/components/educationals/EpEdu.vue\";\nimport { mdiChartLine } from \"@mdi/js\";\nimport { isHtml } from \"~/composables/isHtml\";\nimport { useMarkdown } from \"~/composables/useMarkdown\";\nimport { useColorMode } from \"@vueuse/core\";\nimport type { EpLineChartProps } from \"~/types/charts/EpLineChart\";\nimport VueApexCharts from \"vue3-apexcharts\";\
|
|
1
|
+
{"version":3,"file":"EpLineChart.vue.js","sources":["../../../src/components/charts/EpLineChart.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, toRefs } from \"vue\";\nimport EpEdu from \"~/components/educationals/EpEdu.vue\";\nimport { mdiChartLine } from \"@mdi/js\";\nimport { isHtml } from \"~/composables/isHtml\";\nimport { useMarkdown } from \"~/composables/useMarkdown\";\nimport { useColorMode } from \"@vueuse/core\";\nimport type { EpLineChartProps } from \"~/types/charts/EpLineChart\";\nimport VueApexCharts from \"vue3-apexcharts\";\n\nconst props = withDefaults(defineProps<EpLineChartProps>(), {\n center: true,\n width: \"500\",\n dataNoDisponible: \"Data no disponible\",\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 mode = useColorMode();\n\nconst globalOptions = computed(() => {\n return {\n ...props.options,\n theme: {\n mode: mode.value,\n },\n dataLabels: {\n enabled: false,\n },\n stroke: {\n curve: \"straight\",\n },\n chart: {\n background: \"transparent\",\n type: \"line\",\n zoom: {\n enabled: false,\n },\n },\n grid: {\n row: {\n colors: undefined,\n opacity: 0.2,\n },\n },\n };\n});\n\nconst { center, series, source, width, dataNoDisponible } = toRefs(props);\n</script>\n\n<template>\n <EpEdu :title=\"title\" :type=\"type\" :hideIcon=\"hideIcon\" :icon=\"mdiChartLine\">\n <template #intentions v-if=\"renderText\">\n <div v-html=\"renderText\" />\n </template>\n <template #content>\n <div\n :class=\"`p-4 ${center ? 'flex justify-center' : ''}`\"\n v-if=\"globalOptions && series\"\n >\n <VueApexCharts\n :width=\"width\"\n type=\"line\"\n :options=\"globalOptions\"\n :series=\"series\"\n />\n </div>\n <div v-else>\n <p>{{ dataNoDisponible }}</p>\n </div>\n </template>\n <template #actions v-if=\"source\">\n {{ source }}\n </template>\n </EpEdu>\n</template>\n"],"names":["_createBlock","EpEdu","title","type","hideIcon","_unref","_createElementBlock","_createVNode","_createElementVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAUA,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,OAAO,aAAA;AAEb,UAAM,gBAAgB,SAAS,MAAM;AACnC,aAAO;AAAA,QACL,GAAG,MAAM;AAAA,QACT,OAAO;AAAA,UACL,MAAM,KAAK;AAAA,QAAA;AAAA,QAEb,YAAY;AAAA,UACV,SAAS;AAAA,QAAA;AAAA,QAEX,QAAQ;AAAA,UACN,OAAO;AAAA,QAAA;AAAA,QAET,OAAO;AAAA,UACL,YAAY;AAAA,UACZ,MAAM;AAAA,UACN,MAAM;AAAA,YACJ,SAAS;AAAA,UAAA;AAAA,QACX;AAAA,QAEF,MAAM;AAAA,UACJ,KAAK;AAAA,YACH,QAAQ;AAAA,YACR,SAAS;AAAA,UAAA;AAAA,QACX;AAAA,MACF;AAAA,IAEJ,CAAC;AAED,UAAM,EAAE,QAAQ,QAAQ,QAAQ,OAAO,iBAAA,IAAqB,OAAO,KAAK;;0BAItEA,YAuBQC,aAAA;AAAA,QAvBA,OAAOC,KAAAA;AAAAA,QAAQ,MAAMC,KAAAA;AAAAA,QAAO,UAAUC,KAAAA;AAAAA,QAAW,MAAMC,MAAA,YAAA;AAAA,MAAA;QAIlD,iBACT,MAUM;AAAA,UARE,cAAA,SAAiBA,MAAA,MAAA,kBAFzBC,mBAUM,OAAA;AAAA;YATH,6BAAcD,MAAA,MAAA,IAAM,wBAAA,EAAA,EAAA;AAAA,UAAA;YAGrBE,YAKEF,MAAA,aAAA,GAAA;AAAA,cAJC,OAAOA,MAAA,KAAA;AAAA,cACR,MAAK;AAAA,cACJ,SAAS,cAAA;AAAA,cACT,QAAQA,MAAA,MAAA;AAAA,YAAA;iCAGbC,mBAEM,OAAA,YAAA;AAAA,YADJE,mBAA6B,2BAAvBH,MAAA,gBAAA,CAAgB,GAAA,CAAA;AAAA,UAAA;;;;QAhBE,WAAA;gBAAjB;AAAA,sBACT,MAA2B;AAAA,YAA3BG,mBAA2B,OAAA,EAAtB,WAAQ,WAAA,SAAU,MAAA,GAAA,UAAA;AAAA,UAAA;;;QAkBAH,MAAA,MAAA;gBAAd;AAAA,sBACT,MAAY;AAAA,4CAATA,MAAA,MAAA,CAAM,GAAA,CAAA;AAAA,UAAA;;;;;;;"}
|
|
@@ -48,13 +48,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
48
48
|
const { center, series, source, width, dataNoDisponible } = toRefs(props);
|
|
49
49
|
return (_ctx, _cache) => {
|
|
50
50
|
return openBlock(), createBlock(_sfc_main$1, {
|
|
51
|
-
title:
|
|
52
|
-
type:
|
|
53
|
-
hideIcon:
|
|
51
|
+
title: _ctx.title,
|
|
52
|
+
type: _ctx.type,
|
|
53
|
+
hideIcon: _ctx.hideIcon,
|
|
54
54
|
icon: unref(mdiChartPie)
|
|
55
55
|
}, createSlots({
|
|
56
56
|
content: withCtx(() => [
|
|
57
|
-
|
|
57
|
+
_ctx.options && unref(series) ? (openBlock(), createElementBlock("div", {
|
|
58
58
|
key: 0,
|
|
59
59
|
class: normalizeClass(`p-4 ${unref(center) ? "flex justify-center" : ""}`)
|
|
60
60
|
}, [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpPieChart.vue.js","sources":["../../../src/components/charts/EpPieChart.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, toRefs } from \"vue\";\nimport EpEdu from \"~/components/educationals/EpEdu.vue\";\nimport { mdiChartPie } from \"@mdi/js\";\nimport { isHtml } from \"~/composables/isHtml\";\nimport { useMarkdown } from \"~/composables/useMarkdown\";\nimport { useColorMode } from \"@vueuse/core\";\nimport type { EpPieChartProps } from \"~/types/charts/EpPieChart\";\nimport VueApexCharts from \"vue3-apexcharts\";\
|
|
1
|
+
{"version":3,"file":"EpPieChart.vue.js","sources":["../../../src/components/charts/EpPieChart.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, toRefs } from \"vue\";\nimport EpEdu from \"~/components/educationals/EpEdu.vue\";\nimport { mdiChartPie } from \"@mdi/js\";\nimport { isHtml } from \"~/composables/isHtml\";\nimport { useMarkdown } from \"~/composables/useMarkdown\";\nimport { useColorMode } from \"@vueuse/core\";\nimport type { EpPieChartProps } from \"~/types/charts/EpPieChart\";\nimport VueApexCharts from \"vue3-apexcharts\";\n\nconst props = withDefaults(defineProps<EpPieChartProps>(), {\n center: true,\n type: \"neutral\",\n width: \"500\",\n dataNoDisponible: \"Data no disponible\",\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 mode = useColorMode();\n\nconst globalOptions = computed(() => {\n return {\n ...props.options,\n theme: {\n mode: mode.value,\n },\n chart: {\n background: \"transparent\",\n },\n };\n});\n\nconst { center, series, source, width, dataNoDisponible } = toRefs(props);\n</script>\n\n<template>\n <EpEdu :title=\"title\" :type=\"type\" :hideIcon=\"hideIcon\" :icon=\"mdiChartPie\">\n <template #intentions v-if=\"renderText\">\n <div v-html=\"renderText\" />\n </template>\n <template #content>\n <div\n :class=\"`p-4 ${center ? 'flex justify-center' : ''}`\"\n v-if=\"options && series\"\n >\n <VueApexCharts\n :width=\"width\"\n type=\"pie\"\n :options=\"globalOptions\"\n :series=\"series\"\n />\n </div>\n <div v-else>\n <p>{{ dataNoDisponible }}</p>\n </div>\n </template>\n <template #actions v-if=\"source\">\n <p>{{ source }}</p>\n </template>\n </EpEdu>\n</template>\n"],"names":["_createBlock","EpEdu","title","type","hideIcon","_unref","options","_createElementBlock","_createVNode","_createElementVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAUA,UAAM,QAAQ;AAOd,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,OAAO,aAAA;AAEb,UAAM,gBAAgB,SAAS,MAAM;AACnC,aAAO;AAAA,QACL,GAAG,MAAM;AAAA,QACT,OAAO;AAAA,UACL,MAAM,KAAK;AAAA,QAAA;AAAA,QAEb,OAAO;AAAA,UACL,YAAY;AAAA,QAAA;AAAA,MACd;AAAA,IAEJ,CAAC;AAED,UAAM,EAAE,QAAQ,QAAQ,QAAQ,OAAO,iBAAA,IAAqB,OAAO,KAAK;;0BAItEA,YAuBQC,aAAA;AAAA,QAvBA,OAAOC,KAAAA;AAAAA,QAAQ,MAAMC,KAAAA;AAAAA,QAAO,UAAUC,KAAAA;AAAAA,QAAW,MAAMC,MAAA,WAAA;AAAA,MAAA;QAIlD,iBACT,MAUM;AAAA,UAREC,KAAAA,WAAWD,MAAA,MAAA,kBAFnBE,mBAUM,OAAA;AAAA;YATH,6BAAcF,MAAA,MAAA,IAAM,wBAAA,EAAA,EAAA;AAAA,UAAA;YAGrBG,YAKEH,MAAA,aAAA,GAAA;AAAA,cAJC,OAAOA,MAAA,KAAA;AAAA,cACR,MAAK;AAAA,cACJ,SAAS,cAAA;AAAA,cACT,QAAQA,MAAA,MAAA;AAAA,YAAA;iCAGbE,mBAEM,OAAA,YAAA;AAAA,YADJE,mBAA6B,2BAAvBJ,MAAA,gBAAA,CAAgB,GAAA,CAAA;AAAA,UAAA;;;;QAhBE,WAAA;gBAAjB;AAAA,sBACT,MAA2B;AAAA,YAA3BI,mBAA2B,OAAA,EAAtB,WAAQ,WAAA,SAAU,MAAA,GAAA,UAAA;AAAA,UAAA;;;QAkBAJ,MAAA,MAAA;gBAAd;AAAA,sBACT,MAAmB;AAAA,YAAnBI,mBAAmB,2BAAbJ,MAAA,MAAA,CAAM,GAAA,CAAA;AAAA,UAAA;;;;;;;"}
|
|
@@ -145,17 +145,17 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
145
145
|
return openBlock(), createElementBlock("div", null, [
|
|
146
146
|
createElementVNode("div", {
|
|
147
147
|
class: "bg-surface-2 dark:bg-surface-2-dark rounded-md p-4 flex flex-col",
|
|
148
|
-
style: normalizeStyle({ minHeight: "500px", backgroundColor:
|
|
148
|
+
style: normalizeStyle({ minHeight: "500px", backgroundColor: _ctx.bgColor })
|
|
149
149
|
}, [
|
|
150
150
|
createElementVNode("div", _hoisted_1, [
|
|
151
|
-
createElementVNode("h1", _hoisted_2, toDisplayString(
|
|
151
|
+
createElementVNode("h1", _hoisted_2, toDisplayString(_ctx.title), 1),
|
|
152
152
|
currentOption.value ? (openBlock(), createElementBlock("h2", _hoisted_3, toDisplayString(currentOption.value.name), 1)) : createCommentVNode("", true),
|
|
153
153
|
currentOption.value ? (openBlock(), createElementBlock("div", _hoisted_4, [
|
|
154
154
|
createVNode(_sfc_main$1, {
|
|
155
155
|
type: "primary",
|
|
156
156
|
rounded: "",
|
|
157
157
|
size: "small",
|
|
158
|
-
"extra-class": `${
|
|
158
|
+
"extra-class": `${_ctx.transitionAnimation}`,
|
|
159
159
|
onClick: goToPrevious
|
|
160
160
|
}, {
|
|
161
161
|
default: withCtx(() => [
|
|
@@ -171,9 +171,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
171
171
|
createElementVNode("div", null, [
|
|
172
172
|
isIntroductoryPart.value ? (openBlock(), createElementBlock("div", _hoisted_5, [
|
|
173
173
|
createVNode(_sfc_main$3, {
|
|
174
|
-
text: (_a =
|
|
175
|
-
media:
|
|
176
|
-
cols:
|
|
174
|
+
text: (_a = _ctx.initialInstruction) != null ? _a : "",
|
|
175
|
+
media: _ctx.media,
|
|
176
|
+
cols: _ctx.initialTwoCols,
|
|
177
177
|
"flex-col": ""
|
|
178
178
|
}, null, 8, ["text", "media", "cols"]),
|
|
179
179
|
createElementVNode("div", {
|
|
@@ -185,14 +185,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
185
185
|
onClick: start
|
|
186
186
|
}, {
|
|
187
187
|
default: withCtx(() => [
|
|
188
|
-
createTextVNode(toDisplayString(
|
|
188
|
+
createTextVNode(toDisplayString(_ctx.labelStart), 1)
|
|
189
189
|
]),
|
|
190
190
|
_: 1
|
|
191
191
|
})
|
|
192
192
|
], 2)
|
|
193
193
|
])) : currentOption.value && !isIntroductoryPart.value ? (openBlock(), createElementBlock("div", _hoisted_6, [
|
|
194
194
|
createElementVNode("div", {
|
|
195
|
-
class: normalizeClass(`${
|
|
195
|
+
class: normalizeClass(`${_ctx.transitionAnimation} my-12`)
|
|
196
196
|
}, [
|
|
197
197
|
createVNode(_sfc_main$3, {
|
|
198
198
|
text: (_b = currentOption.value.text) != null ? _b : "",
|
|
@@ -223,19 +223,19 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
223
223
|
onClick: finish
|
|
224
224
|
}, {
|
|
225
225
|
default: withCtx(() => [
|
|
226
|
-
createTextVNode(toDisplayString(
|
|
226
|
+
createTextVNode(toDisplayString(_ctx.labelBtnFinish), 1)
|
|
227
227
|
]),
|
|
228
228
|
_: 1
|
|
229
229
|
})) : createCommentVNode("", true)
|
|
230
230
|
])
|
|
231
231
|
], 2)
|
|
232
232
|
])) : (openBlock(), createElementBlock("div", _hoisted_8, [
|
|
233
|
-
createElementVNode("h3", _hoisted_9, toDisplayString(
|
|
233
|
+
createElementVNode("h3", _hoisted_9, toDisplayString(_ctx.labelFinish), 1),
|
|
234
234
|
createElementVNode("div", {
|
|
235
|
-
class: normalizeClass(`flex gap-6 mt-3 ${!
|
|
235
|
+
class: normalizeClass(`flex gap-6 mt-3 ${!_ctx.generalFeedback ? "w-3/6 mx-auto" : ""}`)
|
|
236
236
|
}, [
|
|
237
237
|
createElementVNode("div", _hoisted_10, [
|
|
238
|
-
createElementVNode("h3", _hoisted_11, toDisplayString(
|
|
238
|
+
createElementVNode("h3", _hoisted_11, toDisplayString(_ctx.labelYourPath), 1),
|
|
239
239
|
createElementVNode("div", _hoisted_12, [
|
|
240
240
|
(openBlock(true), createElementBlock(Fragment, null, renderList(path.value, (item, i) => {
|
|
241
241
|
var _a2;
|
|
@@ -259,7 +259,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
259
259
|
onClick: _cache[0] || (_cache[0] = ($event) => showPath.value = true)
|
|
260
260
|
}, {
|
|
261
261
|
default: withCtx(() => [
|
|
262
|
-
createTextVNode(toDisplayString(
|
|
262
|
+
createTextVNode(toDisplayString(_ctx.labelShowFullPath), 1)
|
|
263
263
|
]),
|
|
264
264
|
_: 1
|
|
265
265
|
})
|
|
@@ -285,7 +285,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
285
285
|
rounded: ""
|
|
286
286
|
}, {
|
|
287
287
|
default: withCtx(() => [
|
|
288
|
-
createTextVNode(toDisplayString(
|
|
288
|
+
createTextVNode(toDisplayString(_ctx.labelClose), 1)
|
|
289
289
|
]),
|
|
290
290
|
_: 1
|
|
291
291
|
})
|
|
@@ -294,9 +294,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
294
294
|
_: 1
|
|
295
295
|
}, 8, ["modelValue"])) : createCommentVNode("", true)
|
|
296
296
|
]),
|
|
297
|
-
|
|
297
|
+
_ctx.generalFeedback ? (openBlock(), createElementBlock("div", _hoisted_16, [
|
|
298
298
|
createElementVNode("div", {
|
|
299
|
-
innerHTML: unref(useRenderText)(
|
|
299
|
+
innerHTML: unref(useRenderText)(_ctx.generalFeedback)
|
|
300
300
|
}, null, 8, _hoisted_17)
|
|
301
301
|
])) : createCommentVNode("", true)
|
|
302
302
|
], 2),
|
|
@@ -307,7 +307,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
307
307
|
onClick: restart
|
|
308
308
|
}, {
|
|
309
309
|
default: withCtx(() => [
|
|
310
|
-
createTextVNode(toDisplayString(
|
|
310
|
+
createTextVNode(toDisplayString(_ctx.labelRestart), 1)
|
|
311
311
|
]),
|
|
312
312
|
_: 1
|
|
313
313
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpBranchingScenario.vue2.js","sources":["../../../src/components/educationals/EpBranchingScenario.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, computed, watchEffect } from \"vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { TreeNode } from \"~/types/Hierarchy\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport Details from \"~/components/tools/Details.vue\";\nimport EpModal from \"~/components/interactions/EpModal.vue\";\nimport EpHierarchy from \"~/components/medias/EpHierarchy.vue\";\nimport EpBtn from \"../basics/EpBtn.vue\";\nimport { mdiArrowLeft } from \"@mdi/js\";\nimport TextMedia from \"~/components/tools/TextMedia.vue\";\nimport type { EpBranchingScenarioProps } from \"~/types/educationals/EpBranchingScenario\";\n\nconst props = withDefaults(defineProps<EpBranchingScenarioProps>(), {\n initialInstruction: null,\n transitionAnimation: \"fade\",\n labelFinish: \"Vous avez terminé le scénario!\",\n labelYourPath: \"Votre parcours\",\n labelShowFullPath: \"Voir le parcours au complet\",\n labelClose: \"Fermer\",\n labelRestart: \"Recommencer\",\n labelStart: \"Commencer\",\n labelBtnFinish: \"Fin du scénario\",\n colorRect: \"fill-main-color-400\",\n colorPath: \"stroke-yellow-400\",\n});\n\nconst showPath = ref(false);\nconst path = ref<TreeNode[]>([]);\nconst userPath = ref<TreeNode | null>(null);\nconst currentOption = ref<TreeNode | null>(null);\n\n// Manage the introductory part\nconst isIntroductoryPart = ref(true);\n\nconst start = () => {\n isIntroductoryPart.value = false;\n currentOption.value = props.decisionTree;\n path.value = [props.decisionTree];\n};\n\nconst styleIntro = computed(() => {\n const noInstruction = !props.initialInstruction;\n const noMedia = !props.media;\n\n if (noInstruction && noMedia) {\n return \"pt-44\";\n }\n\n return \"\";\n});\n\n// Return function\nconst goToPrevious = () => {\n //if(notTheEnd.value){\n if (path.value.length === 1) {\n isIntroductoryPart.value = true;\n currentOption.value = null;\n return;\n }\n\n path.value.pop();\n // Get the previous option in the path\n const lastOption = path.value[path.value.length - 1];\n\n if (lastOption) {\n currentOption.value = lastOption;\n isTheLastOne.value = false\n } else {\n currentOption.value = props.decisionTree;\n }\n};\n\n// Restart function\nconst restart = () => {\n //currentSlide.value = 0;\n currentOption.value = null;\n isIntroductoryPart.value = true;\n path.value = [];\n isTheLastOne.value = false\n};\n\nconst isTheLastOne = ref(false)\n\nconst nextSlide = (option: TreeNode) => {\n //currentSlide.value++\n path.value.push(option);\n //console.log(option)\n if (option.children && option.children.length > 0 && !isTheLastOne.value) {\n currentOption.value = option; // drill into next level\n } else {\n //currentOption.value = null; // reached the end (leaf node)\n isTheLastOne.value = true\n currentOption.value = option\n }\n \n};\n\nconst finish = () => {\n currentOption.value = null\n userPath.value = convertOptionToTreeNode(props.decisionTree, path.value); \n}\n\n//helper function\nfunction convertOptionToTreeNode(option: TreeNode, path: TreeNode[]): TreeNode {\n const isActive = path.includes(option);\n return {\n name: option.name,\n label: option.label ?? \"\",\n text: option.text,\n component: option.component,\n active: isActive,\n children: option.children?.map((child) =>\n convertOptionToTreeNode(child, path)\n ),\n };\n}\n\n</script>\n\n<template>\n <div>\n <div\n class=\"bg-surface-2 dark:bg-surface-2-dark rounded-md p-4 flex flex-col\"\n :style=\"{ minHeight: '500px', backgroundColor: bgColor }\"\n >\n <!-- <div v-for=\"item in path\" :key=\"item.name\">\n <span class=\"text-xs\">{{ item.name }}</span>\n </div> -->\n <!-- Header (fixed at top of card) -->\n <div class=\"mb-2\">\n <h1 class=\"font-bold text-3xl text-center\">{{ title }}</h1>\n <h2 class=\"font-semibold text-xl text-center\" v-if=\"currentOption\">{{ currentOption.name }}</h2>\n <div v-if=\"currentOption\" class=\"mt-2\">\n <EpBtn\n type=\"primary\"\n rounded\n size=\"small\"\n :extra-class=\"`${transitionAnimation}`\"\n @click=\"goToPrevious\"\n >\n <EpIcon :icon-path=\"mdiArrowLeft\" size=\"25\" />\n </EpBtn>\n </div>\n </div>\n\n <!-- Content Area -->\n <div>\n <!-- Introductory Part -->\n <div v-if=\"isIntroductoryPart\" class=\"w-full flex flex-col space-y-6\">\n <TextMedia\n :text=\"initialInstruction ?? ''\"\n :media=\"media\"\n :cols=\"initialTwoCols\"\n flex-col\n />\n <div :class=\"`justify-center flex ${styleIntro}`\">\n <EpBtn type=\"primary\" rounded @click=\"start\">{{\n labelStart\n }}</EpBtn>\n </div>\n </div>\n\n <!-- Slides -->\n <template v-else-if=\"currentOption && !isIntroductoryPart\">\n <div class=\"w-full\">\n <div :class=\"`${transitionAnimation} my-12`\">\n <TextMedia\n :text=\"currentOption.text ?? ''\"\n :media=\"currentOption.component\"\n :cols=\"currentOption.cols\"\n flex-col\n />\n\n <div\n :class=\"`w-full my-4 mx-4 flex flex-wrap gap-2 justify-center items-center`\"\n >\n <template\n v-for=\"(option, index) in currentOption.children\"\n :key=\"`option-${index}`\"\n >\n <EpBtn\n rounded\n type=\"primary\"\n class=\"flex-1 min-w-[120px] sm:min-w-[160px] max-w-xs\"\n @click=\"nextSlide(option)\"\n >\n {{ option.name }}\n </EpBtn>\n </template>\n <template v-if=\"isTheLastOne\">\n <EpBtn\n rounded\n type=\"primary\"\n class=\"flex-1 min-w-[120px] sm:min-w-[160px] max-w-xs\"\n @click=\"finish\"\n >\n {{labelBtnFinish}}\n </EpBtn>\n </template>\n </div>\n </div>\n </div>\n </template>\n\n <!--show path-->\n <div v-else>\n <!-- <template v-if=\"userPath\">\n <EpHierarchy :nodes=\"userPath\"/>\n </template> -->\n <h3 class=\"text-xl text-center font-semibold\">{{ labelFinish }}</h3>\n <div\n :class=\"`flex gap-6 mt-3 ${\n !generalFeedback ? 'w-3/6 mx-auto' : ''\n }`\"\n >\n <div class=\"w-full\">\n <h3 class=\"font-semibold mb-3\">{{ labelYourPath }}</h3>\n <div class=\"overflow-auto p-2\" :style=\"{ height: '200px' }\">\n <template v-for=\"(item, i) in path\" :key=\"`user-choice-${i}`\">\n <template v-if=\"i !== 0\">\n <div class=\"mb-2\">\n <Details\n :content=\"path[i-1].text ?? ''\"\n :title=\"item.name\"\n :media=\"path[i-1].component\"\n />\n </div>\n </template>\n </template>\n </div>\n <div class=\"flex justify-center mt-2\">\n <EpBtn type=\"info\" rounded @click=\"showPath = true\">{{\n labelShowFullPath\n }}</EpBtn>\n </div>\n <EpModal v-if=\"userPath\" v-model=\"showPath\">\n <EpHierarchy\n :max-width=\"2000\"\n :nodes=\"userPath\"\n :is-cluster=\"props.isCluster\"\n :color-path=\"props.colorPath\"\n :color-rect=\"props.colorRect\"\n />\n <div class=\"flex justify-end mt-4\">\n <EpBtn\n @click=\"showPath = false\"\n type=\"error\"\n outlined\n rounded\n >{{ labelClose }}</EpBtn\n >\n </div>\n </EpModal>\n </div>\n <div\n v-if=\"generalFeedback\"\n class=\"flex w-full flex-col col-span-1 items-center px-4 border-l-2 border-gray-700 overflow-auto\"\n >\n <div v-html=\"useRenderText(generalFeedback)\" />\n </div>\n </div>\n\n <div class=\"flex justify-center mt-2\">\n <EpBtn rounded type=\"warning\" @click=\"restart\">{{\n labelRestart\n }}</EpBtn>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n@keyframes fade {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n\n@keyframes scale {\n 0% {\n transform: scale(0.5);\n opacity: 0;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n@keyframes slideY {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n}\n\n/* Transition animation */\n.fade {\n animation: fade 1s;\n}\n\n.scale {\n animation: scale 1s;\n}\n\n.slideY {\n animation: slideY 1s;\n}\n</style>\n"],"names":["path","_createElementBlock","_createElementVNode","_toDisplayString","_openBlock","_createVNode","EpBtn","EpIcon","_unref","TextMedia","_Fragment","_createBlock","_createTextVNode","_normalizeClass","_renderList","Details","_a","EpModal","EpHierarchy"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EpBranchingScenario.vue2.js","sources":["../../../src/components/educationals/EpBranchingScenario.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, computed, watchEffect } from \"vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { TreeNode } from \"~/types/Hierarchy\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport Details from \"~/components/tools/Details.vue\";\nimport EpModal from \"~/components/interactions/EpModal.vue\";\nimport EpHierarchy from \"~/components/medias/EpHierarchy.vue\";\nimport EpBtn from \"../basics/EpBtn.vue\";\nimport { mdiArrowLeft } from \"@mdi/js\";\nimport TextMedia from \"~/components/tools/TextMedia.vue\";\nimport type { EpBranchingScenarioProps } from \"~/types/educationals/EpBranchingScenario\";\n\nconst props = withDefaults(defineProps<EpBranchingScenarioProps>(), {\n initialInstruction: null,\n transitionAnimation: \"fade\",\n labelFinish: \"Vous avez terminé le scénario!\",\n labelYourPath: \"Votre parcours\",\n labelShowFullPath: \"Voir le parcours au complet\",\n labelClose: \"Fermer\",\n labelRestart: \"Recommencer\",\n labelStart: \"Commencer\",\n labelBtnFinish: \"Fin du scénario\",\n colorRect: \"fill-main-color-400\",\n colorPath: \"stroke-yellow-400\",\n});\n\nconst showPath = ref(false);\nconst path = ref<TreeNode[]>([]);\nconst userPath = ref<TreeNode | null>(null);\nconst currentOption = ref<TreeNode | null>(null);\n\n// Manage the introductory part\nconst isIntroductoryPart = ref(true);\n\nconst start = () => {\n isIntroductoryPart.value = false;\n currentOption.value = props.decisionTree;\n path.value = [props.decisionTree];\n};\n\nconst styleIntro = computed(() => {\n const noInstruction = !props.initialInstruction;\n const noMedia = !props.media;\n\n if (noInstruction && noMedia) {\n return \"pt-44\";\n }\n\n return \"\";\n});\n\n// Return function\nconst goToPrevious = () => {\n //if(notTheEnd.value){\n if (path.value.length === 1) {\n isIntroductoryPart.value = true;\n currentOption.value = null;\n return;\n }\n\n path.value.pop();\n // Get the previous option in the path\n const lastOption = path.value[path.value.length - 1];\n\n if (lastOption) {\n currentOption.value = lastOption;\n isTheLastOne.value = false\n } else {\n currentOption.value = props.decisionTree;\n }\n};\n\n// Restart function\nconst restart = () => {\n //currentSlide.value = 0;\n currentOption.value = null;\n isIntroductoryPart.value = true;\n path.value = [];\n isTheLastOne.value = false\n};\n\nconst isTheLastOne = ref(false)\n\nconst nextSlide = (option: TreeNode) => {\n //currentSlide.value++\n path.value.push(option);\n //console.log(option)\n if (option.children && option.children.length > 0 && !isTheLastOne.value) {\n currentOption.value = option; // drill into next level\n } else {\n //currentOption.value = null; // reached the end (leaf node)\n isTheLastOne.value = true\n currentOption.value = option\n }\n \n};\n\nconst finish = () => {\n currentOption.value = null\n userPath.value = convertOptionToTreeNode(props.decisionTree, path.value); \n}\n\n//helper function\nfunction convertOptionToTreeNode(option: TreeNode, path: TreeNode[]): TreeNode {\n const isActive = path.includes(option);\n return {\n name: option.name,\n label: option.label ?? \"\",\n text: option.text,\n component: option.component,\n active: isActive,\n children: option.children?.map((child) =>\n convertOptionToTreeNode(child, path)\n ),\n };\n}\n\n</script>\n\n<template>\n <div>\n <div\n class=\"bg-surface-2 dark:bg-surface-2-dark rounded-md p-4 flex flex-col\"\n :style=\"{ minHeight: '500px', backgroundColor: bgColor }\"\n >\n <!-- <div v-for=\"item in path\" :key=\"item.name\">\n <span class=\"text-xs\">{{ item.name }}</span>\n </div> -->\n <!-- Header (fixed at top of card) -->\n <div class=\"mb-2\">\n <h1 class=\"font-bold text-3xl text-center\">{{ title }}</h1>\n <h2 class=\"font-semibold text-xl text-center\" v-if=\"currentOption\">{{ currentOption.name }}</h2>\n <div v-if=\"currentOption\" class=\"mt-2\">\n <EpBtn\n type=\"primary\"\n rounded\n size=\"small\"\n :extra-class=\"`${transitionAnimation}`\"\n @click=\"goToPrevious\"\n >\n <EpIcon :icon-path=\"mdiArrowLeft\" size=\"25\" />\n </EpBtn>\n </div>\n </div>\n\n <!-- Content Area -->\n <div>\n <!-- Introductory Part -->\n <div v-if=\"isIntroductoryPart\" class=\"w-full flex flex-col space-y-6\">\n <TextMedia\n :text=\"initialInstruction ?? ''\"\n :media=\"media\"\n :cols=\"initialTwoCols\"\n flex-col\n />\n <div :class=\"`justify-center flex ${styleIntro}`\">\n <EpBtn type=\"primary\" rounded @click=\"start\">{{\n labelStart\n }}</EpBtn>\n </div>\n </div>\n\n <!-- Slides -->\n <template v-else-if=\"currentOption && !isIntroductoryPart\">\n <div class=\"w-full\">\n <div :class=\"`${transitionAnimation} my-12`\">\n <TextMedia\n :text=\"currentOption.text ?? ''\"\n :media=\"currentOption.component\"\n :cols=\"currentOption.cols\"\n flex-col\n />\n\n <div\n :class=\"`w-full my-4 mx-4 flex flex-wrap gap-2 justify-center items-center`\"\n >\n <template\n v-for=\"(option, index) in currentOption.children\"\n :key=\"`option-${index}`\"\n >\n <EpBtn\n rounded\n type=\"primary\"\n class=\"flex-1 min-w-[120px] sm:min-w-[160px] max-w-xs\"\n @click=\"nextSlide(option)\"\n >\n {{ option.name }}\n </EpBtn>\n </template>\n <template v-if=\"isTheLastOne\">\n <EpBtn\n rounded\n type=\"primary\"\n class=\"flex-1 min-w-[120px] sm:min-w-[160px] max-w-xs\"\n @click=\"finish\"\n >\n {{labelBtnFinish}}\n </EpBtn>\n </template>\n </div>\n </div>\n </div>\n </template>\n\n <!--show path-->\n <div v-else>\n <!-- <template v-if=\"userPath\">\n <EpHierarchy :nodes=\"userPath\"/>\n </template> -->\n <h3 class=\"text-xl text-center font-semibold\">{{ labelFinish }}</h3>\n <div\n :class=\"`flex gap-6 mt-3 ${\n !generalFeedback ? 'w-3/6 mx-auto' : ''\n }`\"\n >\n <div class=\"w-full\">\n <h3 class=\"font-semibold mb-3\">{{ labelYourPath }}</h3>\n <div class=\"overflow-auto p-2\" :style=\"{ height: '200px' }\">\n <template v-for=\"(item, i) in path\" :key=\"`user-choice-${i}`\">\n <template v-if=\"i !== 0\">\n <div class=\"mb-2\">\n <Details\n :content=\"path[i-1].text ?? ''\"\n :title=\"item.name\"\n :media=\"path[i-1].component\"\n />\n </div>\n </template>\n </template>\n </div>\n <div class=\"flex justify-center mt-2\">\n <EpBtn type=\"info\" rounded @click=\"showPath = true\">{{\n labelShowFullPath\n }}</EpBtn>\n </div>\n <EpModal v-if=\"userPath\" v-model=\"showPath\">\n <EpHierarchy\n :max-width=\"2000\"\n :nodes=\"userPath\"\n :is-cluster=\"props.isCluster\"\n :color-path=\"props.colorPath\"\n :color-rect=\"props.colorRect\"\n />\n <div class=\"flex justify-end mt-4\">\n <EpBtn\n @click=\"showPath = false\"\n type=\"error\"\n outlined\n rounded\n >{{ labelClose }}</EpBtn\n >\n </div>\n </EpModal>\n </div>\n <div\n v-if=\"generalFeedback\"\n class=\"flex w-full flex-col col-span-1 items-center px-4 border-l-2 border-gray-700 overflow-auto\"\n >\n <div v-html=\"useRenderText(generalFeedback)\" />\n </div>\n </div>\n\n <div class=\"flex justify-center mt-2\">\n <EpBtn rounded type=\"warning\" @click=\"restart\">{{\n labelRestart\n }}</EpBtn>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n@keyframes fade {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n\n@keyframes scale {\n 0% {\n transform: scale(0.5);\n opacity: 0;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n@keyframes slideY {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n}\n\n/* Transition animation */\n.fade {\n animation: fade 1s;\n}\n\n.scale {\n animation: scale 1s;\n}\n\n.slideY {\n animation: slideY 1s;\n}\n</style>\n"],"names":["path","_createElementBlock","_createElementVNode","bgColor","_toDisplayString","title","_openBlock","_createVNode","EpBtn","transitionAnimation","EpIcon","_unref","TextMedia","initialInstruction","media","initialTwoCols","labelStart","_Fragment","_createBlock","_createTextVNode","labelBtnFinish","labelFinish","_normalizeClass","generalFeedback","labelYourPath","_renderList","Details","_a","labelShowFullPath","EpModal","EpHierarchy","labelClose","labelRestart"],"mappings":"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"}
|
|
@@ -33,7 +33,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
33
33
|
return props.theme;
|
|
34
34
|
});
|
|
35
35
|
return (_ctx, _cache) => {
|
|
36
|
-
return !
|
|
36
|
+
return !_ctx.compact ? (openBlock(), createBlock(unref(VCodeBlock), {
|
|
37
37
|
key: 0,
|
|
38
38
|
code: code.value,
|
|
39
39
|
highlightjs: "",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpCodeblock.vue.js","sources":["../../../src/components/educationals/EpCodeblock.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport VCodeBlock from \"@wdns/vue-code-block\";\nimport { defaultOption } from \"~/types/Codeblock\";\nimport EpAccordeon from \"~/components/interactions/EpAccordeon.vue\";\nimport { computed } from \"vue\";\nimport { ref } from \"vue\";\nimport type { EpCodeblockProps } from \"~/types/educationals/EpCodeblock\";\n\nconst props = withDefaults(defineProps<EpCodeblockProps>(), {\n code: \"\",\n label: \"\",\n lang: \"javascript\",\n theme: defaultOption,\n compact: false,\n});\n\nconst renderTitle = computed(() => {\n if (!props.title) {\n return \"En savoir plus\";\n }\n return props.title;\n});\n\nconst code = computed(() => {\n return ref(props.code);\n});\nconst label = computed(() => {\n return props.label;\n});\nconst lang = computed(() => {\n return props.lang;\n});\nconst theme = computed(() => {\n return props.theme;\n});\n</script>\n\n<template>\n <VCodeBlock\n :code=\"code\"\n highlightjs\n :label=\"label\"\n :lang=\"lang\"\n :theme=\"theme\"\n v-if=\"!compact\"\n />\n\n <EpAccordeon outlined :title=\"renderTitle\" v-else>\n <VCodeBlock\n :code=\"code\"\n highlightjs\n :label=\"label\"\n :lang=\"lang\"\n :theme=\"theme\"\n />\n </EpAccordeon>\n</template>\n<style>\npre {\n white-space: break-spaces;\n}\n</style>\n"],"names":["_createBlock","_unref","EpAccordeon","_createVNode"],"mappings":";;;;;;;;;;;;;;;AAQA,UAAM,QAAQ;AAQd,UAAM,cAAc,SAAS,MAAM;AACjC,UAAI,CAAC,MAAM,OAAO;AAChB,eAAO;AAAA,MACT;AACA,aAAO,MAAM;AAAA,IACf,CAAC;AAED,UAAM,OAAO,SAAS,MAAM;AAC1B,aAAO,IAAI,MAAM,IAAI;AAAA,IACvB,CAAC;AACD,UAAM,QAAQ,SAAS,MAAM;AAC3B,aAAO,MAAM;AAAA,IACf,CAAC;AACD,UAAM,OAAO,SAAS,MAAM;AAC1B,aAAO,MAAM;AAAA,IACf,CAAC;AACD,UAAM,QAAQ,SAAS,MAAM;AAC3B,aAAO,MAAM;AAAA,IACf,CAAC;;
|
|
1
|
+
{"version":3,"file":"EpCodeblock.vue.js","sources":["../../../src/components/educationals/EpCodeblock.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport VCodeBlock from \"@wdns/vue-code-block\";\nimport { defaultOption } from \"~/types/Codeblock\";\nimport EpAccordeon from \"~/components/interactions/EpAccordeon.vue\";\nimport { computed } from \"vue\";\nimport { ref } from \"vue\";\nimport type { EpCodeblockProps } from \"~/types/educationals/EpCodeblock\";\n\nconst props = withDefaults(defineProps<EpCodeblockProps>(), {\n code: \"\",\n label: \"\",\n lang: \"javascript\",\n theme: defaultOption,\n compact: false,\n});\n\nconst renderTitle = computed(() => {\n if (!props.title) {\n return \"En savoir plus\";\n }\n return props.title;\n});\n\nconst code = computed(() => {\n return ref(props.code);\n});\nconst label = computed(() => {\n return props.label;\n});\nconst lang = computed(() => {\n return props.lang;\n});\nconst theme = computed(() => {\n return props.theme;\n});\n</script>\n\n<template>\n <VCodeBlock\n :code=\"code\"\n highlightjs\n :label=\"label\"\n :lang=\"lang\"\n :theme=\"theme\"\n v-if=\"!compact\"\n />\n\n <EpAccordeon outlined :title=\"renderTitle\" v-else>\n <VCodeBlock\n :code=\"code\"\n highlightjs\n :label=\"label\"\n :lang=\"lang\"\n :theme=\"theme\"\n />\n </EpAccordeon>\n</template>\n<style>\npre {\n white-space: break-spaces;\n}\n</style>\n"],"names":["compact","_createBlock","_unref","EpAccordeon","_createVNode"],"mappings":";;;;;;;;;;;;;;;AAQA,UAAM,QAAQ;AAQd,UAAM,cAAc,SAAS,MAAM;AACjC,UAAI,CAAC,MAAM,OAAO;AAChB,eAAO;AAAA,MACT;AACA,aAAO,MAAM;AAAA,IACf,CAAC;AAED,UAAM,OAAO,SAAS,MAAM;AAC1B,aAAO,IAAI,MAAM,IAAI;AAAA,IACvB,CAAC;AACD,UAAM,QAAQ,SAAS,MAAM;AAC3B,aAAO,MAAM;AAAA,IACf,CAAC;AACD,UAAM,OAAO,SAAS,MAAM;AAC1B,aAAO,MAAM;AAAA,IACf,CAAC;AACD,UAAM,QAAQ,SAAS,MAAM;AAC3B,aAAO,MAAM;AAAA,IACf,CAAC;;cAUUA,KAAAA,wBANTC,YAOEC,MAAA,UAAA,GAAA;AAAA;QANC,MAAM,KAAA;AAAA,QACP,aAAA;AAAA,QACC,OAAO,MAAA;AAAA,QACP,MAAM,KAAA;AAAA,QACN,OAAO,MAAA;AAAA,MAAA,iEAIVD,YAQcE,MAAA;AAAA;QARD,UAAA;AAAA,QAAU,OAAO,YAAA;AAAA,MAAA;yBAC5B,MAME;AAAA,UANFC,YAMEF,MAAA,UAAA,GAAA;AAAA,YALC,MAAM,KAAA;AAAA,YACP,aAAA;AAAA,YACC,OAAO,MAAA;AAAA,YACP,MAAM,KAAA;AAAA,YACN,OAAO,MAAA;AAAA,UAAA;;;;;;;"}
|
|
@@ -63,7 +63,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
63
63
|
createElementVNode("div", _hoisted_2, [
|
|
64
64
|
unref(subtitle) ? (openBlock(), createElementBlock("h3", _hoisted_3, toDisplayString(unref(subtitle)), 1)) : createCommentVNode("", true),
|
|
65
65
|
createElementVNode("div", null, [
|
|
66
|
-
createVNode(_sfc_main$3, { content:
|
|
66
|
+
createVNode(_sfc_main$3, { content: _ctx.content }, null, 8, ["content"])
|
|
67
67
|
])
|
|
68
68
|
])
|
|
69
69
|
])
|
|
@@ -85,7 +85,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
85
85
|
createElementVNode("div", _hoisted_8, [
|
|
86
86
|
unref(subtitle) ? (openBlock(), createElementBlock("h3", _hoisted_9, toDisplayString(unref(subtitle)), 1)) : createCommentVNode("", true),
|
|
87
87
|
createElementVNode("div", null, [
|
|
88
|
-
createVNode(_sfc_main$3, { content:
|
|
88
|
+
createVNode(_sfc_main$3, { content: _ctx.content }, null, 8, ["content"])
|
|
89
89
|
])
|
|
90
90
|
])
|
|
91
91
|
])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpConclusion.vue.js","sources":["../../../src/components/educationals/EpConclusion.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs } from \"vue\";\nimport { ref } from \"vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport EpModal from \"~/components/interactions/EpModal.vue\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport type { EpConclusionProps } from \"~/types/educationals/EpConclusion\";\nimport RenderTextNode from \"~/components/tools/RenderTextNode.vue\";\nconst props = withDefaults(defineProps<EpConclusionProps>(), {\n modal: true,\n title: \"Conclusion\",\n btnType: \"base\",\n btnRounded: true,\n btnOutlined: true,\n});\nconst { title, icon, subtitle, modal, btnType, btnRounded, btnOutlined } = toRefs(props);\n\nconst showDefaultModal = ref(false);\n\n\n</script>\n<template>\n <div>\n <EpBtn\n v-if=\"modal\"\n :btnType=\"btnType\"\n :rounded=\"btnRounded\"\n :outlined=\"btnOutlined\"\n @click=\"showDefaultModal = true\"\n >\n {{ title }}\n </EpBtn>\n <EpModal v-if=\"modal\" v-model=\"showDefaultModal\" :title=\"title\">\n <div\n class=\"lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4\"\n >\n <div class=\"py-2\">\n <h3\n v-if=\"subtitle\"\n class=\"text-base font-semibold leading-7 \"\n >\n {{ subtitle }}\n </h3>\n <div>\n <RenderTextNode :content=\"content\" />\n </div>\n </div>\n </div>\n </EpModal>\n <div v-else class=\"mt-6 lg:col-span-5 lg:mt-0 lg:flex lg:items-center w-full\">\n <div class=\"lg:col-span-2\">\n <h2\n class=\"text-pretty text-3xl font-semibold tracking-tight sm:text-xl pr-4\"\n >\n <EpIcon v-if=\"icon\" :icon-path=\"icon\" size=\"28\" extraClass=\"mr-2\" />\n {{ title }}\n </h2>\n </div>\n <div\n class=\"lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4\"\n >\n <div class=\"py-2\">\n <h3\n v-if=\"subtitle\"\n class=\"text-base font-semibold leading-7\"\n >\n {{ subtitle }}\n </h3>\n <div>\n <RenderTextNode :content=\"content\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"names":["_createElementBlock","_unref","_createBlock","EpBtn","EpModal","_createElementVNode","_toDisplayString","_createVNode","RenderTextNode","_openBlock","EpIcon","_createTextVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,UAAM,QAAQ;AAOd,UAAM,EAAE,OAAO,MAAM,UAAU,OAAO,SAAS,YAAY,YAAA,IAAgB,OAAO,KAAK;AAEvF,UAAM,mBAAmB,IAAI,KAAK;;0BAKhCA,mBAoDM,OAAA,MAAA;AAAA,QAlDIC,MAAA,KAAA,kBADRC,YAQQC,aAAA;AAAA;UANL,SAASF,MAAA,OAAA;AAAA,UACT,SAASA,MAAA,UAAA;AAAA,UACT,UAAUA,MAAA,WAAA;AAAA,UACV,+CAAO,iBAAA,QAAgB;AAAA,QAAA;2BAExB,MAAW;AAAA,4CAARA,MAAA,KAAA,CAAK,GAAA,CAAA;AAAA,UAAA;;;QAEKA,MAAA,KAAA,kBAAfC,YAgBUE,aAAA;AAAA;sBAhBqB,iBAAA;AAAA,uEAAA,iBAAgB,QAAA;AAAA,UAAG,OAAOH,MAAA,KAAA;AAAA,QAAA;2BACvD,MAcM;AAAA,YAdNI,mBAcM,OAdN,YAcM;AAAA,cAXJA,mBAUM,OAVN,YAUM;AAAA,gBARIJ,MAAA,QAAA,kBADRD,mBAKK,MALL,YAKKM,gBADAL,MAAA,QAAA,CAAQ,GAAA,CAAA;gBAEbI,mBAEM,OAAA,MAAA;AAAA,kBADHE,YAAqCC,aAAA,EAApB,
|
|
1
|
+
{"version":3,"file":"EpConclusion.vue.js","sources":["../../../src/components/educationals/EpConclusion.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs } from \"vue\";\nimport { ref } from \"vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport EpModal from \"~/components/interactions/EpModal.vue\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport type { EpConclusionProps } from \"~/types/educationals/EpConclusion\";\nimport RenderTextNode from \"~/components/tools/RenderTextNode.vue\";\nconst props = withDefaults(defineProps<EpConclusionProps>(), {\n modal: true,\n title: \"Conclusion\",\n btnType: \"base\",\n btnRounded: true,\n btnOutlined: true,\n});\nconst { title, icon, subtitle, modal, btnType, btnRounded, btnOutlined } = toRefs(props);\n\nconst showDefaultModal = ref(false);\n\n\n</script>\n<template>\n <div>\n <EpBtn\n v-if=\"modal\"\n :btnType=\"btnType\"\n :rounded=\"btnRounded\"\n :outlined=\"btnOutlined\"\n @click=\"showDefaultModal = true\"\n >\n {{ title }}\n </EpBtn>\n <EpModal v-if=\"modal\" v-model=\"showDefaultModal\" :title=\"title\">\n <div\n class=\"lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4\"\n >\n <div class=\"py-2\">\n <h3\n v-if=\"subtitle\"\n class=\"text-base font-semibold leading-7 \"\n >\n {{ subtitle }}\n </h3>\n <div>\n <RenderTextNode :content=\"content\" />\n </div>\n </div>\n </div>\n </EpModal>\n <div v-else class=\"mt-6 lg:col-span-5 lg:mt-0 lg:flex lg:items-center w-full\">\n <div class=\"lg:col-span-2\">\n <h2\n class=\"text-pretty text-3xl font-semibold tracking-tight sm:text-xl pr-4\"\n >\n <EpIcon v-if=\"icon\" :icon-path=\"icon\" size=\"28\" extraClass=\"mr-2\" />\n {{ title }}\n </h2>\n </div>\n <div\n class=\"lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4\"\n >\n <div class=\"py-2\">\n <h3\n v-if=\"subtitle\"\n class=\"text-base font-semibold leading-7\"\n >\n {{ subtitle }}\n </h3>\n <div>\n <RenderTextNode :content=\"content\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"names":["_createElementBlock","_unref","_createBlock","EpBtn","EpModal","_createElementVNode","_toDisplayString","_createVNode","RenderTextNode","content","_openBlock","EpIcon","_createTextVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,UAAM,QAAQ;AAOd,UAAM,EAAE,OAAO,MAAM,UAAU,OAAO,SAAS,YAAY,YAAA,IAAgB,OAAO,KAAK;AAEvF,UAAM,mBAAmB,IAAI,KAAK;;0BAKhCA,mBAoDM,OAAA,MAAA;AAAA,QAlDIC,MAAA,KAAA,kBADRC,YAQQC,aAAA;AAAA;UANL,SAASF,MAAA,OAAA;AAAA,UACT,SAASA,MAAA,UAAA;AAAA,UACT,UAAUA,MAAA,WAAA;AAAA,UACV,+CAAO,iBAAA,QAAgB;AAAA,QAAA;2BAExB,MAAW;AAAA,4CAARA,MAAA,KAAA,CAAK,GAAA,CAAA;AAAA,UAAA;;;QAEKA,MAAA,KAAA,kBAAfC,YAgBUE,aAAA;AAAA;sBAhBqB,iBAAA;AAAA,uEAAA,iBAAgB,QAAA;AAAA,UAAG,OAAOH,MAAA,KAAA;AAAA,QAAA;2BACvD,MAcM;AAAA,YAdNI,mBAcM,OAdN,YAcM;AAAA,cAXJA,mBAUM,OAVN,YAUM;AAAA,gBARIJ,MAAA,QAAA,kBADRD,mBAKK,MALL,YAKKM,gBADAL,MAAA,QAAA,CAAQ,GAAA,CAAA;gBAEbI,mBAEM,OAAA,MAAA;AAAA,kBADHE,YAAqCC,aAAA,EAApB,SAASC,KAAAA,QAAAA,GAAO,MAAA,GAAA,CAAA,SAAA,CAAA;AAAA,gBAAA;;;;;2CAK1CC,aAAAV,mBAwBM,OAxBN,YAwBM;AAAA,UAvBJK,mBAOM,OAPN,YAOM;AAAA,YANJA,mBAKK,MALL,YAKK;AAAA,cAFWJ,MAAA,IAAA,kBAAdC,YAAoES,aAAA;AAAA;gBAA/C,aAAWV,MAAA,IAAA;AAAA,gBAAM,MAAK;AAAA,gBAAK,YAAW;AAAA,cAAA;cAASW,gBAAA,sBACjEX,MAAA,KAAA,CAAK,GAAA,CAAA;AAAA,YAAA;;UAGZI,mBAcM,OAdN,YAcM;AAAA,YAXJA,mBAUM,OAVN,YAUM;AAAA,cARIJ,MAAA,QAAA,kBADRD,mBAKK,MALL,YAKKM,gBADAL,MAAA,QAAA,CAAQ,GAAA,CAAA;cAEbI,mBAEM,OAAA,MAAA;AAAA,gBADHE,YAAqCC,aAAA,EAApB,SAASC,KAAAA,QAAAA,GAAO,MAAA,GAAA,CAAA,SAAA,CAAA;AAAA,cAAA;;;;;;;;"}
|
|
@@ -91,14 +91,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
91
91
|
createElementVNode("div", {
|
|
92
92
|
class: normalizeClass(`py-6 flex-1 ${unref(hideIcon) ? "px-6" : "pr-2"}`)
|
|
93
93
|
}, [
|
|
94
|
-
|
|
95
|
-
|
|
94
|
+
_ctx.title ? (openBlock(), createElementBlock("h4", _hoisted_7, toDisplayString(_ctx.title), 1)) : createCommentVNode("", true),
|
|
95
|
+
_ctx.description ? (openBlock(), createElementBlock("div", {
|
|
96
96
|
key: 1,
|
|
97
97
|
class: "mb-3",
|
|
98
|
-
innerHTML: unref(useRenderText)(
|
|
98
|
+
innerHTML: unref(useRenderText)(_ctx.description)
|
|
99
99
|
}, null, 8, _hoisted_8)) : createCommentVNode("", true),
|
|
100
100
|
createVNode(_sfc_main$3, {
|
|
101
|
-
href:
|
|
101
|
+
href: _ctx.url,
|
|
102
102
|
block: "",
|
|
103
103
|
type: "primary",
|
|
104
104
|
rounded: "",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpDocument.vue.js","sources":["../../../src/components/educationals/EpDocument.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs, computed } from \"vue\";\nimport EpCard from \"~/components/basics/EpCard.vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport { mdiFile } from \"@mdi/js\";\nimport { mdiArrowCollapseDown } from \"@mdi/js\";\nimport { mdiOpenInNew } from \"@mdi/js\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { EpDocumentProps } from \"~/types/educationals/EpDocument\";\n\nconst props = withDefaults(defineProps<EpDocumentProps>(), {\n src: null,\n hideIcon: false,\n labelDownload: \"Télécharger\",\n labelOpen: \"Ouvrir\",\n});\n\nconst fileDownloadExtensions = [\n \"doc\",\n \"docx\",\n \"xls\",\n \"xlsx\",\n \"ppt\",\n \"pptx\",\n \"rtf\",\n \"odt\",\n \"ods\",\n \"odp\",\n];\n\nconst getExtension = (url: string): string => {\n const queryRemoved = url.split(\"?\")[0];\n const parts = queryRemoved.split(\".\");\n return parts.length > 1 ? parts.pop()!.toLowerCase() : \"\";\n};\n\nconst shouldDownload = computed(() => {\n const ext = getExtension(props.url);\n return fileDownloadExtensions.includes(ext);\n});\n\nconst iconBtn = computed(() => {\n return shouldDownload.value ? mdiArrowCollapseDown : mdiOpenInNew;\n});\n\nconst label = computed(() => {\n return shouldDownload.value ? props.labelDownload : props.labelOpen;\n});\n\nconst renderIcon = computed(() => {\n return props.icon ? props.icon : mdiFile;\n});\n\nconst { src, hideIcon } = toRefs(props);\n</script>\n\n<template>\n <div class=\"w-5/6 mx-auto\">\n <EpCard>\n <div :class=\"`md:flex md:flex-wrap rounded-md`\">\n <div class=\"w-1/5 mr-6\" v-if=\"src\">\n <img\n :class=\"`md:w-full md:h-full md:object-cover rounded-md`\"\n :src=\"src\"\n alt=\"Image of quote\"\n />\n </div>\n <div\n class=\"flex items-center justify-center px-7\"\n v-else-if=\"!hideIcon\"\n >\n <div class=\"text-base dark:text-white'\">\n <EpIcon\n :size=\"60\"\n :icon-path=\"renderIcon\"\n extra-class=\"dark:text-white\"\n />\n </div>\n </div>\n <div :class=\"`py-6 flex-1 ${hideIcon ? 'px-6' : 'pr-2'}`\">\n <h4 class=\"text-2xl font-semibold mb-4\" v-if=\"title\">{{ title }}</h4>\n <div\n class=\"mb-3\"\n v-if=\"description\"\n v-html=\"useRenderText(description)\"\n />\n <EpBtn\n :href=\"url\"\n block\n type=\"primary\"\n rounded\n :prepend-icon=\"iconBtn\"\n >\n {{ label }}\n </EpBtn>\n </div>\n </div>\n </EpCard>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_createVNode","EpCard","_createElementVNode","_unref","EpIcon","_toDisplayString","EpBtn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,UAAM,QAAQ;AAOd,UAAM,yBAAyB;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,UAAM,eAAe,CAAC,QAAwB;AAC5C,YAAM,eAAe,IAAI,MAAM,GAAG,EAAE,CAAC;AACrC,YAAM,QAAQ,aAAa,MAAM,GAAG;AACpC,aAAO,MAAM,SAAS,IAAI,MAAM,IAAA,EAAO,gBAAgB;AAAA,IACzD;AAEA,UAAM,iBAAiB,SAAS,MAAM;AACpC,YAAM,MAAM,aAAa,MAAM,GAAG;AAClC,aAAO,uBAAuB,SAAS,GAAG;AAAA,IAC5C,CAAC;AAED,UAAM,UAAU,SAAS,MAAM;AAC7B,aAAO,eAAe,QAAQ,uBAAuB;AAAA,IACvD,CAAC;AAED,UAAM,QAAQ,SAAS,MAAM;AAC3B,aAAO,eAAe,QAAQ,MAAM,gBAAgB,MAAM;AAAA,IAC5D,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,MAAM,OAAO,MAAM,OAAO;AAAA,IACnC,CAAC;AAED,UAAM,EAAE,KAAK,aAAa,OAAO,KAAK;;AAIpC,aAAAA,UAAA,GAAAC,mBAyCM,OAzCN,YAyCM;AAAA,QAxCJC,YAuCSC,aAAA,MAAA;AAAA,2BAtCP,MAqCM;AAAA,YArCNC,mBAqCM,OArCN,YAqCM;AAAA,cApC0BC,MAAA,GAAA,KAA9BL,aAAAC,mBAMM,OANN,YAMM;AAAA,gBALJG,mBAIE,OAAA;AAAA,kBAHC,sBAAO,gDAAgD;AAAA,kBACvD,KAAKC,MAAA,GAAA;AAAA,kBACN,KAAI;AAAA,gBAAA;qBAKMA,MAAA,QAAA,KAFdL,UAAA,GAAAC,mBAWM,OAXN,YAWM;AAAA,gBAPJG,mBAMM,OANN,YAMM;AAAA,kBALJF,YAIEI,aAAA;AAAA,oBAHC,MAAM;AAAA,oBACN,aAAW,WAAA;AAAA,oBACZ,eAAY;AAAA,kBAAA;;;cAIlBF,mBAgBM,OAAA;AAAA,gBAhBA,qCAAsBC,MAAA,QAAA,IAAQ,SAAA,MAAA,EAAA;AAAA,cAAA;
|
|
1
|
+
{"version":3,"file":"EpDocument.vue.js","sources":["../../../src/components/educationals/EpDocument.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs, computed } from \"vue\";\nimport EpCard from \"~/components/basics/EpCard.vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport { mdiFile } from \"@mdi/js\";\nimport { mdiArrowCollapseDown } from \"@mdi/js\";\nimport { mdiOpenInNew } from \"@mdi/js\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { EpDocumentProps } from \"~/types/educationals/EpDocument\";\n\nconst props = withDefaults(defineProps<EpDocumentProps>(), {\n src: null,\n hideIcon: false,\n labelDownload: \"Télécharger\",\n labelOpen: \"Ouvrir\",\n});\n\nconst fileDownloadExtensions = [\n \"doc\",\n \"docx\",\n \"xls\",\n \"xlsx\",\n \"ppt\",\n \"pptx\",\n \"rtf\",\n \"odt\",\n \"ods\",\n \"odp\",\n];\n\nconst getExtension = (url: string): string => {\n const queryRemoved = url.split(\"?\")[0];\n const parts = queryRemoved.split(\".\");\n return parts.length > 1 ? parts.pop()!.toLowerCase() : \"\";\n};\n\nconst shouldDownload = computed(() => {\n const ext = getExtension(props.url);\n return fileDownloadExtensions.includes(ext);\n});\n\nconst iconBtn = computed(() => {\n return shouldDownload.value ? mdiArrowCollapseDown : mdiOpenInNew;\n});\n\nconst label = computed(() => {\n return shouldDownload.value ? props.labelDownload : props.labelOpen;\n});\n\nconst renderIcon = computed(() => {\n return props.icon ? props.icon : mdiFile;\n});\n\nconst { src, hideIcon } = toRefs(props);\n</script>\n\n<template>\n <div class=\"w-5/6 mx-auto\">\n <EpCard>\n <div :class=\"`md:flex md:flex-wrap rounded-md`\">\n <div class=\"w-1/5 mr-6\" v-if=\"src\">\n <img\n :class=\"`md:w-full md:h-full md:object-cover rounded-md`\"\n :src=\"src\"\n alt=\"Image of quote\"\n />\n </div>\n <div\n class=\"flex items-center justify-center px-7\"\n v-else-if=\"!hideIcon\"\n >\n <div class=\"text-base dark:text-white'\">\n <EpIcon\n :size=\"60\"\n :icon-path=\"renderIcon\"\n extra-class=\"dark:text-white\"\n />\n </div>\n </div>\n <div :class=\"`py-6 flex-1 ${hideIcon ? 'px-6' : 'pr-2'}`\">\n <h4 class=\"text-2xl font-semibold mb-4\" v-if=\"title\">{{ title }}</h4>\n <div\n class=\"mb-3\"\n v-if=\"description\"\n v-html=\"useRenderText(description)\"\n />\n <EpBtn\n :href=\"url\"\n block\n type=\"primary\"\n rounded\n :prepend-icon=\"iconBtn\"\n >\n {{ label }}\n </EpBtn>\n </div>\n </div>\n </EpCard>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_createVNode","EpCard","_createElementVNode","_unref","EpIcon","title","_toDisplayString","description","EpBtn","url"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,UAAM,QAAQ;AAOd,UAAM,yBAAyB;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,UAAM,eAAe,CAAC,QAAwB;AAC5C,YAAM,eAAe,IAAI,MAAM,GAAG,EAAE,CAAC;AACrC,YAAM,QAAQ,aAAa,MAAM,GAAG;AACpC,aAAO,MAAM,SAAS,IAAI,MAAM,IAAA,EAAO,gBAAgB;AAAA,IACzD;AAEA,UAAM,iBAAiB,SAAS,MAAM;AACpC,YAAM,MAAM,aAAa,MAAM,GAAG;AAClC,aAAO,uBAAuB,SAAS,GAAG;AAAA,IAC5C,CAAC;AAED,UAAM,UAAU,SAAS,MAAM;AAC7B,aAAO,eAAe,QAAQ,uBAAuB;AAAA,IACvD,CAAC;AAED,UAAM,QAAQ,SAAS,MAAM;AAC3B,aAAO,eAAe,QAAQ,MAAM,gBAAgB,MAAM;AAAA,IAC5D,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,MAAM,OAAO,MAAM,OAAO;AAAA,IACnC,CAAC;AAED,UAAM,EAAE,KAAK,aAAa,OAAO,KAAK;;AAIpC,aAAAA,UAAA,GAAAC,mBAyCM,OAzCN,YAyCM;AAAA,QAxCJC,YAuCSC,aAAA,MAAA;AAAA,2BAtCP,MAqCM;AAAA,YArCNC,mBAqCM,OArCN,YAqCM;AAAA,cApC0BC,MAAA,GAAA,KAA9BL,aAAAC,mBAMM,OANN,YAMM;AAAA,gBALJG,mBAIE,OAAA;AAAA,kBAHC,sBAAO,gDAAgD;AAAA,kBACvD,KAAKC,MAAA,GAAA;AAAA,kBACN,KAAI;AAAA,gBAAA;qBAKMA,MAAA,QAAA,KAFdL,UAAA,GAAAC,mBAWM,OAXN,YAWM;AAAA,gBAPJG,mBAMM,OANN,YAMM;AAAA,kBALJF,YAIEI,aAAA;AAAA,oBAHC,MAAM;AAAA,oBACN,aAAW,WAAA;AAAA,oBACZ,eAAY;AAAA,kBAAA;;;cAIlBF,mBAgBM,OAAA;AAAA,gBAhBA,qCAAsBC,MAAA,QAAA,IAAQ,SAAA,MAAA,EAAA;AAAA,cAAA;gBACYE,KAAAA,sBAA9CN,mBAAqE,MAArE,YAAqEO,gBAAbD,KAAAA,KAAK,GAAA,CAAA;gBAGrDE,KAAAA,4BAFRR,mBAIE,OAAA;AAAA;kBAHA,OAAM;AAAA,kBAEN,WAAQI,MAAA,aAAA,EAAcI,KAAAA,WAAW;AAAA,gBAAA;gBAEnCP,YAQQQ,aAAA;AAAA,kBAPL,MAAMC,KAAAA;AAAAA,kBACP,OAAA;AAAA,kBACA,MAAK;AAAA,kBACL,SAAA;AAAA,kBACC,gBAAc,QAAA;AAAA,gBAAA;mCAEf,MAAW;AAAA,oDAAR,MAAA,KAAK,GAAA,CAAA;AAAA,kBAAA;;;;;;;;;;;;"}
|
|
@@ -78,7 +78,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
78
78
|
return openBlock(), createElementBlock("div", {
|
|
79
79
|
class: normalizeClass(`${containerStyle.value} ${bgColor.value}`)
|
|
80
80
|
}, [
|
|
81
|
-
unref(title) ||
|
|
81
|
+
unref(title) || _ctx.mandateLevel ? (openBlock(), createElementBlock("div", {
|
|
82
82
|
key: 0,
|
|
83
83
|
class: normalizeClass(`${topBarStyle.value} ${paddingTopStyle.value}`)
|
|
84
84
|
}, [
|
|
@@ -91,16 +91,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
91
91
|
}, null, 8, ["iconPath"])) : createCommentVNode("", true),
|
|
92
92
|
createElementVNode("span", _hoisted_1, toDisplayString(unref(title)), 1)
|
|
93
93
|
]),
|
|
94
|
-
|
|
94
|
+
_ctx.mandateLevel ? (openBlock(), createBlock(_sfc_main$2, {
|
|
95
95
|
key: 0,
|
|
96
|
-
mandateLevel:
|
|
96
|
+
mandateLevel: _ctx.mandateLevel
|
|
97
97
|
}, null, 8, ["mandateLevel"])) : createCommentVNode("", true)
|
|
98
98
|
], 2)) : createCommentVNode("", true),
|
|
99
99
|
createElementVNode("div", {
|
|
100
100
|
class: normalizeClass(`${boxPaddingStyle.value} `)
|
|
101
101
|
}, [
|
|
102
102
|
hasIntentions.value ? (openBlock(), createElementBlock("div", _hoisted_2, [
|
|
103
|
-
|
|
103
|
+
_ctx.labelIntentions ? (openBlock(), createElementBlock("h4", _hoisted_3, toDisplayString(_ctx.labelIntentions), 1)) : createCommentVNode("", true),
|
|
104
104
|
renderSlot(_ctx.$slots, "intentions"),
|
|
105
105
|
createVNode(_sfc_main$3)
|
|
106
106
|
])) : createCommentVNode("", true),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpEdu.vue.js","sources":["../../../src/components/educationals/EpEdu.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs, computed, useSlots, type SetupContext } from \"vue\";\nimport { mediaVariants } from \"~/types/Medias\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport EpDivider from \"~/components/basics/EpDivider.vue\";\nimport EpScope from \"~/components/educationals/EpScope.vue\";\nimport { mdiLeadPencil } from \"@mdi/js\";\nimport type { EpEduProps } from \"~/types/educationals/EpEdu\";\n\nconst props = withDefaults(defineProps<EpEduProps>(), {\n title: null,\n type: \"neutral\",\n hideIcon: false,\n flat: true,\n labelIntentions: \"\",\n card: false\n});\n\n//get slots\nconst slots: SetupContext[\"slots\"] = useSlots();\n\nconst hasIntentions = computed(() => {\n return slots.intentions ? true : false;\n});\n\nconst hasActions = computed(() => {\n return slots.actions ? true : false;\n});\n\nconst renderIcon = computed(() => {\n if (props.icon) {\n return props.icon;\n }\n return mdiLeadPencil;\n});\n\nconst topBarStyle = computed(() => {\n return `${mediaVariants[props.type]} text-left ${\n props.flat ? \"\" : \"rounded-t-md\"\n } flex justify-between items-center `;\n});\n\nconst bottomBarStyle = computed(() => {\n return `${mediaVariants[props.type]} text-right`;\n});\n\nconst paddingTopStyle = computed(() => {\n if (props.type != \"neutral\") {\n return `px-5 py-2`;\n }\n});\n\nconst paddingBottomStyle = computed(() => {\n if (props.type != \"neutral\") {\n return `pr-5`;\n }\n});\nconst boxPaddingStyle = computed(() => {\n if (props.type != \"neutral\") {\n return `px-5`;\n }\n});\n\nconst containerStyle = computed(() => {\n if (hasActions.value || hasIntentions.value || props.title) {\n return ` overflow-hidden ${\n props.flat ? \"\" : \"shadow-md\"\n } flex flex-col justify-start h-full`;\n }\n return `flex flex-col justify-between`;\n});\n\n\nconst bgColor = computed(()=> {\n return props.card ? 'bg-surface-2 dark:bg-surface-2-dark rounded p-4' : ''\n})\n\n\n\nconst { title, hideIcon } = toRefs(props);\n</script>\n\n<template>\n <div :class=\"`${containerStyle} ${bgColor}`\">\n <div\n :class=\"`${topBarStyle} ${paddingTopStyle}`\"\n v-if=\"title || mandateLevel\"\n >\n <!-- <EpIcon :size=\"24\" :icon-path=\"mdiBookOpenVariant\"/> -->\n <h3>\n <EpIcon\n v-if=\"!hideIcon\"\n :iconPath=\"renderIcon\"\n size=\"24\"\n class=\"mr-2\"\n />\n <span class=\"font-bold align-middle\">{{ title }}</span>\n </h3>\n <EpScope v-if=\"mandateLevel\" :mandateLevel=\"mandateLevel\"></EpScope>\n </div>\n <div :class=\"`${boxPaddingStyle} `\">\n <div class=\"py-4\" v-if=\"hasIntentions\">\n <!-- <EpIcon :size=\"24\" :icon-path=\"mdiInformationOutline\"/> -->\n <h4\n v-if=\"labelIntentions\"\n class=\"font-light text-sm pb-1 tracking-wide\"\n >\n {{ labelIntentions }}\n </h4>\n <slot name=\"intentions\" />\n <EpDivider />\n </div>\n <div class=\"pt-2\">\n <slot name=\"content\" />\n </div>\n </div>\n <div\n :class=\"`${bottomBarStyle} ${paddingBottomStyle}`\"\n v-if=\"hasActions\"\n >\n <slot name=\"actions\" />\n </div>\n </div>\n</template>\n"],"names":["_createElementBlock","_normalizeClass","_unref","_createElementVNode","_createBlock","EpIcon","_toDisplayString","EpScope","_openBlock","_renderSlot","_createVNode","EpDivider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,UAAM,QAAQ;AAUd,UAAM,QAA+B,SAAA;AAErC,UAAM,gBAAgB,SAAS,MAAM;AACnC,aAAO,MAAM,aAAa,OAAO;AAAA,IACnC,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,MAAM,UAAU,OAAO;AAAA,IAChC,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,MAAM,MAAM;AACd,eAAO,MAAM;AAAA,MACf;AACA,aAAO;AAAA,IACT,CAAC;AAED,UAAM,cAAc,SAAS,MAAM;AACjC,aAAO,GAAG,cAAc,MAAM,IAAI,CAAC,eACjC,MAAM,OAAO,KAAK,cACpB;AAAA,IACF,CAAC;AAED,UAAM,iBAAiB,SAAS,MAAM;AACpC,aAAO,GAAG,cAAc,MAAM,IAAI,CAAC;AAAA,IACrC,CAAC;AAED,UAAM,kBAAkB,SAAS,MAAM;AACrC,UAAI,MAAM,QAAQ,WAAW;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AAED,UAAM,qBAAqB,SAAS,MAAM;AACxC,UAAI,MAAM,QAAQ,WAAW;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AACD,UAAM,kBAAkB,SAAS,MAAM;AACrC,UAAI,MAAM,QAAQ,WAAW;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AAED,UAAM,iBAAiB,SAAS,MAAM;AACpC,UAAI,WAAW,SAAS,cAAc,SAAS,MAAM,OAAO;AAC1D,eAAO,oBACL,MAAM,OAAO,KAAK,WACpB;AAAA,MACF;AACA,aAAO;AAAA,IACT,CAAC;AAGD,UAAM,UAAU,SAAS,MAAK;AAC3B,aAAO,MAAM,OAAO,oDAAoD;AAAA,IAC3E,CAAC;AAID,UAAM,EAAE,OAAO,aAAa,OAAO,KAAK;;0BAItCA,mBAuCM,OAAA;AAAA,QAvCA,OAAKC,eAAA,GAAK,eAAA,KAAc,IAAI,QAAA,KAAO,EAAA;AAAA,MAAA;QAG/BC,MAAA,KAAA,
|
|
1
|
+
{"version":3,"file":"EpEdu.vue.js","sources":["../../../src/components/educationals/EpEdu.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs, computed, useSlots, type SetupContext } from \"vue\";\nimport { mediaVariants } from \"~/types/Medias\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport EpDivider from \"~/components/basics/EpDivider.vue\";\nimport EpScope from \"~/components/educationals/EpScope.vue\";\nimport { mdiLeadPencil } from \"@mdi/js\";\nimport type { EpEduProps } from \"~/types/educationals/EpEdu\";\n\nconst props = withDefaults(defineProps<EpEduProps>(), {\n title: null,\n type: \"neutral\",\n hideIcon: false,\n flat: true,\n labelIntentions: \"\",\n card: false\n});\n\n//get slots\nconst slots: SetupContext[\"slots\"] = useSlots();\n\nconst hasIntentions = computed(() => {\n return slots.intentions ? true : false;\n});\n\nconst hasActions = computed(() => {\n return slots.actions ? true : false;\n});\n\nconst renderIcon = computed(() => {\n if (props.icon) {\n return props.icon;\n }\n return mdiLeadPencil;\n});\n\nconst topBarStyle = computed(() => {\n return `${mediaVariants[props.type]} text-left ${\n props.flat ? \"\" : \"rounded-t-md\"\n } flex justify-between items-center `;\n});\n\nconst bottomBarStyle = computed(() => {\n return `${mediaVariants[props.type]} text-right`;\n});\n\nconst paddingTopStyle = computed(() => {\n if (props.type != \"neutral\") {\n return `px-5 py-2`;\n }\n});\n\nconst paddingBottomStyle = computed(() => {\n if (props.type != \"neutral\") {\n return `pr-5`;\n }\n});\nconst boxPaddingStyle = computed(() => {\n if (props.type != \"neutral\") {\n return `px-5`;\n }\n});\n\nconst containerStyle = computed(() => {\n if (hasActions.value || hasIntentions.value || props.title) {\n return ` overflow-hidden ${\n props.flat ? \"\" : \"shadow-md\"\n } flex flex-col justify-start h-full`;\n }\n return `flex flex-col justify-between`;\n});\n\n\nconst bgColor = computed(()=> {\n return props.card ? 'bg-surface-2 dark:bg-surface-2-dark rounded p-4' : ''\n})\n\n\n\nconst { title, hideIcon } = toRefs(props);\n</script>\n\n<template>\n <div :class=\"`${containerStyle} ${bgColor}`\">\n <div\n :class=\"`${topBarStyle} ${paddingTopStyle}`\"\n v-if=\"title || mandateLevel\"\n >\n <!-- <EpIcon :size=\"24\" :icon-path=\"mdiBookOpenVariant\"/> -->\n <h3>\n <EpIcon\n v-if=\"!hideIcon\"\n :iconPath=\"renderIcon\"\n size=\"24\"\n class=\"mr-2\"\n />\n <span class=\"font-bold align-middle\">{{ title }}</span>\n </h3>\n <EpScope v-if=\"mandateLevel\" :mandateLevel=\"mandateLevel\"></EpScope>\n </div>\n <div :class=\"`${boxPaddingStyle} `\">\n <div class=\"py-4\" v-if=\"hasIntentions\">\n <!-- <EpIcon :size=\"24\" :icon-path=\"mdiInformationOutline\"/> -->\n <h4\n v-if=\"labelIntentions\"\n class=\"font-light text-sm pb-1 tracking-wide\"\n >\n {{ labelIntentions }}\n </h4>\n <slot name=\"intentions\" />\n <EpDivider />\n </div>\n <div class=\"pt-2\">\n <slot name=\"content\" />\n </div>\n </div>\n <div\n :class=\"`${bottomBarStyle} ${paddingBottomStyle}`\"\n v-if=\"hasActions\"\n >\n <slot name=\"actions\" />\n </div>\n </div>\n</template>\n"],"names":["_createElementBlock","_normalizeClass","_unref","mandateLevel","_createElementVNode","_createBlock","EpIcon","_toDisplayString","EpScope","_openBlock","labelIntentions","_renderSlot","_createVNode","EpDivider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,UAAM,QAAQ;AAUd,UAAM,QAA+B,SAAA;AAErC,UAAM,gBAAgB,SAAS,MAAM;AACnC,aAAO,MAAM,aAAa,OAAO;AAAA,IACnC,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,MAAM,UAAU,OAAO;AAAA,IAChC,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,MAAM,MAAM;AACd,eAAO,MAAM;AAAA,MACf;AACA,aAAO;AAAA,IACT,CAAC;AAED,UAAM,cAAc,SAAS,MAAM;AACjC,aAAO,GAAG,cAAc,MAAM,IAAI,CAAC,eACjC,MAAM,OAAO,KAAK,cACpB;AAAA,IACF,CAAC;AAED,UAAM,iBAAiB,SAAS,MAAM;AACpC,aAAO,GAAG,cAAc,MAAM,IAAI,CAAC;AAAA,IACrC,CAAC;AAED,UAAM,kBAAkB,SAAS,MAAM;AACrC,UAAI,MAAM,QAAQ,WAAW;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AAED,UAAM,qBAAqB,SAAS,MAAM;AACxC,UAAI,MAAM,QAAQ,WAAW;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AACD,UAAM,kBAAkB,SAAS,MAAM;AACrC,UAAI,MAAM,QAAQ,WAAW;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AAED,UAAM,iBAAiB,SAAS,MAAM;AACpC,UAAI,WAAW,SAAS,cAAc,SAAS,MAAM,OAAO;AAC1D,eAAO,oBACL,MAAM,OAAO,KAAK,WACpB;AAAA,MACF;AACA,aAAO;AAAA,IACT,CAAC;AAGD,UAAM,UAAU,SAAS,MAAK;AAC3B,aAAO,MAAM,OAAO,oDAAoD;AAAA,IAC3E,CAAC;AAID,UAAM,EAAE,OAAO,aAAa,OAAO,KAAK;;0BAItCA,mBAuCM,OAAA;AAAA,QAvCA,OAAKC,eAAA,GAAK,eAAA,KAAc,IAAI,QAAA,KAAO,EAAA;AAAA,MAAA;QAG/BC,MAAA,KAAA,KAASC,KAAAA,6BAFjBH,mBAeM,OAAA;AAAA;UAdH,OAAKC,eAAA,GAAK,YAAA,KAAW,IAAI,gBAAA,KAAe,EAAA;AAAA,QAAA;UAIzCG,mBAQK,MAAA,MAAA;AAAA,aANMF,MAAA,QAAA,kBADTG,YAKEC,aAAA;AAAA;cAHC,UAAU,WAAA;AAAA,cACX,MAAK;AAAA,cACL,OAAM;AAAA,YAAA;YAERF,mBAAuD,QAAvD,YAAuDG,gBAAfL,MAAA,KAAA,CAAK,GAAA,CAAA;AAAA,UAAA;UAEhCC,KAAAA,6BAAfE,YAAoEG,aAAA;AAAA;YAAtC,cAAcL,KAAAA;AAAAA,UAAAA;;QAE9CC,mBAeM,OAAA;AAAA,UAfA,yBAAU,gBAAA,KAAe,GAAA;AAAA,QAAA;UACL,cAAA,SAAxBK,UAAA,GAAAT,mBAUM,OAVN,YAUM;AAAA,YAPIU,KAAAA,gCADRV,mBAKK,MALL,YAKKO,gBADAG,KAAAA,eAAe,GAAA,CAAA;YAEpBC,WAA0B,KAAA,QAAA,YAAA;AAAA,YAC1BC,YAAaC,WAAA;AAAA,UAAA;UAEfT,mBAEM,OAFN,YAEM;AAAA,YADJO,WAAuB,KAAA,QAAA,SAAA;AAAA,UAAA;;QAKnB,WAAA,sBAFRX,mBAKM,OAAA;AAAA;UAJH,OAAKC,eAAA,GAAK,eAAA,KAAc,IAAI,mBAAA,KAAkB,EAAA;AAAA,QAAA;UAG/CU,WAAuB,KAAA,QAAA,SAAA;AAAA,QAAA;;;;;"}
|
|
@@ -94,7 +94,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
94
94
|
};
|
|
95
95
|
return (_ctx, _cache) => {
|
|
96
96
|
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
97
|
-
|
|
97
|
+
_ctx.title ? (openBlock(), createElementBlock("h3", _hoisted_2, toDisplayString(_ctx.title), 1)) : createCommentVNode("", true),
|
|
98
98
|
createElementVNode("div", null, [
|
|
99
99
|
(openBlock(true), createElementBlock(Fragment, null, renderList(renderText.value, (node, i) => {
|
|
100
100
|
return openBlock(), createBlock(resolveDynamicComponent(node), { key: i });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpFillBlanks.vue.js","sources":["../../../src/components/educationals/EpFillBlanks.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, h, type VNode, reactive } from \"vue\";\nimport { isHtml } from \"~/composables/isHtml\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { EpFillBlanksProps } from \"~/types/educationals/EpFillBlanks\";\nimport EpSelect from \"../forms/EpSelect.vue\";\n\n\nconst props = withDefaults(defineProps<EpFillBlanksProps>(), {});\n\nconst values = reactive<Record<string, any>>({});\nconst refsMap = reactive<Record<string, any>>({});\n\nfunction parseHtmlToVNodes(html: string): (VNode | string)[] {\n const container = document.createElement(\"div\");\n container.innerHTML = html;\n\n const nodes: (VNode | string)[] = [];\n\n container.childNodes.forEach((node) => {\n if (node.nodeType === 3) {\n // Text node\n const text = node.textContent;\n \n if (text && text.replace(/\\s/g, '').length > 0) nodes.push(text);\n } else if (node.nodeType === 1) {\n const el = node as HTMLElement;\n\n // Select part\n if(el.classList.contains(\"ep-select\")){\n const id = el.getAttribute(\"data-id\");\n if(id !== null) {\n const selectProps = props.selects.filter((item) => item.id == id);\n if(selectProps.length > 0) {\n nodes.push(\n h(\n \"div\",\n { \n style: \"display:inline-block; border-width: 2px; border-radius: 7px; min-width: 150px; margin: 3px;\", \n id,\n ref: (el) => {\n if (el) refsMap[id] = el;\n }\n },\n h(EpSelect, {\n block: false,\n options: selectProps[0].options,\n modelValue: values[id],\n 'onUpdate:modelValue': (val) => {\n values[id] = val;\n }\n })\n )\n );\n }\n }\n return;\n }\n\n nodes.push(\n h(\n el.tagName.toLowerCase(),\n getElementAttrs(el),\n parseHtmlToVNodes(el.innerHTML) \n )\n );\n }\n });\n\n return nodes;\n}\n\nconst renderText = computed(() => {\n if (!props.content) return [h(\"div\")];\n if (!isHtml(props.content)) {\n return [h(\"div\", { innerHTML: useRenderText(props.content) })];\n }\n\n const formatted = useRenderText(props.content)\n\n return parseHtmlToVNodes(`<div> ${formatted} </div>`);\n});\n\n\n//get attributes from element html \nfunction getElementAttrs(el: HTMLElement): Record<string, any> {\n const attrs: Record<string, any> = {};\n\n for (const attr of Array.from(el.attributes)) {\n attrs[attr.name] = attr.value;\n }\n\n if (el.tagName.toLowerCase() === \"a\") {\n attrs.target = \"_blank\";\n attrs.rel = \"noopener noreferrer\";\n }\n\n return attrs;\n}\n\nconst validate = () => {\n props.selects.forEach((select) => {\n refsMap[select.id].style.borderColor = (values[select.id] == select.correctValue) ? 'green' : 'red';\n })\n}\n\n</script>\n\n<template>\n <div class=\"px-2\">\n <h3 v-if=\"title\" class=\"font-bold text-center my-2 text-xl\">{{ title }}</h3>\n <div>\n <component :is=\"node\" v-for=\"(node, i) in renderText\" :key=\"i\" />\n </div>\n <div class=\"flex items-center justify-around\">\n <button\n class=\"bg-blue-500 text-white px-3 py-2 m-2 rounded-md text-center\"\n @click=\"validate\"\n >\n Valider\n </button>\n </div>\n </div>\n</template>\n"],"names":["el","EpSelect","_openBlock","_createElementBlock","_toDisplayString","_createElementVNode","_Fragment","_renderList","_createBlock","_resolveDynamicComponent"],"mappings":";;;;;;;;;;;;;;;;;AAQA,UAAM,QAAQ;AAEd,UAAM,SAAS,SAA8B,EAAE;AAC/C,UAAM,UAAU,SAA8B,EAAE;AAEhD,aAAS,kBAAkB,MAAkC;AAC3D,YAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,gBAAU,YAAY;AAEtB,YAAM,QAA4B,CAAA;AAElC,gBAAU,WAAW,QAAQ,CAAC,SAAS;AACrC,YAAI,KAAK,aAAa,GAAG;AAEtB,gBAAM,OAAO,KAAK;AAEnB,cAAI,QAAQ,KAAK,QAAQ,OAAO,EAAE,EAAE,SAAS,EAAG,OAAM,KAAK,IAAI;AAAA,QACjE,WAAW,KAAK,aAAa,GAAG;AAC9B,gBAAM,KAAK;AAGX,cAAG,GAAG,UAAU,SAAS,WAAW,GAAE;AACpC,kBAAM,KAAK,GAAG,aAAa,SAAS;AACpC,gBAAG,OAAO,MAAM;AACd,oBAAM,cAAc,MAAM,QAAQ,OAAO,CAAC,SAAS,KAAK,MAAM,EAAE;AAChE,kBAAG,YAAY,SAAS,GAAG;AACvB,sBAAM;AAAA,kBACJ;AAAA,oBACI;AAAA,oBACA;AAAA,sBACI,OAAO;AAAA,sBACP;AAAA,sBACA,KAAK,CAACA,QAAO;AACT,4BAAIA,IAAI,SAAQ,EAAE,IAAIA;AAAAA,sBAC1B;AAAA,oBAAA;AAAA,oBAEJ,EAAEC,aAAU;AAAA,sBACR,OAAO;AAAA,sBACP,SAAS,YAAY,CAAC,EAAE;AAAA,sBACxB,YAAY,OAAO,EAAE;AAAA,sBACrB,uBAAuB,CAAC,QAAQ;AAC5B,+BAAO,EAAE,IAAI;AAAA,sBACjB;AAAA,oBAAA,CACH;AAAA,kBAAA;AAAA,gBACL;AAAA,cAEN;AAAA,YACF;AACA;AAAA,UACF;AAEA,gBAAM;AAAA,YACJ;AAAA,cACE,GAAG,QAAQ,YAAA;AAAA,cACX,gBAAgB,EAAE;AAAA,cAClB,kBAAkB,GAAG,SAAS;AAAA,YAAA;AAAA,UAChC;AAAA,QAEJ;AAAA,MACF,CAAC;AAED,aAAO;AAAA,IACT;AAEA,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,CAAC,MAAM,gBAAgB,CAAC,EAAE,KAAK,CAAC;AACpC,UAAI,CAAC,OAAO,MAAM,OAAO,GAAG;AAC1B,eAAO,CAAC,EAAE,OAAO,EAAE,WAAW,cAAc,MAAM,OAAO,EAAA,CAAG,CAAC;AAAA,MAC/D;AAEA,YAAM,YAAY,cAAc,MAAM,OAAO;AAE7C,aAAO,kBAAkB,SAAS,SAAS,SAAS;AAAA,IACtD,CAAC;AAID,aAAS,gBAAgB,IAAsC;AAC7D,YAAM,QAA6B,CAAA;AAEnC,iBAAW,QAAQ,MAAM,KAAK,GAAG,UAAU,GAAG;AAC5C,cAAM,KAAK,IAAI,IAAI,KAAK;AAAA,MAC1B;AAEA,UAAI,GAAG,QAAQ,YAAA,MAAkB,KAAK;AACpC,cAAM,SAAS;AACf,cAAM,MAAM;AAAA,MACd;AAEA,aAAO;AAAA,IACT;AAEA,UAAM,WAAW,MAAM;AACnB,YAAM,QAAQ,QAAQ,CAAC,WAAW;AAC9B,gBAAQ,OAAO,EAAE,EAAE,MAAM,cAAe,OAAO,OAAO,EAAE,KAAK,OAAO,eAAgB,UAAU;AAAA,MAClG,CAAC;AAAA,IACL;;AAKI,aAAAC,UAAA,GAAAC,mBAaM,OAbN,YAaM;AAAA,
|
|
1
|
+
{"version":3,"file":"EpFillBlanks.vue.js","sources":["../../../src/components/educationals/EpFillBlanks.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, h, type VNode, reactive } from \"vue\";\nimport { isHtml } from \"~/composables/isHtml\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { EpFillBlanksProps } from \"~/types/educationals/EpFillBlanks\";\nimport EpSelect from \"../forms/EpSelect.vue\";\n\n\nconst props = withDefaults(defineProps<EpFillBlanksProps>(), {});\n\nconst values = reactive<Record<string, any>>({});\nconst refsMap = reactive<Record<string, any>>({});\n\nfunction parseHtmlToVNodes(html: string): (VNode | string)[] {\n const container = document.createElement(\"div\");\n container.innerHTML = html;\n\n const nodes: (VNode | string)[] = [];\n\n container.childNodes.forEach((node) => {\n if (node.nodeType === 3) {\n // Text node\n const text = node.textContent;\n \n if (text && text.replace(/\\s/g, '').length > 0) nodes.push(text);\n } else if (node.nodeType === 1) {\n const el = node as HTMLElement;\n\n // Select part\n if(el.classList.contains(\"ep-select\")){\n const id = el.getAttribute(\"data-id\");\n if(id !== null) {\n const selectProps = props.selects.filter((item) => item.id == id);\n if(selectProps.length > 0) {\n nodes.push(\n h(\n \"div\",\n { \n style: \"display:inline-block; border-width: 2px; border-radius: 7px; min-width: 150px; margin: 3px;\", \n id,\n ref: (el) => {\n if (el) refsMap[id] = el;\n }\n },\n h(EpSelect, {\n block: false,\n options: selectProps[0].options,\n modelValue: values[id],\n 'onUpdate:modelValue': (val) => {\n values[id] = val;\n }\n })\n )\n );\n }\n }\n return;\n }\n\n nodes.push(\n h(\n el.tagName.toLowerCase(),\n getElementAttrs(el),\n parseHtmlToVNodes(el.innerHTML) \n )\n );\n }\n });\n\n return nodes;\n}\n\nconst renderText = computed(() => {\n if (!props.content) return [h(\"div\")];\n if (!isHtml(props.content)) {\n return [h(\"div\", { innerHTML: useRenderText(props.content) })];\n }\n\n const formatted = useRenderText(props.content)\n\n return parseHtmlToVNodes(`<div> ${formatted} </div>`);\n});\n\n\n//get attributes from element html \nfunction getElementAttrs(el: HTMLElement): Record<string, any> {\n const attrs: Record<string, any> = {};\n\n for (const attr of Array.from(el.attributes)) {\n attrs[attr.name] = attr.value;\n }\n\n if (el.tagName.toLowerCase() === \"a\") {\n attrs.target = \"_blank\";\n attrs.rel = \"noopener noreferrer\";\n }\n\n return attrs;\n}\n\nconst validate = () => {\n props.selects.forEach((select) => {\n refsMap[select.id].style.borderColor = (values[select.id] == select.correctValue) ? 'green' : 'red';\n })\n}\n\n</script>\n\n<template>\n <div class=\"px-2\">\n <h3 v-if=\"title\" class=\"font-bold text-center my-2 text-xl\">{{ title }}</h3>\n <div>\n <component :is=\"node\" v-for=\"(node, i) in renderText\" :key=\"i\" />\n </div>\n <div class=\"flex items-center justify-around\">\n <button\n class=\"bg-blue-500 text-white px-3 py-2 m-2 rounded-md text-center\"\n @click=\"validate\"\n >\n Valider\n </button>\n </div>\n </div>\n</template>\n"],"names":["el","EpSelect","_openBlock","_createElementBlock","title","_toDisplayString","_createElementVNode","_Fragment","_renderList","_createBlock","_resolveDynamicComponent"],"mappings":"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"}
|
|
@@ -23,20 +23,20 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
23
23
|
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
24
24
|
createElementVNode("div", _hoisted_2, [
|
|
25
25
|
createElementVNode("h2", _hoisted_3, [
|
|
26
|
-
|
|
26
|
+
_ctx.icon ? (openBlock(), createBlock(_sfc_main$1, {
|
|
27
27
|
key: 0,
|
|
28
|
-
"icon-path":
|
|
28
|
+
"icon-path": _ctx.icon,
|
|
29
29
|
size: "28",
|
|
30
30
|
extraClass: "mr-2"
|
|
31
31
|
}, null, 8, ["icon-path"])) : createCommentVNode("", true),
|
|
32
|
-
createTextVNode(" " + toDisplayString(
|
|
32
|
+
createTextVNode(" " + toDisplayString(_ctx.title), 1)
|
|
33
33
|
])
|
|
34
34
|
]),
|
|
35
35
|
createElementVNode("div", _hoisted_4, [
|
|
36
36
|
createElementVNode("div", _hoisted_5, [
|
|
37
|
-
|
|
37
|
+
_ctx.subtitle ? (openBlock(), createElementBlock("h3", _hoisted_6, toDisplayString(_ctx.subtitle), 1)) : createCommentVNode("", true),
|
|
38
38
|
createElementVNode("div", null, [
|
|
39
|
-
createVNode(_sfc_main$2, { content:
|
|
39
|
+
createVNode(_sfc_main$2, { content: _ctx.content }, null, 8, ["content"])
|
|
40
40
|
])
|
|
41
41
|
])
|
|
42
42
|
])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpIntroduction.vue.js","sources":["../../../src/components/educationals/EpIntroduction.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport type { EpIntroductionProps } from \"~/types/educationals/EpIntroduction\";\nimport RenderTextNode from \"~/components/tools/RenderTextNode.vue\";\nconst {\n title = \"Introduction\",\n icon,\n subtitle,\n content,\n} = defineProps<EpIntroductionProps>();\n\n</script>\n<template>\n <div class=\"lg:grid lg:grid-cols-12 lg:gap-8\">\n <div class=\"lg:col-span-2\">\n <h2\n class=\"text-pretty text-3xl font-semibold tracking-tight sm:text-xl\"\n >\n <EpIcon v-if=\"icon\" :icon-path=\"icon\" size=\"28\" extraClass=\"mr-2\" />\n {{ title }}\n </h2>\n </div>\n <div class=\"lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4\">\n <div class=\"py-2\">\n <h3\n v-if=\"subtitle\"\n class=\"text-base font-semibold leading-7\"\n >\n {{ subtitle }}\n </h3>\n <div>\n <RenderTextNode :content=\"content\" />\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_createElementVNode","_createBlock","EpIcon","_createTextVNode","_toDisplayString","_createVNode","RenderTextNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAaE,aAAAA,UAAA,GAAAC,mBAsBM,OAtBN,YAsBM;AAAA,QArBJC,mBAOM,OAPN,YAOM;AAAA,UANJA,mBAKK,MALL,YAKK;AAAA,
|
|
1
|
+
{"version":3,"file":"EpIntroduction.vue.js","sources":["../../../src/components/educationals/EpIntroduction.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport type { EpIntroductionProps } from \"~/types/educationals/EpIntroduction\";\nimport RenderTextNode from \"~/components/tools/RenderTextNode.vue\";\nconst {\n title = \"Introduction\",\n icon,\n subtitle,\n content,\n} = defineProps<EpIntroductionProps>();\n\n</script>\n<template>\n <div class=\"lg:grid lg:grid-cols-12 lg:gap-8\">\n <div class=\"lg:col-span-2\">\n <h2\n class=\"text-pretty text-3xl font-semibold tracking-tight sm:text-xl\"\n >\n <EpIcon v-if=\"icon\" :icon-path=\"icon\" size=\"28\" extraClass=\"mr-2\" />\n {{ title }}\n </h2>\n </div>\n <div class=\"lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4\">\n <div class=\"py-2\">\n <h3\n v-if=\"subtitle\"\n class=\"text-base font-semibold leading-7\"\n >\n {{ subtitle }}\n </h3>\n <div>\n <RenderTextNode :content=\"content\" />\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_createElementVNode","icon","_createBlock","EpIcon","_createTextVNode","title","subtitle","_toDisplayString","_createVNode","RenderTextNode","content"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAaE,aAAAA,UAAA,GAAAC,mBAsBM,OAtBN,YAsBM;AAAA,QArBJC,mBAOM,OAPN,YAOM;AAAA,UANJA,mBAKK,MALL,YAKK;AAAA,YAFWC,KAAAA,qBAAdC,YAAoEC,aAAA;AAAA;cAA/C,aAAWF,KAAAA;AAAAA,cAAM,MAAK;AAAA,cAAK,YAAW;AAAA,YAAA;YAASG,gBAAA,sBACjEC,KAAAA,KAAK,GAAA,CAAA;AAAA,UAAA;;QAGZL,mBAYM,OAZN,YAYM;AAAA,UAXJA,mBAUM,OAVN,YAUM;AAAA,YARIM,KAAAA,yBADRP,mBAKK,MALL,YAKKQ,gBADAD,KAAAA,QAAQ,GAAA,CAAA;YAEbN,mBAEM,OAAA,MAAA;AAAA,cADLQ,YAAqCC,aAAA,EAApB,SAASC,KAAAA,QAAAA,GAAO,MAAA,GAAA,CAAA,SAAA,CAAA;AAAA,YAAA;;;;;;;"}
|