Compare commits

...

111 Commits

Author SHA1 Message Date
Jannat Patel
0e015c8b97 chore: Indonesian translations 2025-08-03 04:35:30 +05:30
Jannat Patel
36076068ec fix: text padding on card gradient 2025-07-30 12:30:12 +05:30
Frappe PR Bot
c868354b5b chore(release): Bumped to Version 2.33.0 2025-07-30 06:14:36 +00:00
Jannat Patel
db91f0b2a0 Merge pull request #1663 from pateljannat/issues-125
fix: show video statistics watch time in minutes
2025-07-30 11:43:01 +05:30
Jannat Patel
d7e83bb78e fix: show video statistics watch time in minutes 2025-07-30 11:30:17 +05:30
Jannat Patel
feb2a39e05 Merge pull request #1661 from frappe/l10n_develop2
chore: sync translations from crowdin
2025-07-30 10:53:15 +05:30
Jannat Patel
a6cf910d05 chore: Esperanto translations 2025-07-30 04:23:56 +05:30
Jannat Patel
b891b44ac6 chore: Spanish translations 2025-07-30 04:23:54 +05:30
Jannat Patel
026a3ebb81 chore: Serbian (Latin) translations 2025-07-30 04:23:53 +05:30
Jannat Patel
71ba246011 chore: Bosnian translations 2025-07-30 04:23:51 +05:30
Jannat Patel
a391204fa6 chore: Croatian translations 2025-07-30 04:23:49 +05:30
Jannat Patel
9c773399a8 chore: Thai translations 2025-07-30 04:23:48 +05:30
Jannat Patel
528b85352a chore: Persian translations 2025-07-30 04:23:47 +05:30
Jannat Patel
249c369c14 chore: Indonesian translations 2025-07-30 04:23:45 +05:30
Jannat Patel
9803fc1031 chore: Portuguese, Brazilian translations 2025-07-30 04:23:44 +05:30
Jannat Patel
299fde1c98 chore: Vietnamese translations 2025-07-30 04:23:43 +05:30
Jannat Patel
7f55734fbb chore: Chinese Simplified translations 2025-07-30 04:23:41 +05:30
Jannat Patel
efe230865a chore: Turkish translations 2025-07-30 04:23:40 +05:30
Jannat Patel
6e52e684c8 chore: Swedish translations 2025-07-30 04:23:38 +05:30
Jannat Patel
99d880297a chore: Serbian (Cyrillic) translations 2025-07-30 04:23:36 +05:30
Jannat Patel
dec706ae72 chore: Russian translations 2025-07-30 04:23:35 +05:30
Jannat Patel
2e60f0a0c2 chore: Portuguese translations 2025-07-30 04:23:34 +05:30
Jannat Patel
ef612f86e5 chore: Polish translations 2025-07-30 04:23:32 +05:30
Jannat Patel
9c16e03ea7 chore: Dutch translations 2025-07-30 04:23:31 +05:30
Jannat Patel
7780c0310e chore: Italian translations 2025-07-30 04:23:29 +05:30
Jannat Patel
b0a23c0d1a chore: Hungarian translations 2025-07-30 04:23:27 +05:30
Jannat Patel
05c85cea08 chore: German translations 2025-07-30 04:23:26 +05:30
Jannat Patel
1ffae0a1de chore: Czech translations 2025-07-30 04:23:24 +05:30
Jannat Patel
15cbccd15f chore: Arabic translations 2025-07-30 04:23:23 +05:30
Jannat Patel
266b2f2ac8 chore: French translations 2025-07-30 04:23:21 +05:30
Jannat Patel
26f9fb4199 Merge pull request #1658 from frappe/pot_develop_2025-07-25
chore: update POT file
2025-07-29 12:05:37 +05:30
frappe-pr-bot
67887fb6ef chore: update POT file 2025-07-25 16:04:39 +00:00
Jannat Patel
3d102e39ff Merge pull request #1657 from pateljannat/course-card-gradient
feat: course card gradient
2025-07-25 18:56:50 +05:30
Jannat Patel
ddd9089130 fix: color swatch input style 2025-07-25 18:31:46 +05:30
Jannat Patel
d8ce88ab57 fix: color swatch input style 2025-07-25 18:30:58 +05:30
Jannat Patel
01794a47c6 feat: set a random color is no color or image is present 2025-07-25 17:46:50 +05:30
Jannat Patel
17626dbbdb feat: course card gradient 2025-07-25 17:29:48 +05:30
Jannat Patel
e5bd86658d Merge pull request #1655 from frappe/l10n_develop2
chore: sync translations from crowdin
2025-07-24 10:41:13 +05:30
Jannat Patel
e911dc1353 chore: Thai translations 2025-07-24 02:45:56 +05:30
Jannat Patel
27e3e5aa6a chore: Indonesian translations 2025-07-24 02:45:53 +05:30
Jannat Patel
5b65525bf1 chore: Portuguese translations 2025-07-24 02:45:46 +05:30
Jannat Patel
277804f8b1 chore: Hungarian translations 2025-07-24 02:45:42 +05:30
Jannat Patel
4c77802e3c Merge pull request #1653 from pateljannat/issues-124
fix: progress timer in lessons
2025-07-23 11:32:51 +05:30
Jannat Patel
aacfea6ea5 fix: progress timer in lessons 2025-07-23 11:31:41 +05:30
Frappe PR Bot
6d55040e43 chore(release): Bumped to Version 2.32.2 2025-07-23 05:31:05 +00:00
Jannat Patel
290f785a47 Merge pull request #1651 from pateljannat/issues-123
fix: vimeo video embed with plyr
2025-07-23 11:00:03 +05:30
Jannat Patel
39ef187f6b fix: vimeo video embed with plyr 2025-07-23 10:44:53 +05:30
Frappe PR Bot
a7a475e763 chore(release): Bumped to Version 2.32.1 2025-07-22 13:31:38 +00:00
Jannat Patel
6eb380ea38 Merge pull request #1648 from pateljannat/issues-122
fix: play embed videos on Lesson Form
2025-07-22 14:20:42 +05:30
Jannat Patel
4d150cb323 fix: play embed videos on Lesson Form 2025-07-22 14:11:29 +05:30
Jannat Patel
09d6d99b14 Merge pull request #1647 from frappe/l10n_develop2
chore: sync translations from crowdin
2025-07-22 10:24:07 +05:30
Jannat Patel
5e7fd8baff chore: Esperanto translations 2025-07-22 02:06:41 +05:30
Jannat Patel
52c159e2e8 chore: French translations 2025-07-22 02:06:40 +05:30
Jannat Patel
67e8feb879 chore: Serbian (Latin) translations 2025-07-22 02:06:38 +05:30
Jannat Patel
a5b61d5244 chore: Bosnian translations 2025-07-22 02:06:37 +05:30
Jannat Patel
decc3a16ed chore: Croatian translations 2025-07-22 02:06:35 +05:30
Jannat Patel
7f39e9f0cc chore: Thai translations 2025-07-22 02:06:34 +05:30
Jannat Patel
95afa1a6ad chore: Persian translations 2025-07-22 02:06:32 +05:30
Jannat Patel
0d0bb5f9e2 chore: Portuguese, Brazilian translations 2025-07-22 02:06:31 +05:30
Jannat Patel
3dd5ce5035 chore: Vietnamese translations 2025-07-22 02:06:29 +05:30
Jannat Patel
549e56d551 chore: Chinese Simplified translations 2025-07-22 02:06:28 +05:30
Jannat Patel
50b6215d1e chore: Turkish translations 2025-07-22 02:06:27 +05:30
Jannat Patel
ff69bfdce7 chore: Swedish translations 2025-07-22 02:06:25 +05:30
Jannat Patel
c04cc8ec0f chore: Serbian (Cyrillic) translations 2025-07-22 02:06:24 +05:30
Jannat Patel
f324de2254 chore: Russian translations 2025-07-22 02:06:22 +05:30
Jannat Patel
40af4e6f34 chore: Portuguese translations 2025-07-22 02:06:21 +05:30
Jannat Patel
5d9b66b5cb chore: Polish translations 2025-07-22 02:06:20 +05:30
Jannat Patel
d2a8277c13 chore: Dutch translations 2025-07-22 02:06:18 +05:30
Jannat Patel
ada85fc0f3 chore: Italian translations 2025-07-22 02:06:17 +05:30
Jannat Patel
505345eff7 chore: Hungarian translations 2025-07-22 02:06:15 +05:30
Jannat Patel
2911ade880 chore: German translations 2025-07-22 02:06:14 +05:30
Jannat Patel
8980dc8f9c chore: Czech translations 2025-07-22 02:06:12 +05:30
Jannat Patel
d94a1c47c0 chore: Arabic translations 2025-07-22 02:06:11 +05:30
Jannat Patel
99c3e5182d chore: Spanish translations 2025-07-22 02:06:09 +05:30
Jannat Patel
70e39fee40 Merge pull request #1646 from frappe/pot_develop_2025-07-18
chore: update POT file
2025-07-21 19:30:03 +05:30
frappe-pr-bot
26d6bec8a0 chore: update POT file 2025-07-18 16:05:11 +00:00
Jannat Patel
c9ac1a1402 Merge pull request #1645 from frappe/l10n_develop2
chore: sync translations from crowdin
2025-07-18 10:38:18 +05:30
Jannat Patel
6949c1092c chore: Persian translations 2025-07-18 01:39:51 +05:30
Jannat Patel
aae8a54481 Merge pull request #1644 from frappe/l10n_develop2
chore: sync translations from crowdin
2025-07-17 10:26:39 +05:30
Jannat Patel
e1d93bf670 chore: Serbian (Latin) translations 2025-07-17 01:24:47 +05:30
Jannat Patel
fea0533cb1 chore: Chinese Simplified translations 2025-07-17 01:24:40 +05:30
Jannat Patel
5cd991f02a chore: Swedish translations 2025-07-17 01:24:37 +05:30
Jannat Patel
50a8a605d5 chore: Serbian (Cyrillic) translations 2025-07-17 01:24:36 +05:30
Jannat Patel
9ce7d8f5d6 Merge pull request #1641 from pateljannat/issues-121
chore: upgraded frappe-ui
2025-07-15 15:39:48 +05:30
Jannat Patel
eae2587e4c chore: upgraded frappe-ui 2025-07-15 15:08:32 +05:30
Jannat Patel
323097f201 Merge pull request #1639 from frappe/l10n_develop2
chore: sync translations from crowdin
2025-07-15 09:44:54 +05:30
Jannat Patel
014499888a chore: Esperanto translations 2025-07-15 01:33:53 +05:30
Jannat Patel
5662de21ae chore: Serbian (Latin) translations 2025-07-15 01:33:52 +05:30
Jannat Patel
17c2eba455 chore: Bosnian translations 2025-07-15 01:33:50 +05:30
Jannat Patel
1f2c986e8f chore: Croatian translations 2025-07-15 01:33:49 +05:30
Jannat Patel
12040b5f6d chore: Thai translations 2025-07-15 01:33:47 +05:30
Jannat Patel
20a985848f chore: Portuguese, Brazilian translations 2025-07-15 01:33:46 +05:30
Jannat Patel
c06c6169e5 chore: Vietnamese translations 2025-07-15 01:33:44 +05:30
Jannat Patel
917aeb79ef chore: Turkish translations 2025-07-15 01:33:43 +05:30
Jannat Patel
c4f36a39fe chore: Swedish translations 2025-07-15 01:33:42 +05:30
Jannat Patel
befedc30ad chore: Serbian (Cyrillic) translations 2025-07-15 01:33:40 +05:30
Jannat Patel
d3bc67daa2 chore: Russian translations 2025-07-15 01:33:39 +05:30
Jannat Patel
5d7e211367 chore: Polish translations 2025-07-15 01:33:37 +05:30
Jannat Patel
fa9daa01ec chore: Dutch translations 2025-07-15 01:33:36 +05:30
Jannat Patel
0ed9dc63b8 chore: Italian translations 2025-07-15 01:33:34 +05:30
Jannat Patel
5dd6b33eb2 chore: Hungarian translations 2025-07-15 01:33:33 +05:30
Jannat Patel
1210b823c7 chore: German translations 2025-07-15 01:33:32 +05:30
Jannat Patel
04240b4b3d chore: Czech translations 2025-07-15 01:33:30 +05:30
Jannat Patel
787f592a1a chore: Arabic translations 2025-07-15 01:33:29 +05:30
Jannat Patel
e7363fbd40 chore: Spanish translations 2025-07-15 01:33:27 +05:30
Jannat Patel
e2762825e5 chore: French translations 2025-07-15 01:33:25 +05:30
Jannat Patel
bbbca70c71 chore: Chinese Simplified translations 2025-07-15 01:33:24 +05:30
Jannat Patel
8dde423866 chore: Persian translations 2025-07-15 01:33:23 +05:30
Jannat Patel
fc4c1c2b7e chore: Portuguese translations 2025-07-15 01:33:21 +05:30
Jannat Patel
bf02e2de3f Merge pull request #1637 from pateljannat/issues-120
fix: increase pageLength for evaluation schedule
2025-07-14 16:57:09 +05:30
Jannat Patel
a26ba4dc6e fix: increase pageLength for evaluation schedule 2025-07-14 16:33:11 +05:30
52 changed files with 18349 additions and 3649 deletions

View File

@@ -1,7 +1,7 @@
name: Create weekly release name: Create weekly release
on: on:
schedule: schedule:
- cron: '30 4 15 * *' - cron: '30 3 * * 3'
workflow_dispatch: workflow_dispatch:
jobs: jobs:

View File

@@ -107,7 +107,7 @@ describe("Course Creation", () => {
cy.get("div").contains( cy.get("div").contains(
"Test Course Short Introduction to test the UI" "Test Course Short Introduction to test the UI"
); );
cy.get(".course-image") cy.get(".bg-cover")
.invoke("css", "background-image") .invoke("css", "background-image")
.should("include", "/files/profile"); .should("include", "/files/profile");
}); });

View File

@@ -40,6 +40,7 @@ declare module 'vue' {
Code: typeof import('./src/components/Controls/Code.vue')['default'] Code: typeof import('./src/components/Controls/Code.vue')['default']
CodeEditor: typeof import('./src/components/Controls/CodeEditor.vue')['default'] CodeEditor: typeof import('./src/components/Controls/CodeEditor.vue')['default']
CollapseSidebar: typeof import('./src/components/Icons/CollapseSidebar.vue')['default'] CollapseSidebar: typeof import('./src/components/Icons/CollapseSidebar.vue')['default']
ColorSwatches: typeof import('./src/components/Controls/ColorSwatches.vue')['default']
CourseCard: typeof import('./src/components/CourseCard.vue')['default'] CourseCard: typeof import('./src/components/CourseCard.vue')['default']
CourseCardOverlay: typeof import('./src/components/CourseCardOverlay.vue')['default'] CourseCardOverlay: typeof import('./src/components/CourseCardOverlay.vue')['default']
CourseInstructors: typeof import('./src/components/CourseInstructors.vue')['default'] CourseInstructors: typeof import('./src/components/CourseInstructors.vue')['default']

View File

@@ -31,7 +31,7 @@
"codemirror": "^6.0.1", "codemirror": "^6.0.1",
"dayjs": "^1.11.6", "dayjs": "^1.11.6",
"feather-icons": "^4.28.0", "feather-icons": "^4.28.0",
"frappe-ui": "^0.1.163", "frappe-ui": "^0.1.172",
"highlight.js": "^11.11.1", "highlight.js": "^11.11.1",
"lucide-vue-next": "^0.383.0", "lucide-vue-next": "^0.383.0",
"markdown-it": "^14.0.0", "markdown-it": "^14.0.0",

View File

@@ -344,6 +344,22 @@ const addAssignments = () => {
} }
} }
const addProgrammingExercises = () => {
if (isInstructor.value || isModerator.value) {
sidebarLinks.value.splice(3, 0, {
label: 'Programming Exercises',
icon: 'Code',
to: 'ProgrammingExercises',
activeFor: [
'ProgrammingExercises',
'ProgrammingExerciseForm',
'ProgrammingExerciseSubmissions',
'ProgrammingExerciseSubmission',
],
})
}
}
const addPrograms = () => { const addPrograms = () => {
let activeFor = ['Programs', 'ProgramForm'] let activeFor = ['Programs', 'ProgramForm']
let index = 1 let index = 1
@@ -627,6 +643,7 @@ watch(userResource, () => {
isModerator.value = userResource.data.is_moderator isModerator.value = userResource.data.is_moderator
isInstructor.value = userResource.data.is_instructor isInstructor.value = userResource.data.is_instructor
addPrograms() addPrograms()
addProgrammingExercises()
addQuizzes() addQuizzes()
addAssignments() addAssignments()
setUpOnboarding() setUpOnboarding()

View File

@@ -0,0 +1,108 @@
<template>
<div>
<div class="text-xs text-ink-gray-5 mb-1">
{{ __(label) }}
</div>
<Popover placement="bottom" class="!block">
<template #target="{ togglePopover, isOpen }">
<div class="space-y-2">
<FormControl
type="text"
autocomplete="off"
class="w-full"
:placeholder="__('Set Color')"
@focus="togglePopover"
:modelValue="modelValue"
@update:modelValue="(val: string) => emit('update:modelValue', val)"
>
<template #prefix>
<div
class="size-4 rounded-full"
:style="
modelValue
? {
backgroundColor:
theme.backgroundColor[modelValue.toLowerCase()][400],
}
: {}
"
>
<Palette
v-if="!modelValue"
class="size-4 stroke-1.5 text-ink-gray-5"
/>
</div>
</template>
<template #suffix>
<Button variant="ghost">
<X
class="size-3 text-ink-gray-5"
@click="emit('update:modelValue', null)"
/>
</Button>
</template>
</FormControl>
</div>
</template>
<template #body="{ close }">
<div class="rounded-lg bg-surface-white p-3 border w-fit mt-2">
<div class="text-xs text-ink-gray-5 mb-1.5">
{{ __('Swatches') }}
</div>
<div class="grid grid-cols-7 gap-2">
<div
v-for="color in colors"
:key="color"
class="size-5 rounded-full cursor-pointer"
:style="{
backgroundColor:
theme.backgroundColor[color.toLowerCase()][400],
}"
@click="
(e) => {
emit('update:modelValue', color)
close()
emit('change', color)
}
"
></div>
</div>
</div>
</template>
</Popover>
<div class="text-sm text-ink-gray-5 mt-2">
{{ description }}
</div>
</div>
</template>
<script setup lang="ts">
import { Button, FormControl, Popover } from 'frappe-ui'
import { computed } from 'vue'
import { Palette, X } from 'lucide-vue-next'
import { theme } from '@/utils/theme'
const emit = defineEmits(['update:modelValue', 'change'])
const props = defineProps<{
modelValue: string
label: string
description?: string
}>()
const colors = computed(() => {
return [
'Red',
'Blue',
'Green',
'Amber',
'Purple',
'Cyan',
'Orange',
'Violet',
'Pink',
'Teal',
'Gray',
'Yellow',
]
})
</script>

View File

@@ -1,41 +1,51 @@
<template> <template>
<div <div
v-if="course.title" v-if="course.title"
class="flex flex-col h-full rounded-md border-2 overflow-auto" class="flex flex-col h-full rounded-md border-2 overflow-auto text-ink-gray-9"
style="min-height: 350px" style="min-height: 350px"
> >
<div <div
class="course-image" class="w-[100%] h-[168px] bg-cover bg-center bg-no-repeat"
:class="{ 'default-image': !course.image }" :style="
:style="{ backgroundImage: 'url(\'' + encodeURI(course.image) + '\')' }" course.image
? { backgroundImage: `url('${encodeURI(course.image)}')` }
: {
backgroundImage: getGradientColor(),
backgroundBlendMode: 'screen',
}
"
> >
<div class="flex items-center flex-wrap relative top-4 px-2 w-fit"> <div class="flex items-center flex-wrap relative top-4 px-2 w-fit">
<Badge <div
v-if="course.featured" v-if="course.featured"
variant="subtle" class="flex items-center space-x-1 text-xs text-ink-amber-3 bg-surface-white border border-outline-amber-1 px-2 py-0.5 rounded-md mr-1 mb-1"
theme="green"
size="md"
class="mb-1 mr-1"
> >
<Star class="size-3 stroke-2" />
<span>
{{ __('Featured') }} {{ __('Featured') }}
</Badge> </span>
</div>
<div <div
v-if="course.tags" v-if="course.tags"
v-for="tag in course.tags?.split(', ')" v-for="tag in course.tags?.split(', ')"
class="text-xs bg-white text-gray-800 px-2 py-0.5 rounded-md mb-1 mr-1" class="text-xs border bg-surface-white text-ink-gray-9 px-2 py-0.5 rounded-md mb-1 mr-1"
> >
{{ tag }} {{ tag }}
</div> </div>
</div> </div>
<div v-if="!course.image" class="image-placeholder"> <div
{{ course.title[0] }} v-if="!course.image"
class="flex items-center justify-center text-white flex-1 font-extrabold text-2xl my-auto px-5 text-center leading-6"
:class="course.tags ? 'h-[80%]' : 'h-full'"
>
{{ course.title }}
</div> </div>
</div> </div>
<div class="flex flex-col flex-auto p-4"> <div class="flex flex-col flex-auto p-4">
<div class="flex items-center justify-between mb-2"> <div class="flex items-center justify-between mb-2">
<div v-if="course.lessons"> <div v-if="course.lessons">
<Tooltip :text="__('Lessons')"> <Tooltip :text="__('Lessons')">
<span class="flex items-center text-ink-gray-7"> <span class="flex items-center">
<BookOpen class="h-4 w-4 stroke-1.5 mr-1" /> <BookOpen class="h-4 w-4 stroke-1.5 mr-1" />
{{ course.lessons }} {{ course.lessons }}
</span> </span>
@@ -44,8 +54,8 @@
<div v-if="course.enrollments"> <div v-if="course.enrollments">
<Tooltip :text="__('Enrolled Students')"> <Tooltip :text="__('Enrolled Students')">
<span class="flex items-center text-ink-gray-7"> <span class="flex items-center">
<Users class="h-4 w-4 stroke-1. mr-1" /> <Users class="h-4 w-4 stroke-1.5 mr-1" />
{{ course.enrollments }} {{ course.enrollments }}
</span> </span>
</Tooltip> </Tooltip>
@@ -53,14 +63,14 @@
<div v-if="course.rating"> <div v-if="course.rating">
<Tooltip :text="__('Average Rating')"> <Tooltip :text="__('Average Rating')">
<span class="flex items-center text-ink-gray-7"> <span class="flex items-center">
<Star class="h-4 w-4 stroke-1.5 mr-1" /> <Star class="h-4 w-4 stroke-1.5 mr-1" />
{{ course.rating }} {{ course.rating }}
</span> </span>
</Tooltip> </Tooltip>
</div> </div>
<div v-if="course.status != 'Approved'"> <!-- <div v-if="course.status != 'Approved'">
<Badge <Badge
variant="subtle" variant="subtle"
:theme="course.status === 'Under Review' ? 'orange' : 'blue'" :theme="course.status === 'Under Review' ? 'orange' : 'blue'"
@@ -68,14 +78,14 @@
> >
{{ course.status }} {{ course.status }}
</Badge> </Badge>
</div> </div> -->
</div> </div>
<div class="text-xl font-semibold leading-6 text-ink-gray-9"> <div v-if="course.image" class="text-xl font-semibold leading-6">
{{ course.title }} {{ course.title }}
</div> </div>
<div class="short-introduction text-ink-gray-7 text-sm"> <div class="short-introduction text-sm">
{{ course.short_introduction }} {{ course.short_introduction }}
</div> </div>
@@ -84,11 +94,8 @@
:progress="course.membership.progress" :progress="course.membership.progress"
/> />
<div <div v-if="user && course.membership" class="text-sm mt-2 mb-4">
v-if="user && course.membership" {{ Math.ceil(course.membership.progress) }}% {{ __('completed') }}
class="text-sm text-ink-gray-7 mt-2 mb-4"
>
{{ Math.ceil(course.membership.progress) }}% completed
</div> </div>
<div class="flex items-center justify-between mt-auto"> <div class="flex items-center justify-between mt-auto">
@@ -108,21 +115,23 @@
<div v-if="course.paid_course" class="font-semibold"> <div v-if="course.paid_course" class="font-semibold">
{{ course.price }} {{ course.price }}
</div> </div>
<div
<Tooltip
v-if="course.paid_certificate || course.enable_certification" v-if="course.paid_certificate || course.enable_certification"
class="text-xs text-ink-blue-3 bg-surface-blue-1 py-0.5 px-1 rounded-md" :text="__('Get Certified')"
> >
{{ __('Certification') }} <GraduationCap class="size-5 stroke-1.5 text-ink-gray-7" />
</div> </Tooltip>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script setup> <script setup>
import { BookOpen, Users, Star } from 'lucide-vue-next' import { BookOpen, GraduationCap, Star, Users } from 'lucide-vue-next'
import UserAvatar from '@/components/UserAvatar.vue' import UserAvatar from '@/components/UserAvatar.vue'
import { sessionStore } from '@/stores/session' import { sessionStore } from '@/stores/session'
import { Badge, Tooltip } from 'frappe-ui' import { Tooltip } from 'frappe-ui'
import { theme } from '@/utils/theme'
import CourseInstructors from '@/components/CourseInstructors.vue' import CourseInstructors from '@/components/CourseInstructors.vue'
import ProgressBar from '@/components/ProgressBar.vue' import ProgressBar from '@/components/ProgressBar.vue'
@@ -134,16 +143,24 @@ const props = defineProps({
default: null, default: null,
}, },
}) })
const getGradientColor = () => {
let color = props.course.card_gradient?.toLowerCase() || 'blue'
let colorMap = theme.backgroundColor[color]
return `linear-gradient(to top right, black, ${colorMap[400]})`
/* return `bg-gradient-to-br from-${color}-100 via-${color}-200 to-${color}-400` */
/* return `linear-gradient(to bottom right, ${colorMap[100]}, ${colorMap[400]})` */
/* return `radial-gradient(ellipse at 80% 20%, black 20%, ${colorMap[500]} 100%)` */
/* return `radial-gradient(ellipse at 30% 70%, black 50%, ${colorMap[500]} 100%)` */
/* return `radial-gradient(ellipse at 80% 20%, ${colorMap[100]} 0%, ${colorMap[300]} 50%, ${colorMap[500]} 100%)` */
/* return `conic-gradient(from 180deg at 50% 50%, ${colorMap[100]} 0%, ${colorMap[200]} 50%, ${colorMap[400]} 100%)` */
/* return `linear-gradient(135deg, ${colorMap[100]}, ${colorMap[300]}), linear-gradient(120deg, rgba(255,255,255,0.4) 0%, transparent 60%) ` */
/* return `radial-gradient(circle at 20% 30%, ${colorMap[100]} 0%, transparent 40%),
radial-gradient(circle at 80% 40%, ${colorMap[200]} 0%, transparent 50%),
linear-gradient(135deg, ${colorMap[300]} 0%, ${colorMap[400]} 100%);` */
}
</script> </script>
<style> <style>
.course-image {
height: 168px;
width: 100%;
background-size: cover;
background-position: center;
background-repeat: no-repeat;
}
.course-card-pills { .course-card-pills {
background: #ffffff; background: #ffffff;
margin-left: 0; margin-left: 0;
@@ -157,14 +174,6 @@ const props = defineProps({
width: fit-content; width: fit-content;
} }
.default-image {
display: flex;
flex-direction: column;
align-items: center;
background-color: theme('colors.green.100');
color: theme('colors.green.600');
}
.avatar-group { .avatar-group {
display: inline-flex; display: inline-flex;
align-items: center; align-items: center;
@@ -173,14 +182,7 @@ const props = defineProps({
.avatar-group .avatar { .avatar-group .avatar {
transition: margin 0.1s ease-in-out; transition: margin 0.1s ease-in-out;
} }
.image-placeholder {
display: flex;
align-items: center;
flex: 1;
font-size: 5rem;
color: theme('colors.gray.700');
font-weight: 600;
}
.avatar-group.overlap .avatar + .avatar { .avatar-group.overlap .avatar + .avatar {
margin-left: calc(-8px); margin-left: calc(-8px);
} }

View File

@@ -1,5 +1,5 @@
<template> <template>
<div class="text-ink-gray-7"> <div class="">
<span v-if="instructors?.length == 1"> <span v-if="instructors?.length == 1">
<router-link <router-link
:to="{ :to="{
@@ -19,7 +19,7 @@
> >
{{ instructors[0].first_name }} {{ instructors[0].first_name }}
</router-link> </router-link>
and {{ __('and') }}
<router-link <router-link
:to="{ :to="{
name: 'Profile', name: 'Profile',
@@ -38,7 +38,7 @@
> >
{{ instructors[0].first_name }} {{ instructors[0].first_name }}
</router-link> </router-link>
and {{ instructors?.length - 1 }} others {{ __('and') }} {{ instructors?.length - 1 }} {{ __('others') }}
</span> </span>
</div> </div>
</template> </template>

View File

@@ -15,7 +15,7 @@
</div> --> </div> -->
<FormControl <FormControl
v-model="searchFilter" v-model="searchFilter"
:placeholder="__('Search by Member Name')" :placeholder="__('Search by Member')"
type="text" type="text"
class="w-full" class="w-full"
/> />
@@ -149,6 +149,10 @@ import { theme } from '@/utils/theme'
const show = defineModel<boolean | undefined>() const show = defineModel<boolean | undefined>()
const searchFilter = ref<string | null>(null) const searchFilter = ref<string | null>(null)
type Filters = {
course: string | undefined
member_name?: string[]
}
const props = defineProps<{ const props = defineProps<{
courseName?: string courseName?: string
@@ -184,10 +188,6 @@ const progressList = createListResource({
watch([searchFilter], () => { watch([searchFilter], () => {
let filterApplied = false let filterApplied = false
type Filters = {
course: string | undefined
member_name?: string[]
}
let filters: Filters = { let filters: Filters = {
course: props.courseName, course: props.courseName,
} }

View File

@@ -8,13 +8,20 @@
> >
<template #body-content> <template #body-content>
<div class="text-base"> <div class="text-base">
<div class="flex items-center justify-between">
<TabButtons <TabButtons
v-if="tabs.length > 1" v-if="tabs.length > 1"
:buttons="tabs" :buttons="tabs"
v-model="currentTab" v-model="currentTab"
class="w-fit" class="w-fit"
/> />
<div v-if="currentTab" class="mt-8"> <!-- <FormControl
v-model="searchText"
:placeholder="__('Search by Member')"
class="mt-2 mr-5 w-[25%]"
/> -->
</div>
<div v-if="currentTab" class="mt-4">
<div class="grid grid-cols-[55%,40%] gap-5"> <div class="grid grid-cols-[55%,40%] gap-5">
<div class="space-y-5 border rounded-md p-2 pt-4"> <div class="space-y-5 border rounded-md p-2 pt-4">
<div class="grid grid-cols-[70%,30%] text-sm text-ink-gray-5"> <div class="grid grid-cols-[70%,30%] text-sm text-ink-gray-5">
@@ -52,7 +59,7 @@
</div> </div>
</div> </div>
<div class="text-center text-sm"> <div class="text-center text-sm">
{{ parseFloat(row.watch_time).toFixed(2) }} {{ convertToMinutes(row.watch_time) }}
</div> </div>
</div> </div>
</router-link> </router-link>
@@ -62,7 +69,7 @@
<NumberChart <NumberChart
class="border rounded-md" class="border rounded-md"
:config="{ :config="{
title: __('Average Watch Time (seconds)'), title: __('Average Watch Time (minutes)'),
value: averageWatchTime, value: averageWatchTime,
}" }"
/> />
@@ -73,6 +80,9 @@
</div> </div>
</div> </div>
</div> </div>
<div v-else class="text-sm text-ink-gray-5">
{{ __('No statistics available for this video.') }}
</div>
</div> </div>
</template> </template>
</Dialog> </Dialog>
@@ -82,15 +92,21 @@ import {
Avatar, Avatar,
createListResource, createListResource,
Dialog, Dialog,
FormControl,
NumberChart, NumberChart,
TabButtons, TabButtons,
} from 'frappe-ui' } from 'frappe-ui'
import { computed, ref, watch } from 'vue' import { computed, ref, watch } from 'vue'
import { enablePlyr } from '@/utils' import { enablePlyr, convertToMinutes } from '@/utils'
import VideoBlock from '@/components/VideoBlock.vue' import VideoBlock from '@/components/VideoBlock.vue'
const show = defineModel<boolean | undefined>() const show = defineModel<boolean | undefined>()
const currentTab = ref<string>('') const currentTab = ref<string>('')
const searchText = ref<string>('')
type Filters = {
lesson: string | undefined
member_name?: string[]
}
const props = defineProps<{ const props = defineProps<{
lessonName?: string lessonName?: string
@@ -127,6 +143,24 @@ watch(
} }
) )
watch(searchText, () => {
let filterApplied = false
let filters: Filters = {
lesson: props.lessonName,
}
if (searchText.value) {
filters.member_name = ['like', `%${searchText.value}%`]
filterApplied = true
}
statistics.update({
filters: filters,
})
statistics.reload({})
})
watch(show, () => { watch(show, () => {
if (show.value) { if (show.value) {
enablePlyr() enablePlyr()
@@ -151,7 +185,7 @@ const averageWatchTime = computed(() => {
totalWatchTime += parseFloat(item.watch_time) totalWatchTime += parseFloat(item.watch_time)
}) })
return totalWatchTime / currentTabData.value.length return convertToMinutes(totalWatchTime / currentTabData.value.length)
}) })
const currentTabData = computed(() => { const currentTabData = computed(() => {

View File

@@ -132,6 +132,7 @@ const participants = createListResource({
doctype: 'LMS Certificate', doctype: 'LMS Certificate',
url: 'lms.lms.api.get_certified_participants', url: 'lms.lms.api.get_certified_participants',
start: 0, start: 0,
cache: ['certified_participants'],
pageLength: 100, pageLength: 100,
}) })

View File

@@ -47,9 +47,16 @@
:required="true" :required="true"
/> />
<div> <div>
<div class="mb-1.5 text-xs text-ink-gray-5"> <div class="text-xs text-ink-gray-5">
{{ __('Tags') }} {{ __('Tags') }}
</div> </div>
<FormControl
v-model="newTag"
:placeholder="__('Add a keyword and then press enter')"
:class="['w-full', 'flex-1', 'my-1']"
@keyup.enter="updateTags()"
id="tags"
/>
<div> <div>
<div class="flex items-center flex-wrap gap-2"> <div class="flex items-center flex-wrap gap-2">
<div <div
@@ -64,37 +71,13 @@
/> />
</div> </div>
</div> </div>
<FormControl
v-model="newTag"
:placeholder="__('Add a keyword and then press enter')"
:class="[
'w-full',
'flex-1',
{ 'mt-2': course.tags?.length },
]"
@keyup.enter="updateTags()"
id="tags"
/>
</div> </div>
</div> </div>
</div> </div>
<div class="grid grid-cols-2 gap-5"> <div class="grid grid-cols-2 gap-5">
<FormControl
v-model="course.short_introduction"
type="textarea"
:rows="5"
:label="__('Short Introduction')"
:placeholder="
__(
'A one line introduction to the course that appears on the course card'
)
"
:required="true"
/>
<div class="mb-4"> <div class="mb-4">
<div class="text-xs text-ink-gray-5 mb-2"> <div class="text-xs text-ink-gray-5 mb-2">
{{ __('Course Image') }} {{ __('Course Image') }}
<span class="text-ink-red-3">*</span>
</div> </div>
<FileUploader <FileUploader
v-if="!course.course_image" v-if="!course.course_image"
@@ -144,6 +127,13 @@
</div> </div>
</div> </div>
</div> </div>
<ColorSwatches
v-model="course.card_gradient"
:label="__('Color')"
:description="__('Choose a color for the course card')"
class="w-full"
/>
</div> </div>
</div> </div>
@@ -185,6 +175,21 @@
</div> </div>
<div class="px-10 pb-5 mb-5 space-y-5 border-b"> <div class="px-10 pb-5 mb-5 space-y-5 border-b">
<div class="text-lg font-semibold">
{{ __('About the Course') }}
</div>
<FormControl
v-model="course.short_introduction"
type="textarea"
:rows="5"
:label="__('Short Introduction')"
:placeholder="
__(
'A one line introduction to the course that appears on the course card'
)
"
:required="true"
/>
<div class=""> <div class="">
<div class="mb-1.5 text-sm text-ink-gray-5"> <div class="mb-1.5 text-sm text-ink-gray-5">
{{ __('Course Description') }} {{ __('Course Description') }}
@@ -342,6 +347,7 @@ import {
import Link from '@/components/Controls/Link.vue' import Link from '@/components/Controls/Link.vue'
import CourseOutline from '@/components/CourseOutline.vue' import CourseOutline from '@/components/CourseOutline.vue'
import MultiSelect from '@/components/Controls/MultiSelect.vue' import MultiSelect from '@/components/Controls/MultiSelect.vue'
import ColorSwatches from '@/components/Controls/ColorSwatches.vue'
const user = inject('$user') const user = inject('$user')
const newTag = ref('') const newTag = ref('')
@@ -365,6 +371,7 @@ const course = reactive({
description: '', description: '',
video_link: '', video_link: '',
course_image: null, course_image: null,
card_gradient: '',
tags: '', tags: '',
category: '', category: '',
published: false, published: false,

View File

@@ -57,7 +57,7 @@
</div> </div>
<div <div
v-if="courses.data?.length" v-if="courses.data?.length"
class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 2xl:grid-cols-4 gap-5" class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 2xl:grid-cols-4 gap-8"
> >
<router-link <router-link
v-for="course in courses.data" v-for="course in courses.data"

View File

@@ -604,7 +604,7 @@ const updateVideoTime = (video) => {
} }
const startTimer = () => { const startTimer = () => {
timerInterval = setInterval(() => { let timerInterval = setInterval(() => {
timer.value++ timer.value++
if (timer.value == 30) { if (timer.value == 30) {
clearInterval(timerInterval) clearInterval(timerInterval)

View File

@@ -714,17 +714,6 @@ iframe {
width: 100%; width: 100%;
} }
.cdx-block.embed-tool::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: transparent;
z-index: 1000;
}
:root { :root {
--plyr-range-fill-background: white; --plyr-range-fill-background: white;
--plyr-video-control-background-hover: transparent; --plyr-video-control-background-hover: transparent;

View File

@@ -77,7 +77,7 @@ const evaluations = createListResource({
], ],
auto: true, auto: true,
orderBy: 'creation desc', orderBy: 'creation desc',
limit: 100, pageLength: 500,
cache: ['schedule', user.data?.name], cache: ['schedule', user.data?.name],
transform(data) { transform(data) {
return data.map((d) => { return data.map((d) => {

View File

@@ -420,17 +420,6 @@ export function getSidebarLinks() {
to: 'Batches', to: 'Batches',
activeFor: ['Batches', 'BatchDetail', 'Batch', 'BatchForm'], activeFor: ['Batches', 'BatchDetail', 'Batch', 'BatchForm'],
}, },
{
label: 'Programming Exercises',
icon: 'Code',
to: 'ProgrammingExercises',
activeFor: [
'ProgrammingExercises',
'ProgrammingExerciseForm',
'ProgrammingExerciseSubmissions',
'ProgrammingExerciseSubmission',
],
},
{ {
label: 'Certified Members', label: 'Certified Members',
icon: 'GraduationCap', icon: 'GraduationCap',
@@ -551,11 +540,10 @@ export const enablePlyr = async () => {
const wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms)) const wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms))
const setupPlyrForVideo = (video, players) => { const setupPlyrForVideo = (video, players) => {
const src = video.getAttribute('src') || video.getAttribute('data-src') const src = video.getAttribute('src')
if (src) { if (src) {
const videoID = extractYouTubeId(src) const videoID = extractYouTubeId(src)
video.setAttribute('data-plyr-provider', 'youtube')
video.setAttribute('data-plyr-embed-id', videoID) video.setAttribute('data-plyr-embed-id', videoID)
} }
@@ -679,3 +667,9 @@ export const formatTimestamp = (seconds) => {
const secs = String(date.getUTCSeconds()).padStart(2, '0') const secs = String(date.getUTCSeconds()).padStart(2, '0')
return `${minutes}:${secs}` return `${minutes}:${secs}`
} }
export const convertToMinutes = (seconds) => {
const minutes = Math.floor(seconds / 60)
const remainingSeconds = Math.round(seconds % 60)
return `${minutes}:${remainingSeconds.toString().padStart(2, '0')}`
}

View File

@@ -39,6 +39,7 @@ export default defineConfig({
'showdown', 'showdown',
'engine.io-client', 'engine.io-client',
'tailwind.config.js', 'tailwind.config.js',
'interactjs',
'highlight.js', 'highlight.js',
'plyr', 'plyr',
], ],

View File

@@ -38,9 +38,9 @@
"@babel/types" "^7.28.0" "@babel/types" "^7.28.0"
"@babel/types@^7.28.0": "@babel/types@^7.28.0":
version "7.28.0" version "7.28.1"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.0.tgz#2fd0159a6dc7353933920c43136335a9b264d950" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.1.tgz#2aaf3c10b31ba03a77ac84f52b3912a0edef4cf9"
integrity sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg== integrity sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==
dependencies: dependencies:
"@babel/helper-string-parser" "^7.27.1" "@babel/helper-string-parser" "^7.27.1"
"@babel/helper-validator-identifier" "^7.27.1" "@babel/helper-validator-identifier" "^7.27.1"
@@ -161,9 +161,9 @@
"@marijn/find-cluster-break" "^1.0.0" "@marijn/find-cluster-break" "^1.0.0"
"@codemirror/view@6.x", "@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0", "@codemirror/view@^6.23.0", "@codemirror/view@^6.27.0", "@codemirror/view@^6.35.0": "@codemirror/view@6.x", "@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0", "@codemirror/view@^6.23.0", "@codemirror/view@^6.27.0", "@codemirror/view@^6.35.0":
version "6.38.0" version "6.38.1"
resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.38.0.tgz#4486062b791a4247793e0953e05ae71a9e172217" resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.38.1.tgz#74214434351719ec0710431363a85f7a01e80a73"
integrity sha512-yvSchUwHOdupXkd7xJ0ob36jdsSR/I+/C+VbY0ffBiL5NiSTEBDfB1ZGWbbIlDd5xgdUkody+lukAdOxYrOBeg== integrity sha512-RmTOkE7hRU3OVREqFVITWHz6ocgBjv08GoePscAakgVQfciA3SGCEk7mb9IzwW61cKKmlTpHXG6DUE5Ubx+MGQ==
dependencies: dependencies:
"@codemirror/state" "^6.5.0" "@codemirror/state" "^6.5.0"
crelt "^1.0.6" crelt "^1.0.6"
@@ -386,7 +386,7 @@
dependencies: dependencies:
"@floating-ui/utils" "^0.2.10" "@floating-ui/utils" "^0.2.10"
"@floating-ui/dom@^1.6.13", "@floating-ui/dom@^1.6.7", "@floating-ui/dom@^1.7.2": "@floating-ui/dom@^1.6.13", "@floating-ui/dom@^1.6.7", "@floating-ui/dom@^1.7.0", "@floating-ui/dom@^1.7.2":
version "1.7.2" version "1.7.2"
resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.7.2.tgz#3540b051cf5ce0d4f4db5fb2507a76e8ea5b4a45" resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.7.2.tgz#3540b051cf5ce0d4f4db5fb2507a76e8ea5b4a45"
integrity sha512-7cfaOQuCS27HD7DX+6ib2OrnW+b4ZBwDNnCcT0uTyidcmyWb03FnQqJybDBoCnpdxwBSfA94UAYlRCt7mV+TbA== integrity sha512-7cfaOQuCS27HD7DX+6ib2OrnW+b4ZBwDNnCcT0uTyidcmyWb03FnQqJybDBoCnpdxwBSfA94UAYlRCt7mV+TbA==
@@ -434,6 +434,11 @@
local-pkg "^1.0.0" local-pkg "^1.0.0"
mlly "^1.7.4" mlly "^1.7.4"
"@interactjs/types@1.10.27":
version "1.10.27"
resolved "https://registry.yarnpkg.com/@interactjs/types/-/types-1.10.27.tgz#10afd71cef2498e2b5192cf0d46f937d8ceb767f"
integrity sha512-BUdv0cvs4H5ODuwft2Xp4eL8Vmi3LcihK42z0Ft/FbVJZoRioBsxH+LlsBdK4tAie7PqlKGy+1oyOncu1nQ6eA==
"@internationalized/date@^3.5.0", "@internationalized/date@^3.5.4": "@internationalized/date@^3.5.0", "@internationalized/date@^3.5.4":
version "3.8.2" version "3.8.2"
resolved "https://registry.yarnpkg.com/@internationalized/date/-/date-3.8.2.tgz#977620c1407cc6830fd44cb505679d23c599e119" resolved "https://registry.yarnpkg.com/@internationalized/date/-/date-3.8.2.tgz#977620c1407cc6830fd44cb505679d23c599e119"
@@ -486,6 +491,11 @@
"@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/resolve-uri" "^3.1.0"
"@jridgewell/sourcemap-codec" "^1.4.14" "@jridgewell/sourcemap-codec" "^1.4.14"
"@juggle/resize-observer@^3.4.0":
version "3.4.0"
resolved "https://registry.yarnpkg.com/@juggle/resize-observer/-/resize-observer-3.4.0.tgz#08d6c5e20cf7e4cc02fd181c4b0c225cd31dbb60"
integrity sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==
"@kurkle/color@^0.3.0": "@kurkle/color@^0.3.0":
version "0.3.4" version "0.3.4"
resolved "https://registry.yarnpkg.com/@kurkle/color/-/color-0.3.4.tgz#4d4ff677e1609214fc71c580125ddddd86abcabf" resolved "https://registry.yarnpkg.com/@kurkle/color/-/color-0.3.4.tgz#4d4ff677e1609214fc71c580125ddddd86abcabf"
@@ -497,9 +507,9 @@
integrity sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA== integrity sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==
"@lezer/css@^1.1.0", "@lezer/css@^1.1.7": "@lezer/css@^1.1.0", "@lezer/css@^1.1.7":
version "1.2.1" version "1.3.0"
resolved "https://registry.yarnpkg.com/@lezer/css/-/css-1.2.1.tgz#b35f6d0459e9be4de1cdf4d3132a59efd7cf2ba3" resolved "https://registry.yarnpkg.com/@lezer/css/-/css-1.3.0.tgz#296f298814782c2fad42a936f3510042cdcd2034"
integrity sha512-2F5tOqzKEKbCUNraIXc0f6HKeyKlmMWJnBB0i4XW6dJgssrZO/YlZ2pY5xgyqDleqqhiNJ3dQhbrV2aClZQMvg== integrity sha512-pBL7hup88KbI7hXnZV3PQsn43DHy6TWyzuyk2AO9UyoXcDltvIdqWKE1dLL/45JVZ+YZkHe1WVHqO6wugZZWcw==
dependencies: dependencies:
"@lezer/common" "^1.2.0" "@lezer/common" "^1.2.0"
"@lezer/highlight" "^1.0.0" "@lezer/highlight" "^1.0.0"
@@ -596,105 +606,105 @@
resolved "https://registry.yarnpkg.com/@remirror/core-constants/-/core-constants-3.0.0.tgz#96fdb89d25c62e7b6a5d08caf0ce5114370e3b8f" resolved "https://registry.yarnpkg.com/@remirror/core-constants/-/core-constants-3.0.0.tgz#96fdb89d25c62e7b6a5d08caf0ce5114370e3b8f"
integrity sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg== integrity sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==
"@rollup/rollup-android-arm-eabi@4.44.1": "@rollup/rollup-android-arm-eabi@4.45.0":
version "4.44.1" version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.44.1.tgz#f768e3b2b0e6b55c595d7a053652c06413713983" resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.45.0.tgz#0592252f7550bc0ea0474bb5a22430850f92bdbd"
integrity sha512-JAcBr1+fgqx20m7Fwe1DxPUl/hPkee6jA6Pl7n1v2EFiktAHenTaXl5aIFjUIEsfn9w3HE4gK1lEgNGMzBDs1w== integrity sha512-2o/FgACbji4tW1dzXOqAV15Eu7DdgbKsF2QKcxfG4xbh5iwU7yr5RRP5/U+0asQliSYv5M4o7BevlGIoSL0LXg==
"@rollup/rollup-android-arm64@4.44.1": "@rollup/rollup-android-arm64@4.45.0":
version "4.44.1" version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.44.1.tgz#40379fd5501cfdfd7d8f86dfa1d3ce8d3a609493" resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.45.0.tgz#00a51d1d4380cc677da80ac9da1a19e7806bf57e"
integrity sha512-RurZetXqTu4p+G0ChbnkwBuAtwAbIwJkycw1n6GvlGlBuS4u5qlr5opix8cBAYFJgaY05TWtM+LaoFggUmbZEQ== integrity sha512-PSZ0SvMOjEAxwZeTx32eI/j5xSYtDCRxGu5k9zvzoY77xUNssZM+WV6HYBLROpY5CkXsbQjvz40fBb7WPwDqtQ==
"@rollup/rollup-darwin-arm64@4.44.1": "@rollup/rollup-darwin-arm64@4.45.0":
version "4.44.1" version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.1.tgz#972c227bc89fe8a38a3f0c493e1966900e4e1ff7" resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.45.0.tgz#6638299dd282ebde1ebdf7dc5b0f150aa6e256e5"
integrity sha512-fM/xPesi7g2M7chk37LOnmnSTHLG/v2ggWqKj3CCA1rMA4mm5KVBT1fNoswbo1JhPuNNZrVwpTvlCVggv8A2zg== integrity sha512-BA4yPIPssPB2aRAWzmqzQ3y2/KotkLyZukVB7j3psK/U3nVJdceo6qr9pLM2xN6iRP/wKfxEbOb1yrlZH6sYZg==
"@rollup/rollup-darwin-x64@4.44.1": "@rollup/rollup-darwin-x64@4.45.0":
version "4.44.1" version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.1.tgz#96c919dcb87a5aa7dec5f7f77d90de881e578fdd" resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.45.0.tgz#33e61daa0a66890059648feda78e1075d4ea1bcb"
integrity sha512-gDnWk57urJrkrHQ2WVx9TSVTH7lSlU7E3AFqiko+bgjlh78aJ88/3nycMax52VIVjIm3ObXnDL2H00e/xzoipw== integrity sha512-Pr2o0lvTwsiG4HCr43Zy9xXrHspyMvsvEw4FwKYqhli4FuLE5FjcZzuQ4cfPe0iUFCvSQG6lACI0xj74FDZKRA==
"@rollup/rollup-freebsd-arm64@4.44.1": "@rollup/rollup-freebsd-arm64@4.45.0":
version "4.44.1" version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.44.1.tgz#d199d8eaef830179c0c95b7a6e5455e893d1102c" resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.45.0.tgz#2cc4bd3ba7026cd5374e902285ce76e8fae0f6eb"
integrity sha512-wnFQmJ/zPThM5zEGcnDcCJeYJgtSLjh1d//WuHzhf6zT3Md1BvvhJnWoy+HECKu2bMxaIcfWiu3bJgx6z4g2XA== integrity sha512-lYE8LkE5h4a/+6VnnLiL14zWMPnx6wNbDG23GcYFpRW1V9hYWHAw9lBZ6ZUIrOaoK7NliF1sdwYGiVmziUF4vA==
"@rollup/rollup-freebsd-x64@4.44.1": "@rollup/rollup-freebsd-x64@4.45.0":
version "4.44.1" version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.44.1.tgz#cab01f9e06ca756c1fabe87d64825ae016af4713" resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.45.0.tgz#64664ba3015deac473a5d6d6c60c068f274bf2d5"
integrity sha512-uBmIxoJ4493YATvU2c0upGz87f99e3wop7TJgOA/bXMFd2SvKCI7xkxY/5k50bv7J6dw1SXT4MQBQSLn8Bb/Uw== integrity sha512-PVQWZK9sbzpvqC9Q0GlehNNSVHR+4m7+wET+7FgSnKG3ci5nAMgGmr9mGBXzAuE5SvguCKJ6mHL6vq1JaJ/gvw==
"@rollup/rollup-linux-arm-gnueabihf@4.44.1": "@rollup/rollup-linux-arm-gnueabihf@4.45.0":
version "4.44.1" version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.44.1.tgz#f6f1c42036dba0e58dc2315305429beff0d02c78" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.45.0.tgz#7ab16acae3bcae863e9a9bc32038cd05e794a0ff"
integrity sha512-n0edDmSHlXFhrlmTK7XBuwKlG5MbS7yleS1cQ9nn4kIeW+dJH+ExqNgQ0RrFRew8Y+0V/x6C5IjsHrJmiHtkxQ== integrity sha512-hLrmRl53prCcD+YXTfNvXd776HTxNh8wPAMllusQ+amcQmtgo3V5i/nkhPN6FakW+QVLoUUr2AsbtIRPFU3xIA==
"@rollup/rollup-linux-arm-musleabihf@4.44.1": "@rollup/rollup-linux-arm-musleabihf@4.45.0":
version "4.44.1" version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.44.1.tgz#1157e98e740facf858993fb51431dce3a4a96239" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.45.0.tgz#bef91b1e924ab57e82e767dc2655264bbde7acc6"
integrity sha512-8WVUPy3FtAsKSpyk21kV52HCxB+me6YkbkFHATzC2Yd3yuqHwy2lbFL4alJOLXKljoRw08Zk8/xEj89cLQ/4Nw== integrity sha512-XBKGSYcrkdiRRjl+8XvrUR3AosXU0NvF7VuqMsm7s5nRy+nt58ZMB19Jdp1RdqewLcaYnpk8zeVs/4MlLZEJxw==
"@rollup/rollup-linux-arm64-gnu@4.44.1": "@rollup/rollup-linux-arm64-gnu@4.45.0":
version "4.44.1" version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.1.tgz#b39db73f8a4c22e7db31a4f3fd45170105f33265" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.45.0.tgz#0a811b16da334125f6e44570d0badf543876f49e"
integrity sha512-yuktAOaeOgorWDeFJggjuCkMGeITfqvPgkIXhDqsfKX8J3jGyxdDZgBV/2kj/2DyPaLiX6bPdjJDTu9RB8lUPQ== integrity sha512-fRvZZPUiBz7NztBE/2QnCS5AtqLVhXmUOPj9IHlfGEXkapgImf4W9+FSkL8cWqoAjozyUzqFmSc4zh2ooaeF6g==
"@rollup/rollup-linux-arm64-musl@4.44.1": "@rollup/rollup-linux-arm64-musl@4.45.0":
version "4.44.1" version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.1.tgz#4043398049fe4449c1485312d1ae9ad8af4056dd" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.45.0.tgz#e8c166efe3cb963faaa924c7721eafbade63036f"
integrity sha512-W+GBM4ifET1Plw8pdVaecwUgxmiH23CfAUj32u8knq0JPFyK4weRy6H7ooxYFD19YxBulL0Ktsflg5XS7+7u9g== integrity sha512-Btv2WRZOcUGi8XU80XwIvzTg4U6+l6D0V6sZTrZx214nrwxw5nAi8hysaXj/mctyClWgesyuxbeLylCBNauimg==
"@rollup/rollup-linux-loongarch64-gnu@4.44.1": "@rollup/rollup-linux-loongarch64-gnu@4.45.0":
version "4.44.1" version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.44.1.tgz#855a80e7e86490da15a85dcce247dbc25265bc08" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.45.0.tgz#239feea00fa2a1e734bdff09b8d1c90def2abbf5"
integrity sha512-1zqnUEMWp9WrGVuVak6jWTl4fEtrVKfZY7CvcBmUUpxAJ7WcSowPSAWIKa/0o5mBL/Ij50SIf9tuirGx63Ovew== integrity sha512-Li0emNnwtUZdLwHjQPBxn4VWztcrw/h7mgLyHiEI5Z0MhpeFGlzaiBHpSNVOMB/xucjXTTcO+dhv469Djr16KA==
"@rollup/rollup-linux-powerpc64le-gnu@4.44.1": "@rollup/rollup-linux-powerpc64le-gnu@4.45.0":
version "4.44.1" version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.44.1.tgz#8cf843cb7ab1d42e1dda680937cf0a2db6d59047" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.45.0.tgz#1de2f926bddbf7d689a089277c1284ea6df4b6d1"
integrity sha512-Rl3JKaRu0LHIx7ExBAAnf0JcOQetQffaw34T8vLlg9b1IhzcBgaIdnvEbbsZq9uZp3uAH+JkHd20Nwn0h9zPjA== integrity sha512-sB8+pfkYx2kvpDCfd63d5ScYT0Fz1LO6jIb2zLZvmK9ob2D8DeVqrmBDE0iDK8KlBVmsTNzrjr3G1xV4eUZhSw==
"@rollup/rollup-linux-riscv64-gnu@4.44.1": "@rollup/rollup-linux-riscv64-gnu@4.45.0":
version "4.44.1" version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.44.1.tgz#287c085472976c8711f16700326f736a527f2f38" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.45.0.tgz#28dbac643244e477a7b931feb9b475aa826f84c1"
integrity sha512-j5akelU3snyL6K3N/iX7otLBIl347fGwmd95U5gS/7z6T4ftK288jKq3A5lcFKcx7wwzb5rgNvAg3ZbV4BqUSw== integrity sha512-5GQ6PFhh7E6jQm70p1aW05G2cap5zMOvO0se5JMecHeAdj5ZhWEHbJ4hiKpfi1nnnEdTauDXxPgXae/mqjow9w==
"@rollup/rollup-linux-riscv64-musl@4.44.1": "@rollup/rollup-linux-riscv64-musl@4.45.0":
version "4.44.1" version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.44.1.tgz#095ad5e53a54ba475979f1b3226b92440c95c892" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.45.0.tgz#5d05eeaedadec3625cd50e3ca5d35ef6f96a4bf0"
integrity sha512-ppn5llVGgrZw7yxbIm8TTvtj1EoPgYUAbfw0uDjIOzzoqlZlZrLJ/KuiE7uf5EpTpCTrNt1EdtzF0naMm0wGYg== integrity sha512-N/euLsBd1rekWcuduakTo/dJw6U6sBP3eUq+RXM9RNfPuWTvG2w/WObDkIvJ2KChy6oxZmOSC08Ak2OJA0UiAA==
"@rollup/rollup-linux-s390x-gnu@4.44.1": "@rollup/rollup-linux-s390x-gnu@4.45.0":
version "4.44.1" version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.44.1.tgz#a3dec8281d8f2aef1703e48ebc65d29fe847933c" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.45.0.tgz#55b0790f499fb7adc14eb074c4e46aef92915813"
integrity sha512-Hu6hEdix0oxtUma99jSP7xbvjkUM/ycke/AQQ4EC5g7jNRLLIwjcNwaUy95ZKBJJwg1ZowsclNnjYqzN4zwkAw== integrity sha512-2l9sA7d7QdikL0xQwNMO3xURBUNEWyHVHfAsHsUdq+E/pgLTUcCE+gih5PCdmyHmfTDeXUWVhqL0WZzg0nua3g==
"@rollup/rollup-linux-x64-gnu@4.44.1": "@rollup/rollup-linux-x64-gnu@4.45.0":
version "4.44.1" version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.1.tgz#4b211e6fd57edd6a134740f4f8e8ea61972ff2c5" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.45.0.tgz#e822632fe5b324b16bdc37149149c8c760b031fd"
integrity sha512-EtnsrmZGomz9WxK1bR5079zee3+7a+AdFlghyd6VbAjgRJDbTANJ9dcPIPAi76uG05micpEL+gPGmAKYTschQw== integrity sha512-XZdD3fEEQcwG2KrJDdEQu7NrHonPxxaV0/w2HpvINBdcqebz1aL+0vM2WFJq4DeiAVT6F5SUQas65HY5JDqoPw==
"@rollup/rollup-linux-x64-musl@4.44.1": "@rollup/rollup-linux-x64-musl@4.45.0":
version "4.44.1" version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.1.tgz#3ecbf8e21b4157e57bb15dc6837b6db851f9a336" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.45.0.tgz#19a3602cb8fabd7eb3087f0a1e1e01adac31bbff"
integrity sha512-iAS4p+J1az6Usn0f8xhgL4PaU878KEtutP4hqw52I4IO6AGoyOkHCxcc4bqufv1tQLdDWFx8lR9YlwxKuv3/3g== integrity sha512-7ayfgvtmmWgKWBkCGg5+xTQ0r5V1owVm67zTrsEY1008L5ro7mCyGYORomARt/OquB9KY7LpxVBZes+oSniAAQ==
"@rollup/rollup-win32-arm64-msvc@4.44.1": "@rollup/rollup-win32-arm64-msvc@4.45.0":
version "4.44.1" version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.1.tgz#d4aae38465b2ad200557b53c8c817266a3ddbfd0" resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.45.0.tgz#42e08bf3ea4fc463fc9f199c4f0310a736f03eb1"
integrity sha512-NtSJVKcXwcqozOl+FwI41OH3OApDyLk3kqTJgx8+gp6On9ZEt5mYhIsKNPGuaZr3p9T6NWPKGU/03Vw4CNU9qg== integrity sha512-B+IJgcBnE2bm93jEW5kHisqvPITs4ddLOROAcOc/diBgrEiQJJ6Qcjby75rFSmH5eMGrqJryUgJDhrfj942apQ==
"@rollup/rollup-win32-ia32-msvc@4.44.1": "@rollup/rollup-win32-ia32-msvc@4.45.0":
version "4.44.1" version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.44.1.tgz#0258e8ca052abd48b23fd6113360fa0cd1ec3e23" resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.45.0.tgz#043d25557f59d7e28dfe38ee1f60ddcb95a08124"
integrity sha512-JYA3qvCOLXSsnTR3oiyGws1Dm0YTuxAAeaYGVlGpUsHqloPcFjPg+X0Fj2qODGLNwQOAcCiQmHub/V007kiH5A== integrity sha512-+CXwwG66g0/FpWOnP/v1HnrGVSOygK/osUbu3wPRy8ECXjoYKjRAyfxYpDQOfghC5qPJYLPH0oN4MCOjwgdMug==
"@rollup/rollup-win32-x64-msvc@4.44.1": "@rollup/rollup-win32-x64-msvc@4.45.0":
version "4.44.1" version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.1.tgz#1c982f6a5044ffc2a35cd754a0951bdcb44d5ba0" resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.45.0.tgz#0a7eecae41f463d6591c8fecd7a5c5087345ee36"
integrity sha512-J8o22LuF0kTe7m+8PvW9wk3/bRq5+mRo5Dqo6+vXb7otCm3TPhYOJqOaQtGU9YMWQSL3krMnoOxMr0+9E6F3Ug== integrity sha512-SRf1cytG7wqcHVLrBc9VtPK4pU5wxiB/lNIkNmW2ApKXIg+RpqwHfsaEK+e7eH4A1BpI6BX/aBWXxZCIrJg3uA==
"@socket.io/component-emitter@~3.1.0": "@socket.io/component-emitter@~3.1.0":
version "3.1.2" version "3.1.2"
@@ -764,191 +774,191 @@
dependencies: dependencies:
"@tanstack/virtual-core" "3.13.12" "@tanstack/virtual-core" "3.13.12"
"@tiptap/core@^2.11.7", "@tiptap/core@^2.24.0": "@tiptap/core@^2.11.7", "@tiptap/core@^2.26.1":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.24.0.tgz#aee1f945a2a60f90849a2c2c0912cb4e115deb6b" resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.26.1.tgz#8f97c223629972221d4175e4779f6ee955c41a37"
integrity sha512-DDFd4jKN2xx7i7GL7FYVweQudXGhHDPErjnKNwaEh0togBVQtvNcGQGV0pW31oTUItzc29DgvEGjyb5z9zOZUQ== integrity sha512-fymyd/XZvYiHjBoLt1gxs024xP/LY26d43R1vluYq7AHBL/7DE3ywzy+1GEsGyAv5Je2L0KBhNIR/izbq3Kaqg==
"@tiptap/extension-blockquote@^2.24.0": "@tiptap/extension-blockquote@^2.26.1":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-blockquote/-/extension-blockquote-2.24.0.tgz#4d28aa0ae55172dfb1e60b553217540d8be5384b" resolved "https://registry.yarnpkg.com/@tiptap/extension-blockquote/-/extension-blockquote-2.26.1.tgz#8ad2b3c119ff22430432ef46c852c135c156d63b"
integrity sha512-UNa1y1zFTmE2SSQ/3C0CDLUOnJZzGWH0rlOg0CIYA2FQlVg/Sl6L4hxXFLcp2m2E4ixCMTDXBvxKVxpmpvu0UQ== integrity sha512-viQ6AHRhjCYYipKK6ZepBzwZpkuMvO9yhRHeUZDvlSOAh8rvsUTSre0y74nu8QRYUt4a44lJJ6BpphJK7bEgYA==
"@tiptap/extension-bold@^2.24.0": "@tiptap/extension-bold@^2.26.1":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.24.0.tgz#94d1726e547734fc727651bd2cf66c6bc10bf2fc" resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.26.1.tgz#1218b847d360d69b6fc9e30596991bc53bc8fb98"
integrity sha512-TZT9jZeJuhmVhylO8t5QFbqfgS0yK6d/Tx08UMB7QuGIcNQ83p/Ep2kGOx1N1KnrUKdKBRXTtOgVKSbVXDyLvQ== integrity sha512-zCce9PRuTNhadFir71luLo99HERDpGJ0EEflGm7RN8I1SnNi9gD5ooK42BOIQtejGCJqg3hTPZiYDJC2hXvckQ==
"@tiptap/extension-bubble-menu@^2.24.0": "@tiptap/extension-bubble-menu@^2.26.1":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.24.0.tgz#dfcb476833f49771f70196bb6837e955615d7867" resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.26.1.tgz#7d78abb95bfc96468b40819ec00e2770ddcf63ad"
integrity sha512-/YEayojvKC4571g/eQTkqJiXHlTpL3mRmg7E0ulnW8TuEVDbc+V64nit4xI4fgTUR5NppPEoSzVuy2XHORg6rg== integrity sha512-oHevUcZbTMFOTpdCEo4YEDe044MB4P1ZrWyML8CGe5tnnKdlI9BN03AXpI1mEEa5CA3H1/eEckXx8EiCgYwQ3Q==
dependencies: dependencies:
tippy.js "^6.3.7" tippy.js "^6.3.7"
"@tiptap/extension-bullet-list@^2.24.0": "@tiptap/extension-bullet-list@^2.26.1":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.24.0.tgz#1c5e0e8ef6f9d55771ffa7b4254a19bd65ef3b92" resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.26.1.tgz#b92170ca5d0b3404599799277fd73a124e81d093"
integrity sha512-p67EoSsvhys3D0a5jjnorEapV71nX6ZkhsNfrqsio3h3cc1YONA47wbx8bCnahMR8BtczzUNhdRHM5LHLjzPTA== integrity sha512-HHakuV4ckYCDOnBbne088FvCEP4YICw+wgPBz/V2dfpiFYQ4WzT0LPK9s7OFMCN+ROraoug+1ryN1Z1KdIgujQ==
"@tiptap/extension-code-block-lowlight@^2.11.5": "@tiptap/extension-code-block-lowlight@^2.11.5":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block-lowlight/-/extension-code-block-lowlight-2.24.0.tgz#d88db01836d485f02bd62f68853142bb37339ecf" resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block-lowlight/-/extension-code-block-lowlight-2.26.1.tgz#42033f833906de3cf66263598dc4cad70fe3651d"
integrity sha512-NXE6DG3uLdkchIJlnQGp45FNvaEJhE5CM9fgJ/4ylDgd9S2aXXP6BVPjti35L2DszNui+QeHa75ZjcBAQyG4YQ== integrity sha512-yptuTPYAzVMKHUTwNKYveuu0rYHYyFknPz3O2++PWeeBGxkNB+T6LhwZ/JhXceHcZxzlGyka9r2mXR7pslhugw==
"@tiptap/extension-code-block@^2.11.9", "@tiptap/extension-code-block@^2.24.0": "@tiptap/extension-code-block@^2.11.9", "@tiptap/extension-code-block@^2.26.1":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block/-/extension-code-block-2.24.0.tgz#bf8c6c21bad2e64134e0ecca9553984643f46e3f" resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block/-/extension-code-block-2.26.1.tgz#dd6f9ec59440844f8e0ab0b33a75ff8ab6b6669f"
integrity sha512-1k2WhFpxd1Q/zGSYZn7YRhBAMLK3jAafIp0Rkf2iHs0vqbL+iHtrWAu5DFaWfNisTF7PrYXhjyIK9+UTQXCuaw== integrity sha512-/TDDOwONl0qEUc4+B6V9NnWtSjz95eg7/8uCb8Y8iRbGvI9vT4/znRKofFxstvKmW4URu/H74/g0ywV57h0B+A==
"@tiptap/extension-code@^2.24.0": "@tiptap/extension-code@^2.26.1":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-code/-/extension-code-2.24.0.tgz#b71a934110120987813cd445633960e3cc1ab883" resolved "https://registry.yarnpkg.com/@tiptap/extension-code/-/extension-code-2.26.1.tgz#ed289955423da20faa6ef4c81472835ac5fe1574"
integrity sha512-2pYGdTSyzjJrxsMNGpm8+E+Z60iMdUn4AYhrTfSHKObvZbGEhqWpxBRIUjL6xulSjYxmXzQFrYzh0BWYuXYPeA== integrity sha512-GU9deB1A/Tr4FMPu71CvlcjGKwRhGYz60wQ8m4aM+ELZcVIcZRa1ebR8bExRIEWnvRztQuyRiCQzw2N0xQJ1QQ==
"@tiptap/extension-color@^2.0.3": "@tiptap/extension-color@^2.0.3":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-color/-/extension-color-2.24.0.tgz#a643a4dea7532a3bcc261465c8737f00d7ed29c6" resolved "https://registry.yarnpkg.com/@tiptap/extension-color/-/extension-color-2.26.1.tgz#075386150a4457d03c85371a88205c838fc2bfae"
integrity sha512-I10tkIw0a4jD6Yu2AvUKZaPQVY83fx+DnC+Hd+eeQdT5JQy3c0K43N9HnPIPbtnpKFiJgOIJZhMy3LUXDPWSaA== integrity sha512-lsPw3qpQNes1rHpxBtsV9XniN1dEjYd2nVTpQHGE4XLNwfE5+ejm6ySs8qVLM7+EXWcjANLLh4UA3zqkX6t6HA==
"@tiptap/extension-document@^2.24.0": "@tiptap/extension-document@^2.26.1":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-2.24.0.tgz#1c7e6d838b35ed5bad0ecd12712d7a0fa86f8378" resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-2.26.1.tgz#3e65e4833fee138e5afaed4be586d75db10cb8b6"
integrity sha512-KNcYFEwmbgtsP8lHAPGpzRpUsp0sWDxsUW6vrozR+OSjOogx96OKz22NvJEgUQrVekjM6tKFp81vuIKWDo0EsA== integrity sha512-2P2IZp1NRAE+21mRuFBiP3X2WKfZ6kUC23NJKpn8bcOamY3obYqCt0ltGPhE4eR8n8QAl2fI/3jIgjR07dC8ow==
"@tiptap/extension-dropcursor@^2.24.0": "@tiptap/extension-dropcursor@^2.26.1":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.24.0.tgz#9886f1d46a0dbdd518949373cdcfe10dff2c852b" resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.26.1.tgz#2eff232f3ab50816ba7182275f84f475a88b4443"
integrity sha512-Oi3aNppt23U2POjowV6/6XtQG9LrMFqqun8LAAx3DItgkK3eqaEH5C39kZ75XpWpbPcZ7G+0+1qNOqU1ZyOFgg== integrity sha512-JkDQU2ZYFOuT5mNYb8OiWGwD1HcjbtmX8tLNugQbToECmz9WvVPqJmn7V/q8VGpP81iEECz/IsyRmuf2kSD4uA==
"@tiptap/extension-floating-menu@^2.24.0": "@tiptap/extension-floating-menu@^2.26.1":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.24.0.tgz#87279b3e2356ed5f41878a73c74f92f0e68e435b" resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.26.1.tgz#4be572fa98f356d44b1817cff5cd0db819f45c01"
integrity sha512-08T7cA6ILk9byvI0IMHv7MgINNx4fMUjn+1h4mX7k06rUR9P3nXEVQDQWcRZdqQ9orMdL44NtW8e+hGBZRHDQA== integrity sha512-OJF+H6qhQogVTMedAGSWuoL1RPe3LZYXONuFCVyzHnvvMpK+BP1vm180E2zDNFnn/DVA+FOrzNGpZW7YjoFH1w==
dependencies: dependencies:
tippy.js "^6.3.7" tippy.js "^6.3.7"
"@tiptap/extension-gapcursor@^2.24.0": "@tiptap/extension-gapcursor@^2.26.1":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-gapcursor/-/extension-gapcursor-2.24.0.tgz#7d28bdd9f8485a6fe10507795c95de549a95ae99" resolved "https://registry.yarnpkg.com/@tiptap/extension-gapcursor/-/extension-gapcursor-2.26.1.tgz#7a5ebd84d4495aa8403ececd1ace51d3ba9ab139"
integrity sha512-CG406JTLBFGyEQHKIygqIHtNrXz4TGy8bdlTDPihPrcstJMHC1oxE3TSYS34A73l0n0JvQCYioxppxIJLbGFVg== integrity sha512-KOiMZc3PwJS3hR0nSq5d0TJi2jkNZkLZElcT6pCEnhRHzPH6dRMu9GM5Jj798ZRUy0T9UFcKJalFZaDxnmRnpg==
"@tiptap/extension-hard-break@^2.24.0": "@tiptap/extension-hard-break@^2.26.1":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-hard-break/-/extension-hard-break-2.24.0.tgz#a714ffd2a7565f4eb98186535463a6cbbaecae0d" resolved "https://registry.yarnpkg.com/@tiptap/extension-hard-break/-/extension-hard-break-2.26.1.tgz#70226e2b63e2252a74f6e59b5c001a4c02e0c1e5"
integrity sha512-Zh7ML2kHpKNrDdu+NLqra6gQQyNspRz4vSAR28x9q31MatuWExM9RWocwDrLOe88AuYqOu5gDyMVZTi8ikVd9A== integrity sha512-d6uStdNKi8kjPlHAyO59M6KGWATNwhLCD7dng0NXfwGndc22fthzIk/6j9F6ltQx30huy5qQram6j3JXwNACoA==
"@tiptap/extension-heading@^2.12.0", "@tiptap/extension-heading@^2.24.0": "@tiptap/extension-heading@^2.12.0", "@tiptap/extension-heading@^2.26.1":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.24.0.tgz#e16eded5fa34bd20771ed1788ed46c01fd68c363" resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.26.1.tgz#49d1e8f2d10eb1c06bf348d7cb9d131097d65f78"
integrity sha512-qfrcn6QlOFxd0T4VMDloxzv7YUlOX5Cc/S60+7aRLUNMrByQyk+C1OwSdX3Wx6fYWhCszzFblTGTCWu5QijK/w== integrity sha512-KSzL8WZV3pjJG9ke4RaU70+B5UlYR2S6olNt5UCAawM+fi11mobVztiBoC19xtpSVqIXC1AmXOqUgnuSvmE4ZA==
"@tiptap/extension-highlight@^2.0.3": "@tiptap/extension-highlight@^2.0.3":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-highlight/-/extension-highlight-2.24.0.tgz#9bc3a7f0ffe99cb5d8f37ba49ead62d3932b2f7e" resolved "https://registry.yarnpkg.com/@tiptap/extension-highlight/-/extension-highlight-2.26.1.tgz#9c5aca076d146332930882c0fad7cbe47026c681"
integrity sha512-xRPcZR7ebHODvQobYJI5FDOd6UGguTHK7ez/wM7lKuVj5+VhmM/r5OBM68QZrZol5lYHcamfaIx4hmydCt4ecw== integrity sha512-9eW2UqDqeAKSDIiL6SqcPSDCQAdU5qQmRMsJlShOM7Fu1aU71b1ewhUP9YioUCanciR99tqNsk/n3LAe0w5XdA==
"@tiptap/extension-history@^2.24.0": "@tiptap/extension-history@^2.26.1":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-history/-/extension-history-2.24.0.tgz#2de5390fd2609b8e308198b3e5ba0642b9fbfdf0" resolved "https://registry.yarnpkg.com/@tiptap/extension-history/-/extension-history-2.26.1.tgz#de8e8a5ebf08cbbccb6dec11291128843a2d24e6"
integrity sha512-0FVeCm1O+W6PUFrcaHZ8wposZwSyrCOOPT894Mpam1hGdFr2V0RdqkgRYC94SSmZrkrDFJRklSVcpacjGFT6ig== integrity sha512-m6YR1gkkauIDo3PRl0gP+7Oc4n5OqDzcjVh6LvWREmZP8nmi94hfseYbqOXUb6RPHIc0JKF02eiRifT4MSd2nw==
"@tiptap/extension-horizontal-rule@^2.24.0": "@tiptap/extension-horizontal-rule@^2.26.1":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.24.0.tgz#b7ac8914c8bf044ec43e9a94a3378c239b84d345" resolved "https://registry.yarnpkg.com/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.26.1.tgz#5c0c635d4444f38cb70e721d06fbe2d47a79982c"
integrity sha512-RGEAHTALSvN+m0zqtj+kdECJJs4F9O146fDgLXBvEFPqSyGd5fku1dM5r2LK4ECastir+N5Y+5Nas0ZXSoozIw== integrity sha512-mT6baqOhs/NakgrAeDeed194E/ZJFGL692H0C7f1N7WDRaWxUu2oR0LrnRqSH5OyPjELkzu6nQnNy0+0tFGHHg==
"@tiptap/extension-image@^2.0.3": "@tiptap/extension-image@^2.0.3":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-image/-/extension-image-2.24.0.tgz#eb75c849ba98f132d1b82e5bfe380a5c98bb06ba" resolved "https://registry.yarnpkg.com/@tiptap/extension-image/-/extension-image-2.26.1.tgz#1b71633f31a7c53c4570f94e1068ceb46fe93224"
integrity sha512-kcuPkCJBk+X7rAtdsQ2JVjCUhEZToOIQ54l7jBta4wsyZVKW3HNN3gGxikfF/8jnn8uZNuXCp0cN6wtmbccVOA== integrity sha512-96+MaYBJebQlR/ik5W72GLUfXdEoxFs+6jsoERxbM5qEdhb7TEnodBFtWZOwgDO27kFd6rSNZuW9r5KJNtljEg==
"@tiptap/extension-italic@^2.24.0": "@tiptap/extension-italic@^2.26.1":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-italic/-/extension-italic-2.24.0.tgz#ce928b98d45e1db26e45fe3c20256079a081175e" resolved "https://registry.yarnpkg.com/@tiptap/extension-italic/-/extension-italic-2.26.1.tgz#cd798d5e410d112f70aaea2c7eb30716f4a483c6"
integrity sha512-IW8TxvGTdi3FPDAdVkJCdMXUwwIagjrZO0qz0eTnM6nSX9hHXYrMQ3LyKHaXD5HTRBMLIqaokk8wQPkIMX4ruA== integrity sha512-pOs6oU4LyGO89IrYE4jbE8ZYsPwMMIiKkYfXcfeD9NtpGNBnjeVXXF5I9ndY2ANrCAgC8k58C3/powDRf0T2yA==
"@tiptap/extension-link@^2.0.3": "@tiptap/extension-link@^2.0.3":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-link/-/extension-link-2.24.0.tgz#9f46589919c53fdff9c6405bfabdeff4dffa87c8" resolved "https://registry.yarnpkg.com/@tiptap/extension-link/-/extension-link-2.26.1.tgz#8e479556b08aa42e2ac9369d45c30c281051a45a"
integrity sha512-J8kQI7xfT0Qaki1DeFhvZD1hWxkXmNmVzGRRz9ComrqIevaoXvZjI9aXyK2NkqjJB2xUxxu9JgcJIxUXbbBzfw== integrity sha512-7yfum5Jymkue/uOSTQPt2SmkZIdZx7t3QhZLqBU7R9ettkdSCBgEGok6N+scJM1R1Zes+maSckLm0JZw5BKYNA==
dependencies: dependencies:
linkifyjs "^4.2.0" linkifyjs "^4.2.0"
"@tiptap/extension-list-item@^2.24.0": "@tiptap/extension-list-item@^2.26.1":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-list-item/-/extension-list-item-2.24.0.tgz#93ca5a22160d94f7cda38e4a7f04e1eaeef4d245" resolved "https://registry.yarnpkg.com/@tiptap/extension-list-item/-/extension-list-item-2.26.1.tgz#932e041245d3a696c943e9d4a32cdf59cb386e88"
integrity sha512-ZS5I53ii7jgWPI9tCZG5p1z9LVYlt0wZ5f45epXQpcG0/P2HYscNCR7aJs/OmdOOjU/7bdpIqKR0BL7IlQca9Q== integrity sha512-quOXckC73Luc3x+Dcm88YAEBW+Crh3x5uvtQOQtn2GEG91AshrvbnhGRiYnfvEN7UhWIS+FYI5liHFcRKSUKrQ==
"@tiptap/extension-mention@^2.0.3": "@tiptap/extension-mention@^2.0.3":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-mention/-/extension-mention-2.24.0.tgz#1d0bcc2521012cc5c55d7e6efadb4b600c9bfcb3" resolved "https://registry.yarnpkg.com/@tiptap/extension-mention/-/extension-mention-2.26.1.tgz#f61a77f8b3dd99b12b9aac0a9ee8041f098b3986"
integrity sha512-532rfuN2fCnI4pWUTD94jBxzSF5TT61Afvq+ar5OKwcANf3G+PZm07ejUbVbHw+g/lKiEZLNLQbg07gIAAXpnA== integrity sha512-sBrlJ9nWjFx7oWCtt0hV192FgCBXva1zwImWbgXTCGPAjv0d5EoPymIfRgoeanAmuQjOHoKzzZnJ6bELTZhkGw==
"@tiptap/extension-ordered-list@^2.24.0": "@tiptap/extension-ordered-list@^2.26.1":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-ordered-list/-/extension-ordered-list-2.24.0.tgz#8048418afdd48a4a1d4ece887fb1783fd2efdaf0" resolved "https://registry.yarnpkg.com/@tiptap/extension-ordered-list/-/extension-ordered-list-2.26.1.tgz#81e60f4b679533b736ef0fbad4263a11e1c8465e"
integrity sha512-YxHDlkCI09Rb23weDEwmwLzXLhL30EW73brjHmFod9MCpDwDSkRWztsJRa6pVxcl0paiX7ftrM07ChbIgn84lw== integrity sha512-UHKNRxq6TBnXMGFSq91knD6QaHsyyOwLOsXMzupmKM5Su0s+CRXEjfav3qKlbb9e4m7D7S/a0aPm8nC9KIXNhQ==
"@tiptap/extension-paragraph@^2.24.0": "@tiptap/extension-paragraph@^2.26.1":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-2.24.0.tgz#700af9e50f3bf01abba10461cebeecb5bc301440" resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-2.26.1.tgz#2e25f9e72fd5b4b34ca8e9e3c355303d86eae055"
integrity sha512-es4HPZSlQneZOoZTE9aIXC7uWIZwkBh6EyC+dur7H23vtz3xECWW6/v1jJxhVZS+dVwuNaA04QGqsLeyRf1lnQ== integrity sha512-UezvM9VDRAVJlX1tykgHWSD1g3MKfVMWWZ+Tg+PE4+kizOwoYkRWznVPgCAxjmyHajxpCKRXgqTZkOxjJ9Kjzg==
"@tiptap/extension-placeholder@^2.0.3": "@tiptap/extension-placeholder@^2.0.3":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-placeholder/-/extension-placeholder-2.24.0.tgz#0cd238de49114dc4c04032ad72d3bdcdd0338342" resolved "https://registry.yarnpkg.com/@tiptap/extension-placeholder/-/extension-placeholder-2.26.1.tgz#a44280063978dfa86aad71dee6cad36c3a7862a0"
integrity sha512-/rfirea9xHh5d/uYSPFOzx/o909XrBNpunt3sYZNi4RWf/+79QEW54/O1cGLj/l8uhms3gL/Bn+Ksv5mvdSJlg== integrity sha512-MBlqbkd+63btY7Qu+SqrXvWjPwooGZDsLTtl7jp52BczBl61cq9yygglt9XpM11TFMBdySgdLHBrLtQ0B7fBlw==
"@tiptap/extension-strike@^2.24.0": "@tiptap/extension-strike@^2.26.1":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-strike/-/extension-strike-2.24.0.tgz#4a8e19ea1a23690a76b8620e9c46156c0d900cf0" resolved "https://registry.yarnpkg.com/@tiptap/extension-strike/-/extension-strike-2.26.1.tgz#d703acfa78455021082ccbac72b41ee9ab3f8c9b"
integrity sha512-nAhoy0korH+Vn0yOAdcKNJoDPzMAsyA7EgZYLQFCdWMnNBU6dTHJmRm6BI0Vhj3tqdXcnlavtPApBflW0eje3A== integrity sha512-CkoRH+pAi6MgdCh7K0cVZl4N2uR4pZdabXAnFSoLZRSg6imLvEUmWHfSi1dl3Z7JOvd3a4yZ4NxerQn5MWbJ7g==
"@tiptap/extension-table-cell@^2.0.3": "@tiptap/extension-table-cell@^2.0.3":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-table-cell/-/extension-table-cell-2.24.0.tgz#1a4425252597c9cad62349f87760dc054229c146" resolved "https://registry.yarnpkg.com/@tiptap/extension-table-cell/-/extension-table-cell-2.26.1.tgz#c204e9eef60f77063fc432faba4dd2ef2fe79ba3"
integrity sha512-RvHCKTqUzjeqOmqVqp9bdraQfGsDHGSazEgWdknsFi/0LGhkKSX9lsaqlUHQoSf1DRVNx4sq0B2qjrlyL9tB9w== integrity sha512-0P5zY+WGFnULggJkX6+CevmFoBmVv1aUiBBXfcFuLG2mnUsS3QALQTowFtz/0/VbtbjzcOSStaGDHRJxPbk9XQ==
"@tiptap/extension-table-header@^2.0.3": "@tiptap/extension-table-header@^2.0.3":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-table-header/-/extension-table-header-2.24.0.tgz#ddd5066b30f5fa0d7d76c97dde12387ed1db6137" resolved "https://registry.yarnpkg.com/@tiptap/extension-table-header/-/extension-table-header-2.26.1.tgz#1d9f2d609777201725ccd5850445d5e277a427fc"
integrity sha512-tI5m29locqOYN7w9XH96Zq9/O9jrp+PY0RurnSYotUErLvgnWMI++Fbm4aLpxA/wFqdMEZR3lrxR9zddli52Ew== integrity sha512-SAwTW9H+sjVYjoeU5z8pVDMHn3r3FCi+zp2KAxsEsmujcd7qrQdY0cAjQtWjckCq6H3sQkbICa+xlCCd7C8ZAQ==
"@tiptap/extension-table-row@^2.0.3": "@tiptap/extension-table-row@^2.0.3":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-table-row/-/extension-table-row-2.24.0.tgz#f8174465433631d0e492a6ecd548b139275bee08" resolved "https://registry.yarnpkg.com/@tiptap/extension-table-row/-/extension-table-row-2.26.1.tgz#40c85b430b18b89363cb59459f1992ecdac93fcd"
integrity sha512-ERKnkoZLWmGYWTCV8EqH8zGTvxp+aj/ojyQVdaP5Em59+D0dDenKwe58Dp046zeXejele0awIVqOulOfyon6hQ== integrity sha512-c4oLrUfj1EVVDpbfKX36v7nnaeI4NxML2KRTQXocvcY65VCe0bPQh8ujpPgPcnKEzdWYdIuAX9RbEAkiYWe8Ww==
"@tiptap/extension-table@^2.0.3": "@tiptap/extension-table@^2.0.3":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-table/-/extension-table-2.24.0.tgz#da3157cb9f2387ea40d8c44aabde31910b7e407a" resolved "https://registry.yarnpkg.com/@tiptap/extension-table/-/extension-table-2.26.1.tgz#26d45cd3f68def655c51c8ccbc6a3af507bdf49c"
integrity sha512-Ris3kuqUAsAkw8zqjUO8rMgDFFon3qVuXeHGJqNK3A2rEJzjM1DqgnqjL0Y06Gl7tbcOiVVrrzvHfELZ5Froiw== integrity sha512-LQ63CK53qx2ZsbLTB4mUX0YCoGC0GbYQ82jS3kD+K7M/mb9MCkefvDk6rA8rXF8TjfGnv6o/Fseoot8uhH3qfg==
"@tiptap/extension-text-align@^2.0.3": "@tiptap/extension-text-align@^2.0.3":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-text-align/-/extension-text-align-2.24.0.tgz#d808535fdc32c87e0a9dd434ba591af65a03cda6" resolved "https://registry.yarnpkg.com/@tiptap/extension-text-align/-/extension-text-align-2.26.1.tgz#79add5084d2b9ff1c347686834f924613d6c98cb"
integrity sha512-EnSB2437YITtZ4rNZfXxkPsLHysTa6gCLxIkP3B9GM0bPE/tqeY8n6M/Pt+9Ppqh+lDyU6jeywCu9vBvWLnVkg== integrity sha512-x6mpNGELy2QtSPBoQqNgiXO9PjZoB+O2EAfXA9YRiBDSIRNOrw+7vOVpi+IgzswFmhMNgIYUVfQRud4FHUCNew==
"@tiptap/extension-text-style@^2.0.3", "@tiptap/extension-text-style@^2.24.0": "@tiptap/extension-text-style@^2.0.3", "@tiptap/extension-text-style@^2.26.1":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-text-style/-/extension-text-style-2.24.0.tgz#f5b498d2267a3a88fe40a4d26ec60b343fb2c453" resolved "https://registry.yarnpkg.com/@tiptap/extension-text-style/-/extension-text-style-2.26.1.tgz#a6be329ff881df9da37d9a8c353b2b2e7b8508b3"
integrity sha512-SLMDatlJg421SLNGn4768WKXmTXWIiVCX2DWzzD+9XeoTFC2d6io1pveanQVsp3xVoUZtG9fi5uss0b9AWu6+w== integrity sha512-t9Nc/UkrbCfnSHEUi1gvUQ2ZPzvfdYFT5TExoV2DTiUCkhG6+mecT5bTVFGW3QkPmbToL+nFhGn4ZRMDD0SP3Q==
"@tiptap/extension-text@^2.24.0": "@tiptap/extension-text@^2.26.1":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-text/-/extension-text-2.24.0.tgz#d5b6b50a9f5154d746062b21d7f807a4fbf4a6e2" resolved "https://registry.yarnpkg.com/@tiptap/extension-text/-/extension-text-2.26.1.tgz#a51a11aa446d32b136851ce5173c89ad5ff0f57a"
integrity sha512-GYZmZ5nOlNFIvJZWzjm0SwqwppqWUG65lPp3j7AI9QEGmxGXUmCywTx06FH2/mYkzRaZ2eKhftfsSY1dEMM9yQ== integrity sha512-p2n8WVMd/2vckdJlol24acaTDIZAhI7qle5cM75bn01sOEZoFlSw6SwINOULrUCzNJsYb43qrLEibZb4j2LeQw==
"@tiptap/extension-typography@^2.0.3": "@tiptap/extension-typography@^2.0.3":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-typography/-/extension-typography-2.24.0.tgz#f9a65d41fe6cc0693ef3d3e812602d68a88c6405" resolved "https://registry.yarnpkg.com/@tiptap/extension-typography/-/extension-typography-2.26.1.tgz#06ce74c0f3a5cf0a4b5ed3f8e1c00098a6d8dca1"
integrity sha512-r/Wm260Vcep/U3t3qiB2t5J/D6JrvXtzvbyEzLSPWA/gaA8q0UrSCWV8qGoSccPOlO+8BcFsAY7+dCcE1SApKQ== integrity sha512-1zwKWfy7Tjutert1Vn/unN+98E0JFr5C2jx1xuesAEf4X405cQMb/zNMI44ON3xBG+aXZoTRlJuXNoYodeVSAg==
"@tiptap/pm@^2.0.3", "@tiptap/pm@^2.24.0": "@tiptap/pm@^2.0.3", "@tiptap/pm@^2.26.1":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/pm/-/pm-2.24.0.tgz#414db0a5ab47d3e2decaa1a7dab6106b84e105a6" resolved "https://registry.yarnpkg.com/@tiptap/pm/-/pm-2.26.1.tgz#5e4bd79e60fe698fa12770b2845e5133b3333d06"
integrity sha512-rjvy3LmNweyDU/ttqQd+fi4A29KbcqNiQ/oWvzv7JNPS9bh4WmuSeWvlNfivo39hHXe46OQhzRVJrSAvyKp+wQ== integrity sha512-8aF+mY/vSHbGFqyG663ds84b+vca5Lge3tHdTMTKazxCnhXR9dn2oQJMnZ78YZvdRbkPkMJJHti9h3K7u2UQvw==
dependencies: dependencies:
prosemirror-changeset "^2.3.0" prosemirror-changeset "^2.3.0"
prosemirror-collab "^1.3.1" prosemirror-collab "^1.3.1"
@@ -970,44 +980,44 @@
prosemirror-view "^1.37.0" prosemirror-view "^1.37.0"
"@tiptap/starter-kit@^2.0.3": "@tiptap/starter-kit@^2.0.3":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/starter-kit/-/starter-kit-2.24.0.tgz#9a0cac55588baebe505e6b599bcb7d920cb8a3f6" resolved "https://registry.yarnpkg.com/@tiptap/starter-kit/-/starter-kit-2.26.1.tgz#00a19c05491a51423aabe511f624567942bd2baa"
integrity sha512-+JDcp/ao/oqWyVDVYCLXdx+3HjuL3Mh6uBXrfomj8z8XB+2vgigO9Plq1NG41Mfqk6QfzSRmjDB8yXhRVMF17Q== integrity sha512-oziMGCds8SVQ3s5dRpBxVdEKZAmO/O//BjZ69mhA3q4vJdR0rnfLb5fTxSeQvHiqB878HBNn76kNaJrHrV35GA==
dependencies: dependencies:
"@tiptap/core" "^2.24.0" "@tiptap/core" "^2.26.1"
"@tiptap/extension-blockquote" "^2.24.0" "@tiptap/extension-blockquote" "^2.26.1"
"@tiptap/extension-bold" "^2.24.0" "@tiptap/extension-bold" "^2.26.1"
"@tiptap/extension-bullet-list" "^2.24.0" "@tiptap/extension-bullet-list" "^2.26.1"
"@tiptap/extension-code" "^2.24.0" "@tiptap/extension-code" "^2.26.1"
"@tiptap/extension-code-block" "^2.24.0" "@tiptap/extension-code-block" "^2.26.1"
"@tiptap/extension-document" "^2.24.0" "@tiptap/extension-document" "^2.26.1"
"@tiptap/extension-dropcursor" "^2.24.0" "@tiptap/extension-dropcursor" "^2.26.1"
"@tiptap/extension-gapcursor" "^2.24.0" "@tiptap/extension-gapcursor" "^2.26.1"
"@tiptap/extension-hard-break" "^2.24.0" "@tiptap/extension-hard-break" "^2.26.1"
"@tiptap/extension-heading" "^2.24.0" "@tiptap/extension-heading" "^2.26.1"
"@tiptap/extension-history" "^2.24.0" "@tiptap/extension-history" "^2.26.1"
"@tiptap/extension-horizontal-rule" "^2.24.0" "@tiptap/extension-horizontal-rule" "^2.26.1"
"@tiptap/extension-italic" "^2.24.0" "@tiptap/extension-italic" "^2.26.1"
"@tiptap/extension-list-item" "^2.24.0" "@tiptap/extension-list-item" "^2.26.1"
"@tiptap/extension-ordered-list" "^2.24.0" "@tiptap/extension-ordered-list" "^2.26.1"
"@tiptap/extension-paragraph" "^2.24.0" "@tiptap/extension-paragraph" "^2.26.1"
"@tiptap/extension-strike" "^2.24.0" "@tiptap/extension-strike" "^2.26.1"
"@tiptap/extension-text" "^2.24.0" "@tiptap/extension-text" "^2.26.1"
"@tiptap/extension-text-style" "^2.24.0" "@tiptap/extension-text-style" "^2.26.1"
"@tiptap/pm" "^2.24.0" "@tiptap/pm" "^2.26.1"
"@tiptap/suggestion@^2.0.3": "@tiptap/suggestion@^2.0.3":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/suggestion/-/suggestion-2.24.0.tgz#c1c96c67c07ab37899960a13aa7c3fae82dd8e9b" resolved "https://registry.yarnpkg.com/@tiptap/suggestion/-/suggestion-2.26.1.tgz#64b567443668ff9afb5533737f877e3604ab53ae"
integrity sha512-N0i4DwhdgAj87PqwENwV6K1HBAJ/4DLC1YKCO/CGyiqztUzzxhjS0TU8rWCMZDNqFeSuOx8oFbA0xwrU1FTiFw== integrity sha512-iNWJdQN7h01keNoVwyCsdI7ZX11YkrexZjCnutWK17Dd72s3NYVTmQXu7saftwddT4nDdlczNxAFosrt0zMhcg==
"@tiptap/vue-3@^2.0.3": "@tiptap/vue-3@^2.0.3":
version "2.24.0" version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/vue-3/-/vue-3-2.24.0.tgz#98bae2f8338bbda86f25eec7458ba7878d7381b7" resolved "https://registry.yarnpkg.com/@tiptap/vue-3/-/vue-3-2.26.1.tgz#6afb7aa4abfdad7432ead271c3448d23f233296e"
integrity sha512-2TnwAeEQR+EeduQQP4emY8y89KRzHbBQ/M0lTcjUseeAozmo5vfSI5XfwHYoXHQoKWZOlhYshCRrY93tENJwQA== integrity sha512-GC0UP+v3KEb0nhgjIHYmWIn5ziTaRqSy8TESXOjG5aljJ8BdP+A0pbcpumB3u0QU+BLUANZqUV2r3l+V18AKYg==
dependencies: dependencies:
"@tiptap/extension-bubble-menu" "^2.24.0" "@tiptap/extension-bubble-menu" "^2.26.1"
"@tiptap/extension-floating-menu" "^2.24.0" "@tiptap/extension-floating-menu" "^2.26.1"
"@types/estree@1.0.8": "@types/estree@1.0.8":
version "1.0.8" version "1.0.8"
@@ -1059,6 +1069,20 @@
resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz#525433c784aed9b457aaa0ee3d92aeb71f346b63" resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz#525433c784aed9b457aaa0ee3d92aeb71f346b63"
integrity sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA== integrity sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==
"@vexip-ui/hooks@^2.8.0":
version "2.9.2"
resolved "https://registry.yarnpkg.com/@vexip-ui/hooks/-/hooks-2.9.2.tgz#3c6ba9670f1a4ac4211b05279e18657a3c1921ba"
integrity sha512-zdwcTZUHYD/5aqndmUulyia4tPMI3FB09PUn674hZiQlkslO1KiH56WAI8R75wbvzPSmmhl5IA3VcbBZeaFEcw==
dependencies:
"@floating-ui/dom" "^1.7.0"
"@juggle/resize-observer" "^3.4.0"
"@vexip-ui/utils" "2.16.4"
"@vexip-ui/utils@2.16.4", "@vexip-ui/utils@^2.16.1":
version "2.16.4"
resolved "https://registry.yarnpkg.com/@vexip-ui/utils/-/utils-2.16.4.tgz#3429376a8f9e88040e969c21f14e70fe25d36127"
integrity sha512-KX+Q4EsuwDp6ZlRJ7OAkiYxu52D5CVM8zpqQz/FXYV+JUtzl9T3dvxgtA8gQ0wm5Sh/xT6jp8Wo4X7tLAzRh/A==
"@vitejs/plugin-vue@^5.0.3": "@vitejs/plugin-vue@^5.0.3":
version "5.2.4" version "5.2.4"
resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz#9e8a512eb174bfc2a333ba959bbf9de428d89ad8" resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz#9e8a512eb174bfc2a333ba959bbf9de428d89ad8"
@@ -1207,9 +1231,9 @@
integrity sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA== integrity sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==
ace-builds@^1.36.2: ace-builds@^1.36.2:
version "1.43.1" version "1.43.2"
resolved "https://registry.yarnpkg.com/ace-builds/-/ace-builds-1.43.1.tgz#96e7431e2ca821563c32f361298c7f899b6c516f" resolved "https://registry.yarnpkg.com/ace-builds/-/ace-builds-1.43.2.tgz#86d7d2f40317a547b7dd13ae862821d6b1e63f3e"
integrity sha512-n9/n+zBhbbkEJjU0FJ4wWAZBDl5G8WYzg4+uIjSER/U3wSSSSVo52W4sco4Jryg11JAJvorExxMr3GDINqtjdA== integrity sha512-3wzJUJX0RpMc03jo0V8Q3bSb/cKPnS7Nqqw8fVHsCCHweKMiTIxT3fP46EhjmVy6MCuxwP801ere+RW245phGw==
acorn@^8.14.0, acorn@^8.14.1: acorn@^8.14.0, acorn@^8.14.1:
version "8.15.0" version "8.15.0"
@@ -1354,9 +1378,9 @@ camelcase-css@^2.0.1:
integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
caniuse-lite@^1.0.30001702, caniuse-lite@^1.0.30001726: caniuse-lite@^1.0.30001702, caniuse-lite@^1.0.30001726:
version "1.0.30001726" version "1.0.30001727"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001726.tgz#a15bd87d5a4bf01f6b6f70ae7c97fdfd28b5ae47" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz#22e9706422ad37aa50556af8c10e40e2d93a8b85"
integrity sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw== integrity sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==
chalk@^4.1.0: chalk@^4.1.0:
version "4.1.2" version "4.1.2"
@@ -1451,9 +1475,9 @@ confbox@^0.2.2:
integrity sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ== integrity sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==
core-js@^3.1.3, core-js@^3.26.1: core-js@^3.1.3, core-js@^3.26.1:
version "3.43.0" version "3.44.0"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.43.0.tgz#f7258b156523208167df35dea0cfd6b6ecd4ee88" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.44.0.tgz#db4fd4fa07933c1d6898c8b112a1119a9336e959"
integrity sha512-N6wEbTTZSYOY2rYAn85CuvWWkCK6QweMn7/4Nr3w+gDBeBhk/x4EJeY6FPo4QzDoJZxVTv8U7CMvgWk6pOHHqA== integrity sha512-aFCtd4l6GvAXwVEh3XbbVqJGHDJt0OZRa+5ePGx3LLwi12WfexqQxcsohb2wgsa/92xtl19Hd66G/L+TaAxDMw==
crelt@^1.0.0, crelt@^1.0.5, crelt@^1.0.6: crelt@^1.0.0, crelt@^1.0.5, crelt@^1.0.6:
version "1.0.6" version "1.0.6"
@@ -1558,9 +1582,9 @@ echarts@^5.6.0:
zrender "5.6.1" zrender "5.6.1"
electron-to-chromium@^1.5.173: electron-to-chromium@^1.5.173:
version "1.5.179" version "1.5.183"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.179.tgz#453d53f360014a2604d40ccd41c4ea0a6e31b99a" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.183.tgz#38c2e16910569b6c595bd16d1d39d1218bf0ffb6"
integrity sha512-UWKi/EbBopgfFsc5k61wFpV7WrnnSlSzW/e2XcBmS6qKYTivZlLtoll5/rdqRTxGglGHkmkW0j0pFNJG10EUIQ== integrity sha512-vCrDBYjQCAEefWGjlK3EpoSKfKbT10pR4XXPdn65q7snuNOZnthoVpBfZPykmDapOKfoD+MMIPG8ZjKyyc9oHA==
emoji-regex@^8.0.0: emoji-regex@^8.0.0:
version "8.0.0" version "8.0.0"
@@ -1698,10 +1722,10 @@ fraction.js@^4.3.7:
resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7"
integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==
frappe-ui@^0.1.163: frappe-ui@^0.1.172:
version "0.1.166" version "0.1.173"
resolved "https://registry.yarnpkg.com/frappe-ui/-/frappe-ui-0.1.166.tgz#2664d9373b4751a39144c283be67f219c5eb99e3" resolved "https://registry.yarnpkg.com/frappe-ui/-/frappe-ui-0.1.173.tgz#9d9bbfd841f776503a9e4d7614862cdaba6b5c4a"
integrity sha512-VSv2OE/JHa4ReOW0/9SafRzvQ6Dkxa1Bz6u58UU8FvagqpJVorQJlm2854LXuCk1IDV+uulPCr7uxiC8kwcjFw== integrity sha512-imzCgMnVuOu+kzJJr++A/LmyuTCxOQC9i4zqIW9RO9eyv9yVH3U9TNdOjUwLymhBuDP/9Jas4X1Gb3asrlkLtg==
dependencies: dependencies:
"@floating-ui/vue" "^1.1.6" "@floating-ui/vue" "^1.1.6"
"@headlessui/vue" "^1.7.14" "@headlessui/vue" "^1.7.14"
@@ -1734,6 +1758,7 @@ frappe-ui@^0.1.163:
dompurify "^3.2.6" dompurify "^3.2.6"
echarts "^5.6.0" echarts "^5.6.0"
feather-icons "^4.28.0" feather-icons "^4.28.0"
grid-layout-plus "^1.1.0"
highlight.js "^11.11.1" highlight.js "^11.11.1"
idb-keyval "^6.2.0" idb-keyval "^6.2.0"
lowlight "^3.3.0" lowlight "^3.3.0"
@@ -1793,6 +1818,15 @@ globals@^15.14.0:
resolved "https://registry.yarnpkg.com/globals/-/globals-15.15.0.tgz#7c4761299d41c32b075715a4ce1ede7897ff72a8" resolved "https://registry.yarnpkg.com/globals/-/globals-15.15.0.tgz#7c4761299d41c32b075715a4ce1ede7897ff72a8"
integrity sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg== integrity sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==
grid-layout-plus@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/grid-layout-plus/-/grid-layout-plus-1.1.0.tgz#4c6610ff3aa39ddea2953861c224d1914bf5a33d"
integrity sha512-Q5uj0U5nx6xfHg8G1CDRJAEg+/40RVJl5jjRImcRwC78BxoJrEkTneT1pyxYMlbZ8fpGPT6QdHJQkD4+W6gt5A==
dependencies:
"@vexip-ui/hooks" "^2.8.0"
"@vexip-ui/utils" "^2.16.1"
interactjs "^1.10.27"
has-flag@^4.0.0: has-flag@^4.0.0:
version "4.0.0" version "4.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
@@ -1825,6 +1859,13 @@ inherits@^2.0.3, inherits@^2.0.4:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
interactjs@^1.10.27:
version "1.10.27"
resolved "https://registry.yarnpkg.com/interactjs/-/interactjs-1.10.27.tgz#16499aba4987a5ccfdaddca7d1ba7bb1118e14d0"
integrity sha512-y/8RcCftGAF24gSp76X2JS3XpHiUvDQyhF8i7ujemBz77hwiHDuJzftHx7thY8cxGogwGiPJ+o97kWB6eAXnsA==
dependencies:
"@interactjs/types" "1.10.27"
is-binary-path@~2.1.0: is-binary-path@~2.1.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
@@ -2387,9 +2428,9 @@ prosemirror-menu@^1.2.4:
prosemirror-state "^1.0.0" prosemirror-state "^1.0.0"
prosemirror-model@^1.0.0, prosemirror-model@^1.20.0, prosemirror-model@^1.21.0, prosemirror-model@^1.23.0, prosemirror-model@^1.25.0, prosemirror-model@^1.25.1: prosemirror-model@^1.0.0, prosemirror-model@^1.20.0, prosemirror-model@^1.21.0, prosemirror-model@^1.23.0, prosemirror-model@^1.25.0, prosemirror-model@^1.25.1:
version "1.25.1" version "1.25.2"
resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.25.1.tgz#aeae9f1ec79fcaa76f6fc619800d91fbcf726870" resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.25.2.tgz#39ca862f76f354237efb94441dbc9f79e81cb247"
integrity sha512-AUvbm7qqmpZa5d9fPKMvH1Q5bqYQvAZWOGRvxsB6iFLyycvC9MwNemNVjHVrWgjaoxAfY8XVg7DbvQ/qxvI9Eg== integrity sha512-BVypCAJ4SL6jOiTsDffP3Wp6wD69lRhI4zg/iT8JXjp3ccZFiq5WyguxvMKmdKFC3prhaig7wSr8dneDToHE1Q==
dependencies: dependencies:
orderedmap "^2.0.0" orderedmap "^2.0.0"
@@ -2552,32 +2593,32 @@ reusify@^1.0.4:
integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==
rollup@^4.20.0: rollup@^4.20.0:
version "4.44.1" version "4.45.0"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.44.1.tgz#641723932894e7acbe6052aea34b8e72ef8b7c8f" resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.45.0.tgz#92d1b164eca1c6f2cb399ae7a1a8ee78967b6e33"
integrity sha512-x8H8aPvD+xbl0Do8oez5f5o8eMS3trfCghc4HhLAnCkj7Vl0d1JWGs0UF/D886zLW2rOj2QymV/JcSSsw+XDNg== integrity sha512-WLjEcJRIo7i3WDDgOIJqVI2d+lAC3EwvOGy+Xfq6hs+GQuAA4Di/H72xmXkOhrIWFg2PFYSKZYfH0f4vfKXN4A==
dependencies: dependencies:
"@types/estree" "1.0.8" "@types/estree" "1.0.8"
optionalDependencies: optionalDependencies:
"@rollup/rollup-android-arm-eabi" "4.44.1" "@rollup/rollup-android-arm-eabi" "4.45.0"
"@rollup/rollup-android-arm64" "4.44.1" "@rollup/rollup-android-arm64" "4.45.0"
"@rollup/rollup-darwin-arm64" "4.44.1" "@rollup/rollup-darwin-arm64" "4.45.0"
"@rollup/rollup-darwin-x64" "4.44.1" "@rollup/rollup-darwin-x64" "4.45.0"
"@rollup/rollup-freebsd-arm64" "4.44.1" "@rollup/rollup-freebsd-arm64" "4.45.0"
"@rollup/rollup-freebsd-x64" "4.44.1" "@rollup/rollup-freebsd-x64" "4.45.0"
"@rollup/rollup-linux-arm-gnueabihf" "4.44.1" "@rollup/rollup-linux-arm-gnueabihf" "4.45.0"
"@rollup/rollup-linux-arm-musleabihf" "4.44.1" "@rollup/rollup-linux-arm-musleabihf" "4.45.0"
"@rollup/rollup-linux-arm64-gnu" "4.44.1" "@rollup/rollup-linux-arm64-gnu" "4.45.0"
"@rollup/rollup-linux-arm64-musl" "4.44.1" "@rollup/rollup-linux-arm64-musl" "4.45.0"
"@rollup/rollup-linux-loongarch64-gnu" "4.44.1" "@rollup/rollup-linux-loongarch64-gnu" "4.45.0"
"@rollup/rollup-linux-powerpc64le-gnu" "4.44.1" "@rollup/rollup-linux-powerpc64le-gnu" "4.45.0"
"@rollup/rollup-linux-riscv64-gnu" "4.44.1" "@rollup/rollup-linux-riscv64-gnu" "4.45.0"
"@rollup/rollup-linux-riscv64-musl" "4.44.1" "@rollup/rollup-linux-riscv64-musl" "4.45.0"
"@rollup/rollup-linux-s390x-gnu" "4.44.1" "@rollup/rollup-linux-s390x-gnu" "4.45.0"
"@rollup/rollup-linux-x64-gnu" "4.44.1" "@rollup/rollup-linux-x64-gnu" "4.45.0"
"@rollup/rollup-linux-x64-musl" "4.44.1" "@rollup/rollup-linux-x64-musl" "4.45.0"
"@rollup/rollup-win32-arm64-msvc" "4.44.1" "@rollup/rollup-win32-arm64-msvc" "4.45.0"
"@rollup/rollup-win32-ia32-msvc" "4.44.1" "@rollup/rollup-win32-ia32-msvc" "4.45.0"
"@rollup/rollup-win32-x64-msvc" "4.44.1" "@rollup/rollup-win32-x64-msvc" "4.45.0"
fsevents "~2.3.2" fsevents "~2.3.2"
rope-sequence@^1.3.0: rope-sequence@^1.3.0:

View File

@@ -1 +1 @@
__version__ = "2.32.0" __version__ = "2.33.0"

View File

@@ -16,13 +16,14 @@
"field_order": [ "field_order": [
"title", "title",
"video_link", "video_link",
"tags",
"column_break_3", "column_break_3",
"instructors", "instructors",
"tags",
"column_break_htgn",
"image",
"category", "category",
"status", "status",
"column_break_htgn",
"image",
"card_gradient",
"section_break_7", "section_break_7",
"published", "published",
"published_on", "published_on",
@@ -98,8 +99,7 @@
{ {
"fieldname": "image", "fieldname": "image",
"fieldtype": "Attach Image", "fieldtype": "Attach Image",
"label": "Preview Image", "label": "Preview Image"
"reqd": 1
}, },
{ {
"fieldname": "tags", "fieldname": "tags",
@@ -272,6 +272,12 @@
"fieldtype": "Link", "fieldtype": "Link",
"label": "Evaluator", "label": "Evaluator",
"options": "Course Evaluator" "options": "Course Evaluator"
},
{
"fieldname": "card_gradient",
"fieldtype": "Select",
"label": "Color",
"options": "Red\nBlue\nGreen\nAmber\nCyan\nOrange\nPink\nPurple\nTeal\nViolet\nYellow\nGray"
} }
], ],
"is_published_field": "published", "is_published_field": "published",
@@ -290,8 +296,8 @@
} }
], ],
"make_attachments_public": 1, "make_attachments_public": 1,
"modified": "2025-05-29 12:38:01.002898", "modified": "2025-07-25 17:50:44.983391",
"modified_by": "Administrator", "modified_by": "sayali@frappe.io",
"module": "LMS", "module": "LMS",
"name": "LMS Course", "name": "LMS Course",
"owner": "Administrator", "owner": "Administrator",

View File

@@ -21,6 +21,7 @@ class LMSCourse(Document):
self.validate_certification() self.validate_certification()
self.validate_amount_and_currency() self.validate_amount_and_currency()
self.image = validate_image(self.image) self.image = validate_image(self.image)
self.validate_card_gradient()
def validate_published(self): def validate_published(self):
if self.published and not self.published_on: if self.published and not self.published_on:
@@ -73,6 +74,24 @@ class LMSCourse(Document):
if self.paid_certificate and (cint(self.course_price) <= 0 or not self.currency): if self.paid_certificate and (cint(self.course_price) <= 0 or not self.currency):
frappe.throw(_("Amount and currency are required for paid certificates.")) frappe.throw(_("Amount and currency are required for paid certificates."))
def validate_card_gradient(self):
if not self.image and not self.card_gradient:
colors = [
"Red",
"Blue",
"Green",
"Yellow",
"Orange",
"Pink",
"Amber",
"Violet",
"Cyan",
"Teal",
"Gray",
"Purple",
]
self.card_gradient = random.choice(colors)
def on_update(self): def on_update(self):
if not self.upcoming and self.has_value_changed("upcoming"): if not self.upcoming and self.has_value_changed("upcoming"):
self.send_email_to_interested_users() self.send_email_to_interested_users()

View File

@@ -565,10 +565,13 @@ def get_courses_under_review():
def validate_image(path): def validate_image(path):
if path and "/private" in path: if path and "/private" in path:
file = frappe.get_doc("File", {"file_url": path}) frappe.db.set_value(
file.is_private = 0 "File",
file.save() {"file_url": path},
return file.file_url "is_private",
0,
)
return path.replace("/private", "")
return path return path
@@ -1097,6 +1100,7 @@ def get_course_fields():
"title", "title",
"tags", "tags",
"image", "image",
"card_gradient",
"short_introduction", "short_introduction",
"published", "published",
"upcoming", "upcoming",

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

7306
lms/locale/id.po Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Frappe LMS VERSION\n" "Project-Id-Version: Frappe LMS VERSION\n"
"Report-Msgid-Bugs-To: jannat@frappe.io\n" "Report-Msgid-Bugs-To: jannat@frappe.io\n"
"POT-Creation-Date: 2025-07-11 16:04+0000\n" "POT-Creation-Date: 2025-07-25 16:04+0000\n"
"PO-Revision-Date: 2025-07-11 16:04+0000\n" "PO-Revision-Date: 2025-07-25 16:04+0000\n"
"Last-Translator: jannat@frappe.io\n" "Last-Translator: jannat@frappe.io\n"
"Language-Team: jannat@frappe.io\n" "Language-Team: jannat@frappe.io\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -69,11 +69,11 @@ msgstr ""
msgid "<span style=\"font-size: 18px;\"><b>Statistics</b></span>" msgid "<span style=\"font-size: 18px;\"><b>Statistics</b></span>"
msgstr "" msgstr ""
#: lms/lms/doctype/lms_course/lms_course.py:63 #: lms/lms/doctype/lms_course/lms_course.py:64
msgid "A course cannot have both paid certificate and certificate of completion." msgid "A course cannot have both paid certificate and certificate of completion."
msgstr "" msgstr ""
#: frontend/src/pages/CourseForm.vue:88 #: frontend/src/pages/CourseForm.vue:187
msgid "A one line introduction to the course that appears on the course card" msgid "A one line introduction to the course that appears on the course card"
msgstr "" msgstr ""
@@ -81,6 +81,10 @@ msgstr ""
msgid "About" msgid "About"
msgstr "" msgstr ""
#: frontend/src/pages/CourseForm.vue:179
msgid "About the Course"
msgstr ""
#: frontend/src/pages/Batch.vue:101 #: frontend/src/pages/Batch.vue:101
msgid "About this batch" msgid "About this batch"
msgstr "" msgstr ""
@@ -186,7 +190,7 @@ msgstr ""
msgid "Add a course" msgid "Add a course"
msgstr "" msgstr ""
#: frontend/src/pages/CourseForm.vue:69 #: frontend/src/pages/CourseForm.vue:55
msgid "Add a keyword and then press enter" msgid "Add a keyword and then press enter"
msgstr "" msgstr ""
@@ -323,10 +327,15 @@ msgstr ""
msgid "Already Registered" msgid "Already Registered"
msgstr "" msgstr ""
#. Option for the 'Color' (Select) field in DocType 'LMS Course'
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Amber"
msgstr ""
#. Label of the amount (Currency) field in DocType 'LMS Batch' #. Label of the amount (Currency) field in DocType 'LMS Batch'
#. Label of the course_price (Currency) field in DocType 'LMS Course' #. Label of the course_price (Currency) field in DocType 'LMS Course'
#. Label of the amount (Currency) field in DocType 'LMS Payment' #. Label of the amount (Currency) field in DocType 'LMS Payment'
#: frontend/src/pages/BatchForm.vue:275 frontend/src/pages/CourseForm.vue:254 #: frontend/src/pages/BatchForm.vue:275 frontend/src/pages/CourseForm.vue:259
#: lms/lms/doctype/lms_batch/lms_batch.json #: lms/lms/doctype/lms_batch/lms_batch.json
#: lms/lms/doctype/lms_course/lms_course.json #: lms/lms/doctype/lms_course/lms_course.json
#: lms/lms/doctype/lms_payment/lms_payment.json #: lms/lms/doctype/lms_payment/lms_payment.json
@@ -344,11 +353,11 @@ msgstr ""
msgid "Amount and currency are required for paid batches." msgid "Amount and currency are required for paid batches."
msgstr "" msgstr ""
#: lms/lms/doctype/lms_course/lms_course.py:74 #: lms/lms/doctype/lms_course/lms_course.py:75
msgid "Amount and currency are required for paid certificates." msgid "Amount and currency are required for paid certificates."
msgstr "" msgstr ""
#: lms/lms/doctype/lms_course/lms_course.py:71 #: lms/lms/doctype/lms_course/lms_course.py:72
msgid "Amount and currency are required for paid courses." msgid "Amount and currency are required for paid courses."
msgstr "" msgstr ""
@@ -380,7 +389,7 @@ msgstr ""
msgid "Answer" msgid "Answer"
msgstr "" msgstr ""
#: frontend/src/pages/CourseForm.vue:121 frontend/src/pages/CourseForm.vue:140 #: frontend/src/pages/CourseForm.vue:104 frontend/src/pages/CourseForm.vue:123
msgid "Appears on the course card in the course list" msgid "Appears on the course card in the course list"
msgstr "" msgstr ""
@@ -604,7 +613,7 @@ msgstr ""
msgid "Average Progress %" msgid "Average Progress %"
msgstr "" msgstr ""
#: frontend/src/components/CourseCard.vue:55 #: frontend/src/components/CourseCard.vue:65
#: frontend/src/pages/CourseDetail.vue:20 #: frontend/src/pages/CourseDetail.vue:20
msgid "Average Rating" msgid "Average Rating"
msgstr "" msgstr ""
@@ -715,6 +724,7 @@ msgstr ""
#. Name of a role #. Name of a role
#: lms/lms/doctype/course_evaluator/course_evaluator.json #: lms/lms/doctype/course_evaluator/course_evaluator.json
#: lms/lms/doctype/lms_assignment_submission/lms_assignment_submission.json
#: lms/lms/doctype/lms_batch/lms_batch.json #: lms/lms/doctype/lms_batch/lms_batch.json
#: lms/lms/doctype/lms_category/lms_category.json #: lms/lms/doctype/lms_category/lms_category.json
#: lms/lms/doctype/lms_certificate_evaluation/lms_certificate_evaluation.json #: lms/lms/doctype/lms_certificate_evaluation/lms_certificate_evaluation.json
@@ -822,6 +832,11 @@ msgstr ""
msgid "Bio" msgid "Bio"
msgstr "" msgstr ""
#. Option for the 'Color' (Select) field in DocType 'LMS Course'
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Blue"
msgstr ""
#. Label of the body (Markdown Editor) field in DocType 'Course Lesson' #. Label of the body (Markdown Editor) field in DocType 'Course Lesson'
#: lms/lms/doctype/course_lesson/course_lesson.json #: lms/lms/doctype/course_lesson/course_lesson.json
msgid "Body" msgid "Body"
@@ -952,7 +967,6 @@ msgstr ""
#. Label of a Card Break in the LMS Workspace #. Label of a Card Break in the LMS Workspace
#. Label of a Link in the LMS Workspace #. Label of a Link in the LMS Workspace
#: frontend/src/components/AppSidebar.vue:589 #: frontend/src/components/AppSidebar.vue:589
#: frontend/src/components/CourseCard.vue:115
#: frontend/src/components/Modals/Event.vue:381 #: frontend/src/components/Modals/Event.vue:381
#: frontend/src/pages/BatchForm.vue:69 frontend/src/pages/Batches.vue:38 #: frontend/src/pages/BatchForm.vue:69 frontend/src/pages/Batches.vue:38
#: frontend/src/pages/CourseCertification.vue:10 #: frontend/src/pages/CourseCertification.vue:10
@@ -1073,6 +1087,10 @@ msgstr ""
msgid "Choices" msgid "Choices"
msgstr "" msgstr ""
#: frontend/src/pages/CourseForm.vue:134
msgid "Choose a color for the course card"
msgstr ""
#: frontend/src/components/Quiz.vue:644 lms/templates/quiz/quiz.html:53 #: frontend/src/components/Quiz.vue:644 lms/templates/quiz/quiz.html:53
msgid "Choose all answers that apply" msgid "Choose all answers that apply"
msgstr "" msgstr ""
@@ -1210,12 +1228,15 @@ msgstr ""
msgid "College Name" msgid "College Name"
msgstr "" msgstr ""
#. Label of the card_gradient (Select) field in DocType 'LMS Course'
#. Label of the color (Color) field in DocType 'LMS Timetable Legend' #. Label of the color (Color) field in DocType 'LMS Timetable Legend'
#: frontend/src/pages/CourseForm.vue:133
#: lms/lms/doctype/lms_course/lms_course.json
#: lms/lms/doctype/lms_timetable_legend/lms_timetable_legend.json #: lms/lms/doctype/lms_timetable_legend/lms_timetable_legend.json
msgid "Color" msgid "Color"
msgstr "" msgstr ""
#: frontend/src/pages/BatchForm.vue:303 frontend/src/pages/CourseForm.vue:292 #: frontend/src/pages/BatchForm.vue:303 frontend/src/pages/CourseForm.vue:297
msgid "Comma separated keywords for SEO" msgid "Comma separated keywords for SEO"
msgstr "" msgstr ""
@@ -1324,7 +1345,7 @@ msgid "Completed"
msgstr "" msgstr ""
#. Label of the enable_certification (Check) field in DocType 'LMS Course' #. Label of the enable_certification (Check) field in DocType 'LMS Course'
#: frontend/src/pages/CourseForm.vue:241 #: frontend/src/pages/CourseForm.vue:246
#: lms/lms/doctype/lms_course/lms_course.json #: lms/lms/doctype/lms_course/lms_course.json
msgid "Completion Certificate" msgid "Completion Certificate"
msgstr "" msgstr ""
@@ -1517,6 +1538,7 @@ msgstr ""
#: frontend/src/pages/ProfileRoles.vue:26 #: frontend/src/pages/ProfileRoles.vue:26
#: lms/lms/doctype/course_chapter/course_chapter.json #: lms/lms/doctype/course_chapter/course_chapter.json
#: lms/lms/doctype/course_lesson/course_lesson.json #: lms/lms/doctype/course_lesson/course_lesson.json
#: lms/lms/doctype/lms_assignment_submission/lms_assignment_submission.json
#: lms/lms/doctype/lms_category/lms_category.json #: lms/lms/doctype/lms_category/lms_category.json
#: lms/lms/doctype/lms_course/lms_course.json #: lms/lms/doctype/lms_course/lms_course.json
#: lms/lms/doctype/lms_program/lms_program.json #: lms/lms/doctype/lms_program/lms_program.json
@@ -1533,7 +1555,7 @@ msgstr ""
msgid "Course Data" msgid "Course Data"
msgstr "" msgstr ""
#: frontend/src/pages/CourseForm.vue:190 #: frontend/src/pages/CourseForm.vue:195
msgid "Course Description" msgid "Course Description"
msgstr "" msgstr ""
@@ -1551,7 +1573,7 @@ msgstr ""
msgid "Course Evaluator" msgid "Course Evaluator"
msgstr "" msgstr ""
#: frontend/src/pages/CourseForm.vue:96 #: frontend/src/pages/CourseForm.vue:80
msgid "Course Image" msgid "Course Image"
msgstr "" msgstr ""
@@ -1573,7 +1595,7 @@ msgstr ""
msgid "Course Name" msgid "Course Name"
msgstr "" msgstr ""
#: frontend/src/pages/CourseDetail.vue:78 frontend/src/pages/CourseForm.vue:302 #: frontend/src/pages/CourseDetail.vue:78 frontend/src/pages/CourseForm.vue:307
msgid "Course Outline" msgid "Course Outline"
msgstr "" msgstr ""
@@ -1610,11 +1632,11 @@ msgstr ""
msgid "Course added to program" msgid "Course added to program"
msgstr "" msgstr ""
#: frontend/src/pages/CourseForm.vue:537 #: frontend/src/pages/CourseForm.vue:544
msgid "Course created successfully" msgid "Course created successfully"
msgstr "" msgstr ""
#: frontend/src/pages/CourseForm.vue:574 #: frontend/src/pages/CourseForm.vue:581
msgid "Course deleted successfully" msgid "Course deleted successfully"
msgstr "" msgstr ""
@@ -1622,7 +1644,7 @@ msgstr ""
msgid "Course moved successfully" msgid "Course moved successfully"
msgstr "" msgstr ""
#: frontend/src/pages/CourseForm.vue:557 #: frontend/src/pages/CourseForm.vue:564
msgid "Course updated successfully" msgid "Course updated successfully"
msgstr "" msgstr ""
@@ -1740,7 +1762,7 @@ msgstr ""
#. Label of the currency (Link) field in DocType 'LMS Batch' #. Label of the currency (Link) field in DocType 'LMS Batch'
#. Label of the currency (Link) field in DocType 'LMS Course' #. Label of the currency (Link) field in DocType 'LMS Course'
#. Label of the currency (Link) field in DocType 'LMS Payment' #. Label of the currency (Link) field in DocType 'LMS Payment'
#: frontend/src/pages/BatchForm.vue:282 frontend/src/pages/CourseForm.vue:271 #: frontend/src/pages/BatchForm.vue:282 frontend/src/pages/CourseForm.vue:276
#: lms/lms/doctype/lms_batch/lms_batch.json #: lms/lms/doctype/lms_batch/lms_batch.json
#: lms/lms/doctype/lms_course/lms_course.json #: lms/lms/doctype/lms_course/lms_course.json
#: lms/lms/doctype/lms_payment/lms_payment.json #: lms/lms/doctype/lms_payment/lms_payment.json
@@ -1777,6 +1799,11 @@ msgstr ""
msgid "Customisations" msgid "Customisations"
msgstr "" msgstr ""
#. Option for the 'Color' (Select) field in DocType 'LMS Course'
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Cyan"
msgstr ""
#. Label of the show_dashboard (Check) field in DocType 'LMS Settings' #. Label of the show_dashboard (Check) field in DocType 'LMS Settings'
#: lms/lms/doctype/lms_settings/lms_settings.json #: lms/lms/doctype/lms_settings/lms_settings.json
msgid "Dashboard" msgid "Dashboard"
@@ -1847,7 +1874,7 @@ msgstr ""
#: frontend/src/components/CourseOutline.vue:283 #: frontend/src/components/CourseOutline.vue:283
#: frontend/src/components/CourseOutline.vue:349 #: frontend/src/components/CourseOutline.vue:349
#: frontend/src/components/Settings/Badges.vue:171 #: frontend/src/components/Settings/Badges.vue:171
#: frontend/src/pages/BatchForm.vue:562 frontend/src/pages/CourseForm.vue:587 #: frontend/src/pages/BatchForm.vue:562 frontend/src/pages/CourseForm.vue:594
#: frontend/src/pages/ProgrammingExercises/ProgrammingExerciseForm.vue:67 #: frontend/src/pages/ProgrammingExercises/ProgrammingExerciseForm.vue:67
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
@@ -1856,7 +1883,7 @@ msgstr ""
msgid "Delete Chapter" msgid "Delete Chapter"
msgstr "" msgstr ""
#: frontend/src/pages/CourseForm.vue:581 #: frontend/src/pages/CourseForm.vue:588
msgid "Delete Course" msgid "Delete Course"
msgstr "" msgstr ""
@@ -1868,7 +1895,7 @@ msgstr ""
msgid "Delete this lesson?" msgid "Delete this lesson?"
msgstr "" msgstr ""
#: frontend/src/pages/CourseForm.vue:582 #: frontend/src/pages/CourseForm.vue:589
msgid "Deleting the course will also delete all its chapters and lessons. Are you sure you want to delete this course?" msgid "Deleting the course will also delete all its chapters and lessons. Are you sure you want to delete this course?"
msgstr "" msgstr ""
@@ -1923,7 +1950,7 @@ msgstr ""
msgid "Details" msgid "Details"
msgstr "" msgstr ""
#: frontend/src/pages/CourseForm.vue:181 #: frontend/src/pages/CourseForm.vue:171
msgid "Disable Self Enrollment" msgid "Disable Self Enrollment"
msgstr "" msgstr ""
@@ -2197,7 +2224,7 @@ msgstr ""
msgid "Enrolled" msgid "Enrolled"
msgstr "" msgstr ""
#: frontend/src/components/CourseCard.vue:46 #: frontend/src/components/CourseCard.vue:56
#: frontend/src/components/CourseCardOverlay.vue:138 #: frontend/src/components/CourseCardOverlay.vue:138
#: frontend/src/pages/CourseDetail.vue:33 #: frontend/src/pages/CourseDetail.vue:33
msgid "Enrolled Students" msgid "Enrolled Students"
@@ -2212,7 +2239,7 @@ msgstr ""
msgid "Enrollment Count" msgid "Enrollment Count"
msgstr "" msgstr ""
#: lms/lms/utils.py:1943 #: lms/lms/utils.py:1948
msgid "Enrollment Failed" msgid "Enrollment Failed"
msgstr "" msgstr ""
@@ -2313,7 +2340,7 @@ msgstr ""
#. Label of the evaluator (Link) field in DocType 'LMS Course' #. Label of the evaluator (Link) field in DocType 'LMS Course'
#: frontend/src/components/Modals/BatchCourseModal.vue:37 #: frontend/src/components/Modals/BatchCourseModal.vue:37
#: frontend/src/components/Modals/BulkCertificates.vue:22 #: frontend/src/components/Modals/BulkCertificates.vue:22
#: frontend/src/pages/CourseForm.vue:260 frontend/src/pages/ProfileRoles.vue:32 #: frontend/src/pages/CourseForm.vue:265 frontend/src/pages/ProfileRoles.vue:32
#: lms/lms/doctype/batch_course/batch_course.json #: lms/lms/doctype/batch_course/batch_course.json
#: lms/lms/doctype/course_evaluator/course_evaluator.json #: lms/lms/doctype/course_evaluator/course_evaluator.json
#: lms/lms/doctype/lms_assignment_submission/lms_assignment_submission.json #: lms/lms/doctype/lms_assignment_submission/lms_assignment_submission.json
@@ -2353,7 +2380,7 @@ msgstr ""
msgid "Evaluator does not exist." msgid "Evaluator does not exist."
msgstr "" msgstr ""
#: lms/lms/doctype/lms_course/lms_course.py:67 #: lms/lms/doctype/lms_course/lms_course.py:68
msgid "Evaluator is required for paid certificates." msgid "Evaluator is required for paid certificates."
msgstr "" msgstr ""
@@ -2479,13 +2506,13 @@ msgstr ""
msgid "Failed to update badge assignment: " msgid "Failed to update badge assignment: "
msgstr "" msgstr ""
#: frontend/src/utils/index.js:671 #: frontend/src/utils/index.js:670
msgid "Failed to update meta tags {0}" msgid "Failed to update meta tags {0}"
msgstr "" msgstr ""
#. Label of the featured (Check) field in DocType 'LMS Course' #. Label of the featured (Check) field in DocType 'LMS Course'
#: frontend/src/components/CourseCard.vue:20 #: frontend/src/components/CourseCard.vue:25
#: frontend/src/pages/CourseForm.vue:176 #: frontend/src/pages/CourseForm.vue:166
#: lms/lms/doctype/lms_course/lms_course.json #: lms/lms/doctype/lms_course/lms_course.json
msgid "Featured" msgid "Featured"
msgstr "" msgstr ""
@@ -2643,6 +2670,7 @@ msgstr ""
#: frontend/src/components/CertificationLinks.vue:34 #: frontend/src/components/CertificationLinks.vue:34
#: frontend/src/components/CertificationLinks.vue:50 #: frontend/src/components/CertificationLinks.vue:50
#: frontend/src/components/CourseCard.vue:121
#: frontend/src/pages/CertifiedParticipants.vue:11 #: frontend/src/pages/CertifiedParticipants.vue:11
msgid "Get Certified" msgid "Get Certified"
msgstr "" msgstr ""
@@ -2692,6 +2720,16 @@ msgstr ""
msgid "Grant only once" msgid "Grant only once"
msgstr "" msgstr ""
#. Option for the 'Color' (Select) field in DocType 'LMS Course'
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Gray"
msgstr ""
#. Option for the 'Color' (Select) field in DocType 'LMS Course'
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Green"
msgstr ""
#: lms/templates/signup-form.html:56 #: lms/templates/signup-form.html:56
msgid "Have an account? Login" msgid "Have an account? Login"
msgstr "" msgstr ""
@@ -3510,7 +3548,7 @@ msgstr ""
#. Label of the lessons (Table) field in DocType 'Course Chapter' #. Label of the lessons (Table) field in DocType 'Course Chapter'
#. Group in Course Chapter's connections #. Group in Course Chapter's connections
#. Label of the lessons (Int) field in DocType 'LMS Course' #. Label of the lessons (Int) field in DocType 'LMS Course'
#: frontend/src/components/CourseCard.vue:37 #: frontend/src/components/CourseCard.vue:47
#: frontend/src/components/CourseCardOverlay.vue:131 #: frontend/src/components/CourseCardOverlay.vue:131
#: lms/lms/doctype/course_chapter/course_chapter.json #: lms/lms/doctype/course_chapter/course_chapter.json
#: lms/lms/doctype/lms_course/lms_course.json #: lms/lms/doctype/lms_course/lms_course.json
@@ -3938,7 +3976,7 @@ msgid "Mentor Request Status Update Template"
msgstr "" msgstr ""
#. Label of the meta_description (Small Text) field in DocType 'LMS Settings' #. Label of the meta_description (Small Text) field in DocType 'LMS Settings'
#: frontend/src/pages/BatchForm.vue:294 frontend/src/pages/CourseForm.vue:283 #: frontend/src/pages/BatchForm.vue:294 frontend/src/pages/CourseForm.vue:288
#: lms/lms/doctype/lms_settings/lms_settings.json #: lms/lms/doctype/lms_settings/lms_settings.json
msgid "Meta Description" msgid "Meta Description"
msgstr "" msgstr ""
@@ -3952,12 +3990,12 @@ msgid "Meta Image"
msgstr "" msgstr ""
#. Label of the meta_keywords (Small Text) field in DocType 'LMS Settings' #. Label of the meta_keywords (Small Text) field in DocType 'LMS Settings'
#: frontend/src/pages/BatchForm.vue:300 frontend/src/pages/CourseForm.vue:289 #: frontend/src/pages/BatchForm.vue:300 frontend/src/pages/CourseForm.vue:294
#: lms/lms/doctype/lms_settings/lms_settings.json #: lms/lms/doctype/lms_settings/lms_settings.json
msgid "Meta Keywords" msgid "Meta Keywords"
msgstr "" msgstr ""
#: frontend/src/pages/BatchForm.vue:289 frontend/src/pages/CourseForm.vue:278 #: frontend/src/pages/BatchForm.vue:289 frontend/src/pages/CourseForm.vue:283
msgid "Meta Tags" msgid "Meta Tags"
msgstr "" msgstr ""
@@ -3980,6 +4018,7 @@ msgstr ""
#: lms/lms/doctype/course_evaluator/course_evaluator.json #: lms/lms/doctype/course_evaluator/course_evaluator.json
#: lms/lms/doctype/course_lesson/course_lesson.json #: lms/lms/doctype/course_lesson/course_lesson.json
#: lms/lms/doctype/lms_assignment/lms_assignment.json #: lms/lms/doctype/lms_assignment/lms_assignment.json
#: lms/lms/doctype/lms_assignment_submission/lms_assignment_submission.json
#: lms/lms/doctype/lms_badge_assignment/lms_badge_assignment.json #: lms/lms/doctype/lms_badge_assignment/lms_badge_assignment.json
#: lms/lms/doctype/lms_batch/lms_batch.json #: lms/lms/doctype/lms_batch/lms_batch.json
#: lms/lms/doctype/lms_batch_enrollment/lms_batch_enrollment.json #: lms/lms/doctype/lms_batch_enrollment/lms_batch_enrollment.json
@@ -4068,7 +4107,7 @@ msgstr ""
msgid "New Batch" msgid "New Batch"
msgstr "" msgstr ""
#: frontend/src/pages/CourseForm.vue:668 lms/www/lms.py:95 #: frontend/src/pages/CourseForm.vue:675 lms/www/lms.py:95
msgid "New Course" msgid "New Course"
msgstr "" msgstr ""
@@ -4112,11 +4151,11 @@ msgstr ""
msgid "New Zoom Account" msgid "New Zoom Account"
msgstr "" msgstr ""
#: lms/lms/utils.py:609 #: lms/lms/utils.py:612
msgid "New comment in batch {0}" msgid "New comment in batch {0}"
msgstr "" msgstr ""
#: lms/lms/utils.py:602 #: lms/lms/utils.py:605
msgid "New reply on the topic {0} in course {1}" msgid "New reply on the topic {0} in course {1}"
msgstr "" msgstr ""
@@ -4383,6 +4422,11 @@ msgstr ""
msgid "Options" msgid "Options"
msgstr "" msgstr ""
#. Option for the 'Color' (Select) field in DocType 'LMS Course'
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Orange"
msgstr ""
#. Label of the order_id (Data) field in DocType 'LMS Payment' #. Label of the order_id (Data) field in DocType 'LMS Payment'
#: lms/lms/doctype/lms_payment/lms_payment.json #: lms/lms/doctype/lms_payment/lms_payment.json
msgid "Order ID" msgid "Order ID"
@@ -4438,7 +4482,7 @@ msgid "Paid Batch"
msgstr "" msgstr ""
#. Label of the paid_certificate (Check) field in DocType 'LMS Course' #. Label of the paid_certificate (Check) field in DocType 'LMS Course'
#: frontend/src/pages/CourseForm.vue:246 #: frontend/src/pages/CourseForm.vue:251
#: lms/lms/doctype/lms_course/lms_course.json #: lms/lms/doctype/lms_course/lms_course.json
msgid "Paid Certificate" msgid "Paid Certificate"
msgstr "" msgstr ""
@@ -4448,7 +4492,7 @@ msgid "Paid Certificate after Evaluation"
msgstr "" msgstr ""
#. Label of the paid_course (Check) field in DocType 'LMS Course' #. Label of the paid_course (Check) field in DocType 'LMS Course'
#: frontend/src/pages/CourseForm.vue:236 #: frontend/src/pages/CourseForm.vue:241
#: lms/lms/doctype/lms_course/lms_course.json #: lms/lms/doctype/lms_course/lms_course.json
msgid "Paid Course" msgid "Paid Course"
msgstr "" msgstr ""
@@ -4500,7 +4544,7 @@ msgstr ""
msgid "Password" msgid "Password"
msgstr "" msgstr ""
#: frontend/src/pages/CourseForm.vue:206 #: frontend/src/pages/CourseForm.vue:211
msgid "Paste the youtube link of a short video introducing the course" msgid "Paste the youtube link of a short video introducing the course"
msgstr "" msgstr ""
@@ -4614,6 +4658,11 @@ msgstr ""
msgid "Phone Number" msgid "Phone Number"
msgstr "" msgstr ""
#. Option for the 'Color' (Select) field in DocType 'LMS Course'
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Pink"
msgstr ""
#: lms/lms/doctype/lms_settings/lms_settings.py:34 #: lms/lms/doctype/lms_settings/lms_settings.py:34
msgid "Please add <a href='{0}'>{1}</a> for <a href='{2}'>{3}</a> to send calendar invites for evaluations." msgid "Please add <a href='{0}'>{1}</a> for <a href='{2}'>{3}</a> to send calendar invites for evaluations."
msgstr "" msgstr ""
@@ -4634,7 +4683,7 @@ msgstr ""
msgid "Please click on the following button to set your new password" msgid "Please click on the following button to set your new password"
msgstr "" msgstr ""
#: lms/lms/utils.py:2077 lms/lms/utils.py:2081 #: lms/lms/utils.py:2082 lms/lms/utils.py:2086
msgid "Please complete the previous courses in the program to enroll in this course." msgid "Please complete the previous courses in the program to enroll in this course."
msgstr "" msgstr ""
@@ -4679,7 +4728,7 @@ msgstr ""
msgid "Please install the Payments App to create a paid batch. Refer to the documentation for more details. {0}" msgid "Please install the Payments App to create a paid batch. Refer to the documentation for more details. {0}"
msgstr "" msgstr ""
#: lms/lms/doctype/lms_course/lms_course.py:55 #: lms/lms/doctype/lms_course/lms_course.py:56
msgid "Please install the Payments App to create a paid course. Refer to the documentation for more details. {0}" msgid "Please install the Payments App to create a paid course. Refer to the documentation for more details. {0}"
msgstr "" msgstr ""
@@ -4834,7 +4883,7 @@ msgstr ""
msgid "Preview Image" msgid "Preview Image"
msgstr "" msgstr ""
#: frontend/src/pages/CourseForm.vue:204 #: frontend/src/pages/CourseForm.vue:209
msgid "Preview Video" msgid "Preview Video"
msgstr "" msgstr ""
@@ -4849,7 +4898,7 @@ msgid "Pricing"
msgstr "" msgstr ""
#. Label of the pricing_tab (Tab Break) field in DocType 'LMS Course' #. Label of the pricing_tab (Tab Break) field in DocType 'LMS Course'
#: frontend/src/pages/CourseForm.vue:230 #: frontend/src/pages/CourseForm.vue:235
#: lms/lms/doctype/lms_course/lms_course.json #: lms/lms/doctype/lms_course/lms_course.json
msgid "Pricing and Certification" msgid "Pricing and Certification"
msgstr "" msgstr ""
@@ -5002,7 +5051,7 @@ msgstr ""
#. Label of the published (Check) field in DocType 'LMS Course' #. Label of the published (Check) field in DocType 'LMS Course'
#: frontend/src/components/Modals/BulkCertificates.vue:51 #: frontend/src/components/Modals/BulkCertificates.vue:51
#: frontend/src/components/Modals/Event.vue:108 #: frontend/src/components/Modals/Event.vue:108
#: frontend/src/pages/BatchForm.vue:59 frontend/src/pages/CourseForm.vue:159 #: frontend/src/pages/BatchForm.vue:59 frontend/src/pages/CourseForm.vue:149
#: lms/lms/doctype/lms_batch/lms_batch.json #: lms/lms/doctype/lms_batch/lms_batch.json
#: lms/lms/doctype/lms_course/lms_course.json #: lms/lms/doctype/lms_course/lms_course.json
msgid "Published" msgid "Published"
@@ -5015,7 +5064,7 @@ msgid "Published Courses"
msgstr "" msgstr ""
#. Label of the published_on (Date) field in DocType 'LMS Course' #. Label of the published_on (Date) field in DocType 'LMS Course'
#: frontend/src/pages/CourseForm.vue:163 #: frontend/src/pages/CourseForm.vue:153
#: lms/lms/doctype/lms_course/lms_course.json #: lms/lms/doctype/lms_course/lms_course.json
msgid "Published On" msgid "Published On"
msgstr "" msgstr ""
@@ -5025,6 +5074,11 @@ msgstr ""
msgid "Purchased Certificate" msgid "Purchased Certificate"
msgstr "" msgstr ""
#. Option for the 'Color' (Select) field in DocType 'LMS Course'
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Purple"
msgstr ""
#. Option for the 'Language' (Select) field in DocType 'LMS Programming #. Option for the 'Language' (Select) field in DocType 'LMS Programming
#. Exercise' #. Exercise'
#: lms/lms/doctype/lms_programming_exercise/lms_programming_exercise.json #: lms/lms/doctype/lms_programming_exercise/lms_programming_exercise.json
@@ -5182,6 +5236,11 @@ msgstr ""
msgid "Ready" msgid "Ready"
msgstr "" msgstr ""
#. Option for the 'Color' (Select) field in DocType 'LMS Course'
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Red"
msgstr ""
#. Label of the reference_docname (Dynamic Link) field in DocType 'LMS Batch #. Label of the reference_docname (Dynamic Link) field in DocType 'LMS Batch
#. Timetable' #. Timetable'
#: lms/lms/doctype/lms_batch_timetable/lms_batch_timetable.json #: lms/lms/doctype/lms_batch_timetable/lms_batch_timetable.json
@@ -5230,14 +5289,14 @@ msgstr ""
#. Label of the related_courses (Table) field in DocType 'LMS Course' #. Label of the related_courses (Table) field in DocType 'LMS Course'
#. Name of a DocType #. Name of a DocType
#: frontend/src/components/RelatedCourses.vue:5 #: frontend/src/components/RelatedCourses.vue:5
#: frontend/src/pages/CourseForm.vue:215 #: frontend/src/pages/CourseForm.vue:220
#: lms/lms/doctype/lms_course/lms_course.json #: lms/lms/doctype/lms_course/lms_course.json
#: lms/lms/doctype/related_courses/related_courses.json #: lms/lms/doctype/related_courses/related_courses.json
msgid "Related Courses" msgid "Related Courses"
msgstr "" msgstr ""
#: frontend/src/components/Controls/Uploader.vue:34 #: frontend/src/components/Controls/Uploader.vue:34
#: frontend/src/pages/BatchForm.vue:246 frontend/src/pages/CourseForm.vue:136 #: frontend/src/pages/BatchForm.vue:246 frontend/src/pages/CourseForm.vue:119
msgid "Remove" msgid "Remove"
msgstr "" msgstr ""
@@ -5517,6 +5576,10 @@ msgstr ""
msgid "Sessions On Days" msgid "Sessions On Days"
msgstr "" msgstr ""
#: frontend/src/components/Controls/ColorSwatches.vue:13
msgid "Set Color"
msgstr ""
#: lms/templates/emails/community_course_membership.html:1 #: lms/templates/emails/community_course_membership.html:1
msgid "Set your Password" msgid "Set your Password"
msgstr "" msgstr ""
@@ -5531,7 +5594,7 @@ msgstr ""
#: frontend/src/components/AppSidebar.vue:610 #: frontend/src/components/AppSidebar.vue:610
#: frontend/src/components/Settings/Settings.vue:7 #: frontend/src/components/Settings/Settings.vue:7
#: frontend/src/pages/BatchForm.vue:53 frontend/src/pages/CourseForm.vue:152 #: frontend/src/pages/BatchForm.vue:53 frontend/src/pages/CourseForm.vue:142
#: frontend/src/pages/ProfileRoles.vue:4 #: frontend/src/pages/ProfileRoles.vue:4
#: frontend/src/pages/ProgrammingExercises/ProgrammingExerciseSubmission.vue:19 #: frontend/src/pages/ProgrammingExercises/ProgrammingExerciseSubmission.vue:19
#: frontend/src/pages/QuizForm.vue:86 #: frontend/src/pages/QuizForm.vue:86
@@ -5547,7 +5610,7 @@ msgid "Short Description"
msgstr "" msgstr ""
#. Label of the short_introduction (Small Text) field in DocType 'LMS Course' #. Label of the short_introduction (Small Text) field in DocType 'LMS Course'
#: frontend/src/pages/CourseForm.vue:86 #: frontend/src/pages/CourseForm.vue:185
#: lms/lms/doctype/lms_course/lms_course.json #: lms/lms/doctype/lms_course/lms_course.json
msgid "Short Introduction" msgid "Short Introduction"
msgstr "" msgstr ""
@@ -5944,6 +6007,10 @@ msgstr ""
msgid "Suspicious pattern found in {0}: {1}" msgid "Suspicious pattern found in {0}: {1}"
msgstr "" msgstr ""
#: frontend/src/components/Controls/ColorSwatches.vue:50
msgid "Swatches"
msgstr ""
#. Name of a role #. Name of a role
#: lms/job/doctype/job_opportunity/job_opportunity.json #: lms/job/doctype/job_opportunity/job_opportunity.json
#: lms/job/doctype/job_settings/job_settings.json #: lms/job/doctype/job_settings/job_settings.json
@@ -6006,6 +6073,11 @@ msgstr ""
msgid "Tags" msgid "Tags"
msgstr "" msgstr ""
#. Option for the 'Color' (Select) field in DocType 'LMS Course'
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Teal"
msgstr ""
#: lms/templates/emails/community_course_membership.html:18 #: lms/templates/emails/community_course_membership.html:18
#: lms/templates/emails/mentor_request_creation_email.html:8 #: lms/templates/emails/mentor_request_creation_email.html:8
#: lms/templates/emails/mentor_request_status_update_email.html:7 #: lms/templates/emails/mentor_request_status_update_email.html:7
@@ -6088,7 +6160,7 @@ msgstr ""
msgid "Thanks and Regards" msgid "Thanks and Regards"
msgstr "" msgstr ""
#: lms/lms/utils.py:1975 #: lms/lms/utils.py:1980
msgid "The batch is full. Please contact the Administrator." msgid "The batch is full. Please contact the Administrator."
msgstr "" msgstr ""
@@ -6175,7 +6247,7 @@ msgstr ""
msgid "This course has:" msgid "This course has:"
msgstr "" msgstr ""
#: lms/lms/utils.py:1818 #: lms/lms/utils.py:1823
msgid "This course is free." msgid "This course is free."
msgstr "" msgstr ""
@@ -6358,7 +6430,7 @@ msgstr ""
msgid "To Date" msgid "To Date"
msgstr "" msgstr ""
#: lms/lms/utils.py:1829 #: lms/lms/utils.py:1834
msgid "To join this batch, please contact the Administrator." msgid "To join this batch, please contact the Administrator."
msgstr "" msgstr ""
@@ -6495,7 +6567,7 @@ msgstr ""
#. Option for the 'Status' (Select) field in DocType 'Cohort' #. Option for the 'Status' (Select) field in DocType 'Cohort'
#. Option for the 'Status' (Select) field in DocType 'LMS Certificate Request' #. Option for the 'Status' (Select) field in DocType 'LMS Certificate Request'
#. Label of the upcoming (Check) field in DocType 'LMS Course' #. Label of the upcoming (Check) field in DocType 'LMS Course'
#: frontend/src/pages/Batches.vue:282 frontend/src/pages/CourseForm.vue:171 #: frontend/src/pages/Batches.vue:282 frontend/src/pages/CourseForm.vue:161
#: frontend/src/pages/Courses.vue:313 lms/lms/doctype/cohort/cohort.json #: frontend/src/pages/Courses.vue:313 lms/lms/doctype/cohort/cohort.json
#: lms/lms/doctype/lms_certificate_request/lms_certificate_request.json #: lms/lms/doctype/lms_certificate_request/lms_certificate_request.json
#: lms/lms/doctype/lms_course/lms_course.json #: lms/lms/doctype/lms_course/lms_course.json
@@ -6522,7 +6594,7 @@ msgid "Update Password"
msgstr "" msgstr ""
#: frontend/src/components/Controls/Uploader.vue:20 #: frontend/src/components/Controls/Uploader.vue:20
#: frontend/src/pages/BatchForm.vue:227 frontend/src/pages/CourseForm.vue:117 #: frontend/src/pages/BatchForm.vue:227 frontend/src/pages/CourseForm.vue:100
msgid "Upload" msgid "Upload"
msgstr "" msgstr ""
@@ -6636,6 +6708,11 @@ msgstr ""
msgid "View all feedback" msgid "View all feedback"
msgstr "" msgstr ""
#. Option for the 'Color' (Select) field in DocType 'LMS Course'
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Violet"
msgstr ""
#. Label of the visibility (Select) field in DocType 'LMS Batch Old' #. Label of the visibility (Select) field in DocType 'LMS Batch Old'
#: lms/lms/doctype/lms_batch_old/lms_batch_old.json #: lms/lms/doctype/lms_batch_old/lms_batch_old.json
msgid "Visibility" msgid "Visibility"
@@ -6764,6 +6841,11 @@ msgstr ""
msgid "Write your answer here" msgid "Write your answer here"
msgstr "" msgstr ""
#. Option for the 'Color' (Select) field in DocType 'LMS Course'
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Yellow"
msgstr ""
#: lms/lms/doctype/lms_certificate_request/lms_certificate_request.py:95 #: lms/lms/doctype/lms_certificate_request/lms_certificate_request.py:95
msgid "You already have an evaluation on {0} at {1} for the course {2}." msgid "You already have an evaluation on {0} at {1} for the course {2}."
msgstr "" msgstr ""
@@ -7000,6 +7082,11 @@ msgstr ""
msgid "activity" msgid "activity"
msgstr "" msgstr ""
#: frontend/src/components/CourseInstructors.vue:22
#: frontend/src/components/CourseInstructors.vue:41
msgid "and"
msgstr ""
#: frontend/src/components/JobCard.vue:26 frontend/src/pages/JobDetail.vue:108 #: frontend/src/components/JobCard.vue:26 frontend/src/pages/JobDetail.vue:108
msgid "applicant" msgid "applicant"
msgstr "" msgstr ""
@@ -7032,7 +7119,8 @@ msgstr ""
msgid "certified members" msgid "certified members"
msgstr "" msgstr ""
#: frontend/src/pages/Lesson.vue:98 frontend/src/pages/Lesson.vue:234 #: frontend/src/components/CourseCard.vue:98 frontend/src/pages/Lesson.vue:98
#: frontend/src/pages/Lesson.vue:234
msgid "completed" msgid "completed"
msgstr "" msgstr ""
@@ -7068,6 +7156,10 @@ msgstr ""
msgid "of" msgid "of"
msgstr "" msgstr ""
#: frontend/src/components/CourseInstructors.vue:41
msgid "others"
msgstr ""
#: lms/templates/quiz/quiz.js:141 #: lms/templates/quiz/quiz.js:141
msgid "out of" msgid "out of"
msgstr "" msgstr ""
@@ -7164,7 +7256,7 @@ msgstr ""
msgid "{0} is your evaluator" msgid "{0} is your evaluator"
msgstr "" msgstr ""
#: lms/lms/utils.py:686 #: lms/lms/utils.py:689
msgid "{0} mentioned you in a comment" msgid "{0} mentioned you in a comment"
msgstr "" msgstr ""
@@ -7172,7 +7264,7 @@ msgstr ""
msgid "{0} mentioned you in a comment in your batch." msgid "{0} mentioned you in a comment in your batch."
msgstr "" msgstr ""
#: lms/lms/utils.py:639 lms/lms/utils.py:645 #: lms/lms/utils.py:642 lms/lms/utils.py:648
msgid "{0} mentioned you in a comment in {1}" msgid "{0} mentioned you in a comment in {1}"
msgstr "" msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -25,7 +25,7 @@
}, },
"homepage": "https://github.com/frappe/lms#readme", "homepage": "https://github.com/frappe/lms#readme",
"devDependencies": { "devDependencies": {
"cypress": "^13.9.0", "cypress": "^14.5.2",
"cypress-file-upload": "^5.0.8", "cypress-file-upload": "^5.0.8",
"cypress-real-events": "^1.14.0" "cypress-real-events": "^1.14.0"
}, },

View File

@@ -13,7 +13,7 @@ dependencies = [
"markdown~=3.5.1", "markdown~=3.5.1",
"beautifulsoup4~=4.12.2", "beautifulsoup4~=4.12.2",
"lxml~=4.9.3", "lxml~=4.9.3",
"cairocffi~=1.6.1", "cairocffi==1.5.1",
"razorpay~=1.4.1", "razorpay~=1.4.1",
"fuzzywuzzy~=0.18.0", "fuzzywuzzy~=0.18.0",
] ]

1374
yarn.lock Normal file

File diff suppressed because it is too large Load Diff