fix: cleanup ui

This commit is contained in:
Jannat Patel
2024-02-05 17:36:55 +05:30
parent af48ccfb57
commit f59f6c617a
93 changed files with 19817 additions and 64987 deletions

View File

@@ -116,7 +116,7 @@
"index_web_pages_for_search": 1,
"links": [],
"make_attachments_public": 1,
"modified": "2023-09-29 17:03:30.825021",
"modified": "2024-02-01 23:14:17.444811",
"modified_by": "Administrator",
"module": "Job",
"name": "Job Opportunity",
@@ -137,15 +137,23 @@
"write": 1
},
{
"create": 1,
"email": 1,
"export": 1,
"if_owner": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "LMS Student",
"select": 1,
"share": 1
},
{
"create": 1,
"email": 1,
"export": 1,
"if_owner": 1,
"print": 1,
"report": 1,
"role": "LMS Student",
"share": 1,
"write": 1
}

View File

@@ -218,3 +218,24 @@ def validate_billing_access(type, name):
)
return {"access": access, "message": message, "address": address}
@frappe.whitelist(allow_guest=True)
def get_job_details(job):
return frappe.db.get_value(
"Job Opportunity",
job,
["job_title", "location", "type", "company_name", "company_logo", "name", "creation"],
as_dict=1,
)
@frappe.whitelist(allow_guest=True)
def get_job_opportunities():
jobs = frappe.get_all(
"Job Opportunity",
{"status": "Open", "disabled": False},
["job_title", "location", "type", "company_name", "company_logo", "name", "creation"],
order_by="creation desc",
)
return jobs

View File

@@ -1726,14 +1726,3 @@ def get_order_summary(doctype, docname, country=None):
details.total_amount_formatted = fmt_money(details.amount, 0, details.currency)
return details
@frappe.whitelist(allow_guest=True)
def get_job_opportunities():
jobs = frappe.get_all(
"Job Opportunity",
{"status": "Open", "disabled": False},
["job_title", "location", "type", "company_name", "company_logo", "name", "creation"],
order_by="creation desc",
)
return jobs

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,73 +1,73 @@
import {
a as k,
j as B,
W as $,
d as x,
j as C,
x as n,
y as u,
A as f,
B as _,
H as s,
U as M,
G as t,
a8 as N,
I as o,
J as e,
F as l,
y as h,
A as b,
B as u,
U as N,
I as s,
H as t,
a8 as Y,
J as d,
C as e,
G as r,
a7 as w,
k as Y,
Q as L,
R as T,
X as D,
L as H,
a6 as S,
} from "./frappe-ui-iPT8hMkb.js";
import { b as O, B as C, f as x } from "./index-qZ7Yta4u.js";
import { C as D, a as j } from "./clock-z0R6Od6V.js";
import { _ as R } from "./CourseCard-1i2yp1tI.js";
import "./UserAvatar-nJqmkBPv.js";
import "./star-xishKgdq.js";
const V = { key: 0, class: "shadow rounded-md p-5", style: { width: "300px" } },
A = { key: 2, class: "text-lg font-semibold mb-3" },
E = { class: "flex items-center mb-3" },
F = { class: "flex items-center mb-3" },
I = { class: "flex items-center" },
q = {
k as $,
Q as S,
R as O,
a6 as R,
} from "./frappe-ui-20hnMCM8.js";
import { b as V, B as j, f as M } from "./index-Vx7mSx23.js";
import { C as L, a as T } from "./clock-blcPmEdF.js";
import { _ as E } from "./CourseCard--twQpeIf.js";
import "./UserAvatar-yrWInUTi.js";
import "./star-ypmGZNF0.js";
const A = { key: 0, class: "shadow rounded-md p-5", style: { width: "300px" } },
I = { key: 2, class: "text-lg font-semibold mb-3" },
q = { class: "flex items-center mb-3" },
z = { class: "flex items-center mb-3" },
F = { class: "flex items-center" },
G = {
__name: "BatchOverlay",
props: { batch: { type: Object, default: null } },
setup(c) {
const y = k("$dayjs"),
g = k("$user"),
p = c,
d = B(() => {
var a, v, b, r;
return (a = p.batch.data) != null && a.seat_count
? ((v = p.batch.data) == null ? void 0 : v.seat_count) -
((r =
(b = p.batch.data) == null
const f = x("$dayjs"),
p = x("$user"),
y = c,
i = C(() => {
var a, v, _, l;
return (a = y.batch.data) != null && a.seat_count
? ((v = y.batch.data) == null ? void 0 : v.seat_count) -
((l =
(_ = y.batch.data) == null
? void 0
: b.students) == null
: _.students) == null
? void 0
: r.length)
: l.length)
: null;
});
return (a, v) => {
var r, i, m, h;
const b = $("router-link");
var l, m, o, g;
const _ = D("router-link");
return c.batch.data
? (n(),
u("div", V, [
c.batch.data.seat_count && d.value > 0
h("div", A, [
c.batch.data.seat_count && i.value > 0
? (n(),
f(
t(N),
b(
t(Y),
{
key: 0,
theme: "green",
class: "self-start mb-2 float-right",
},
{
default: _(() => [
M(
s(d.value) +
default: u(() => [
N(
s(i.value) +
" " +
s(a.__("Seat Left")),
1
@@ -76,39 +76,39 @@ const V = { key: 0, class: "shadow rounded-md p-5", style: { width: "300px" } },
_: 1,
}
))
: c.batch.data.seat_count && d.value <= 0
: c.batch.data.seat_count && i.value <= 0
? (n(),
f(
t(N),
b(
t(Y),
{
key: 1,
theme: "red",
class: "self-start mb-2 float-right",
},
{
default: _(() => [
M(s(a.__("Sold Out")), 1),
default: u(() => [
N(s(a.__("Sold Out")), 1),
]),
_: 1,
}
))
: o("", !0),
: d("", !0),
c.batch.data.amount
? (n(),
u(
h(
"div",
A,
I,
s(
t(O)(
t(V)(
c.batch.data.amount,
c.batch.data.currency
)
),
1
))
: o("", !0),
e("div", E, [
l(t(C), {
: d("", !0),
e("div", q, [
r(t(j), {
class: "h-4 w-4 stroke-1.5 mr-2 text-gray-700",
}),
e(
@@ -120,45 +120,45 @@ const V = { key: 0, class: "shadow rounded-md p-5", style: { width: "300px" } },
1
),
]),
e("div", F, [
l(t(D), {
e("div", z, [
r(t(L), {
class: "h-4 w-4 stroke-1.5 mr-2 text-gray-700",
}),
e(
"span",
null,
s(
t(y)(c.batch.data.start_date).format(
t(f)(c.batch.data.start_date).format(
"DD MMM YYYY"
)
) +
" - " +
s(
t(y)(c.batch.data.end_date).format(
t(f)(c.batch.data.end_date).format(
"DD MMM YYYY"
)
),
1
),
]),
e("div", I, [
l(t(j), {
e("div", F, [
r(t(T), {
class: "h-4 w-4 stroke-1.5 mr-2 text-gray-700",
}),
e(
"span",
null,
s(t(x)(c.batch.data.start_time)) +
s(t(M)(c.batch.data.start_time)) +
" - " +
s(t(x)(c.batch.data.end_time)),
s(t(M)(c.batch.data.end_time)),
1
),
]),
(i = (r = t(g)) == null ? void 0 : r.data) !=
null && i.is_moderator
(m = (l = t(p)) == null ? void 0 : l.data) !=
null && m.is_moderator
? (n(),
f(
b,
b(
_,
{
key: 3,
to: {
@@ -170,15 +170,15 @@ const V = { key: 0, class: "shadow rounded-md p-5", style: { width: "300px" } },
},
},
{
default: _(() => [
l(
default: u(() => [
r(
t(w),
{
variant: "solid",
class: "w-full mt-4",
},
{
default: _(() => [
default: u(() => [
e(
"span",
null,
@@ -201,34 +201,73 @@ const V = { key: 0, class: "shadow rounded-md p-5", style: { width: "300px" } },
))
: c.batch.data.paid_batch
? (n(),
f(
t(w),
b(
_,
{
key: 4,
class: "w-full mt-4",
variant: "solid",
to: {
name: "Billing",
params: {
type: "batch",
name: c.batch.data.name,
},
},
},
{
default: _(() => [
e(
"span",
null,
s(a.__("Register Now")),
1
default: u(() => [
r(
t(w),
{
class: "w-full mt-4",
variant: "solid",
},
{
default: u(() => [
e(
"span",
null,
s(
a.__(
"Register Now"
)
),
1
),
]),
_: 1,
}
),
]),
_: 1,
},
8,
["to"]
))
: c.batch.data.allow_self_enrollment
? (n(),
b(
t(w),
{
key: 5,
variant: "solid",
class: "w-full mt-2",
},
{
default: u(() => [
N(s(a.__("Enroll Now")), 1),
]),
_: 1,
}
))
: o("", !0),
(h = (m = t(g)) == null ? void 0 : m.data) !=
null && h.is_moderator
: d("", !0),
(g = (o = t(p)) == null ? void 0 : o.data) !=
null && g.is_moderator
? (n(),
f(
b(
t(w),
{ key: 5, class: "w-full mt-2" },
{ key: 6, class: "w-full mt-2" },
{
default: _(() => [
default: u(() => [
e(
"span",
null,
@@ -239,128 +278,138 @@ const V = { key: 0, class: "shadow rounded-md p-5", style: { width: "300px" } },
_: 1,
}
))
: o("", !0),
: d("", !0),
]))
: o("", !0);
: d("", !0);
};
},
},
z = { key: 0, class: "h-screen text-base" },
G = { class: "sticky top-0 z-10 border-b bg-white px-3 py-2.5 sm:px-5" },
J = { class: "m-5 pb-10" },
Q = { class: "text-3xl font-semibold" },
U = { class: "my-3" },
W = { class: "flex items-center justify-between w-1/2" },
K = { class: "flex items-center" },
P = { key: 0 },
X = { class: "flex items-center" },
Z = { key: 1 },
J = { key: 0, class: "h-screen text-base" },
Q = { class: "sticky top-0 z-10 border-b bg-white px-3 py-2.5 sm:px-5" },
U = { class: "m-5 pb-10" },
X = { class: "text-3xl font-semibold" },
K = { class: "my-3" },
P = { class: "flex items-center justify-between w-1/2" },
W = { class: "flex items-center" },
Z = { key: 0 },
tt = { class: "flex items-center" },
at = { class: "grid grid-cols-[60%,20%] gap-20 mt-10" },
et = { class: "" },
st = ["innerHTML"],
ct = { class: "text-2xl font-semibold" },
nt = { class: "grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-8 mt-5" },
rt = { key: 0 },
lt = ["innerHTML"],
_t = {
at = { key: 1 },
et = { class: "flex items-center" },
st = { class: "grid grid-cols-[60%,20%] gap-20 mt-10" },
ct = { class: "" },
nt = ["innerHTML"],
lt = { class: "text-2xl font-semibold" },
rt = { class: "grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-8 mt-5" },
ot = { key: 0 },
dt = ["innerHTML"],
ft = {
__name: "BatchDetail",
props: { batchName: { type: String, required: !0 } },
setup(c) {
const y = k("$dayjs"),
g = k("$user"),
p = H(),
d = c,
a = Y({
const f = x("$dayjs"),
p = x("$user"),
y = H(),
i = c,
a = $({
url: "lms.lms.utils.get_batch_details",
cache: ["batch", d.batchName],
params: { batch: d.batchName },
cache: ["batch", i.batchName],
params: { batch: i.batchName },
auto: !0,
onSuccess(r) {
var i;
(i = r.students) != null &&
i.includes(g.data.name) &&
p.push({
onSuccess(l) {
var m, o;
(o = l.students) != null &&
o.includes(
(m = p.data) == null ? void 0 : m.name
) &&
y.push({
name: "Batch",
params: { batchName: d.batchName },
params: { batchName: i.batchName },
});
},
}),
v = Y({
v = $({
url: "lms.lms.utils.get_batch_courses",
params: { batch: d.batchName },
cache: ["batchCourses", d.batchName],
params: { batch: i.batchName },
cache: ["batchCourses", i.batchName],
auto: !0,
}),
b = B(() => {
var i, m;
let r = [
_ = C(() => {
var m, o;
let l = [
{ label: "All Batches", route: { name: "Batches" } },
];
return (
r.push({
l.push({
label:
(i = a == null ? void 0 : a.data) == null
(m = a == null ? void 0 : a.data) == null
? void 0
: i.title,
: m.title,
route: {
name: "BatchDetail",
params: {
batchName:
(m = a == null ? void 0 : a.data) ==
(o = a == null ? void 0 : a.data) ==
null
? void 0
: m.name,
: o.name,
},
},
}),
r
l
);
});
return (r, i) => {
const m = $("router-link");
return (l, m) => {
var g, B;
const o = D("router-link");
return t(a).data
? (n(),
u("div", z, [
e("header", G, [
l(t(S), { items: b.value }, null, 8, ["items"]),
h("div", J, [
e("header", Q, [
r(t(R), { items: _.value }, null, 8, ["items"]),
]),
e("div", J, [
e("div", U, [
e("div", null, [
e("div", Q, s(t(a).data.title), 1),
e("div", U, s(t(a).data.description), 1),
e("div", W, [
e("div", K, [
l(t(C), {
class: "h-4 w-4 text-gray-700 mr-2",
}),
e(
"span",
null,
s(t(a).data.courses.length) +
" " +
s(r.__("Courses")),
1
),
]),
t(a).data.courses
? (n(), u("span", P, "·"))
: o("", !0),
e("div", X, [
l(t(D), {
e("div", X, s(t(a).data.title), 1),
e("div", K, s(t(a).data.description), 1),
e("div", P, [
e("div", W, [
r(t(j), {
class: "h-4 w-4 text-gray-700 mr-2",
}),
e(
"span",
null,
s(
t(y)(
(B =
(g = t(a).data) == null
? void 0
: g.courses) == null
? void 0
: B.length
) +
" " +
s(l.__("Courses")),
1
),
]),
t(a).data.courses
? (n(), h("span", Z, "·"))
: d("", !0),
e("div", tt, [
r(t(L), {
class: "h-4 w-4 text-gray-700 mr-2",
}),
e(
"span",
null,
s(
t(f)(
t(a).data.start_date
).format("DD MMM YYYY")
) +
" - " +
s(
t(y)(
t(f)(
t(a).data.end_date
).format("DD MMM YYYY")
),
@@ -368,25 +417,25 @@ const V = { key: 0, class: "shadow rounded-md p-5", style: { width: "300px" } },
),
]),
t(a).data.start_date
? (n(), u("span", Z, "·"))
: o("", !0),
e("div", tt, [
l(t(j), {
? (n(), h("span", at, "·"))
: d("", !0),
e("div", et, [
r(t(T), {
class: "h-4 w-4 text-gray-700 mr-2",
}),
e(
"span",
null,
s(t(x)(t(a).data.start_time)) +
s(t(M)(t(a).data.start_time)) +
" - " +
s(t(x)(t(a).data.end_time)),
s(t(M)(t(a).data.end_time)),
1
),
]),
]),
]),
e("div", at, [
e("div", et, [
e("div", st, [
e("div", ct, [
e(
"div",
{
@@ -396,54 +445,54 @@ const V = { key: 0, class: "shadow rounded-md p-5", style: { width: "300px" } },
},
null,
8,
st
nt
),
]),
e("div", null, [
l(q, { batch: t(a) }, null, 8, [
r(G, { batch: t(a) }, null, 8, [
"batch",
]),
]),
]),
e("div", null, [
e("div", ct, s(r.__("Courses")), 1),
e("div", nt, [
e("div", lt, s(l.__("Courses")), 1),
e("div", rt, [
t(a).data.courses
? (n(!0),
u(
L,
h(
S,
{ key: 0 },
T(
O(
t(v).data,
(h) => (
(k) => (
n(),
u(
h(
"div",
{
key: h.course,
key: k.course,
},
[
l(
m,
r(
o,
{
to: {
name: "CourseDetail",
params: {
courseName:
h.name,
k.name,
},
},
},
{
default:
_(
u(
() => [
(n(),
f(
R,
b(
E,
{
course: h,
key: h.name,
course: k,
key: k.name,
},
null,
8,
@@ -464,11 +513,11 @@ const V = { key: 0, class: "shadow rounded-md p-5", style: { width: "300px" } },
),
128
))
: o("", !0),
: d("", !0),
]),
t(a).data.batch_details_raw
? (n(),
u("div", rt, [
h("div", ot, [
e(
"div",
{
@@ -479,16 +528,16 @@ const V = { key: 0, class: "shadow rounded-md p-5", style: { width: "300px" } },
},
null,
8,
lt
dt
),
]))
: o("", !0),
: d("", !0),
]),
]),
]))
: o("", !0);
: d("", !0);
};
},
};
export { _t as default };
//# sourceMappingURL=BatchDetail-MDvOC8VN.js.map
export { ft as default };
//# sourceMappingURL=BatchDetail-Y5ojGFjm.js.map

File diff suppressed because one or more lines are too long

View File

@@ -1,31 +1,31 @@
import {
a as C,
d as C,
x as n,
y as u,
A as g,
B as h,
H as t,
U as f,
G as c,
I as t,
H as o,
a8 as x,
I as y,
J as a,
F as i,
k as Y,
r as j,
J as y,
C as a,
G as i,
k as N,
r as Y,
j as m,
C as $,
M as D,
a6 as j,
a7 as D,
F as $,
N as V,
Q as M,
R as N,
W as V,
a6 as z,
a7 as A,
a9 as L,
} from "./frappe-ui-iPT8hMkb.js";
import { B as O, f as B } from "./index-qZ7Yta4u.js";
import { C as P, a as S } from "./clock-z0R6Od6V.js";
import { P as U } from "./plus-_m-8cMp1.js";
R as z,
a9 as A,
X as L,
} from "./frappe-ui-20hnMCM8.js";
import { B as O, f as B } from "./index-Vx7mSx23.js";
import { C as P, a as S } from "./clock-blcPmEdF.js";
import { P as U } from "./plus-pxSjkL_w.js";
const E = {
class: "flex flex-col border border-gray-200 rounded-md p-4 h-full",
style: { "min-height": "150px" },
@@ -42,13 +42,13 @@ const E = {
props: { batch: { type: Object, default: null } },
setup(s) {
const d = C("$dayjs");
return (o, v) => (
return (c, v) => (
n(),
u("div", E, [
s.batch.seat_count && s.batch.seats_left > 0
? (n(),
g(
c(x),
o(x),
{
key: 0,
theme: "green",
@@ -59,7 +59,7 @@ const E = {
f(
t(s.batch.seats_left) +
" " +
t(o.__("Seat Left")),
t(c.__("Seat Left")),
1
),
]),
@@ -69,7 +69,7 @@ const E = {
: s.batch.seat_count && s.batch.seats_left <= 0
? (n(),
g(
c(x),
o(x),
{
key: 1,
theme: "red",
@@ -77,7 +77,7 @@ const E = {
},
{
default: h(() => [
f(t(o.__("Sold Out")), 1),
f(t(c.__("Sold Out")), 1),
]),
_: 1,
}
@@ -90,7 +90,7 @@ const E = {
? (n(), u("div", T, t(s.batch.price), 1))
: y("", !0),
a("div", G, [
i(c(O), {
i(o(O), {
class: "h-4 w-4 stroke-1.5 mr-2 text-gray-700",
}),
a(
@@ -98,25 +98,25 @@ const E = {
null,
t(s.batch.courses.length) +
" " +
t(o.__("Courses")),
t(c.__("Courses")),
1
),
]),
a("div", H, [
i(c(P), {
i(o(P), {
class: "h-4 w-4 stroke-1.5 mr-2 text-gray-700",
}),
a(
"span",
null,
t(
c(d)(s.batch.start_date).format(
o(d)(s.batch.start_date).format(
"DD MMM YYYY"
)
) +
" - " +
t(
c(d)(s.batch.end_date).format(
o(d)(s.batch.end_date).format(
"DD MMM YYYY"
)
),
@@ -124,15 +124,15 @@ const E = {
),
]),
a("div", J, [
i(c(S), {
i(o(S), {
class: "h-4 w-4 stroke-1.5 mr-2 text-gray-700",
}),
a(
"span",
null,
t(c(B)(s.batch.start_time)) +
t(o(B)(s.batch.start_time)) +
" - " +
t(c(B)(s.batch.end_time)),
t(o(B)(s.batch.end_time)),
1
),
]),
@@ -141,27 +141,27 @@ const E = {
);
},
},
W = { class: "h-screen text-base" },
X = { class: "h-screen text-base" },
q = {
class: "sticky top-0 z-10 flex items-center justify-between border-b bg-white px-3 py-2.5 sm:px-5",
},
K = { class: "flex" },
X = { class: "mx-5 py-5" },
W = { class: "pb-5" },
Z = {
key: 0,
class: "grid grid-cols-1 sm:grid-cols-3 md:grid-cols-4 gap-8 mt-5",
class: "grid grid-cols-1 sm:grid-cols-3 md:grid-cols-4 gap-5 mt-5 mx-5",
},
ee = {
key: 1,
class: "grid flex-1 place-items-center text-xl font-medium text-gray-500",
},
te = { class: "flex flex-col items-center justify-center mt-4" },
oe = {
ce = {
__name: "Batches",
setup(s) {
var p, k;
const d = C("$user"),
o = Y({
c = N({
url: "lms.lms.utils.get_batches",
cache: [
"batches",
@@ -171,21 +171,21 @@ const E = {
],
auto: !0,
}),
v = j(0),
v = Y(0),
_ = [
{
label: "Upcoming",
batches: m(() => {
var e;
return (
((e = o.data) == null ? void 0 : e.upcoming) ||
((e = c.data) == null ? void 0 : e.upcoming) ||
[]
);
}),
count: m(() => {
var e, l;
return (l =
(e = o.data) == null ? void 0 : e.upcoming) ==
(e = c.data) == null ? void 0 : e.upcoming) ==
null
? void 0
: l.length;
@@ -199,12 +199,12 @@ const E = {
label: "Archived",
batches: m(() => {
var e;
return (e = o.data) == null ? void 0 : e.archived;
return (e = c.data) == null ? void 0 : e.archived;
}),
count: m(() => {
var e, l;
return (l =
(e = o.data) == null ? void 0 : e.archived) ==
(e = c.data) == null ? void 0 : e.archived) ==
null
? void 0
: l.length;
@@ -214,12 +214,12 @@ const E = {
label: "Private",
batches: m(() => {
var e;
return (e = o.data) == null ? void 0 : e.private;
return (e = c.data) == null ? void 0 : e.private;
}),
count: m(() => {
var e, l;
return (l =
(e = o.data) == null ? void 0 : e.private) ==
(e = c.data) == null ? void 0 : e.private) ==
null
? void 0
: l.length;
@@ -230,25 +230,25 @@ const E = {
label: "Enrolled",
batches: m(() => {
var e;
return (e = o.data) == null ? void 0 : e.enrolled;
return (e = c.data) == null ? void 0 : e.enrolled;
}),
count: m(() => {
var e, l;
return (l =
(e = o.data) == null ? void 0 : e.enrolled) ==
(e = c.data) == null ? void 0 : e.enrolled) ==
null
? void 0
: l.length;
}),
}),
(e, l) => {
const w = V("router-link");
const w = L("router-link");
return (
n(),
u("div", W, [
u("div", X, [
a("header", q, [
i(
c(z),
o(j),
{
class: "h-7",
items: [
@@ -264,11 +264,11 @@ const E = {
),
a("div", K, [
i(
c(A),
o(D),
{ variant: "solid" },
{
prefix: h(() => [
i(c(U), { class: "h-4 w-4" }),
i(o(U), { class: "h-4 w-4" }),
]),
default: h(() => [
f(
@@ -281,16 +281,16 @@ const E = {
),
]),
]),
a("div", X, [
a("div", W, [
i(
c(L),
o(A),
{
class: "overflow-hidden",
modelValue: v.value,
"onUpdate:modelValue":
l[0] ||
(l[0] = (r) => (v.value = r)),
tabs: _,
tablistClass: "overflow-x-visible",
},
{
tab: h(({ tab: r, selected: b }) => [
@@ -309,7 +309,7 @@ const E = {
[
r.icon
? (n(),
g(D(r.icon), {
g(V(r.icon), {
key: 0,
class: "h-5",
}))
@@ -325,12 +325,13 @@ const E = {
1
),
i(
c(x),
o(x),
{
class: $({
"text-gray-900 border border-gray-900":
b,
}),
class: $(
b
? "text-gray-800 border border-gray-800"
: "border border-gray-500"
),
variant:
"subtle",
theme: "gray",
@@ -365,7 +366,7 @@ const E = {
u(
M,
null,
N(
z(
r.batches.value,
(b) => (
n(),
@@ -439,5 +440,5 @@ const E = {
);
},
};
export { oe as default };
//# sourceMappingURL=Batches-gDWZzuli.js.map
export { ce as default };
//# sourceMappingURL=Batches-P9EN0hZ-.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,781 @@
import {
x as c,
y as _,
C as s,
U as x,
I as o,
G as d,
B as L,
H as n,
a7 as P,
d as T,
s as j,
k as f,
a as z,
F as I,
J as b,
am as u,
} from "./frappe-ui-20hnMCM8.js";
import { _ as S } from "./Link-Z_9V94MR.js";
import { c as V } from "./index-Vx7mSx23.js";
import "./plus-pxSjkL_w.js";
const E = { class: "text-base border rounded-md w-1/3 mx-auto my-32" },
G = { class: "border-b px-5 py-3 font-medium" },
R = s(
"span",
{
class: "inline-flex items-center before:bg-red-600 before:w-2 before:h-2 before:rounded-md before:mr-2",
},
null,
-1
),
D = { class: "px-5 py-3" },
H = { class: "mb-4 leading-6" },
C = {
__name: "NotPermitted",
props: {
title: { type: String, default: "Not Permitted" },
text: {
type: String,
default: "You are not permitted to access this page.",
},
buttonLabel: { type: String, default: "Login" },
buttonLink: { type: String, default: "/login" },
},
setup(m) {
const v = m,
r = () => {
window.location.href = v.buttonLink;
};
return (p, i) => (
c(),
_("div", E, [
s("div", G, [R, x(" " + o(p.__(m.title)), 1)]),
s("div", D, [
s("div", H, o(p.__(m.text)), 1),
d(
n(P),
{
variant: "solid",
class: "w-full",
onClick: i[0] || (i[0] = (t) => r()),
},
{
default: L(() => [
x(o(p.__(m.buttonLabel)), 1),
]),
_: 1,
}
),
]),
])
);
},
},
q = { class: "text-base h-screen" },
F = { key: 0, class: "mt-10 w-1/2 mx-auto" },
J = { class: "text-3xl font-bold" },
K = { class: "text-gray-600 mt-1" },
O = { class: "border rounded-md p-5 mt-5" },
W = { class: "text-xl font-semibold" },
Y = { class: "text-gray-600 mt-1" },
Q = { class: "mt-5" },
X = { class: "flex items-center justify-between" },
Z = { key: 0, class: "flex items-center justify-between mt-2" },
ee = { key: 1, class: "flex items-center justify-between mt-2" },
te = { class: "font-semibold text-2xl" },
se = { class: "text-xl font-semibold mt-10" },
ae = { class: "text-gray-600 mt-1" },
oe = { class: "grid grid-cols-2 gap-5 mt-4" },
ne = { class: "mt-4" },
le = { class: "mb-1.5 text-sm text-gray-700" },
ie = { class: "mt-4" },
de = { class: "mb-1.5 text-sm text-gray-700" },
re = { class: "mt-4" },
me = { class: "mb-1.5 text-sm text-gray-700" },
ue = { class: "mt-4" },
ce = { class: "mb-1.5 text-sm text-gray-700" },
_e = { class: "mt-4" },
pe = { class: "mb-1.5 text-sm text-gray-700" },
ye = { class: "mt-4" },
he = { class: "mb-1.5 text-sm text-gray-700" },
ge = { class: "mt-4" },
be = { class: "mb-1.5 text-sm text-gray-700" },
ve = { class: "mt-4" },
fe = { class: "mb-1.5 text-sm text-gray-700" },
xe = { class: "mt-4" },
ke = { class: "mb-1.5 text-sm text-gray-700" },
Se = { key: 0, class: "mt-4" },
Ve = { class: "mb-1.5 text-sm text-gray-700" },
Ce = { key: 1, class: "mt-4" },
Le = { class: "mb-1.5 text-sm text-gray-700" },
Pe = { key: 1 },
we = { key: 2 },
Ne = {
__name: "Billing",
props: {
type: { type: String, required: !0 },
name: { type: String, required: !0 },
},
setup(m) {
const v = T("$user");
j(() => {
var a;
const e = document.createElement("script");
(e.src = "https://checkout.razorpay.com/v1/checkout.js"),
document.body.appendChild(e),
(a = v.data) != null && a.name && p.submit();
});
const r = m,
p = f({
url: "lms.lms.api.validate_billing_access",
params: { type: r.type, name: r.name },
onSuccess(e) {
i.submit(), w(e.address);
},
}),
i = f({
url: "lms.lms.utils.get_order_summary",
makeParams(e) {
return {
doctype:
r.type == "course" ? "LMS Course" : "LMS Batch",
docname: r.name,
country: t.country,
};
},
onError(e) {
k(e);
},
}),
t = z({}),
w = (e) => {
(t.billing_name = e.billing_name || ""),
(t.address_line1 = e.address_line1 || ""),
(t.address_line2 = e.address_line2 || ""),
(t.city = e.city || ""),
(t.state = e.state || ""),
(t.country = e.country || ""),
(t.pincode = e.pincode || ""),
(t.phone = e.phone || ""),
(t.source = e.source || ""),
(t.gstin = e.gstin || ""),
(t.pan = e.pan || "");
},
B = f({
url: "lms.lms.utils.get_payment_options",
makeParams(e) {
return {
doctype:
r.type == "course" ? "LMS Course" : "LMS Batch",
docname: r.name,
phone: t.phone,
country: t.country,
};
},
}),
M = () => {
B.submit(
{},
{
validate(e) {
return N();
},
onSuccess(e) {
(e.handler = (y) => {
let h =
r.type == "course"
? "LMS Course"
: "LMS Batch",
g = r.name;
$(y, h, g, e.order_id);
}),
new Razorpay(e).open();
},
onError(e) {
k(e);
},
}
);
},
U = f({
url: "lms.lms.utils.verify_payment",
makeParams(e) {
return {
response: e.response,
doctype:
r.type == "course" ? "LMS Course" : "LMS Batch",
docname: r.name,
address: t,
order_id: e.orderId,
};
},
}),
$ = (e, a, y, h) => {
U.submit(
{ response: e, orderId: h },
{
onSuccess(g) {
V({
title: "Success",
text: "Payment Successful",
icon: "check",
iconClasses:
"bg-green-600 text-white rounded-md p-px",
}),
setTimeout(() => {
window.location.href = g;
}, 3e3);
},
}
);
},
N = () => {
let e = [
"billing_name",
"address_line1",
"city",
"pincode",
"country",
"phone",
"source",
];
for (let y of e)
if (!t[y])
return (
"Please enter a valid " +
y
.replaceAll("_", " ")
.toLowerCase()
.replace(/\b\w/g, (h) => h.toUpperCase())
);
if (t.gstin && !t.pan)
return "Please enter a valid pan number.";
if (t.country == "India" && !t.state)
return "Please enter a valid state with correct spelling and the first letter capitalized.";
const a = [
"Andhra Pradesh",
"Arunachal Pradesh",
"Assam",
"Bihar",
"Chhattisgarh",
"Goa",
"Gujarat",
"Haryana",
"Himachal Pradesh",
"Jharkhand",
"Karnataka",
"Kerala",
"Madhya Pradesh",
"Maharashtra",
"Manipur",
"Meghalaya",
"Mizoram",
"Nagaland",
"Odisha",
"Punjab",
"Rajasthan",
"Sikkim",
"Tamil Nadu",
"Telangana",
"Tripura",
"Uttar Pradesh",
"Uttarakhand",
"West Bengal",
];
if (t.country == "India" && !a.includes(t.state))
return "Please enter a valid state with correct spelling and the first letter capitalized.";
},
k = (e) => {
var a;
V({
title: "Error",
text: ((a = e.messages) == null ? void 0 : a[0]) || e,
icon: "x",
iconClasses: "bg-red-600 text-white rounded-md p-px",
position: "top-center",
timeout: 10,
});
},
A = (e) => {
(t.country = e), i.reload();
};
return (e, a) => {
var y, h, g;
return (
c(),
_("div", q, [
(y = n(p).data) != null && y.access && n(i).data
? (c(),
_("div", F, [
s("div", J, o(e.__("Billing Details")), 1),
s(
"div",
K,
o(
e.__(
"Enter the billing information to complete the payment."
)
),
1
),
s("div", O, [
s("div", W, o(e.__("Summary")), 1),
s(
"div",
Y,
o(
e.__(
"Review the details of your purchase."
)
),
1
),
s("div", Q, [
s("div", X, [
s(
"div",
null,
o(n(i).data.title),
1
),
s(
"div",
{
class: I({
"font-semibold text-xl":
!n(i).data
.gst_applied,
}),
},
o(
n(i).data.gst_applied
? n(i).data
.original_amount_formatted
: n(i).data
.total_amount_formatted
),
3
),
]),
n(i).data.gst_applied
? (c(),
_("div", Z, [
s(
"div",
null,
o(
e.__(
"GST Amount"
)
),
1
),
s(
"div",
null,
o(
n(i).data
.gst_amount_formatted
),
1
),
]))
: b("", !0),
n(i).data.gst_applied
? (c(),
_("div", ee, [
s(
"div",
null,
o(
e.__(
"Total Amount"
)
),
1
),
s(
"div",
te,
o(
n(i).data
.total_amount_formatted
),
1
),
]))
: b("", !0),
]),
s("div", se, o(e.__("Address")), 1),
s(
"div",
ae,
o(
e.__(
"Specify your billing address correctly."
)
),
1
),
s("div", oe, [
s("div", null, [
s("div", ne, [
s(
"div",
le,
o(e.__("Billing Name")),
1
),
d(
n(u),
{
type: "text",
modelValue:
t.billing_name,
"onUpdate:modelValue":
a[0] ||
(a[0] = (l) =>
(t.billing_name =
l)),
},
null,
8,
["modelValue"]
),
]),
s("div", ie, [
s(
"div",
de,
o(
e.__(
"Address Line 1"
)
),
1
),
d(
n(u),
{
type: "text",
modelValue:
t.address_line1,
"onUpdate:modelValue":
a[1] ||
(a[1] = (l) =>
(t.address_line1 =
l)),
},
null,
8,
["modelValue"]
),
]),
s("div", re, [
s(
"div",
me,
o(
e.__(
"Address Line 2"
)
),
1
),
d(
n(u),
{
type: "text",
modelValue:
t.address_line2,
"onUpdate:modelValue":
a[2] ||
(a[2] = (l) =>
(t.address_line2 =
l)),
},
null,
8,
["modelValue"]
),
]),
s("div", ue, [
s(
"div",
ce,
o(e.__("City")),
1
),
d(
n(u),
{
type: "text",
modelValue: t.city,
"onUpdate:modelValue":
a[3] ||
(a[3] = (l) =>
(t.city =
l)),
},
null,
8,
["modelValue"]
),
]),
s("div", _e, [
s(
"div",
pe,
o(e.__("State")),
1
),
d(
n(u),
{
type: "text",
modelValue: t.state,
"onUpdate:modelValue":
a[4] ||
(a[4] = (l) =>
(t.state =
l)),
},
null,
8,
["modelValue"]
),
]),
]),
s("div", null, [
s("div", ye, [
s(
"div",
he,
o(e.__("Country")),
1
),
d(
S,
{
doctype: "Country",
value: t.country,
onChange:
a[5] ||
(a[5] = (l) =>
A(l)),
},
null,
8,
["value"]
),
]),
s("div", ge, [
s(
"div",
be,
o(e.__("Postal Code")),
1
),
d(
n(u),
{
type: "text",
modelValue:
t.pincode,
"onUpdate:modelValue":
a[6] ||
(a[6] = (l) =>
(t.pincode =
l)),
},
null,
8,
["modelValue"]
),
]),
s("div", ve, [
s(
"div",
fe,
o(e.__("Phone Number")),
1
),
d(
n(u),
{
type: "text",
modelValue: t.phone,
"onUpdate:modelValue":
a[7] ||
(a[7] = (l) =>
(t.phone =
l)),
},
null,
8,
["modelValue"]
),
]),
s("div", xe, [
s(
"div",
ke,
o(e.__("Source")),
1
),
d(
S,
{
doctype:
"LMS Source",
value: t.source,
onChange:
a[8] ||
(a[8] = (l) =>
(t.source =
l)),
},
null,
8,
["value"]
),
]),
t.country == "India"
? (c(),
_("div", Se, [
s(
"div",
Ve,
o(
e.__(
"GST Number"
)
),
1
),
d(
n(u),
{
type: "text",
modelValue:
t.gstin,
"onUpdate:modelValue":
a[9] ||
(a[9] =
(
l
) =>
(t.gstin =
l)),
},
null,
8,
["modelValue"]
),
]))
: b("", !0),
t.country == "India"
? (c(),
_("div", Ce, [
s(
"div",
Le,
o(
e.__(
"Pan Number"
)
),
1
),
d(
n(u),
{
type: "text",
modelValue:
t.pan,
"onUpdate:modelValue":
a[10] ||
(a[10] =
(
l
) =>
(t.pan =
l)),
},
null,
8,
["modelValue"]
),
]))
: b("", !0),
]),
]),
d(
n(P),
{
variant: "solid",
class: "mt-8",
onClick:
a[11] ||
(a[11] = (l) => M()),
},
{
default: L(() => [
x(
o(
e.__(
"Proceed to Payment"
)
),
1
),
]),
_: 1,
}
),
]),
]))
: (h = n(p).data) != null && h.message
? (c(),
_("div", Pe, [
d(
C,
{
text: n(p).data.message,
buttonLabel:
m.type == "course"
? "Checkout Courses"
: "Checkout Batches",
buttonLink:
m.type == "course"
? "/courses"
: "/batches",
},
null,
8,
["text", "buttonLabel", "buttonLink"]
),
]))
: (g = n(v).data) != null && g.name
? b("", !0)
: (c(),
_("div", we, [
d(
C,
{
text: "Please login to access this page.",
buttonLink: `/login?redirect-to=/billing/${m.type}/${m.name}`,
},
null,
8,
["buttonLink"]
),
])),
])
);
};
},
};
export { Ne as default };
//# sourceMappingURL=Billing-bj16mAfD.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,366 @@
import { _ as b } from "./UserAvatar-yrWInUTi.js";
import { s as w, B, U as _ } from "./index-Vx7mSx23.js";
import {
x as t,
y as o,
C as r,
Q as h,
R as f,
A as g,
B as n,
U as v,
I as s,
H as c,
a8 as x,
J as a,
F as y,
V as k,
G as l,
T as d,
} from "./frappe-ui-20hnMCM8.js";
import { S as C } from "./star-ypmGZNF0.js";
const S = {
key: 0,
class: "flex flex-col h-full rounded-md shadow-md text-base overflow-auto",
style: { "min-height": "320px" },
},
U = { class: "flex relative top-4 left-4 w-fit" },
V = { key: 0, class: "image-placeholder" },
z = { class: "flex flex-col flex-auto p-4" },
N = { class: "flex items-center justify-between mb-2" },
R = { key: 0 },
j = { key: 1 },
A = { key: 2 },
I = { key: 3 },
T = { class: "text-xl font-semibold" },
E = { class: "short-introduction" },
F = { key: 0, class: "w-full bg-gray-200 rounded-full h-1 mb-2" },
L = { key: 1, class: "text-sm mb-4" },
M = { class: "flex items-center justify-between mt-auto" },
O = { class: "flex avatar-group overlap" },
$ = { key: 0 },
D = { key: 1 },
G = { key: 2 },
H = { class: "font-semibold" },
W = {
__name: "CourseCard",
props: { course: { type: Object, default: null } },
setup(e) {
const { user: m } = w();
return (u, J) =>
e.course.title
? (t(),
o("div", S, [
r(
"div",
{
class: y([
"course-image",
{ "default-image": !e.course.image },
]),
style: k({
backgroundImage:
"url(" +
encodeURI(e.course.image) +
")",
}),
},
[
r("div", U, [
(t(!0),
o(
h,
null,
f(
e.course.tags,
(i) => (
t(),
g(
c(x),
{
theme: "gray",
size: "lg",
class: "mr-2",
},
{
default: n(() => [
v(s(i), 1),
]),
_: 2,
},
1024
)
)
),
256
)),
]),
e.course.image
? a("", !0)
: (t(),
o("div", V, s(e.course.title[0]), 1)),
],
6
),
r("div", z, [
r("div", N, [
e.course.lesson_count
? (t(),
o("div", R, [
l(
c(d),
{
text: u.__("Lessons"),
class: "flex items-center space-x-1 py-1",
},
{
default: n(() => [
l(c(B), {
class: "h-4 w-4 stroke-1.5 text-gray-700",
}),
r(
"span",
null,
s(
e.course
.lesson_count
),
1
),
]),
_: 1,
},
8,
["text"]
),
]))
: a("", !0),
e.course.enrollment_count
? (t(),
o("div", j, [
l(
c(d),
{
text: u.__(
"Enrolled Students"
),
class: "flex items-center space-x-1 py-1",
},
{
default: n(() => [
l(c(_), {
class: "h-4 w-4 stroke-1.5 text-gray-700",
}),
r(
"span",
null,
s(
e.course
.enrollment_count
),
1
),
]),
_: 1,
},
8,
["text"]
),
]))
: a("", !0),
e.course.avg_rating
? (t(),
o("div", A, [
l(
c(d),
{
text: u.__(
"Average Rating"
),
class: "flex items-center space-x-1 py-1",
},
{
default: n(() => [
l(c(C), {
class: "h-4 w-4 stroke-1.5 text-gray-700",
}),
r(
"span",
null,
s(
e.course
.avg_rating
),
1
),
]),
_: 1,
},
8,
["text"]
),
]))
: a("", !0),
e.course.status != "Approved"
? (t(),
o("div", I, [
l(
c(x),
{
variant: "solid",
theme:
e.course.status ===
"Under Review"
? "orange"
: "blue",
size: "sm",
},
{
default: n(() => [
v(
s(
e.course
.status
),
1
),
]),
_: 1,
},
8,
["theme"]
),
]))
: a("", !0),
]),
r("div", T, s(e.course.title), 1),
r("div", E, s(e.course.short_introduction), 1),
c(m) && e.course.membership
? (t(),
o("div", F, [
r(
"div",
{
class: "bg-gray-900 h-1 rounded-full",
style: k({
width:
Math.ceil(
e.course
.membership
.progress
) + "%",
}),
},
null,
4
),
]))
: a("", !0),
c(m) && e.course.membership
? (t(),
o(
"div",
L,
s(
Math.ceil(
e.course.membership.progress
)
) + "% completed ",
1
))
: a("", !0),
r("div", M, [
r("div", O, [
r(
"div",
{
class: y([
"mr-1",
{
"avatar-group overlap":
e.course.instructors
.length > 1,
},
]),
},
[
(t(!0),
o(
h,
null,
f(
e.course.instructors,
(i) => (
t(),
g(
b,
{ user: i },
null,
8,
["user"]
)
)
),
256
)),
],
2
),
e.course.instructors.length == 1
? (t(),
o(
"span",
$,
s(
e.course.instructors[0]
.full_name
),
1
))
: a("", !0),
e.course.instructors.length == 2
? (t(),
o(
"span",
D,
s(
e.course.instructors[0]
.first_name
) +
" and " +
s(
e.course
.instructors[1]
.first_name
),
1
))
: a("", !0),
e.course.instructors.length > 2
? (t(),
o(
"span",
G,
s(
e.course.instructors[0]
.first_name
) +
" and " +
s(
e.course.instructors
.length - 1
) +
" others ",
1
))
: a("", !0),
]),
r("div", H, s(e.course.price), 1),
]),
]),
]))
: a("", !0);
},
};
export { W as _ };
//# sourceMappingURL=CourseCard--twQpeIf.js.map

File diff suppressed because one or more lines are too long

View File

@@ -1,299 +0,0 @@
import { _ as f } from "./UserAvatar-nJqmkBPv.js";
import { s as g, B as v, U as y } from "./index-qZ7Yta4u.js";
import {
x as s,
y as r,
J as o,
Q as u,
R as d,
H as t,
I as c,
C as m,
V as h,
F as n,
G as a,
B as x,
U as b,
a8 as k,
A as w,
} from "./frappe-ui-iPT8hMkb.js";
import { S as B } from "./star-xishKgdq.js";
const C = {
key: 0,
class: "flex flex-col border border-gray-200 h-full rounded-md shadow-sm text-base overflow-auto",
style: { "min-height": "320px" },
},
S = { class: "flex relative top-4 left-4 w-fit" },
U = { class: "course-card-pills rounded-md border border-gray-200" },
V = { key: 0, class: "image-placeholder" },
N = { class: "flex flex-col flex-auto p-4" },
j = { class: "flex items-center justify-between mb-2" },
z = { key: 0, class: "flex items-center space-x-1 py-1" },
I = { key: 1, class: "flex items-center space-x-1 py-1" },
R = { key: 2, class: "flex items-center space-x-1 py-1" },
A = { key: 3 },
F = { class: "text-xl font-semibold" },
M = { class: "short-introduction" },
O = { key: 0, class: "w-full bg-gray-200 rounded-full h-1 mb-2" },
_ = { key: 1, class: "text-sm mb-4" },
$ = { class: "flex items-center justify-between mt-auto" },
D = { class: "flex avatar-group overlap" },
E = { key: 0 },
G = { key: 1 },
H = { key: 2 },
J = { class: "font-semibold" },
W = {
__name: "CourseCard",
props: { course: { type: Object, default: null } },
setup(e) {
const { user: i } = g();
return (L, Q) =>
e.course.title
? (s(),
r("div", C, [
o(
"div",
{
class: m([
"course-image",
{ "default-image": !e.course.image },
]),
style: h({
backgroundImage:
"url(" +
encodeURI(e.course.image) +
")",
}),
},
[
o("div", S, [
(s(!0),
r(
u,
null,
d(
e.course.tags,
(l) => (
s(), r("div", U, t(l), 1)
)
),
256
)),
]),
e.course.image
? c("", !0)
: (s(),
r("div", V, t(e.course.title[0]), 1)),
],
6
),
o("div", N, [
o("div", j, [
e.course.lesson_count
? (s(),
r("div", z, [
n(a(v), {
class: "h-4 w-4 stroke-1.5 text-gray-700",
}),
o(
"span",
null,
t(e.course.lesson_count),
1
),
]))
: c("", !0),
e.course.enrollment_count
? (s(),
r("div", I, [
n(a(y), {
class: "h-4 w-4 stroke-1.5 text-gray-700",
}),
o(
"span",
null,
t(
e.course
.enrollment_count
),
1
),
]))
: c("", !0),
e.course.avg_rating
? (s(),
r("div", R, [
n(a(B), {
class: "h-4 w-4 stroke-1.5 text-gray-700",
}),
o(
"span",
null,
t(e.course.avg_rating),
1
),
]))
: c("", !0),
e.course.status != "Approved"
? (s(),
r("div", A, [
n(
a(k),
{
variant: "solid",
theme:
e.course.status ===
"Under Review"
? "orange"
: "blue",
size: "sm",
},
{
default: x(() => [
b(
t(
e.course
.status
),
1
),
]),
_: 1,
},
8,
["theme"]
),
]))
: c("", !0),
]),
o("div", F, t(e.course.title), 1),
o("div", M, t(e.course.short_introduction), 1),
a(i) && e.course.membership
? (s(),
r("div", O, [
o(
"div",
{
class: "bg-gray-900 h-1 rounded-full",
style: h({
width:
Math.ceil(
e.course
.membership
.progress
) + "%",
}),
},
null,
4
),
]))
: c("", !0),
a(i) && e.course.membership
? (s(),
r(
"div",
_,
t(
Math.ceil(
e.course.membership.progress
)
) + "% completed ",
1
))
: c("", !0),
o("div", $, [
o("div", D, [
o(
"div",
{
class: m([
"mr-1",
{
"avatar-group overlap":
e.course.instructors
.length > 1,
},
]),
},
[
(s(!0),
r(
u,
null,
d(
e.course.instructors,
(l) => (
s(),
w(
f,
{ user: l },
null,
8,
["user"]
)
)
),
256
)),
],
2
),
e.course.instructors.length == 1
? (s(),
r(
"span",
E,
t(
e.course.instructors[0]
.full_name
),
1
))
: c("", !0),
e.course.instructors.length == 2
? (s(),
r(
"span",
G,
t(
e.course.instructors[0]
.first_name
) +
" and " +
t(
e.course
.instructors[1]
.first_name
),
1
))
: c("", !0),
e.course.instructors.length > 2
? (s(),
r(
"span",
H,
t(
e.course.instructors[0]
.first_name
) +
" and " +
t(
e.course.instructors
.length - 1
) +
" others ",
1
))
: c("", !0),
]),
o("div", J, t(e.course.price), 1),
]),
]),
]))
: c("", !0);
},
};
export { W as _ };
//# sourceMappingURL=CourseCard-1i2yp1tI.js.map

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
.course-image{height:168px;width:100%;background-size:cover;background-position:center;background-repeat:no-repeat}.course-card-pills{background:#fff;margin-left:0;margin-right:.5rem;padding:3.5px 8px;font-size:11px;text-align:center;letter-spacing:.011em;text-transform:uppercase;font-weight:600;width:-moz-fit-content;width:fit-content}.default-image{display:flex;flex-direction:column;align-items:center;background-color:#ededed;color:#525252}.avatar-group{display:inline-flex;align-items:center}.avatar-group .avatar{transition:margin .1s ease-in-out}.image-placeholder{display:flex;align-items:center;flex:1;font-size:5rem;color:#525252;font-weight:600}.avatar-group.overlap .avatar+.avatar{margin-left:-8px}.short-introduction{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;text-overflow:ellipsis;width:100%;overflow:hidden;margin:.25rem 0 1.25rem;line-height:1.5}
.course-image{height:168px;width:100%;background-size:cover;background-position:center;background-repeat:no-repeat}.course-card-pills{background:#fff;margin-left:0;margin-right:.5rem;padding:3.5px 8px;font-size:11px;text-align:center;letter-spacing:.011em;text-transform:uppercase;font-weight:600;width:-moz-fit-content;width:fit-content}.default-image{display:flex;flex-direction:column;align-items:center;background-color:#fff1e7;color:#d45a08}.avatar-group{display:inline-flex;align-items:center}.avatar-group .avatar{transition:margin .1s ease-in-out}.image-placeholder{display:flex;align-items:center;flex:1;font-size:5rem;color:#525252;font-weight:600}.avatar-group.overlap .avatar+.avatar{margin-left:-8px}.short-introduction{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;text-overflow:ellipsis;width:100%;overflow:hidden;margin:.25rem 0 1.25rem;line-height:1.5}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -1,298 +0,0 @@
import {
ag as N,
k as C,
W as b,
x as e,
y as o,
J as r,
Q as d,
R as h,
A as n,
B as c,
ah as w,
G as t,
C as M,
F as l,
H as k,
ai as I,
I as V,
U as B,
aj as R,
} from "./frappe-ui-iPT8hMkb.js";
import { a as i } from "./index-qZ7Yta4u.js";
/**
* @license lucide-vue-next v0.309.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/ const j = i("ChevronRightIcon", [
["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }],
]);
/**
* @license lucide-vue-next v0.309.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/ const z = i("FileTextIcon", [
[
"path",
{
d: "M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",
key: "1nnpy2",
},
],
["polyline", { points: "14 2 14 8 20 8", key: "1ew0cm" }],
["line", { x1: "16", x2: "8", y1: "13", y2: "13", key: "14keom" }],
["line", { x1: "16", x2: "8", y1: "17", y2: "17", key: "17nazh" }],
["line", { x1: "10", x2: "8", y1: "9", y2: "9", key: "1a5vjj" }],
]);
/**
* @license lucide-vue-next v0.309.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/ const F = i("HelpCircleIcon", [
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
["path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3", key: "1u773s" }],
["path", { d: "M12 17h.01", key: "p32p05" }],
]);
/**
* @license lucide-vue-next v0.309.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/ const H = i("MonitorPlayIcon", [
["path", { d: "m10 7 5 3-5 3Z", key: "29ljg6" }],
[
"rect",
{
width: "20",
height: "14",
x: "2",
y: "3",
rx: "2",
key: "48i651",
},
],
["path", { d: "M12 17v4", key: "1riwvh" }],
["path", { d: "M8 21h8", key: "1ev6f3" }],
]),
L = { class: "course-outline text-base" },
q = { class: "mt-4" },
O = { class: "text-base" },
T = { class: "outline-lesson mb-2 pl-9" },
P = { class: "flex items-center text-sm" },
D = {
__name: "CourseOutline",
props: { courseName: { type: String, required: !0 } },
setup(m) {
const x = N(),
y = m,
_ = C({
url: "lms.lms.utils.get_course_outline",
cache: ["course_outline", y.courseName],
params: { course: y.courseName },
auto: !0,
}),
f = (u) => u == x.params.chapterNumber || u == 1;
return (u, Q) => {
const g = b("router-link");
return (
e(),
o("div", L, [
r("div", q, [
(e(!0),
o(
d,
null,
h(
t(_).data,
(s, v) => (
e(),
n(
t(R),
{
key: s.name,
defaultOpen: f(s.idx),
},
{
default: c(({ open: p }) => [
l(
t(w),
{
class: "flex w-full px-2 pt-2 pb-3",
},
{
default: c(() => [
l(
t(j),
{
class: M(
[
{
"rotate-90 transform duration-200":
p,
"duration-200":
!p,
open:
v ==
1,
},
"h-5 w-5 text-gray-900 stroke-1 mr-2",
]
),
},
null,
8,
["class"]
),
r(
"div",
O,
k(s.title),
1
),
]),
_: 2,
},
1024
),
l(
t(I),
{ class: "pb-2" },
{
default: c(() => [
(e(!0),
o(
d,
null,
h(
s.lessons,
(a) => (
e(),
o(
"div",
{
key: a.name,
},
[
r(
"div",
T,
[
l(
g,
{
to: {
name: "Lesson",
params: {
courseName:
m.courseName,
chapterNumber:
a.number.split(
"."
)[0],
lessonNumber:
a.number.split(
"."
)[1],
},
},
},
{
default:
c(
() => [
r(
"div",
P,
[
a.icon ===
"icon-youtube"
? (e(),
n(
t(
H
),
{
key: 0,
class: "h-4 w-4 text-gray-900 stroke-1 mr-2",
}
))
: a.icon ===
"icon-quiz"
? (e(),
n(
t(
F
),
{
key: 1,
class: "h-4 w-4 text-gray-900 stroke-1 mr-2",
}
))
: a.icon ===
"icon-list"
? (e(),
n(
t(
z
),
{
key: 2,
class: "h-4 w-4 text-gray-900 stroke-1 mr-2",
}
))
: V(
"",
!0
),
B(
" " +
k(
a.title
),
1
),
]
),
]
),
_: 2,
},
1032,
[
"to",
]
),
]
),
]
)
)
),
128
)),
]),
_: 2,
},
1024
),
]),
_: 2,
},
1032,
["defaultOpen"]
)
)
),
128
)),
]),
])
);
};
},
};
export { j as C, D as _ };
//# sourceMappingURL=CourseOutline-7cUm8E8p.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,365 @@
import {
af as N,
r as b,
k as B,
x as e,
y as n,
C as r,
I as l,
J as p,
Q as k,
R as f,
A as i,
B as u,
G as m,
H as t,
F as x,
ah as M,
U as H,
ai as I,
aj as V,
X as j,
} from "./frappe-ui-20hnMCM8.js";
import { a as d } from "./index-Vx7mSx23.js";
/**
* @license lucide-vue-next v0.309.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/ const O = d("ChevronRightIcon", [
["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }],
]);
/**
* @license lucide-vue-next v0.309.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/ const R = d("FileTextIcon", [
[
"path",
{
d: "M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",
key: "1nnpy2",
},
],
["polyline", { points: "14 2 14 8 20 8", key: "1ew0cm" }],
["line", { x1: "16", x2: "8", y1: "13", y2: "13", key: "14keom" }],
["line", { x1: "16", x2: "8", y1: "17", y2: "17", key: "17nazh" }],
["line", { x1: "10", x2: "8", y1: "9", y2: "9", key: "1a5vjj" }],
]);
/**
* @license lucide-vue-next v0.309.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/ const z = d("HelpCircleIcon", [
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
["path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3", key: "1u773s" }],
["path", { d: "M12 17h.01", key: "p32p05" }],
]);
/**
* @license lucide-vue-next v0.309.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/ const F = d("MonitorPlayIcon", [
["path", { d: "m10 7 5 3-5 3Z", key: "29ljg6" }],
[
"rect",
{
width: "20",
height: "14",
x: "2",
y: "3",
rx: "2",
key: "48i651",
},
],
["path", { d: "M12 17v4", key: "1riwvh" }],
["path", { d: "M8 21h8", key: "1ev6f3" }],
]),
L = { class: "text-base" },
q = { key: 0, class: "flex justify-between mb-4" },
T = { class: "text-2xl font-semibold" },
P = { class: "text-base text-left font-medium" },
Q = { class: "ml-auto text-sm" },
S = { class: "outline-lesson py-2 pl-8" },
A = { class: "flex items-center text-sm" },
J = {
__name: "CourseOutline",
props: {
courseName: { type: String, required: !0 },
showOutline: { type: Boolean, default: !1 },
showHeader: { type: Boolean, default: !1 },
},
setup(c) {
const _ = N();
b(!0);
const y = c,
v = B({
url: "lms.lms.utils.get_course_outline",
cache: ["course_outline", y.courseName],
params: { course: y.courseName },
auto: !0,
}),
w = (a) => a == _.params.chapterNumber || a == 1;
return (a, D) => {
const g = j("router-link");
return (
e(),
n("div", L, [
c.showHeader
? (e(),
n("div", q, [
r("div", T, l(a.__("Course Content")), 1),
]))
: p("", !0),
r(
"div",
{
class: x({
"shadow rounded-md pt-2 px-2":
c.showOutline,
}),
},
[
(e(!0),
n(
k,
null,
f(
t(v).data,
(o, C) => (
e(),
i(
t(V),
{
key: o.name,
defaultOpen: w(o.idx),
},
{
default: u(
({ open: h }) => [
m(
t(M),
{
ref_for: !0,
ref: "",
class: "flex w-full px-2 py-4",
},
{
default: u(
() => [
m(
t(
O
),
{
class: x(
[
{
"rotate-90 transform duration-200":
h,
"duration-200":
!h,
open:
C ==
1,
},
"h-4 w-4 text-gray-900 stroke-1 mr-2",
]
),
},
null,
8,
[
"class",
]
),
r(
"div",
P,
l(
o.title
),
1
),
r(
"div",
Q,
l(
o
.lessons
.length
) +
" " +
l(
o
.lessons
.length ==
1
? a.__(
"lesson"
)
: a.__(
"lessons"
)
),
1
),
]
),
_: 2,
},
1536
),
m(
t(I),
{
class: "pb-2",
},
{
default: u(
() => [
(e(
!0
),
n(
k,
null,
f(
o.lessons,
(
s
) => (
e(),
n(
"div",
{
key: s.name,
},
[
r(
"div",
S,
[
m(
g,
{
to: {
name: "Lesson",
params: {
courseName:
c.courseName,
chapterNumber:
s.number.split(
"."
)[0],
lessonNumber:
s.number.split(
"."
)[1],
},
},
},
{
default:
u(
() => [
r(
"div",
A,
[
s.icon ===
"icon-youtube"
? (e(),
i(
t(
F
),
{
key: 0,
class: "h-4 w-4 text-gray-900 stroke-1 mr-2",
}
))
: s.icon ===
"icon-quiz"
? (e(),
i(
t(
z
),
{
key: 1,
class: "h-4 w-4 text-gray-900 stroke-1 mr-2",
}
))
: s.icon ===
"icon-list"
? (e(),
i(
t(
R
),
{
key: 2,
class: "h-4 w-4 text-gray-900 stroke-1 mr-2",
}
))
: p(
"",
!0
),
H(
" " +
l(
s.title
),
1
),
]
),
]
),
_: 2,
},
1032,
[
"to",
]
),
]
),
]
)
)
),
128
)),
]
),
_: 2,
},
1024
),
]
),
_: 2,
},
1032,
["defaultOpen"]
)
)
),
128
)),
],
2
),
])
);
};
},
};
export { O as C, J as _ };
//# sourceMappingURL=CourseOutline-M5G5Rx7O.js.map

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
.outline-lesson:has(.router-link-active){background-color:#f3f3f3;padding:.5rem 0 .5rem 2rem}
.outline-lesson:has(.router-link-active){background-color:#f3f3f3}

View File

@@ -1,434 +0,0 @@
import {
a5 as w,
r as k,
j as o,
x as n,
y as m,
G as c,
J as i,
F as d,
B as u,
U as h,
H as p,
C as y,
A as x,
M as L,
I as C,
Q as V,
R as $,
a as B,
W as j,
a6 as U,
a7 as z,
a8 as D,
a9 as R,
} from "./frappe-ui-iPT8hMkb.js";
import { _ as A } from "./CourseCard-1i2yp1tI.js";
import { P as E } from "./plus-_m-8cMp1.js";
import "./UserAvatar-nJqmkBPv.js";
import "./index-qZ7Yta4u.js";
import "./star-xishKgdq.js";
const F = { class: "h-screen" },
I = { key: 0 },
M = {
class: "sticky top-0 z-10 flex items-center justify-between border-b bg-white px-3 py-2.5 sm:px-5",
},
P = { class: "flex" },
S = { class: "mx-5 py-5" },
G = {
key: 0,
class: "grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-8 mt-5",
},
H = {
key: 1,
class: "grid flex-1 place-items-center text-xl font-medium text-gray-500",
},
J = { class: "flex flex-col items-center justify-center mt-4" },
Y = {
__name: "Courses",
setup(Q) {
var g, v, b;
const l = B("$user"),
a = w({
type: "list",
doctype: "LMS Course",
cache: [
"courses",
(g = l == null ? void 0 : l.data) == null
? void 0
: g.email,
],
url: "lms.lms.utils.get_courses",
auto: !0,
}),
f = k(0),
_ = [
{
label: "Live",
courses: o(() => {
var e;
return (
((e = a.data) == null ? void 0 : e.live) || []
);
}),
count: o(() => {
var e, s;
return (s =
(e = a.data) == null ? void 0 : e.live) == null
? void 0
: s.length;
}),
},
{
label: "Upcoming",
courses: o(() => {
var e;
return (e = a.data) == null ? void 0 : e.upcoming;
}),
count: o(() => {
var e, s;
return (s =
(e = a.data) == null ? void 0 : e.upcoming) ==
null
? void 0
: s.length;
}),
},
];
return (
l.data &&
(_.push({
label: "Enrolled",
courses: o(() => {
var e;
return (e = a.data) == null ? void 0 : e.enrolled;
}),
count: o(() => {
var e, s;
return (s =
(e = a.data) == null ? void 0 : e.enrolled) ==
null
? void 0
: s.length;
}),
}),
(l.data.is_moderator ||
l.data.is_instructor ||
((b = (v = a.data) == null ? void 0 : v.created) !=
null &&
b.length)) &&
_.push({
label: "Created",
courses: o(() => {
var e;
return (e = a.data) == null
? void 0
: e.created;
}),
count: o(() => {
var e, s;
return (s =
(e = a.data) == null
? void 0
: e.created) == null
? void 0
: s.length;
}),
}),
l.data.is_moderator &&
_.push({
label: "Under Review",
courses: o(() => {
var e;
return (e = a.data) == null
? void 0
: e.under_review;
}),
count: o(() => {
var e, s;
return (s =
(e = a.data) == null
? void 0
: e.under_review) == null
? void 0
: s.length;
}),
})),
(e, s) => {
const N = j("router-link");
return (
n(),
m("div", F, [
c(a).data
? (n(),
m("div", I, [
i("header", M, [
d(
c(U),
{
class: "h-7",
items: [
{
label: e.__(
"All Courses"
),
route: {
name: "Courses",
},
},
],
},
null,
8,
["items"]
),
i("div", P, [
d(
c(z),
{ variant: "solid" },
{
prefix: u(() => [
d(c(E), {
class: "h-4 w-4",
}),
]),
default: u(() => [
h(
" " +
p(
e.__(
"New Course"
)
),
1
),
]),
_: 1,
}
),
]),
]),
i("div", S, [
d(
c(R),
{
class: "overflow-hidden",
modelValue: f.value,
"onUpdate:modelValue":
s[0] ||
(s[0] = (r) =>
(f.value = r)),
tabs: _,
},
{
tab: u(
({
tab: r,
selected: t,
}) => [
i("div", null, [
i(
"button",
{
class: y(
[
"group -mb-px flex items-center gap-2 overflow-hidden border-b border-transparent py-2.5 text-base text-gray-600 duration-300 ease-in-out hover:border-gray-400 hover:text-gray-900",
{
"text-gray-900":
t,
},
]
),
},
[
r.icon
? (n(),
x(
L(
r.icon
),
{
key: 0,
class: "h-5",
}
))
: C(
"",
!0
),
h(
" " +
p(
e.__(
r.label
)
) +
" ",
1
),
d(
c(
D
),
{
class: y(
{
"text-gray-900 border border-gray-900":
t,
}
),
variant:
"subtle",
theme: "gray",
size: "sm",
},
{
default:
u(
() => [
h(
p(
r.count
),
1
),
]
),
_: 2,
},
1032,
[
"class",
]
),
],
2
),
]),
]
),
default: u(({ tab: r }) => [
r.courses &&
r.courses.value.length
? (n(),
m("div", G, [
(n(!0),
m(
V,
null,
$(
r
.courses
.value,
(
t
) => (
n(),
x(
N,
{
to:
t.membership &&
t.current_lesson
? {
name: "Lesson",
params: {
courseName:
t.name,
chapterNumber:
t.current_lesson.split(
"."
)[0],
lessonNumber:
t.current_lesson.split(
"."
)[1],
},
}
: t.membership
? {
name: "Lesson",
params: {
courseName:
t.name,
chapterNumber: 1,
lessonNumber: 1,
},
}
: {
name: "CourseDetail",
params: {
courseName:
t.name,
},
},
},
{
default:
u(
() => [
d(
A,
{
course: t,
},
null,
8,
[
"course",
]
),
]
),
_: 2,
},
1032,
[
"to",
]
)
)
),
256
)),
]))
: (n(),
m("div", H, [
i(
"div",
J,
[
i(
"div",
null,
p(
e
.__(
"No {0} courses found"
)
.format(
r.label.toLowerCase()
)
),
1
),
]
),
])),
]),
_: 1,
},
8,
["modelValue"]
),
]),
]))
: C("", !0),
])
);
}
);
},
};
export { Y as default };
//# sourceMappingURL=Courses-hTDCCPUa.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,473 @@
import {
d as k,
a5 as w,
r as L,
j as r,
y as c,
H as n,
C as d,
G as _,
A as p,
B as u,
J as f,
x as l,
a6 as V,
U as g,
I as h,
a7 as $,
F as B,
N as j,
a8 as U,
Q as D,
R,
a9 as z,
X as A,
} from "./frappe-ui-20hnMCM8.js";
import { _ as E } from "./CourseCard--twQpeIf.js";
import { P as F } from "./plus-pxSjkL_w.js";
import "./UserAvatar-yrWInUTi.js";
import "./index-Vx7mSx23.js";
import "./star-ypmGZNF0.js";
const I = { class: "h-screen" },
P = { key: 0 },
S = {
class: "sticky top-0 z-10 flex items-center justify-between border-b bg-white px-3 py-2.5 sm:px-5",
},
G = { class: "flex" },
H = { class: "" },
J = { key: 0, class: "p-5 text-base text-gray-700" },
M = {
key: 0,
class: "grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-5 my-5 mx-5",
},
Q = {
key: 1,
class: "grid flex-1 place-items-center text-xl font-medium text-gray-500",
},
T = { class: "flex flex-col items-center justify-center mt-4" },
ee = {
__name: "Courses",
setup(X) {
var b, y, x;
const i = k("$user"),
a = w({
type: "list",
doctype: "LMS Course",
cache: [
"courses",
(b = i == null ? void 0 : i.data) == null
? void 0
: b.email,
],
url: "lms.lms.utils.get_courses",
auto: !0,
}),
v = L(0),
m = [
{
label: "Live",
courses: r(() => {
var e;
return (
((e = a.data) == null ? void 0 : e.live) || []
);
}),
count: r(() => {
var e, s;
return (s =
(e = a.data) == null ? void 0 : e.live) == null
? void 0
: s.length;
}),
},
{
label: "Upcoming",
courses: r(() => {
var e;
return (e = a.data) == null ? void 0 : e.upcoming;
}),
count: r(() => {
var e, s;
return (s =
(e = a.data) == null ? void 0 : e.upcoming) ==
null
? void 0
: s.length;
}),
},
];
return (
i.data &&
(m.push({
label: "Enrolled",
courses: r(() => {
var e;
return (e = a.data) == null ? void 0 : e.enrolled;
}),
count: r(() => {
var e, s;
return (s =
(e = a.data) == null ? void 0 : e.enrolled) ==
null
? void 0
: s.length;
}),
}),
(i.data.is_moderator ||
i.data.is_instructor ||
((x = (y = a.data) == null ? void 0 : y.created) !=
null &&
x.length)) &&
m.push({
label: "Created",
courses: r(() => {
var e;
return (e = a.data) == null
? void 0
: e.created;
}),
count: r(() => {
var e, s;
return (s =
(e = a.data) == null
? void 0
: e.created) == null
? void 0
: s.length;
}),
}),
i.data.is_moderator &&
m.push({
label: "Under Review",
courses: r(() => {
var e;
return (e = a.data) == null
? void 0
: e.under_review;
}),
count: r(() => {
var e, s;
return (s =
(e = a.data) == null
? void 0
: e.under_review) == null
? void 0
: s.length;
}),
})),
(e, s) => {
var C;
const N = A("router-link");
return (
l(),
c("div", I, [
n(a).data
? (l(),
c("div", P, [
d("header", S, [
_(
n(V),
{
class: "h-7",
items: [
{
label: e.__(
"All Courses"
),
route: {
name: "Courses",
},
},
],
},
null,
8,
["items"]
),
d("div", G, [
(C = n(i).data) != null &&
C.is_moderator
? (l(),
p(
n($),
{
key: 0,
variant:
"solid",
},
{
prefix: u(
() => [
_(
n(
F
),
{
class: "h-4 w-4",
}
),
]
),
default: u(
() => [
g(
" " +
h(
e.__(
"New Course"
)
),
1
),
]
),
_: 1,
}
))
: f("", !0),
]),
]),
d("div", H, [
n(a).data.length == 0 &&
n(a).list.loading
? (l(),
c(
"div",
J,
" Loading Courses... "
))
: (l(),
p(
n(z),
{
key: 1,
modelValue: v.value,
"onUpdate:modelValue":
s[0] ||
(s[0] = (t) =>
(v.value =
t)),
tabs: m,
tablistClass:
"overflow-x-visible",
},
{
tab: u(
({
tab: t,
selected: o,
}) => [
d(
"div",
null,
[
d(
"button",
{
class: B(
[
"group -mb-px flex items-center gap-2 overflow-hidden border-b border-transparent py-2.5 text-base text-gray-600 duration-300 ease-in-out hover:border-gray-400 hover:text-gray-900",
{
"text-gray-900":
o,
},
]
),
},
[
t.icon
? (l(),
p(
j(
t.icon
),
{
key: 0,
class: "h-5",
}
))
: f(
"",
!0
),
g(
" " +
h(
e.__(
t.label
)
) +
" ",
1
),
_(
n(
U
),
{
theme: "gray",
},
{
default:
u(
() => [
g(
h(
t.count
),
1
),
]
),
_: 2,
},
1024
),
],
2
),
]
),
]
),
default: u(
({
tab: t,
}) => [
t.courses &&
t.courses
.value
.length
? (l(),
c(
"div",
M,
[
(l(
!0
),
c(
D,
null,
R(
t
.courses
.value,
(
o
) => (
l(),
p(
N,
{
to:
o.membership &&
o.current_lesson
? {
name: "Lesson",
params: {
courseName:
o.name,
chapterNumber:
o.current_lesson.split(
"."
)[0],
lessonNumber:
o.current_lesson.split(
"."
)[1],
},
}
: o.membership
? {
name: "Lesson",
params: {
courseName:
o.name,
chapterNumber: 1,
lessonNumber: 1,
},
}
: {
name: "CourseDetail",
params: {
courseName:
o.name,
},
},
},
{
default:
u(
() => [
_(
E,
{
course: o,
},
null,
8,
[
"course",
]
),
]
),
_: 2,
},
1032,
[
"to",
]
)
)
),
256
)),
]
))
: (l(),
c(
"div",
Q,
[
d(
"div",
T,
[
d(
"div",
null,
h(
e
.__(
"No {0} courses found"
)
.format(
t.label.toLowerCase()
)
),
1
),
]
),
]
)),
]
),
_: 1,
},
8,
["modelValue"]
)),
]),
]))
: f("", !0),
])
);
}
);
},
};
export { ee as default };
//# sourceMappingURL=Courses-twOd7MxD.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -2,32 +2,32 @@ import {
aa as B,
ab as N,
r as $,
a as S,
d as S,
s as j,
k,
x as i,
y,
F as n,
G as n,
B as x,
G as t,
H as t,
a7 as T,
J as s,
H as d,
I as R,
C as s,
I as d,
J as R,
Q as M,
R as E,
A as V,
K as A,
U as D,
au as P,
C as I,
b as F,
F as I,
a as F,
am as G,
D as J,
c as K,
} from "./frappe-ui-iPT8hMkb.js";
import { _ as U } from "./UserAvatar-nJqmkBPv.js";
import { a as q, t as H, c as O } from "./index-qZ7Yta4u.js";
b as K,
} from "./frappe-ui-20hnMCM8.js";
import { _ as U } from "./UserAvatar-yrWInUTi.js";
import { a as q, t as H, c as O } from "./index-Vx7mSx23.js";
/**
* @license lucide-vue-next v0.309.0 - ISC
*
@@ -835,4 +835,4 @@ import { a as q, t as H, c as O } from "./index-qZ7Yta4u.js";
},
};
export { Q as C, we as _ };
//# sourceMappingURL=Discussions-0iopHFAD.js.map
//# sourceMappingURL=Discussions-C9dFHLpJ.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,21 +1,21 @@
import {
v as f,
aB as g,
ay as g,
T as _,
W as c,
X as c,
x as o,
A as l,
B as r,
aC as C,
aD as p,
N as k,
Q as d,
V as u,
J as a,
M as p,
az as C,
aA as k,
C as a,
y as d,
Q as u,
R as m,
y as h,
C as b,
} from "./frappe-ui-iPT8hMkb.js";
V as h,
F as b,
} from "./frappe-ui-20hnMCM8.js";
const v = {
name: "FontColor",
props: ["editor"],
@@ -66,16 +66,16 @@ const v = {
y = { class: "p-2" },
B = a("div", { class: "text-sm text-gray-700" }, "Text Color", -1),
P = { class: "mt-1 grid grid-cols-8 gap-1" },
D = ["aria-label", "onClick"],
F = a(
F = ["aria-label", "onClick"],
D = a(
"div",
{ class: "mt-2 text-sm text-gray-700" },
"Background Color",
-1
),
w = { class: "mt-1 grid grid-cols-8 gap-1" },
T = ["aria-label", "onClick"];
function A(t, R, z, E, $, n) {
A = ["aria-label", "onClick"];
function T(t, z, R, E, $, n) {
const i = c("Tooltip"),
x = c("Popover");
return (
@@ -85,10 +85,10 @@ function A(t, R, z, E, $, n) {
{ transition: "default" },
{
target: r(({ togglePopover: e, isOpen: s }) => [
k(
p(
t.$slots,
"default",
p(C({ onClick: () => e(), isActive: s }))
C(k({ onClick: () => e(), isActive: s }))
),
]),
"body-main": r(() => [
@@ -96,8 +96,8 @@ function A(t, R, z, E, $, n) {
B,
a("div", P, [
(o(!0),
h(
d,
d(
u,
null,
m(
n.foregroundColors,
@@ -118,7 +118,7 @@ function A(t, R, z, E, $, n) {
"aria-label":
e.name,
class: "flex h-5 w-5 items-center justify-center rounded border text-base",
style: u({
style: h({
color: e.hex,
}),
onClick: (s) =>
@@ -128,7 +128,7 @@ function A(t, R, z, E, $, n) {
},
" A ",
12,
D
F
),
]),
_: 2,
@@ -141,11 +141,11 @@ function A(t, R, z, E, $, n) {
128
)),
]),
F,
D,
a("div", w, [
(o(!0),
h(
d,
d(
u,
null,
m(
n.backgroundColors,
@@ -171,7 +171,7 @@ function A(t, R, z, E, $, n) {
? "border-transparent"
: "border-gray-200",
]),
style: u({
style: h({
backgroundColor:
e.hex,
}),
@@ -182,7 +182,7 @@ function A(t, R, z, E, $, n) {
},
" A ",
14,
T
A
),
]),
_: 2,
@@ -202,6 +202,6 @@ function A(t, R, z, E, $, n) {
)
);
}
const G = f(v, [["render", A]]);
const G = f(v, [["render", T]]);
export { G as default };
//# sourceMappingURL=FontColor-67MjDpop.js.map
//# sourceMappingURL=FontColor-buIvkL_m.js.map

File diff suppressed because one or more lines are too long

View File

@@ -1,15 +1,15 @@
import {
v as d,
D as g,
x as m,
y as f,
F as s,
y as m,
G as s,
B as t,
C as r,
I as p,
X as u,
x as f,
U as l,
J as r,
H as p,
W as u,
} from "./frappe-ui-iPT8hMkb.js";
} from "./frappe-ui-20hnMCM8.js";
const D = {
name: "Home",
data() {
@@ -19,12 +19,12 @@ const D = {
components: { Dialog: g },
},
_ = { class: "max-w-3xl py-12 mx-auto" };
function k(e, o, w, B, n, C) {
function C(e, o, k, w, n, B) {
const a = u("Button"),
c = u("Dialog");
return (
m(),
f("div", _, [
f(),
m("div", _, [
s(
a,
{
@@ -61,6 +61,6 @@ function k(e, o, w, B, n, C) {
])
);
}
const $ = d(D, [["render", k]]);
const $ = d(D, [["render", C]]);
export { $ as default };
//# sourceMappingURL=Home-x768lxic.js.map
//# sourceMappingURL=Home-iNWB3jqR.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Home-iNWB3jqR.js","sources":["../../../../frontend/src/pages/Home.vue"],"sourcesContent":["<template>\n <div class=\"max-w-3xl py-12 mx-auto\">\n <Button\n icon-left=\"code\"\n @click=\"$resources.ping.fetch\"\n :loading=\"$resources.ping.loading\"\n >\n Click to send 'ping' request\n </Button>\n <div>\n {{ $resources.ping.data }}\n </div>\n <pre>{{ $resources.ping }}</pre>\n\n <Button @click=\"showDialog = true\">Open Dialog</Button>\n <Dialog title=\"Title\" v-model=\"showDialog\"> Dialog content </Dialog>\n </div>\n</template>\n\n<script>\nimport { Dialog } from 'frappe-ui'\n\nexport default {\n name: 'Home',\n data() {\n return {\n showDialog: false,\n }\n },\n resources: {\n ping: {\n url: 'ping',\n },\n },\n components: {\n Dialog,\n },\n}\n</script>\n"],"names":["_sfc_main","Dialog","_hoisted_1","_openBlock","_createElementBlock","_createVNode","_component_Button","_ctx","_withCtx","_createTextVNode","_createElementVNode","_toDisplayString","$data","_component_Dialog","_cache","$event"],"mappings":"2GAsBA,MAAKA,EAAU,CACb,KAAM,OACN,MAAO,CACL,MAAO,CACL,WAAY,EACd,CACD,EACD,UAAW,CACT,KAAM,CACJ,IAAK,MACN,CACF,EACD,WAAY,CACV,OAAAC,CACD,CACH,EApCOC,EAAA,CAAA,MAAM,yBAAyB,4DAApC,OAAAC,EAAA,EAAAC,EAeM,MAfNF,EAeM,CAdJG,EAMSC,EAAA,CALP,YAAU,OACT,QAAOC,EAAA,WAAW,KAAK,MACvB,QAASA,EAAA,WAAW,KAAK,UALhC,QAAAC,EAMK,IAED,CARJC,EAMK,gCAED,IARJ,EAAA,4BASIC,EAEM,MADD,KAAAC,EAAAJ,EAAA,WAAW,KAAK,IAAI,EAAA,CAAA,EAEzBG,EAAgC,MAAA,KAAAC,EAAxBJ,EAAU,WAAC,IAAI,EAAA,CAAA,EAEvBF,EAAuDC,EAAA,CAA9C,uBAAOM,EAAU,WAAA,MAd9B,QAAAJ,EAcuC,IAAW,CAdlDC,EAcuC,aAAW,IAdlD,EAAA,IAeIJ,EAAoEQ,EAAA,CAA5D,MAAM,QAflB,WAemCD,EAAU,WAf7C,sBAAAE,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GAemCH,EAAU,WAAAG,KAf7C,QAAAP,EAe+C,IAAgB,CAf/DC,EAe+C,kBAAgB,IAf/D,EAAA"}

View File

@@ -1 +0,0 @@
{"version":3,"file":"Home-x768lxic.js","sources":["../../../../frontend/src/pages/Home.vue"],"sourcesContent":["<template>\n <div class=\"max-w-3xl py-12 mx-auto\">\n <Button\n icon-left=\"code\"\n @click=\"$resources.ping.fetch\"\n :loading=\"$resources.ping.loading\"\n >\n Click to send 'ping' request\n </Button>\n <div>\n {{ $resources.ping.data }}\n </div>\n <pre>{{ $resources.ping }}</pre>\n\n <Button @click=\"showDialog = true\">Open Dialog</Button>\n <Dialog title=\"Title\" v-model=\"showDialog\"> Dialog content </Dialog>\n </div>\n</template>\n\n<script>\nimport { Dialog } from 'frappe-ui'\n\nexport default {\n name: 'Home',\n data() {\n return {\n showDialog: false,\n }\n },\n resources: {\n ping: {\n url: 'ping',\n },\n },\n components: {\n Dialog,\n },\n}\n</script>\n"],"names":["_sfc_main","Dialog","_hoisted_1","_openBlock","_createElementBlock","_createVNode","_component_Button","_ctx","_createElementVNode","_toDisplayString","$data","_component_Dialog","$event"],"mappings":"2GAsBA,MAAKA,EAAU,CACb,KAAM,OACN,MAAO,CACL,MAAO,CACL,WAAY,EACd,CACD,EACD,UAAW,CACT,KAAM,CACJ,IAAK,MACN,CACF,EACD,WAAY,CACV,OAAAC,CACD,CACH,EApCOC,EAAA,CAAA,MAAM,yBAAyB,4DAApC,OAAAC,EAAA,EAAAC,EAeM,MAfNF,EAeM,CAdJG,EAMSC,EAAA,CALP,YAAU,OACT,QAAOC,EAAA,WAAW,KAAK,MACvB,QAASA,EAAA,WAAW,KAAK,oBAC3B,IAED,GAFC,gCAED,kCACAC,EAEM,MADD,KAAAC,EAAAF,EAAA,WAAW,KAAK,IAAI,EAAA,CAAA,EAEzBC,EAAgC,MAAA,KAAAC,EAAxBF,EAAU,WAAC,IAAI,EAAA,CAAA,EAEvBF,EAAuDC,EAAA,CAA9C,uBAAOI,EAAU,WAAA,gBAAS,IAAW,GAAX,aAAW,UAC9CL,EAAoEM,EAAA,CAA5D,MAAM,mBAAiBD,EAAU,gDAAVA,EAAU,WAAAE,eAAE,IAAgB,GAAhB,kBAAgB"}

View File

@@ -2,21 +2,21 @@ import {
v as I,
a7 as f,
D,
aN as h,
W as d,
aK as h,
X as d,
x as m,
y as c,
N as _,
aD as y,
aC as C,
F as n,
M as _,
az as y,
aA as C,
G as n,
B as s,
J as i,
H as v,
I as w,
C as i,
I as v,
J as w,
U as u,
Q as x,
} from "./frappe-ui-iPT8hMkb.js";
} from "./frappe-ui-20hnMCM8.js";
const B = {
name: "InsertImage",
props: ["editor"],
@@ -51,7 +51,7 @@ const B = {
},
k = { class: "absolute inset-0 select-none px-2 py-1 text-base" },
S = ["src"];
function V(t, e, r, N, a, o) {
function V(t, e, r, A, a, o) {
const g = d("Button"),
p = d("Dialog");
return (
@@ -147,6 +147,6 @@ function V(t, e, r, N, a, o) {
)
);
}
const F = I(B, [["render", V]]);
export { F as default };
//# sourceMappingURL=InsertImage-pFxauZ_l.js.map
const z = I(B, [["render", V]]);
export { z as default };
//# sourceMappingURL=InsertImage-MQQczXkr.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"InsertImage-MQQczXkr.js","sources":["../../../../frappe-ui/src/components/TextEditor/InsertImage.vue"],"sourcesContent":["<template>\n <slot v-bind=\"{ onClick: openDialog }\"></slot>\n <Dialog\n :options=\"{ title: 'Add Image' }\"\n v-model=\"addImageDialog.show\"\n @after-leave=\"reset\"\n >\n <template #body-content>\n <label\n class=\"relative cursor-pointer rounded-lg bg-gray-100 py-1 focus-within:bg-gray-200 hover:bg-gray-200\"\n >\n <input\n type=\"file\"\n class=\"w-full opacity-0\"\n @change=\"onImageSelect\"\n accept=\"image/*\"\n />\n <span class=\"absolute inset-0 select-none px-2 py-1 text-base\">\n {{ addImageDialog.file ? 'Select another image' : 'Select an image' }}\n </span>\n </label>\n <img\n v-if=\"addImageDialog.url\"\n :src=\"addImageDialog.url\"\n class=\"mt-2 w-full rounded-lg\"\n />\n </template>\n <template #actions>\n <Button variant=\"solid\" @click=\"addImage(addImageDialog.url)\">\n Insert Image\n </Button>\n <Button @click=\"reset\"> Cancel </Button>\n </template>\n </Dialog>\n</template>\n<script>\nimport fileToBase64 from '../../utils/file-to-base64'\nimport Dialog from '../Dialog.vue'\nimport Button from '../Button.vue'\n\nexport default {\n name: 'InsertImage',\n props: ['editor'],\n expose: ['openDialog'],\n data() {\n return {\n addImageDialog: { url: '', file: null, show: false },\n }\n },\n components: { Button, Dialog },\n methods: {\n openDialog() {\n this.addImageDialog.show = true\n },\n onImageSelect(e) {\n let file = e.target.files[0]\n if (!file) {\n return\n }\n this.addImageDialog.file = file\n fileToBase64(file).then((base64) => {\n this.addImageDialog.url = base64\n })\n },\n addImage(src) {\n this.editor.chain().focus().setImage({ src }).run()\n this.reset()\n },\n reset() {\n this.addImageDialog = this.$options.data().addImageDialog\n },\n },\n}\n</script>\n"],"names":["_sfc_main","Button","Dialog","e","file","fileToBase64","base64","src","_hoisted_1","_hoisted_2","_hoisted_3","_openBlock","_createElementBlock","_Fragment","_renderSlot","_ctx","_normalizeProps","_guardReactiveProps","$options","_createVNode","_component_Dialog","$data","_cache","$event","_createElementVNode","args","_toDisplayString","_createCommentVNode","_component_Button","_withCtx","_createTextVNode"],"mappings":"2JAwCA,MAAKA,EAAU,CACb,KAAM,cACN,MAAO,CAAC,QAAQ,EAChB,OAAQ,CAAC,YAAY,EACrB,MAAO,CACL,MAAO,CACL,eAAgB,CAAE,IAAK,GAAI,KAAM,KAAM,KAAM,EAAO,CACtD,CACD,EACD,WAAY,CAAA,OAAEC,EAAQ,OAAAC,CAAQ,EAC9B,QAAS,CACP,YAAa,CACX,KAAK,eAAe,KAAO,EAC5B,EACD,cAAcC,EAAG,CACf,IAAIC,EAAOD,EAAE,OAAO,MAAM,CAAC,EACtBC,IAGL,KAAK,eAAe,KAAOA,EAC3BC,EAAaD,CAAI,EAAE,KAAME,GAAW,CAClC,KAAK,eAAe,IAAMA,EAC3B,EACF,EACD,SAASC,EAAK,CACZ,KAAK,OAAO,MAAK,EAAG,MAAK,EAAG,SAAS,CAAE,IAAAA,EAAK,EAAE,IAAI,EAClD,KAAK,MAAM,CACZ,EACD,OAAQ,CACN,KAAK,eAAiB,KAAK,SAAS,KAAM,EAAC,cAC5C,CACF,CACH,EA/DQC,EAAA,CAAA,MAAM,gGAAgG,EAQhGC,EAAA,CAAA,MAAM,kDAAkD,EAjBtEC,EAAA,CAAA,KAAA,4DAAA,OAAAC,EAAA,EAAAC,EAAAC,EAAA,KAAA,CACEC,EAA8CC,EAAA,OAAA,UADhDC,EAAAC,EAAA,CAAA,QAC2BC,EAAU,UAAA,CAAA,CAAA,CAAA,EACnCC,EA+BSC,EAAA,CA9BN,QAAS,CAAsB,MAAA,WAAA,EAHpC,WAIaC,EAAA,eAAe,KAJ5B,sBAIaC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GAAAF,EAAA,eAAe,KAAIE,GAC3B,aAAaL,EAAK,QAER,iBACT,IAYQ,CAZRM,EAYQ,QAZRhB,EAYQ,CATNgB,EAKE,QAAA,CAJA,KAAK,OACL,MAAM,mBACL,6BAAQN,EAAa,eAAAA,EAAA,cAAA,GAAAO,CAAA,GACtB,OAAO,oBAETD,EAEO,OAFPf,EACKiB,EAAAL,EAAA,eAAe,KAAI,uBAAA,iBAAA,EAAA,CAAA,IAIlBA,EAAA,eAAe,SADvBT,EAIE,MAAA,CAzBR,IAAA,EAuBS,IAAKS,EAAc,eAAC,IACrB,MAAM,wBAxBd,EAAA,KAAA,EAAAX,CAAA,GAAAiB,EAAA,GAAA,EAAA,IA2Be,UACT,IAES,CAFTR,EAESS,EAAA,CAFD,QAAQ,QAAS,QAAON,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GAAAL,EAAA,SAASG,EAAA,eAAe,GAAG,KA5BjE,QAAAQ,EA4BoE,IAE9D,CA9BNC,EA4BoE,gBAE9D,IA9BN,EAAA,IA+BMX,EAAwCS,EAAA,CAA/B,QAAOV,EAAK,KAAA,EAAA,CA/B3B,QAAAW,EA+B6B,IAAQ,CA/BrCC,EA+B6B,UAAQ,IA/BrC,EAAA,oBAAA,EAAA"}

View File

@@ -1 +0,0 @@
{"version":3,"file":"InsertImage-pFxauZ_l.js","sources":["../../../../frontend/node_modules/frappe-ui/src/components/TextEditor/InsertImage.vue"],"sourcesContent":["<template>\n <slot v-bind=\"{ onClick: openDialog }\"></slot>\n <Dialog\n :options=\"{ title: 'Add Image' }\"\n v-model=\"addImageDialog.show\"\n @after-leave=\"reset\"\n >\n <template #body-content>\n <label\n class=\"relative cursor-pointer rounded-lg bg-gray-100 py-1 focus-within:bg-gray-200 hover:bg-gray-200\"\n >\n <input\n type=\"file\"\n class=\"w-full opacity-0\"\n @change=\"onImageSelect\"\n accept=\"image/*\"\n />\n <span class=\"absolute inset-0 select-none px-2 py-1 text-base\">\n {{ addImageDialog.file ? 'Select another image' : 'Select an image' }}\n </span>\n </label>\n <img\n v-if=\"addImageDialog.url\"\n :src=\"addImageDialog.url\"\n class=\"mt-2 w-full rounded-lg\"\n />\n </template>\n <template #actions>\n <Button variant=\"solid\" @click=\"addImage(addImageDialog.url)\">\n Insert Image\n </Button>\n <Button @click=\"reset\"> Cancel </Button>\n </template>\n </Dialog>\n</template>\n<script>\nimport fileToBase64 from '../../utils/file-to-base64'\nimport Dialog from '../Dialog.vue'\nimport Button from '../Button.vue'\n\nexport default {\n name: 'InsertImage',\n props: ['editor'],\n expose: ['openDialog'],\n data() {\n return {\n addImageDialog: { url: '', file: null, show: false },\n }\n },\n components: { Button, Dialog },\n methods: {\n openDialog() {\n this.addImageDialog.show = true\n },\n onImageSelect(e) {\n let file = e.target.files[0]\n if (!file) {\n return\n }\n this.addImageDialog.file = file\n fileToBase64(file).then((base64) => {\n this.addImageDialog.url = base64\n })\n },\n addImage(src) {\n this.editor.chain().focus().setImage({ src }).run()\n this.reset()\n },\n reset() {\n this.addImageDialog = this.$options.data().addImageDialog\n },\n },\n}\n</script>\n"],"names":["_sfc_main","Button","Dialog","e","file","fileToBase64","base64","src","_hoisted_1","_hoisted_2","_renderSlot","_ctx","$options","_createVNode","_component_Dialog","$data","_cache","$event","_createElementVNode","args","_toDisplayString","_createElementBlock","_component_Button"],"mappings":"2JAwCA,MAAKA,EAAU,CACb,KAAM,cACN,MAAO,CAAC,QAAQ,EAChB,OAAQ,CAAC,YAAY,EACrB,MAAO,CACL,MAAO,CACL,eAAgB,CAAE,IAAK,GAAI,KAAM,KAAM,KAAM,EAAO,CACtD,CACD,EACD,WAAY,CAAA,OAAEC,EAAQ,OAAAC,CAAQ,EAC9B,QAAS,CACP,YAAa,CACX,KAAK,eAAe,KAAO,EAC5B,EACD,cAAcC,EAAG,CACf,IAAIC,EAAOD,EAAE,OAAO,MAAM,CAAC,EACtBC,IAGL,KAAK,eAAe,KAAOA,EAC3BC,EAAaD,CAAI,EAAE,KAAME,GAAW,CAClC,KAAK,eAAe,IAAMA,EAC3B,EACF,EACD,SAASC,EAAK,CACZ,KAAK,OAAO,MAAK,EAAG,MAAK,EAAG,SAAS,CAAE,IAAAA,EAAK,EAAE,IAAI,EAClD,KAAK,MAAM,CACZ,EACD,OAAQ,CACN,KAAK,eAAiB,KAAK,SAAS,KAAM,EAAC,cAC5C,CACF,CACH,EA/DQC,EAAA,CAAA,MAAM,gGAAgG,EAQhGC,EAAA,CAAA,MAAM,kDAAkD,2FAhBpEC,EAA8CC,gCAArBC,EAAU,UAAA,CAAA,CAAA,CAAA,EACnCC,EA+BSC,EAAA,CA9BN,QAAS,CAAsB,MAAA,WAAA,EACvB,WAAAC,EAAA,eAAe,KAAf,sBAAAC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GAAAF,EAAA,eAAe,KAAIE,GAC3B,aAAaL,EAAK,QAER,iBACT,IAYQ,CAZRM,EAYQ,QAZRV,EAYQ,CATNU,EAKE,QAAA,CAJA,KAAK,OACL,MAAM,mBACL,6BAAQN,EAAa,eAAAA,EAAA,cAAA,GAAAO,CAAA,GACtB,OAAO,oBAETD,EAEO,OAFPT,EACKW,EAAAL,EAAA,eAAe,KAAI,uBAAA,iBAAA,EAAA,CAAA,IAIlBA,EAAA,eAAe,SADvBM,EAIE,MAAA,OAFC,IAAKN,EAAc,eAAC,IACrB,MAAM,gDAGC,UACT,IAES,CAFTF,EAESS,EAAA,CAFD,QAAQ,QAAS,QAAON,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GAAAL,EAAA,SAASG,EAAA,eAAe,GAAG,eAAG,IAE9D,GAF8D,gBAE9D,UACAF,EAAwCS,EAAA,CAA/B,QAAOV,EAAK,KAAA,EAAA,WAAE,IAAQ,GAAR,UAAQ","x_google_ignoreList":[0]}

View File

@@ -3,18 +3,18 @@ import {
a7 as g,
am as L,
D as m,
W as i,
X as i,
x as p,
y as f,
N as D,
aD as c,
aC as h,
F as a,
M as D,
az as c,
aA as h,
G as a,
B as l,
aM as v,
aJ as v,
U as x,
Q as _,
} from "./frappe-ui-iPT8hMkb.js";
} from "./frappe-ui-20hnMCM8.js";
const w = {
name: "InsertLink",
props: ["editor"],
@@ -49,7 +49,7 @@ const w = {
},
},
};
function V(t, e, C, B, n, s) {
function V(t, e, B, C, n, s) {
const r = i("FormControl"),
u = i("Button"),
k = i("Dialog");
@@ -118,4 +118,4 @@ function V(t, e, C, B, n, s) {
}
const R = d(w, [["render", V]]);
export { R as default };
//# sourceMappingURL=InsertLink-PJVOdU-g.js.map
//# sourceMappingURL=InsertLink-9nQ40Mze.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"InsertLink-9nQ40Mze.js","sources":["../../../../frappe-ui/src/components/TextEditor/InsertLink.vue"],"sourcesContent":["<template>\n <slot v-bind=\"{ onClick: openDialog }\"></slot>\n <Dialog\n :options=\"{ title: 'Set Link' }\"\n v-model=\"setLinkDialog.show\"\n @after-leave=\"reset\"\n >\n <template #body-content>\n <FormControl\n type=\"text\"\n label=\"URL\"\n v-model=\"setLinkDialog.url\"\n @keydown.enter=\"(e) => setLink(e.target.value)\"\n />\n </template>\n <template #actions>\n <Button variant=\"solid\" @click=\"setLink(setLinkDialog.url)\">\n Save\n </Button>\n </template>\n </Dialog>\n</template>\n<script>\nimport Dialog from '../Dialog.vue'\nimport Button from '../Button.vue'\nimport Input from '../Input.vue'\n\nexport default {\n name: 'InsertLink',\n props: ['editor'],\n components: { Button, Input, Dialog },\n data() {\n return {\n setLinkDialog: { url: '', show: false },\n }\n },\n methods: {\n openDialog() {\n let existingURL = this.editor.getAttributes('link').href\n if (existingURL) {\n this.setLinkDialog.url = existingURL\n }\n this.setLinkDialog.show = true\n },\n setLink(url) {\n // empty\n if (url === '') {\n this.editor.chain().focus().extendMarkRange('link').unsetLink().run()\n } else {\n // update link\n this.editor\n .chain()\n .focus()\n .extendMarkRange('link')\n .setLink({ href: url })\n .run()\n }\n\n this.setLinkDialog.show = false\n this.setLinkDialog.url = ''\n },\n reset() {\n this.setLinkDialog = this.$options.data().setLinkDialog\n },\n },\n}\n</script>\n"],"names":["_sfc_main","Button","Input","Dialog","existingURL","url","_openBlock","_createElementBlock","_Fragment","_renderSlot","_ctx","_normalizeProps","_guardReactiveProps","$options","_createVNode","_component_Dialog","$data","_cache","$event","_component_FormControl","_withKeys","e","_component_Button","_withCtx","_createTextVNode"],"mappings":"mJA2BA,MAAKA,EAAU,CACb,KAAM,aACN,MAAO,CAAC,QAAQ,EAChB,WAAY,CAAEC,OAAAA,EAAQ,MAAAC,EAAO,OAAAC,CAAQ,EACrC,MAAO,CACL,MAAO,CACL,cAAe,CAAE,IAAK,GAAI,KAAM,EAAO,CACzC,CACD,EACD,QAAS,CACP,YAAa,CACX,IAAIC,EAAc,KAAK,OAAO,cAAc,MAAM,EAAE,KAChDA,IACF,KAAK,cAAc,IAAMA,GAE3B,KAAK,cAAc,KAAO,EAC3B,EACD,QAAQC,EAAK,CAEPA,IAAQ,GACV,KAAK,OAAO,MAAK,EAAG,MAAK,EAAG,gBAAgB,MAAM,EAAE,UAAW,EAAC,IAAI,EAGpE,KAAK,OACF,MAAM,EACN,MAAM,EACN,gBAAgB,MAAM,EACtB,QAAQ,CAAE,KAAMA,EAAK,EACrB,IAAI,EAGT,KAAK,cAAc,KAAO,GAC1B,KAAK,cAAc,IAAM,EAC1B,EACD,OAAQ,CACN,KAAK,cAAgB,KAAK,SAAS,KAAM,EAAC,aAC3C,CACF,CACH,+EAjEA,OAAAC,EAAA,EAAAC,EAAAC,EAAA,KAAA,CACEC,EAA8CC,EAAA,OAAA,UADhDC,EAAAC,EAAA,CAAA,QAC2BC,EAAU,UAAA,CAAA,CAAA,CAAA,EACnCC,EAkBSC,EAAA,CAjBN,QAAS,CAAqB,MAAA,UAAA,EAHnC,WAIaC,EAAA,cAAc,KAJ3B,sBAIaC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GAAAF,EAAA,cAAc,KAAIE,GAC1B,aAAaL,EAAK,QAER,iBACT,IAKE,CALFC,EAKEK,EAAA,CAJA,KAAK,OACL,MAAM,MAVd,WAWiBH,EAAA,cAAc,IAX/B,sBAWiBC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GAAAF,EAAA,cAAc,IAAGE,GACzB,UAAOD,EAAA,CAAA,IAAAA,EAAA,CAAA,EAZhBG,EAYyBC,GAAMR,EAAA,QAAQQ,EAAE,OAAO,KAAK,EAAA,CAAA,OAAA,CAAA,6BAGtC,UACT,IAES,CAFTP,EAESQ,EAAA,CAFD,QAAQ,QAAS,QAAOL,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GAAAL,EAAA,QAAQG,EAAA,cAAc,GAAG,KAhB/D,QAAAO,EAgBkE,IAE5D,CAlBNC,EAgBkE,QAE5D,IAlBN,EAAA,MAAA,EAAA"}

View File

@@ -1 +0,0 @@
{"version":3,"file":"InsertLink-PJVOdU-g.js","sources":["../../../../frontend/node_modules/frappe-ui/src/components/TextEditor/InsertLink.vue"],"sourcesContent":["<template>\n <slot v-bind=\"{ onClick: openDialog }\"></slot>\n <Dialog\n :options=\"{ title: 'Set Link' }\"\n v-model=\"setLinkDialog.show\"\n @after-leave=\"reset\"\n >\n <template #body-content>\n <FormControl\n type=\"text\"\n label=\"URL\"\n v-model=\"setLinkDialog.url\"\n @keydown.enter=\"(e) => setLink(e.target.value)\"\n />\n </template>\n <template #actions>\n <Button variant=\"solid\" @click=\"setLink(setLinkDialog.url)\">\n Save\n </Button>\n </template>\n </Dialog>\n</template>\n<script>\nimport Dialog from '../Dialog.vue'\nimport Button from '../Button.vue'\nimport Input from '../Input.vue'\n\nexport default {\n name: 'InsertLink',\n props: ['editor'],\n components: { Button, Input, Dialog },\n data() {\n return {\n setLinkDialog: { url: '', show: false },\n }\n },\n methods: {\n openDialog() {\n let existingURL = this.editor.getAttributes('link').href\n if (existingURL) {\n this.setLinkDialog.url = existingURL\n }\n this.setLinkDialog.show = true\n },\n setLink(url) {\n // empty\n if (url === '') {\n this.editor.chain().focus().extendMarkRange('link').unsetLink().run()\n } else {\n // update link\n this.editor\n .chain()\n .focus()\n .extendMarkRange('link')\n .setLink({ href: url })\n .run()\n }\n\n this.setLinkDialog.show = false\n this.setLinkDialog.url = ''\n },\n reset() {\n this.setLinkDialog = this.$options.data().setLinkDialog\n },\n },\n}\n</script>\n"],"names":["_sfc_main","Button","Input","Dialog","existingURL","url","_renderSlot","_ctx","$options","_createVNode","_component_Dialog","$data","_cache","$event","_component_FormControl","_withKeys","e","_component_Button"],"mappings":"mJA2BA,MAAKA,EAAU,CACb,KAAM,aACN,MAAO,CAAC,QAAQ,EAChB,WAAY,CAAEC,OAAAA,EAAQ,MAAAC,EAAO,OAAAC,CAAQ,EACrC,MAAO,CACL,MAAO,CACL,cAAe,CAAE,IAAK,GAAI,KAAM,EAAO,CACzC,CACD,EACD,QAAS,CACP,YAAa,CACX,IAAIC,EAAc,KAAK,OAAO,cAAc,MAAM,EAAE,KAChDA,IACF,KAAK,cAAc,IAAMA,GAE3B,KAAK,cAAc,KAAO,EAC3B,EACD,QAAQC,EAAK,CAEPA,IAAQ,GACV,KAAK,OAAO,MAAK,EAAG,MAAK,EAAG,gBAAgB,MAAM,EAAE,UAAW,EAAC,IAAI,EAGpE,KAAK,OACF,MAAM,EACN,MAAM,EACN,gBAAgB,MAAM,EACtB,QAAQ,CAAE,KAAMA,EAAK,EACrB,IAAI,EAGT,KAAK,cAAc,KAAO,GAC1B,KAAK,cAAc,IAAM,EAC1B,EACD,OAAQ,CACN,KAAK,cAAgB,KAAK,SAAS,KAAM,EAAC,aAC3C,CACF,CACH,oGAhEEC,EAA8CC,gCAArBC,EAAU,UAAA,CAAA,CAAA,CAAA,EACnCC,EAkBSC,EAAA,CAjBN,QAAS,CAAqB,MAAA,UAAA,EACtB,WAAAC,EAAA,cAAc,KAAd,sBAAAC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GAAAF,EAAA,cAAc,KAAIE,GAC1B,aAAaL,EAAK,QAER,iBACT,IAKE,CALFC,EAKEK,EAAA,CAJA,KAAK,OACL,MAAM,MACG,WAAAH,EAAA,cAAc,IAAd,sBAAAC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GAAAF,EAAA,cAAc,IAAGE,GACzB,UAAOD,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAG,EAASC,GAAMR,EAAA,QAAQQ,EAAE,OAAO,KAAK,EAAA,CAAA,OAAA,CAAA,6BAGtC,UACT,IAES,CAFTP,EAESQ,EAAA,CAFD,QAAQ,QAAS,QAAOL,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GAAAL,EAAA,QAAQG,EAAA,cAAc,GAAG,eAAG,IAE5D,GAF4D,QAE5D","x_google_ignoreList":[0]}

View File

@@ -1 +0,0 @@
{"version":3,"file":"InsertVideo-5zm7I1WB.js","sources":["../../../../frontend/node_modules/frappe-ui/src/components/TextEditor/InsertVideo.vue"],"sourcesContent":["<template>\n <slot v-bind=\"{ onClick: openDialog }\"></slot>\n <Dialog\n :options=\"{ title: 'Add Video' }\"\n v-model=\"addVideoDialog.show\"\n @after-leave=\"reset\"\n >\n <template #body-content>\n <FileUploader\n file-types=\"video/*\"\n @success=\"(file) => (addVideoDialog.url = file.file_url)\"\n >\n <template v-slot=\"{ file, progress, uploading, openFileSelector }\">\n <div class=\"flex items-center space-x-2\">\n <Button @click=\"openFileSelector\">\n {{\n uploading\n ? `Uploading ${progress}%`\n : addVideoDialog.url\n ? 'Change Video'\n : 'Upload Video'\n }}\n </Button>\n <Button\n v-if=\"addVideoDialog.url\"\n @click=\"\n () => {\n addVideoDialog.url = null\n addVideoDialog.file = null\n }\n \"\n >\n Remove\n </Button>\n </div>\n </template>\n </FileUploader>\n <video\n v-if=\"addVideoDialog.url\"\n :src=\"addVideoDialog.url\"\n class=\"mt-2 w-full rounded-lg\"\n type=\"video/mp4\"\n controls\n />\n </template>\n <template #actions>\n <Button variant=\"solid\" @click=\"addVideo(addVideoDialog.url)\">\n Insert Video\n </Button>\n <Button @click=\"reset\">Cancel</Button>\n </template>\n </Dialog>\n</template>\n<script>\nimport Button from '../Button.vue'\nimport Dialog from '../Dialog.vue'\nimport FileUploader from '../FileUploader.vue'\n\nexport default {\n name: 'InsertImage',\n props: ['editor'],\n expose: ['openDialog'],\n data() {\n return {\n addVideoDialog: { url: '', file: null, show: false },\n }\n },\n components: { Button, Dialog, FileUploader },\n methods: {\n openDialog() {\n this.addVideoDialog.show = true\n },\n onVideoSelect(e) {\n let file = e.target.files[0]\n if (!file) {\n return\n }\n this.addVideoDialog.file = file\n },\n\n addVideo(src) {\n this.editor\n .chain()\n .focus()\n .insertContent(`<video src=\"${src}\"></video>`)\n .run()\n this.reset()\n },\n reset() {\n this.addVideoDialog = this.$options.data().addVideoDialog\n },\n },\n}\n</script>\n"],"names":["_sfc_main","Button","Dialog","FileUploader","e","file","src","_hoisted_1","_renderSlot","_ctx","$options","_createVNode","_component_Dialog","$data","_cache","$event","_component_FileUploader","_withCtx","progress","uploading","openFileSelector","_createElementVNode","_component_Button","_createBlock","_createElementBlock"],"mappings":"uKA0DA,MAAKA,EAAU,CACb,KAAM,cACN,MAAO,CAAC,QAAQ,EAChB,OAAQ,CAAC,YAAY,EACrB,MAAO,CACL,MAAO,CACL,eAAgB,CAAE,IAAK,GAAI,KAAM,KAAM,KAAM,EAAO,CACtD,CACD,EACD,WAAY,CAAEC,OAAAA,EAAQ,OAAAC,EAAQ,aAAAC,CAAc,EAC5C,QAAS,CACP,YAAa,CACX,KAAK,eAAe,KAAO,EAC5B,EACD,cAAcC,EAAG,CACf,IAAIC,EAAOD,EAAE,OAAO,MAAM,CAAC,EACtBC,IAGL,KAAK,eAAe,KAAOA,EAC5B,EAED,SAASC,EAAK,CACZ,KAAK,OACF,MAAM,EACN,MAAM,EACN,cAAc,eAAeA,CAAG,YAAY,EAC5C,IAAI,EACP,KAAK,MAAM,CACZ,EACD,OAAQ,CACN,KAAK,eAAiB,KAAK,SAAS,KAAM,EAAC,cAC5C,CACF,CACH,EA/EeC,EAAA,CAAA,MAAM,6BAA6B,+GAZhDC,EAA8CC,gCAArBC,EAAU,UAAA,CAAA,CAAA,CAAA,EACnCC,EAiDSC,EAAA,CAhDN,QAAS,CAAsB,MAAA,WAAA,EACvB,WAAAC,EAAA,eAAe,KAAf,sBAAAC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GAAAF,EAAA,eAAe,KAAIE,GAC3B,aAAaL,EAAK,QAER,iBACT,IA4Be,CA5BfC,EA4BeK,EAAA,CA3Bb,aAAW,UACV,UAAOF,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAGT,GAAUQ,EAAA,eAAe,IAAMR,EAAK,YAG7C,QAAAY,EAAA,CAqBM,CAtBY,KAAAZ,EAAM,SAAAa,EAAU,UAAAC,EAAW,iBAAAC,KAAgB,CAC7DC,EAqBM,MArBNd,EAqBM,CApBJI,EAQSW,EAAA,CARA,QAAOF,CAAgB,EAAA,WAC9B,IAME,KALAD,eAA2CD,CAAQ,IAAwBL,EAAA,eAAe,+DAQtFA,EAAA,eAAe,SADvBU,EAUSD,EAAA,OARN,aAAkDT,EAAA,eAAe,IAAG,KAA0BA,EAAA,eAAe,KAAI,kBAMnH,IAED,GAFC,UAED,+CAKEA,EAAA,eAAe,SADvBW,EAME,QAAA,OAJC,IAAKX,EAAc,eAAC,IACrB,MAAM,yBACN,KAAK,YACL,SAAA,0BAGO,UACT,IAES,CAFTF,EAESW,EAAA,CAFD,QAAQ,QAAS,QAAOR,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GAAAL,EAAA,SAASG,EAAA,eAAe,GAAG,eAAG,IAE9D,GAF8D,gBAE9D,UACAF,EAAsCW,EAAA,CAA7B,QAAOZ,EAAK,KAAA,EAAA,WAAE,IAAM,GAAN,QAAM","x_google_ignoreList":[0]}

View File

@@ -2,22 +2,22 @@ import {
v as _,
a7 as C,
D as v,
aO as k,
W as r,
aL as k,
X as r,
x as u,
y as c,
N as h,
aD as x,
aC as B,
F as a,
M as h,
az as x,
aA as B,
G as a,
B as l,
H as y,
C as y,
U as n,
A as U,
I as p,
J as w,
Q as F,
} from "./frappe-ui-iPT8hMkb.js";
I as U,
A as w,
J as p,
Q as A,
} from "./frappe-ui-20hnMCM8.js";
const I = {
name: "InsertImage",
props: ["editor"],
@@ -47,16 +47,16 @@ const I = {
},
},
},
N = { class: "flex items-center space-x-2" },
A = ["src"];
function S(i, o, L, P, e, t) {
F = { class: "flex items-center space-x-2" },
N = ["src"];
function S(i, o, L, z, e, t) {
const s = r("Button"),
V = r("FileUploader"),
g = r("Dialog");
return (
u(),
c(
F,
A,
null,
[
h(i.$slots, "default", x(B({ onClick: t.openDialog }))),
@@ -89,14 +89,14 @@ function S(i, o, L, P, e, t) {
uploading: m,
openFileSelector: D,
}) => [
w("div", N, [
y("div", F, [
a(
s,
{ onClick: D },
{
default: l(() => [
n(
y(
U(
m
? `Uploading ${f}%`
: e
@@ -115,7 +115,7 @@ function S(i, o, L, P, e, t) {
),
e.addVideoDialog.url
? (u(),
U(
w(
s,
{
key: 0,
@@ -159,7 +159,7 @@ function S(i, o, L, P, e, t) {
},
null,
8,
A
N
))
: p("", !0),
]),
@@ -196,6 +196,6 @@ function S(i, o, L, P, e, t) {
)
);
}
const b = _(I, [["render", S]]);
export { b as default };
//# sourceMappingURL=InsertVideo-5zm7I1WB.js.map
const R = _(I, [["render", S]]);
export { R as default };
//# sourceMappingURL=InsertVideo-nOXySFw5.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"InsertVideo-nOXySFw5.js","sources":["../../../../frappe-ui/src/components/TextEditor/InsertVideo.vue"],"sourcesContent":["<template>\n <slot v-bind=\"{ onClick: openDialog }\"></slot>\n <Dialog\n :options=\"{ title: 'Add Video' }\"\n v-model=\"addVideoDialog.show\"\n @after-leave=\"reset\"\n >\n <template #body-content>\n <FileUploader\n file-types=\"video/*\"\n @success=\"(file) => (addVideoDialog.url = file.file_url)\"\n >\n <template v-slot=\"{ file, progress, uploading, openFileSelector }\">\n <div class=\"flex items-center space-x-2\">\n <Button @click=\"openFileSelector\">\n {{\n uploading\n ? `Uploading ${progress}%`\n : addVideoDialog.url\n ? 'Change Video'\n : 'Upload Video'\n }}\n </Button>\n <Button\n v-if=\"addVideoDialog.url\"\n @click=\"\n () => {\n addVideoDialog.url = null\n addVideoDialog.file = null\n }\n \"\n >\n Remove\n </Button>\n </div>\n </template>\n </FileUploader>\n <video\n v-if=\"addVideoDialog.url\"\n :src=\"addVideoDialog.url\"\n class=\"mt-2 w-full rounded-lg\"\n type=\"video/mp4\"\n controls\n />\n </template>\n <template #actions>\n <Button variant=\"solid\" @click=\"addVideo(addVideoDialog.url)\">\n Insert Video\n </Button>\n <Button @click=\"reset\">Cancel</Button>\n </template>\n </Dialog>\n</template>\n<script>\nimport Button from '../Button.vue'\nimport Dialog from '../Dialog.vue'\nimport FileUploader from '../FileUploader.vue'\n\nexport default {\n name: 'InsertImage',\n props: ['editor'],\n expose: ['openDialog'],\n data() {\n return {\n addVideoDialog: { url: '', file: null, show: false },\n }\n },\n components: { Button, Dialog, FileUploader },\n methods: {\n openDialog() {\n this.addVideoDialog.show = true\n },\n onVideoSelect(e) {\n let file = e.target.files[0]\n if (!file) {\n return\n }\n this.addVideoDialog.file = file\n },\n\n addVideo(src) {\n this.editor\n .chain()\n .focus()\n .insertContent(`<video src=\"${src}\"></video>`)\n .run()\n this.reset()\n },\n reset() {\n this.addVideoDialog = this.$options.data().addVideoDialog\n },\n },\n}\n</script>\n"],"names":["_sfc_main","Button","Dialog","FileUploader","e","file","src","_hoisted_1","_hoisted_2","_openBlock","_createElementBlock","_Fragment","_renderSlot","_ctx","_normalizeProps","_guardReactiveProps","$options","_createVNode","_component_Dialog","$data","_cache","$event","_component_FileUploader","_withCtx","progress","uploading","openFileSelector","_createElementVNode","_component_Button","_createTextVNode","_toDisplayString","_createBlock","_createCommentVNode"],"mappings":"uKA0DA,MAAKA,EAAU,CACb,KAAM,cACN,MAAO,CAAC,QAAQ,EAChB,OAAQ,CAAC,YAAY,EACrB,MAAO,CACL,MAAO,CACL,eAAgB,CAAE,IAAK,GAAI,KAAM,KAAM,KAAM,EAAO,CACtD,CACD,EACD,WAAY,CAAEC,OAAAA,EAAQ,OAAAC,EAAQ,aAAAC,CAAc,EAC5C,QAAS,CACP,YAAa,CACX,KAAK,eAAe,KAAO,EAC5B,EACD,cAAcC,EAAG,CACf,IAAIC,EAAOD,EAAE,OAAO,MAAM,CAAC,EACtBC,IAGL,KAAK,eAAe,KAAOA,EAC5B,EAED,SAASC,EAAK,CACZ,KAAK,OACF,MAAM,EACN,MAAM,EACN,cAAc,eAAeA,CAAG,YAAY,EAC5C,IAAI,EACP,KAAK,MAAM,CACZ,EACD,OAAQ,CACN,KAAK,eAAiB,KAAK,SAAS,KAAM,EAAC,cAC5C,CACF,CACH,EA/EeC,EAAA,CAAA,MAAM,6BAA6B,EAblDC,EAAA,CAAA,KAAA,gFAAA,OAAAC,EAAA,EAAAC,EAAAC,EAAA,KAAA,CACEC,EAA8CC,EAAA,OAAA,UADhDC,EAAAC,EAAA,CAAA,QAC2BC,EAAU,UAAA,CAAA,CAAA,CAAA,EACnCC,EAiDSC,EAAA,CAhDN,QAAS,CAAsB,MAAA,WAAA,EAHpC,WAIaC,EAAA,eAAe,KAJ5B,sBAIaC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GAAAF,EAAA,eAAe,KAAIE,GAC3B,aAAaL,EAAK,QAER,iBACT,IA4Be,CA5BfC,EA4BeK,EAAA,CA3Bb,aAAW,UACV,UAAOF,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAGf,GAAUc,EAAA,eAAe,IAAMd,EAAK,YAVvD,QAaUkB,EAAA,CAqBM,CAtBY,KAAAlB,EAAM,SAAAmB,EAAU,UAAAC,EAAW,iBAAAC,KAAgB,CAC7DC,EAqBM,MArBNpB,EAqBM,CApBJU,EAQSW,EAAA,CARA,QAAOF,CAAgB,EAAA,CAd5C,QAAAH,EAec,IAME,CArBhBM,EAAAC,EAgBgBL,eAA2CD,CAAQ,IAAwBL,EAAA,eAAe,wCAhB1G,EAAA,qBAwBoBA,EAAA,eAAe,SADvBY,EAUSH,EAAA,CAjCrB,IAAA,EAyBe,aAAkDT,EAAA,eAAe,IAAG,KAA0BA,EAAA,eAAe,KAAI,QAzBhI,QAAAI,EA+Ba,IAED,CAjCZM,EA+Ba,UAED,IAjCZ,EAAA,sBAAAG,EAAA,GAAA,EAAA,MAAA,EAAA,IAsCcb,EAAA,eAAe,SADvBT,EAME,QAAA,CA3CR,IAAA,EAuCS,IAAKS,EAAc,eAAC,IACrB,MAAM,yBACN,KAAK,YACL,SAAA,EA1CR,EAAA,KAAA,EAAAX,CAAA,GAAAwB,EAAA,GAAA,EAAA,IA6Ce,UACT,IAES,CAFTf,EAESW,EAAA,CAFD,QAAQ,QAAS,QAAOR,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GAAAL,EAAA,SAASG,EAAA,eAAe,GAAG,KA9CjE,QAAAI,EA8CoE,IAE9D,CAhDNM,EA8CoE,gBAE9D,IAhDN,EAAA,IAiDMZ,EAAsCW,EAAA,CAA7B,QAAOZ,EAAK,KAAA,EAAA,CAjD3B,QAAAO,EAiD6B,IAAM,CAjDnCM,EAiD6B,QAAM,IAjDnC,EAAA,oBAAA,EAAA"}

View File

@@ -0,0 +1,95 @@
import {
d as n,
k as _,
y as m,
C as s,
G as o,
H as e,
A as p,
B as r,
J as u,
x as c,
a6 as d,
U as b,
I as f,
a7 as h,
} from "./frappe-ui-20hnMCM8.js";
import { P as x } from "./plus-pxSjkL_w.js";
import "./index-Vx7mSx23.js";
const j = { class: "text-base h-screen" },
y = {
class: "sticky top-0 z-10 flex items-center justify-between border-b bg-white px-3 py-2.5 sm:px-5",
},
k = { class: "flex" },
w = s("div", null, null, -1),
V = {
__name: "JobDetail",
props: { job: { type: String, required: !0 } },
setup(i) {
const l = n("$user");
return (
_({
url: "lms.lms.api.get_job_details",
params: { job: i.job },
cache: ["job"],
auto: !0,
}),
(t, J) => {
var a;
return (
c(),
m("div", j, [
s("header", y, [
o(
e(d),
{
class: "h-7",
items: [
{
label: t.__("Jobs"),
route: { name: "Jobs" },
},
],
},
null,
8,
["items"]
),
s("div", k, [
(a = e(l).data) != null && a.name
? (c(),
p(
e(h),
{ key: 0, variant: "solid" },
{
prefix: r(() => [
o(e(x), {
class: "h-4 w-4",
}),
]),
default: r(() => [
b(
" " +
f(
t.__(
"New Job"
)
),
1
),
]),
_: 1,
}
))
: u("", !0),
]),
]),
w,
])
);
}
);
},
};
export { V as default };
//# sourceMappingURL=JobDetail-NAXvVry4.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"JobDetail-NAXvVry4.js","sources":["../../../../frontend/src/pages/JobDetail.vue"],"sourcesContent":["<template>\n\t<div class=\"text-base h-screen\">\n\t\t<header\n\t\t\tclass=\"sticky top-0 z-10 flex items-center justify-between border-b bg-white px-3 py-2.5 sm:px-5\"\n\t\t>\n\t\t\t<Breadcrumbs\n\t\t\t\tclass=\"h-7\"\n\t\t\t\t:items=\"[{ label: __('Jobs'), route: { name: 'Jobs' } }]\"\n\t\t\t/>\n\t\t\t<div class=\"flex\">\n\t\t\t\t<Button v-if=\"user.data?.name\" variant=\"solid\">\n\t\t\t\t\t<template #prefix>\n\t\t\t\t\t\t<Plus class=\"h-4 w-4\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ __('New Job') }}\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</header>\n\t\t<div>\n\t\t\t\n\t\t</div>\n\t</div>\n</template>\n<script setup>\nimport { createDocumentResource, Button, Breadcrumbs, createResource } from 'frappe-ui';\nimport { inject } from 'vue';\nimport { Plus } from 'lucide-vue-next';\n\nconst user = inject('$user')\n\nconst props = defineProps({\n\tjob: {\n\t\ttype: String,\n\t\trequired: true,\n\t},\n})\nconst job = createResource({\n\turl: \"lms.lms.api.get_job_details\",\n\tparams: {\n\t\tjob: props.job,\n\t},\n\tcache: [\"job\"],\n\tauto: true,\n})\n</script>\n"],"names":["user","inject","createResource","__props"],"mappings":"qcA4BA,MAAMA,EAAOC,EAAO,OAAO,EAQf,OAAAC,EAAe,CAC1B,IAAK,8BACL,OAAQ,CACP,IATYC,EASD,GACX,EACD,MAAO,CAAC,KAAK,EACb,KAAM,EACP,CAAC"}

View File

@@ -0,0 +1,238 @@
import {
d as p,
x as n,
y as c,
C as e,
I as l,
U as _,
G as a,
H as s,
a8 as h,
B as r,
k as y,
A as j,
J as m,
Q as g,
R as x,
a6 as k,
a7 as v,
X as $,
} from "./frappe-ui-20hnMCM8.js";
import { a as w } from "./index-Vx7mSx23.js";
import { P as J } from "./plus-pxSjkL_w.js";
/**
* @license lucide-vue-next v0.309.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/ const M = w("MapPinIcon", [
[
"path",
{
d: "M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0Z",
key: "2oe9fu",
},
],
["circle", { cx: "12", cy: "10", r: "3", key: "ilqhr7" }],
]),
B = { class: "flex shadow rounded-md p-4 h-full" },
C = ["src"],
N = { class: "text-xl font-semibold mb-2" },
D = { class: "font-medium" },
P = { class: "flex items-center my-4" },
V = { class: "font-medium" },
Y = {
__name: "JobCard",
props: { job: { type: Object, default: null } },
setup(t) {
const i = p("$dayjs");
return (o, d) => (
n(),
c("div", B, [
e(
"img",
{
src: t.job.company_logo,
class: "w-12 h-12 rounded-lg object-contain mr-4",
},
null,
8,
C
),
e("div", null, [
e("div", N, l(t.job.job_title), 1),
e("div", null, [
_(l(o.__("posted by")) + " ", 1),
e("span", D, l(t.job.company_name), 1),
]),
e("div", P, [
a(
s(h),
{
label: t.job.type,
theme: "green",
size: "lg",
class: "mr-4",
},
null,
8,
["label"]
),
a(
s(h),
{
label: t.job.location,
theme: "gray",
size: "lg",
},
{
prefix: r(() => [
a(s(M), {
class: "h-4 w-4 stroke-1.5",
}),
]),
_: 1,
},
8,
["label"]
),
]),
e("div", null, [
_(l(o.__("posted on")) + " ", 1),
e(
"span",
V,
l(s(i)(t.job.creation).format("DD MMM YYYY")),
1
),
]),
]),
])
);
},
},
z = { class: "h-screen text-base" },
I = {
class: "sticky top-0 z-10 flex items-center justify-between border-b bg-white px-3 py-2.5 sm:px-5",
},
L = { class: "flex" },
R = { key: 0 },
q = { class: "grid grid-cols-2 gap-5 p-5" },
H = {
__name: "Jobs",
setup(t) {
const i = p("$user"),
o = y({
url: "lms.lms.api.get_job_opportunities",
cache: ["jobs"],
auto: !0,
});
return (d, A) => {
var u;
const f = $("router-link");
return (
n(),
c("div", z, [
e("header", I, [
a(
s(k),
{
class: "h-7",
items: [
{
label: d.__("Jobs"),
route: { name: "Jobs" },
},
],
},
null,
8,
["items"]
),
e("div", L, [
(u = s(i).data) != null && u.name
? (n(),
j(
s(v),
{ key: 0, variant: "solid" },
{
prefix: r(() => [
a(s(J), {
class: "h-4 w-4",
}),
]),
default: r(() => [
_(
" " +
l(d.__("New Job")),
1
),
]),
_: 1,
}
))
: m("", !0),
]),
]),
s(o).data
? (n(),
c("div", R, [
e("div", q, [
s(o).data.length
? (n(!0),
c(
g,
{ key: 0 },
x(
s(o).data,
(b) => (
n(),
c("div", null, [
a(
f,
{
to: {
name: "JobDetail",
params: {
job: b.name,
},
},
},
{
default:
r(
() => [
a(
Y,
{
job: b,
},
null,
8,
[
"job",
]
),
]
),
_: 2,
},
1032,
["to"]
),
])
)
),
256
))
: m("", !0),
]),
]))
: m("", !0),
])
);
};
},
};
export { H as default };
//# sourceMappingURL=Jobs-PZPyKz-0.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Jobs-PZPyKz-0.js","sources":["../../../../node_modules/lucide-vue-next/dist/esm/icons/map-pin.js","../../../../frontend/src/components/JobCard.vue","../../../../frontend/src/pages/Jobs.vue"],"sourcesContent":["/**\n * @license lucide-vue-next v0.309.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst MapPin = createLucideIcon(\"MapPinIcon\", [\n [\"path\", { d: \"M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0Z\", key: \"2oe9fu\" }],\n [\"circle\", { cx: \"12\", cy: \"10\", r: \"3\", key: \"ilqhr7\" }]\n]);\n\nexport { MapPin as default };\n//# sourceMappingURL=map-pin.js.map\n","<template>\n\t<div class=\"flex shadow rounded-md p-4 h-full\">\n\t\t<img\n\t\t\t:src=\"job.company_logo\"\n\t\t\tclass=\"w-12 h-12 rounded-lg object-contain mr-4\"\n\t\t/>\n\t\t<div>\n\t\t\t<div class=\"text-xl font-semibold mb-2\">\n\t\t\t\t{{ job.job_title }}\n\t\t\t</div>\n\t\t\t<div>\n\t\t\t\t{{ __(\"posted by\") }}\n\t\t\t\t<span class=\"font-medium\">\n\t\t\t\t\t{{ job.company_name }}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t\t<div class=\"flex items-center my-4\">\n\t\t\t\t<Badge :label=\"job.type\" theme=\"green\" size=\"lg\" class=\"mr-4\"/>\n\t\t\t\t<Badge :label=\"job.location\" theme=\"gray\" size=\"lg\">\n\t\t\t\t\t<template #prefix>\n\t\t\t\t\t\t<MapPin class=\"h-4 w-4 stroke-1.5\" />\n\t\t\t\t\t</template>\n\t\t\t\t</Badge>\n\t\t\t</div>\n\t\t\t<div>\n\t\t\t\t{{ __(\"posted on\") }}\n\t\t\t\t<span class=\"font-medium\">\n\t\t\t\t\t{{ dayjs(job.creation).format('DD MMM YYYY') }}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<!-- <div class=\"flex flex-col shadow rounded-md p-4 h-full\">\n\t\t<div class=\"flex justify-between\">\n\t\t\t<div>\n\t\t\t\t<div class=\"text-xl font-semibold mb-2\">\n\t\t\t\t\t{{ job.job_title }}\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t{{ __(\"posted by\") }}\n\t\t\t\t\t<span class=\"font-medium\">\n\t\t\t\t\t\t{{ job.company_name }}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<img\n\t\t\t\t:src=\"job.company_logo\"\n\t\t\t\tclass=\"w-12 h-12 rounded-lg object-contain\"\n\t\t\t/>\n\t\t</div>\n\t\t<div class=\"flex justify-between mt-8\">\n\t\t\t<div class=\"flex items-center\">\n\t\t\t\t<Badge :label=\"job.type\" theme=\"green\" size=\"lg\" class=\"mr-4\"/>\n\t\t\t\t<Badge :label=\"job.location\" theme=\"gray\" size=\"lg\">\n\t\t\t\t\t<template #prefix>\n\t\t\t\t\t\t<MapPin class=\"h-4 w-4 stroke-1.5\" />\n\t\t\t\t\t</template>\n\t\t\t\t</Badge>\n\t\t\t</div>\n\t\t\t<div>\n\t\t\t\t<span class=\"font-medium\">\n\t\t\t\t\t{{ dayjs(job.creation).format('DD MMM YYYY') }}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</div> -->\n</template>\n<script setup>\nimport { MapPin } from 'lucide-vue-next'\nimport { Badge } from 'frappe-ui'\nimport { inject } from 'vue'\n\nconst dayjs = inject('$dayjs')\nconst props = defineProps({\n\tjob: {\n\t\ttype: Object,\n\t\tdefault: null,\n\t},\n})\n</script>\n","<template>\n\t<div class=\"h-screen text-base\">\n\t\t<header\n\t\t\tclass=\"sticky top-0 z-10 flex items-center justify-between border-b bg-white px-3 py-2.5 sm:px-5\"\n\t\t>\n\t\t\t<Breadcrumbs\n\t\t\t\tclass=\"h-7\"\n\t\t\t\t:items=\"[{ label: __('Jobs'), route: { name: 'Jobs' } }]\"\n\t\t\t/>\n\t\t\t<div class=\"flex\">\n\t\t\t\t<Button v-if=\"user.data?.name\" variant=\"solid\">\n\t\t\t\t\t<template #prefix>\n\t\t\t\t\t\t<Plus class=\"h-4 w-4\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ __('New Job') }}\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</header>\n\t\t<div v-if=\"jobs.data\">\n\t\t\t<div class=\"grid grid-cols-2 gap-5 p-5\">\n\t\t\t\t<div v-if=\"jobs.data.length\" v-for=\"job in jobs.data\">\n\t\t\t\t\t<router-link\n\t\t\t\t\t\t:to=\"{\n\t\t\t\t\t\t\tname: 'JobDetail',\n\t\t\t\t\t\t\tparams: { job: job.name },\n\t\t\t\t\t\t}\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<JobCard :job=\"job\" />\n\t\t\t\t\t</router-link>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n<script setup>\nimport { Button, Breadcrumbs, createResource } from 'frappe-ui'\nimport { Plus } from 'lucide-vue-next'\nimport { inject } from 'vue'\nimport JobCard from '@/components/JobCard.vue'\n\nconst user = inject('$user')\n\nconst jobs = createResource({\n\turl: 'lms.lms.api.get_job_opportunities',\n\tcache: ['jobs'],\n\tauto: true,\n})\n</script>\n"],"names":["MapPin","createLucideIcon","dayjs","inject","user","jobs","createResource"],"mappings":"qPAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMA,EAASC,EAAiB,aAAc,CAC5C,CAAC,OAAQ,CAAE,EAAG,iDAAkD,IAAK,QAAQ,CAAE,EAC/E,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,IAAK,IAAK,SAAU,CAC1D,CAAC,wPC4DD,MAAMC,EAAQC,EAAO,QAAQ,wyBChC7B,MAAMC,EAAOD,EAAO,OAAO,EAErBE,EAAOC,EAAe,CAC3B,IAAK,oCACL,MAAO,CAAC,MAAM,EACd,KAAM,EACP,CAAC","x_google_ignoreList":[0]}

View File

@@ -0,0 +1 @@
.avatar-group{display:inline-flex;align-items:center}.avatar-group .avatar{transition:margin .1s ease-in-out}.lesson-content p{margin-bottom:1rem;line-height:1.7}.lesson-content li{line-height:1.7}.lesson-content ol{list-style:auto;margin:revert;padding:1rem}.lesson-content ul{list-style:auto;padding:1rem;margin:revert}.lesson-content img{border:1px solid #EDEDED;border-radius:.5rem}.lesson-content code{display:block;overflow-x:auto;padding:1rem 1.25rem;background:#011627;color:#d6deeb;border-radius:.5rem;margin:1rem 0}.lesson-content a{color:#171717;text-decoration:underline;font-weight:500}

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
.avatar-group{display:inline-flex;align-items:center}.avatar-group .avatar{transition:margin .1s ease-in-out}iframe{border:1px solid #ddd;border-radius:.5rem;margin-bottom:1rem}.lesson-content p{margin-bottom:1rem;line-height:1.7}.lesson-content li{line-height:1.7}.lesson-content ol{list-style:auto;margin:revert;padding:1rem}.lesson-content ul{list-style:auto;padding:1rem;margin:revert}.lesson-content img{border:1px solid #EDEDED;border-radius:.5rem}.lesson-content code{display:block;overflow-x:auto;padding:1rem 1.25rem;background:#011627;color:#d6deeb;border-radius:.5rem;margin:1rem 0}.lesson-content a{color:#171717;text-decoration:underline;font-weight:500}

View File

@@ -1,37 +1,37 @@
import {
a as pe,
d as pe,
r as Gu,
b as Qu,
a as Qu,
ad as Oe,
k as K,
w as _e,
G as h,
H as h,
x as k,
y as E,
J as C,
H as v,
I as z,
C,
I as v,
J as z,
A as M,
B as P,
a7 as Z,
Q as cu,
R as ou,
F as U,
G as U,
ae as je,
j as Ue,
af as Ze,
u as He,
U as Ve,
C as Ge,
af as Ue,
j as Ze,
ag as He,
u as Ve,
F as Ge,
V as Qe,
ag as We,
W as Je,
a6 as Ye,
} from "./frappe-ui-iPT8hMkb.js";
import { _ as Xe, C as Ke } from "./CourseOutline-7cUm8E8p.js";
import { _ as u0 } from "./UserAvatar-nJqmkBPv.js";
import { a as Pu, t as e0, c as t0 } from "./index-qZ7Yta4u.js";
import { _ as r0, C as n0 } from "./Discussions-0iopHFAD.js";
X as We,
a6 as Je,
U as Ye,
} from "./frappe-ui-20hnMCM8.js";
import { _ as Xe, C as Ke } from "./CourseOutline-M5G5Rx7O.js";
import { _ as u0 } from "./UserAvatar-yrWInUTi.js";
import { a as Pu, t as e0, c as t0 } from "./index-Vx7mSx23.js";
import { _ as r0, C as n0 } from "./Discussions-C9dFHLpJ.js";
/**
* @license lucide-vue-next v0.309.0 - ISC
*
@@ -5080,7 +5080,7 @@ const Hr = { key: 0 },
},
setup(u) {
const e = pe("$user"),
t = We(),
t = Ue(),
n = new $({ html: !0, linkify: !0 }),
c = u,
r = K({
@@ -5124,7 +5124,7 @@ const Hr = { key: 0 },
params: { course: c.courseName },
auto: !0,
}),
a = Ue(() => {
a = Ze(() => {
var g, A;
let l = [
{ label: "All Courses", route: { name: "Courses" } },
@@ -5157,10 +5157,10 @@ const Hr = { key: 0 },
l
);
});
Ze(() => {
He(() => {
localStorage.setItem("sidebar_is_collapsed", !0);
}),
He(() => {
Ve(() => {
localStorage.setItem("sidebar_is_collapsed", !1);
}),
_e(
@@ -5187,13 +5187,13 @@ const Hr = { key: 0 },
);
};
return (l, g) => {
const A = Je("router-link");
const A = We("router-link");
return h(r).data && h(o).data
? (k(),
E("div", kn, [
C("header", gn, [
U(
h(Ye),
h(Je),
{ class: "h-7", items: a.value },
null,
8,
@@ -5236,7 +5236,7 @@ const Hr = { key: 0 },
{
default: P(
() => [
Ve(
Ye(
v(
l.__(
"Start Learning"
@@ -5518,6 +5518,7 @@ const Hr = { key: 0 },
ou(
h(r).data.body.split(`
`),
(y) => (
k(),
@@ -5911,4 +5912,4 @@ const Hr = { key: 0 },
},
};
export { ac as default };
//# sourceMappingURL=Lesson-DbPY_b_T.js.map
//# sourceMappingURL=Lesson-zstaxlED.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,40 +1,40 @@
import {
r as O,
az as M,
aA as K,
aw as X,
ax as Q,
j as x,
w as U,
n as Q,
n as Z,
x as n,
A as F,
B as d,
aB as Z,
G as a,
aC as C,
aD as V,
C as T,
N as g,
H as N,
B as c,
G as w,
H as a,
ay as K,
M as g,
az as C,
aA as V,
C as v,
F as T,
y as p,
J as b,
F as w,
aE as W,
aF as Y,
I as N,
aB as M,
aC as W,
aD as Y,
Q as R,
I as q,
aG as ee,
U as te,
R as E,
aH as G,
aI as H,
aJ as ae,
aK as J,
J as q,
aE as ee,
U as te,
aF as G,
aG as ae,
aH as H,
k as se,
aL as le,
aI as le,
a7 as re,
} from "./frappe-ui-iPT8hMkb.js";
import { a as oe, C as ue } from "./index-qZ7Yta4u.js";
import { P as ne } from "./plus-_m-8cMp1.js";
} from "./frappe-ui-20hnMCM8.js";
import { a as oe, C as ue } from "./index-Vx7mSx23.js";
import { P as ne } from "./plus-pxSjkL_w.js";
/**
* @license lucide-vue-next v0.309.0 - ISC
*
@@ -53,8 +53,8 @@ import { P as ne } from "./plus-_m-8cMp1.js";
},
me = { key: 1, class: "text-base leading-5 text-gray-500" },
ye = { class: "mt-1 rounded-lg bg-white py-1 text-base shadow-2xl" },
ve = { class: "relative px-1.5 pt-0.5" },
be = { key: 0, class: "px-2.5 py-1.5 text-sm font-medium text-gray-500" },
be = { class: "relative px-1.5 pt-0.5" },
ve = { key: 0, class: "px-2.5 py-1.5 text-sm font-medium text-gray-500" },
ge = {
key: 0,
class: "mt-1.5 rounded-md px-2.5 py-1.5 text-base text-gray-600",
@@ -75,20 +75,20 @@ import { P as ne } from "./plus-_m-8cMp1.js";
setup(j, { expose: A, emit: f }) {
const r = j,
u = f,
c = O(""),
i = O(""),
h = O(!1),
S = O(null),
k = M(),
z = K(),
L = x(() => "value" in k),
k = X(),
z = Q(),
P = x(() => "value" in k),
_ = x({
get() {
return L.value ? k.value : r.modelValue;
return P.value ? k.value : r.modelValue;
},
set(t) {
(c.value = ""),
(i.value = ""),
t && (h.value = !1),
u(L.value ? "change" : "update:modelValue", t);
u(P.value ? "change" : "update:modelValue", t);
},
});
function e() {
@@ -106,18 +106,18 @@ import { P as ne } from "./plus-_m-8cMp1.js";
key: o,
group: l.group,
hideLabel: l.hideLabel || !1,
items: r.filterable ? i(l.items) : l.items,
items: r.filterable ? d(l.items) : l.items,
}))
.filter((l) => l.items.length > 0);
});
function i(t) {
return c.value
function d(t) {
return i.value
? t.filter((s) =>
[s.label, s.value].some((o) =>
(o || "")
.toString()
.toLowerCase()
.includes(c.value.toLowerCase())
.includes(i.value.toLowerCase())
)
)
: t;
@@ -131,17 +131,17 @@ import { P as ne } from "./plus-_m-8cMp1.js";
}
return t == null ? void 0 : t.label;
}
U(c, (t) => {
U(i, (t) => {
u("update:query", t);
}),
U(h, (t) => {
t &&
Q(() => {
Z(() => {
S.value.el.focus();
});
});
const $ = x(() => (r.disabled ? "text-gray-600" : "text-gray-800")),
X = x(() => {
J = x(() => {
let t = {
sm: "text-base rounded h-7",
md: "text-base rounded h-8",
@@ -169,7 +169,7 @@ import { P as ne } from "./plus-_m-8cMp1.js";
return [t, s, o, $.value, "transition-colors w-full"];
});
return (
A({ query: c }),
A({ query: i }),
(t, s) => (
n(),
F(
@@ -181,9 +181,9 @@ import { P as ne } from "./plus-_m-8cMp1.js";
nullable: "",
},
{
default: d(({ open: l }) => [
default: c(({ open: l }) => [
w(
a(Z),
a(K),
{
class: "w-full",
show: h.value,
@@ -192,32 +192,32 @@ import { P as ne } from "./plus-_m-8cMp1.js";
(s[2] = (o) => (h.value = o)),
},
{
target: d(
({ open: o, togglePopover: P }) => [
target: c(
({ open: o, togglePopover: B }) => [
g(
t.$slots,
"target",
V(
C({
C(
V({
open: o,
togglePopover: P,
togglePopover: B,
})
),
() => [
b("div", de, [
b(
v("div", de, [
v(
"button",
{
class: T([
"flex w-full items-center justify-between focus:outline-none",
X.value,
J.value,
]),
onClick:
() =>
P(),
B(),
},
[
b(
v(
"div",
pe,
[
@@ -261,16 +261,16 @@ import { P as ne } from "./plus-_m-8cMp1.js";
),
]
),
body: d(({ isOpen: o }) => {
var P;
body: c(({ isOpen: o }) => {
var B;
return [
H(
b(
M(
v(
"div",
null,
[
b("div", ye, [
b("div", ve, [
v("div", ye, [
v("div", be, [
w(
a(W),
{
@@ -283,12 +283,12 @@ import { P as ne } from "./plus-_m-8cMp1.js";
s[0] ||
(s[0] =
(
v
b
) => {
c.value =
v.target.value;
i.value =
b.target.value;
}),
value: c.value,
value: i.value,
autocomplete:
"off",
placeholder:
@@ -300,7 +300,7 @@ import { P as ne } from "./plus-_m-8cMp1.js";
"value",
]
),
b(
v(
"button",
{
class: "absolute right-1.5 inline-flex h-7 w-7 items-center justify-center",
@@ -308,7 +308,7 @@ import { P as ne } from "./plus-_m-8cMp1.js";
s[1] ||
(s[1] =
(
v
b
) =>
(_.value =
null)),
@@ -333,7 +333,7 @@ import { P as ne } from "./plus-_m-8cMp1.js";
},
{
default:
d(
c(
() => [
(n(
!0
@@ -344,25 +344,25 @@ import { P as ne } from "./plus-_m-8cMp1.js";
E(
m.value,
(
v
b
) =>
H(
M(
(n(),
p(
"div",
{
class: "mt-1.5",
key: v.key,
key: b.key,
},
[
v.group &&
!v.hideLabel
b.group &&
!b.hideLabel
? (n(),
p(
"div",
be,
ve,
N(
v.group
b.group
),
1
))
@@ -377,9 +377,9 @@ import { P as ne } from "./plus-_m-8cMp1.js";
R,
null,
E(
v.items,
b.items,
(
B
L
) => (
n(),
F(
@@ -388,18 +388,18 @@ import { P as ne } from "./plus-_m-8cMp1.js";
),
{
as: "template",
key: B.value,
value: B,
key: L.value,
value: L,
},
{
default:
d(
c(
({
active: D,
selected:
I,
}) => [
b(
v(
"li",
{
class: T(
@@ -416,13 +416,13 @@ import { P as ne } from "./plus-_m-8cMp1.js";
g(
t.$slots,
"item-prefix",
V(
C(
C(
V(
{
active: D,
selected:
I,
option: B,
option: L,
}
)
)
@@ -430,20 +430,20 @@ import { P as ne } from "./plus-_m-8cMp1.js";
g(
t.$slots,
"item-label",
V(
C(
C(
V(
{
active: D,
selected:
I,
option: B,
option: L,
}
)
),
() => [
te(
N(
B.label
L.label
),
1
),
@@ -470,7 +470,7 @@ import { P as ne } from "./plus-_m-8cMp1.js";
[
[
G,
v
b
.items
.length >
0,
@@ -508,15 +508,15 @@ import { P as ne } from "./plus-_m-8cMp1.js";
g(
t.$slots,
"footer",
V(
C(
C(
V(
{
value:
(P =
(B =
S.value) ==
null
? void 0
: P
: B
.el
._value,
close: e,
@@ -562,32 +562,34 @@ import { P as ne } from "./plus-_m-8cMp1.js";
setup(j, { emit: A }) {
const f = j,
r = A,
u = M(),
c = x(() => "value" in u),
u = X(),
i = x(() => "value" in u),
h = x({
get: () => (c.value ? u.value : f.modelValue),
set: (e) =>
get: () => (i.value ? u.value : f.modelValue),
set: (e) => (
console.log(e == null ? void 0 : e.value, i.value),
(e == null ? void 0 : e.value) &&
r(
c.value ? "change" : "update:modelValue",
e == null ? void 0 : e.value
),
r(
i.value ? "change" : "update:modelValue",
e == null ? void 0 : e.value
)
),
}),
S = O(null),
k = O("");
J(
H(
() => {
var e;
return (e = S.value) == null ? void 0 : e.query;
},
(e) => {
(e = e || ""), k.value !== e && ((k.value = e), L(e));
(e = e || ""), k.value !== e && ((k.value = e), P(e));
},
{ debounce: 300, immediate: !0 }
),
J(
H(
() => f.doctype,
() => L(""),
() => P(""),
{ debounce: 300, immediate: !0 }
);
const z = se({
@@ -602,7 +604,7 @@ import { P as ne } from "./plus-_m-8cMp1.js";
transform: (e) =>
e.map((m) => ({ label: m.value, value: m.value })),
});
function L(e) {
function P(e) {
z.update({
params: { txt: e, doctype: f.doctype, filters: f.filters },
}),
@@ -632,7 +634,7 @@ import { P as ne } from "./plus-_m-8cMp1.js";
options: a(z).data,
modelValue: h.value,
"onUpdate:modelValue":
m[0] || (m[0] = (i) => (h.value = i)),
m[0] || (m[0] = (d) => (h.value = d)),
size: a(u).size || "sm",
variant: a(u).variant,
placeholder: a(u).placeholder,
@@ -640,22 +642,22 @@ import { P as ne } from "./plus-_m-8cMp1.js";
},
le(
{
target: d(({ open: i, togglePopover: y }) => [
target: c(({ open: d, togglePopover: y }) => [
g(
e.$slots,
"target",
V(C({ open: i, togglePopover: y }))
C(V({ open: d, togglePopover: y }))
),
]),
prefix: d(() => [g(e.$slots, "prefix")]),
"item-prefix": d(
({ active: i, selected: y, option: $ }) => [
prefix: c(() => [g(e.$slots, "prefix")]),
"item-prefix": c(
({ active: d, selected: y, option: $ }) => [
g(
e.$slots,
"item-prefix",
V(
C({
active: i,
C(
V({
active: d,
selected: y,
option: $,
})
@@ -663,14 +665,14 @@ import { P as ne } from "./plus-_m-8cMp1.js";
),
]
),
"item-label": d(
({ active: i, selected: y, option: $ }) => [
"item-label": c(
({ active: d, selected: y, option: $ }) => [
g(
e.$slots,
"item-label",
V(
C({
active: i,
C(
V({
active: d,
selected: y,
option: $,
})
@@ -684,8 +686,8 @@ import { P as ne } from "./plus-_m-8cMp1.js";
a(u).onCreate
? {
name: "footer",
fn: d(({ value: i, close: y }) => [
b("div", null, [
fn: c(({ value: d, close: y }) => [
v("div", null, [
w(
a(re),
{
@@ -694,12 +696,12 @@ import { P as ne } from "./plus-_m-8cMp1.js";
label: "Create New",
onClick: ($) =>
a(u).onCreate(
i,
d,
y
),
},
{
prefix: d(() => [
prefix: c(() => [
w(a(ne), {
class: "h-4 w-4 stroke-1.5",
}),
@@ -730,4 +732,4 @@ import { P as ne } from "./plus-_m-8cMp1.js";
},
};
export { Ve as _ };
//# sourceMappingURL=Link-4jJRdvJb.js.map
//# sourceMappingURL=Link-Z_9V94MR.js.map

File diff suppressed because one or more lines are too long

View File

@@ -1,17 +1,17 @@
import {
j as x,
d as x,
j as v,
k as c,
x as v,
y as b,
J as e,
F as o,
G as t,
H as s,
a as k,
C as e,
G as o,
H as t,
I as s,
x as k,
a6 as f,
} from "./frappe-ui-iPT8hMkb.js";
import { a as r, B as C } from "./index-qZ7Yta4u.js";
import { B as L } from "./book-open-check-5hpjM2tX.js";
} from "./frappe-ui-20hnMCM8.js";
import { a as r, B as C } from "./index-Vx7mSx23.js";
import { B as L } from "./book-open-check-j9IEQjWh.js";
/**
* @license lucide-vue-next v0.309.0 - ISC
*
@@ -57,13 +57,13 @@ import { B as L } from "./book-open-check-5hpjM2tX.js";
["polyline", { points: "10 17 15 12 10 7", key: "1ail0h" }],
["line", { x1: "15", x2: "3", y1: "12", y2: "12", key: "v6grx8" }],
]),
M = { class: "h-screen text-base" },
I = {
I = { class: "h-screen text-base" },
M = {
class: "sticky top-0 z-10 flex items-center justify-between border-b bg-white px-3 py-2.5 sm:px-5",
},
F = { class: "p-5" },
j = { class: "grid grid-cols-5 gap-5" },
E = { class: "flex items-center border py-2 px-3 rounded-md" },
j = { class: "p-5" },
E = { class: "grid grid-cols-5 gap-5" },
F = { class: "flex items-center border py-2 px-3 rounded-md" },
V = { class: "p-2 rounded-md bg-gray-100 mr-3" },
H = { class: "text-xl font-semibold mb-1" },
z = { class: "text-gray-700" },
@@ -73,12 +73,12 @@ import { B as L } from "./book-open-check-5hpjM2tX.js";
U = { class: "text-gray-700" },
D = { class: "flex items-center border py-2 px-3 rounded-md" },
G = { class: "p-2 rounded-md bg-gray-100 mr-3" },
J = { class: "text-xl font-semibold mb-1" },
R = { class: "text-gray-700" },
T = { class: "flex items-center border py-2 px-3 rounded-md" },
$ = { class: "p-2 rounded-md bg-gray-100 mr-3" },
q = { class: "text-xl font-semibold mb-1" },
A = { class: "text-gray-700" },
R = { class: "text-xl font-semibold mb-1" },
T = { class: "text-gray-700" },
$ = { class: "flex items-center border py-2 px-3 rounded-md" },
q = { class: "p-2 rounded-md bg-gray-100 mr-3" },
A = { class: "text-xl font-semibold mb-1" },
J = { class: "text-gray-700" },
K = { class: "flex items-center border py-2 px-3 rounded-md" },
Q = { class: "p-2 rounded-md bg-gray-100 mr-3" },
W = { class: "text-xl font-semibold mb-1" },
@@ -86,8 +86,8 @@ import { B as L } from "./book-open-check-5hpjM2tX.js";
oe = {
__name: "Statistics",
setup(Y) {
k("dayjs");
const _ = x(() => [
x("dayjs");
const _ = v(() => [
{ label: "Statistics", route: { name: "Statistics" } },
]),
u = c({
@@ -127,18 +127,18 @@ import { B as L } from "./book-open-check-5hpjM2tX.js";
cache: ["lessons_completed"],
});
return (a, Z) => {
var n, d, l, i, p;
var d, n, l, i, p;
return (
v(),
b("div", M, [
e("header", I, [
k(),
b("div", I, [
e("header", M, [
o(t(f), { class: "h-7", items: _.value }, null, 8, [
"items",
]),
]),
e("div", F, [
e("div", j, [
e("div", E, [
e("div", j, [
e("div", E, [
e("div", F, [
e("div", V, [
o(t(C), {
class: "w-18 h-18 stroke-1.5 text-gray-700",
@@ -149,9 +149,9 @@ import { B as L } from "./book-open-check-5hpjM2tX.js";
"div",
H,
s(
(n = t(m).data) == null
(d = t(m).data) == null
? void 0
: n.toLocaleString()
: d.toLocaleString()
),
1
),
@@ -174,9 +174,9 @@ import { B as L } from "./book-open-check-5hpjM2tX.js";
"div",
P,
s(
(d = t(h).data) == null
(n = t(h).data) == null
? void 0
: d.toLocaleString()
: n.toLocaleString()
),
1
),
@@ -197,7 +197,7 @@ import { B as L } from "./book-open-check-5hpjM2tX.js";
e("div", null, [
e(
"div",
J,
R,
s(
(l = t(u).data) == null
? void 0
@@ -207,14 +207,14 @@ import { B as L } from "./book-open-check-5hpjM2tX.js";
),
e(
"div",
R,
T,
s(a.__("Enrolled Users")),
1
),
]),
]),
e("div", T, [
e("div", $, [
e("div", $, [
e("div", q, [
o(t(w), {
class: "w-18 h-18 stroke-1.5 text-gray-700",
}),
@@ -222,7 +222,7 @@ import { B as L } from "./book-open-check-5hpjM2tX.js";
e("div", null, [
e(
"div",
q,
A,
s(
(i = t(y).data) == null
? void 0
@@ -232,7 +232,7 @@ import { B as L } from "./book-open-check-5hpjM2tX.js";
),
e(
"div",
A,
J,
s(a.__("Courses Completed")),
1
),
@@ -271,4 +271,4 @@ import { B as L } from "./book-open-check-5hpjM2tX.js";
},
};
export { oe as default };
//# sourceMappingURL=Statistics-Z-8FWaV4.js.map
//# sourceMappingURL=Statistics-BSeqj912.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"version":3,"file":"UserAvatar-nJqmkBPv.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}

View File

@@ -2,10 +2,10 @@ import {
x as r,
A as s,
av as t,
G as l,
H as l,
as as u,
I as n,
} from "./frappe-ui-iPT8hMkb.js";
J as n,
} from "./frappe-ui-20hnMCM8.js";
const i = {
__name: "UserAvatar",
props: { user: { type: Object, default: null }, size: { type: String } },
@@ -33,4 +33,4 @@ const i = {
},
};
export { i as _ };
//# sourceMappingURL=UserAvatar-nJqmkBPv.js.map
//# sourceMappingURL=UserAvatar-yrWInUTi.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"UserAvatar-yrWInUTi.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}

View File

@@ -1 +0,0 @@
{"version":3,"file":"book-open-check-5hpjM2tX.js","sources":["../../../../frontend/node_modules/lucide-vue-next/dist/esm/icons/book-open-check.js"],"sourcesContent":["/**\n * @license lucide-vue-next v0.309.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst BookOpenCheck = createLucideIcon(\"BookOpenCheckIcon\", [\n [\"path\", { d: \"M8 3H2v15h7c1.7 0 3 1.3 3 3V7c0-2.2-1.8-4-4-4Z\", key: \"1i8u0n\" }],\n [\"path\", { d: \"m16 12 2 2 4-4\", key: \"mdajum\" }],\n [\"path\", { d: \"M22 6V3h-6c-2.2 0-4 1.8-4 4v14c0-1.7 1.3-3 3-3h7v-2.3\", key: \"jb5l51\" }]\n]);\n\nexport { BookOpenCheck as default };\n//# sourceMappingURL=book-open-check.js.map\n"],"names":["BookOpenCheck","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAgBC,EAAiB,oBAAqB,CAC1D,CAAC,OAAQ,CAAE,EAAG,iDAAkD,IAAK,QAAQ,CAAE,EAC/E,CAAC,OAAQ,CAAE,EAAG,iBAAkB,IAAK,QAAQ,CAAE,EAC/C,CAAC,OAAQ,CAAE,EAAG,wDAAyD,IAAK,QAAQ,CAAE,CACxF,CAAC","x_google_ignoreList":[0]}

View File

@@ -1,4 +1,4 @@
import { a as c } from "./index-qZ7Yta4u.js";
import { a as c } from "./index-Vx7mSx23.js";
/**
* @license lucide-vue-next v0.309.0 - ISC
*
@@ -19,4 +19,4 @@ import { a as c } from "./index-qZ7Yta4u.js";
],
]);
export { o as B };
//# sourceMappingURL=book-open-check-5hpjM2tX.js.map
//# sourceMappingURL=book-open-check-j9IEQjWh.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"book-open-check-j9IEQjWh.js","sources":["../../../../node_modules/lucide-vue-next/dist/esm/icons/book-open-check.js"],"sourcesContent":["/**\n * @license lucide-vue-next v0.309.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst BookOpenCheck = createLucideIcon(\"BookOpenCheckIcon\", [\n [\"path\", { d: \"M8 3H2v15h7c1.7 0 3 1.3 3 3V7c0-2.2-1.8-4-4-4Z\", key: \"1i8u0n\" }],\n [\"path\", { d: \"m16 12 2 2 4-4\", key: \"mdajum\" }],\n [\"path\", { d: \"M22 6V3h-6c-2.2 0-4 1.8-4 4v14c0-1.7 1.3-3 3-3h7v-2.3\", key: \"jb5l51\" }]\n]);\n\nexport { BookOpenCheck as default };\n//# sourceMappingURL=book-open-check.js.map\n"],"names":["BookOpenCheck","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAgBC,EAAiB,oBAAqB,CAC1D,CAAC,OAAQ,CAAE,EAAG,iDAAkD,IAAK,QAAQ,CAAE,EAC/E,CAAC,OAAQ,CAAE,EAAG,iBAAkB,IAAK,QAAQ,CAAE,EAC/C,CAAC,OAAQ,CAAE,EAAG,wDAAyD,IAAK,QAAQ,CAAE,CACxF,CAAC","x_google_ignoreList":[0]}

View File

@@ -1,4 +1,4 @@
import { a as e } from "./index-qZ7Yta4u.js";
import { a as e } from "./index-Vx7mSx23.js";
/**
* @license lucide-vue-next v0.309.0 - ISC
*
@@ -31,4 +31,4 @@ import { a as e } from "./index-qZ7Yta4u.js";
["polyline", { points: "12 6 12 12 16 14", key: "68esgv" }],
]);
export { c as C, a };
//# sourceMappingURL=clock-z0R6Od6V.js.map
//# sourceMappingURL=clock-blcPmEdF.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"clock-blcPmEdF.js","sources":["../../../../node_modules/lucide-vue-next/dist/esm/icons/calendar.js","../../../../node_modules/lucide-vue-next/dist/esm/icons/clock.js"],"sourcesContent":["/**\n * @license lucide-vue-next v0.309.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Calendar = createLucideIcon(\"CalendarIcon\", [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"4\", rx: \"2\", ry: \"2\", key: \"eu3xkr\" }],\n [\"line\", { x1: \"16\", x2: \"16\", y1: \"2\", y2: \"6\", key: \"m3sa8f\" }],\n [\"line\", { x1: \"8\", x2: \"8\", y1: \"2\", y2: \"6\", key: \"18kwsl\" }],\n [\"line\", { x1: \"3\", x2: \"21\", y1: \"10\", y2: \"10\", key: \"xt86sb\" }]\n]);\n\nexport { Calendar as default };\n//# sourceMappingURL=calendar.js.map\n","/**\n * @license lucide-vue-next v0.309.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Clock = createLucideIcon(\"ClockIcon\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"polyline\", { points: \"12 6 12 12 16 14\", key: \"68esgv\" }]\n]);\n\nexport { Clock as default };\n//# sourceMappingURL=clock.js.map\n"],"names":["Calendar","createLucideIcon","Clock"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAWC,EAAiB,eAAgB,CAChD,CAAC,OAAQ,CAAE,MAAO,KAAM,OAAQ,KAAM,EAAG,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,SAAU,EACvF,CAAC,OAAQ,CAAE,GAAI,KAAM,GAAI,KAAM,GAAI,IAAK,GAAI,IAAK,IAAK,QAAQ,CAAE,EAChE,CAAC,OAAQ,CAAE,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,QAAQ,CAAE,EAC9D,CAAC,OAAQ,CAAE,GAAI,IAAK,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,IAAK,QAAQ,CAAE,CACnE,CAAC,ECdD;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACC,EAAQD,EAAiB,YAAa,CAC1C,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,KAAM,IAAK,SAAU,EACzD,CAAC,WAAY,CAAE,OAAQ,mBAAoB,IAAK,QAAQ,CAAE,CAC5D,CAAC","x_google_ignoreList":[0,1]}

View File

@@ -1 +0,0 @@
{"version":3,"file":"clock-z0R6Od6V.js","sources":["../../../../frontend/node_modules/lucide-vue-next/dist/esm/icons/calendar.js","../../../../frontend/node_modules/lucide-vue-next/dist/esm/icons/clock.js"],"sourcesContent":["/**\n * @license lucide-vue-next v0.309.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Calendar = createLucideIcon(\"CalendarIcon\", [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"4\", rx: \"2\", ry: \"2\", key: \"eu3xkr\" }],\n [\"line\", { x1: \"16\", x2: \"16\", y1: \"2\", y2: \"6\", key: \"m3sa8f\" }],\n [\"line\", { x1: \"8\", x2: \"8\", y1: \"2\", y2: \"6\", key: \"18kwsl\" }],\n [\"line\", { x1: \"3\", x2: \"21\", y1: \"10\", y2: \"10\", key: \"xt86sb\" }]\n]);\n\nexport { Calendar as default };\n//# sourceMappingURL=calendar.js.map\n","/**\n * @license lucide-vue-next v0.309.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Clock = createLucideIcon(\"ClockIcon\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"polyline\", { points: \"12 6 12 12 16 14\", key: \"68esgv\" }]\n]);\n\nexport { Clock as default };\n//# sourceMappingURL=clock.js.map\n"],"names":["Calendar","createLucideIcon","Clock"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAWC,EAAiB,eAAgB,CAChD,CAAC,OAAQ,CAAE,MAAO,KAAM,OAAQ,KAAM,EAAG,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,SAAU,EACvF,CAAC,OAAQ,CAAE,GAAI,KAAM,GAAI,KAAM,GAAI,IAAK,GAAI,IAAK,IAAK,QAAQ,CAAE,EAChE,CAAC,OAAQ,CAAE,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,QAAQ,CAAE,EAC9D,CAAC,OAAQ,CAAE,GAAI,IAAK,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,IAAK,QAAQ,CAAE,CACnE,CAAC,ECdD;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACC,EAAQD,EAAiB,YAAa,CAC1C,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,KAAM,IAAK,SAAU,EACzD,CAAC,WAAY,CAAE,OAAQ,mBAAoB,IAAK,QAAQ,CAAE,CAC5D,CAAC","x_google_ignoreList":[0,1]}

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
.form-select{background-image:url("data:image/svg+xml;utf8,<svg fill='none' width='8' xmlns='http://www.w3.org/2000/svg' viewBox='-4 -2 16 16'><path d='M4.5 3.636 6.136 2l1.637 1.636M4.5 8.364 6.136 10l1.637-1.636' stroke='%23333C44' stroke-linecap='round' stroke-linejoin='round'/></svg>")}.spinner[data-v-d1174afc]{animation:rotate-d1174afc 2s linear infinite}.spinner-path[data-v-d1174afc]{stroke-linecap:round;animation:dash-d1174afc 1.5s ease-in-out infinite}@keyframes rotate-d1174afc{to{transform:rotate(360deg)}}@keyframes dash-d1174afc{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:120,150;stroke-dashoffset:-124}}.item{display:block;margin:0;width:100%;text-align:left;background:transparent;border-radius:.4rem;border:1px solid transparent;padding:.2rem .4rem}.item.is-selected{border-color:#000}.ProseMirror{outline:none;caret-color:#171717;word-break:break-word}.ProseMirror-focused:focus-visible{outline:none}.ProseMirror:not(.ProseMirror-focused) p.is-editor-empty:first-child:before{content:attr(data-placeholder);float:left;color:#999;pointer-events:none;height:0}.ProseMirror-selectednode video,img.ProseMirror-selectednode{outline:2px solid #E2E2E2}.mention{font-weight:600;-webkit-box-decoration-break:clone;box-decoration-break:clone}.prose table p{margin:0}.ProseMirror table .selectedCell:after{z-index:2;position:absolute;content:"";inset:0;pointer-events:none;background:#e3f1fd;opacity:.3}.ProseMirror table .column-resize-handle{position:absolute;right:-1px;top:0;bottom:-2px;width:4px;background-color:#e3f1fd;pointer-events:none}.resize-cursor{cursor:ew-resize;cursor:col-resize}.ProseMirror mark{border-radius:3px;padding:0 2px}
.form-select{background-image:url("data:image/svg+xml;utf8,<svg fill='none' width='8' xmlns='http://www.w3.org/2000/svg' viewBox='-4 -2 16 16'><path d='M4.5 3.636 6.136 2l1.637 1.636M4.5 8.364 6.136 10l1.637-1.636' stroke='%23333C44' stroke-linecap='round' stroke-linejoin='round'/></svg>")}.spinner[data-v-a61a1368]{animation:rotate-a61a1368 2s linear infinite}.spinner-path[data-v-a61a1368]{stroke-linecap:round;animation:dash-a61a1368 1.5s ease-in-out infinite}@keyframes rotate-a61a1368{to{transform:rotate(360deg)}}@keyframes dash-a61a1368{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:120,150;stroke-dashoffset:-124}}.item{display:block;margin:0;width:100%;text-align:left;background:transparent;border-radius:.4rem;border:1px solid transparent;padding:.2rem .4rem}.item.is-selected{border-color:#000}.ProseMirror{outline:none;caret-color:#171717;word-break:break-word}.ProseMirror-focused:focus-visible{outline:none}.ProseMirror:not(.ProseMirror-focused) p.is-editor-empty:first-child:before{content:attr(data-placeholder);float:left;color:#999;pointer-events:none;height:0}.ProseMirror-selectednode video,img.ProseMirror-selectednode{outline:2px solid #E2E2E2}.mention{font-weight:600;-webkit-box-decoration-break:clone;box-decoration-break:clone}.prose table p{margin:0}.ProseMirror table .selectedCell:after{z-index:2;position:absolute;content:"";inset:0;pointer-events:none;background:#e3f1fd;opacity:.3}.ProseMirror table .column-resize-handle{position:absolute;right:-1px;top:0;bottom:-2px;width:4px;background-color:#e3f1fd;pointer-events:none}.resize-cursor{cursor:ew-resize;cursor:col-resize}.ProseMirror mark{border-radius:3px;padding:0 2px}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"version":3,"file":"plus-_m-8cMp1.js","sources":["../../../../frontend/node_modules/lucide-vue-next/dist/esm/icons/plus.js"],"sourcesContent":["/**\n * @license lucide-vue-next v0.309.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Plus = createLucideIcon(\"PlusIcon\", [\n [\"path\", { d: \"M5 12h14\", key: \"1ays0h\" }],\n [\"path\", { d: \"M12 5v14\", key: \"s699le\" }]\n]);\n\nexport { Plus as default };\n//# sourceMappingURL=plus.js.map\n"],"names":["Plus","createLucideIcon"],"mappings":"mCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAOC,EAAiB,WAAY,CACxC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAQ,CAAE,EACzC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAQ,CAAE,CAC3C,CAAC","x_google_ignoreList":[0]}

View File

@@ -1,4 +1,4 @@
import { a } from "./index-qZ7Yta4u.js";
import { a } from "./index-Vx7mSx23.js";
/**
* @license lucide-vue-next v0.309.0 - ISC
*
@@ -9,4 +9,4 @@ import { a } from "./index-qZ7Yta4u.js";
["path", { d: "M12 5v14", key: "s699le" }],
]);
export { s as P };
//# sourceMappingURL=plus-_m-8cMp1.js.map
//# sourceMappingURL=plus-pxSjkL_w.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"plus-pxSjkL_w.js","sources":["../../../../node_modules/lucide-vue-next/dist/esm/icons/plus.js"],"sourcesContent":["/**\n * @license lucide-vue-next v0.309.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Plus = createLucideIcon(\"PlusIcon\", [\n [\"path\", { d: \"M5 12h14\", key: \"1ays0h\" }],\n [\"path\", { d: \"M12 5v14\", key: \"s699le\" }]\n]);\n\nexport { Plus as default };\n//# sourceMappingURL=plus.js.map\n"],"names":["Plus","createLucideIcon"],"mappings":"mCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAOC,EAAiB,WAAY,CACxC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAQ,CAAE,EACzC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAQ,CAAE,CAC3C,CAAC","x_google_ignoreList":[0]}

View File

@@ -1 +0,0 @@
{"version":3,"file":"star-xishKgdq.js","sources":["../../../../frontend/node_modules/lucide-vue-next/dist/esm/icons/star.js"],"sourcesContent":["/**\n * @license lucide-vue-next v0.309.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Star = createLucideIcon(\"StarIcon\", [\n [\n \"polygon\",\n {\n points: \"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\",\n key: \"8f66p6\"\n }\n ]\n]);\n\nexport { Star as default };\n//# sourceMappingURL=star.js.map\n"],"names":["Star","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAOC,EAAiB,WAAY,CACxC,CACE,UACA,CACE,OAAQ,iGACR,IAAK,QACN,CACF,CACH,CAAC","x_google_ignoreList":[0]}

View File

@@ -1,4 +1,4 @@
import { a as o } from "./index-qZ7Yta4u.js";
import { a as o } from "./index-Vx7mSx23.js";
/**
* @license lucide-vue-next v0.309.0 - ISC
*
@@ -14,4 +14,4 @@ import { a as o } from "./index-qZ7Yta4u.js";
],
]);
export { a as S };
//# sourceMappingURL=star-xishKgdq.js.map
//# sourceMappingURL=star-ypmGZNF0.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"star-ypmGZNF0.js","sources":["../../../../node_modules/lucide-vue-next/dist/esm/icons/star.js"],"sourcesContent":["/**\n * @license lucide-vue-next v0.309.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Star = createLucideIcon(\"StarIcon\", [\n [\n \"polygon\",\n {\n points: \"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\",\n key: \"8f66p6\"\n }\n ]\n]);\n\nexport { Star as default };\n//# sourceMappingURL=star.js.map\n"],"names":["Star","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAOC,EAAiB,WAAY,CACxC,CACE,UACA,CACE,OAAQ,iGACR,IAAK,QACN,CACF,CACH,CAAC","x_google_ignoreList":[0]}

View File

@@ -5,10 +5,10 @@
<link rel="icon" href="/favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Frappe UI App</title>
<script type="module" crossorigin src="/assets/index-qZ7Yta4u.js"></script>
<link rel="modulepreload" crossorigin href="/assets/frappe-ui-iPT8hMkb.js">
<link rel="stylesheet" crossorigin href="/assets/frappe-ui-f0ZsshpU.css">
<link rel="stylesheet" crossorigin href="/assets/index-eoiomuoN.css">
<script type="module" crossorigin src="/assets/index-Vx7mSx23.js"></script>
<link rel="modulepreload" crossorigin href="/assets/frappe-ui-20hnMCM8.js">
<link rel="stylesheet" crossorigin href="/assets/frappe-ui-dYBF8eAq.css">
<link rel="stylesheet" crossorigin href="/assets/index-VOpIbXPv.css">
</head>
<body>
<div id="app"></div>

View File

@@ -2,7 +2,7 @@
"name": "frappe_lms",
"version": "1.0.0",
"description": "Easy to use, open-source, Learning Management System",
"workspaces1": ["frappe-ui", "frontend"],
"workspaces": ["frappe-ui", "frontend"],
"scripts": {
"test-local": "cypress open --e2e --browser chrome"
},

3851
yarn.lock

File diff suppressed because it is too large Load Diff