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

View File

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

File diff suppressed because one or more lines are too long

View File

@@ -1,31 +1,31 @@
import { import {
a as C, d as C,
x as n, x as n,
y as u, y as u,
A as g, A as g,
B as h, B as h,
H as t,
U as f, U as f,
G as c, I as t,
H as o,
a8 as x, a8 as x,
I as y, J as y,
J as a, C as a,
F as i, G as i,
k as Y, k as N,
r as j, r as Y,
j as m, j as m,
C as $, a6 as j,
M as D, a7 as D,
F as $,
N as V,
Q as M, Q as M,
R as N, R as z,
W as V, a9 as A,
a6 as z, X as L,
a7 as A, } from "./frappe-ui-20hnMCM8.js";
a9 as L, import { B as O, f as B } from "./index-Vx7mSx23.js";
} from "./frappe-ui-iPT8hMkb.js"; import { C as P, a as S } from "./clock-blcPmEdF.js";
import { B as O, f as B } from "./index-qZ7Yta4u.js"; import { P as U } from "./plus-pxSjkL_w.js";
import { C as P, a as S } from "./clock-z0R6Od6V.js";
import { P as U } from "./plus-_m-8cMp1.js";
const E = { const E = {
class: "flex flex-col border border-gray-200 rounded-md p-4 h-full", class: "flex flex-col border border-gray-200 rounded-md p-4 h-full",
style: { "min-height": "150px" }, style: { "min-height": "150px" },
@@ -42,13 +42,13 @@ const E = {
props: { batch: { type: Object, default: null } }, props: { batch: { type: Object, default: null } },
setup(s) { setup(s) {
const d = C("$dayjs"); const d = C("$dayjs");
return (o, v) => ( return (c, v) => (
n(), n(),
u("div", E, [ u("div", E, [
s.batch.seat_count && s.batch.seats_left > 0 s.batch.seat_count && s.batch.seats_left > 0
? (n(), ? (n(),
g( g(
c(x), o(x),
{ {
key: 0, key: 0,
theme: "green", theme: "green",
@@ -59,7 +59,7 @@ const E = {
f( f(
t(s.batch.seats_left) + t(s.batch.seats_left) +
" " + " " +
t(o.__("Seat Left")), t(c.__("Seat Left")),
1 1
), ),
]), ]),
@@ -69,7 +69,7 @@ const E = {
: s.batch.seat_count && s.batch.seats_left <= 0 : s.batch.seat_count && s.batch.seats_left <= 0
? (n(), ? (n(),
g( g(
c(x), o(x),
{ {
key: 1, key: 1,
theme: "red", theme: "red",
@@ -77,7 +77,7 @@ const E = {
}, },
{ {
default: h(() => [ default: h(() => [
f(t(o.__("Sold Out")), 1), f(t(c.__("Sold Out")), 1),
]), ]),
_: 1, _: 1,
} }
@@ -90,7 +90,7 @@ const E = {
? (n(), u("div", T, t(s.batch.price), 1)) ? (n(), u("div", T, t(s.batch.price), 1))
: y("", !0), : y("", !0),
a("div", G, [ a("div", G, [
i(c(O), { i(o(O), {
class: "h-4 w-4 stroke-1.5 mr-2 text-gray-700", class: "h-4 w-4 stroke-1.5 mr-2 text-gray-700",
}), }),
a( a(
@@ -98,25 +98,25 @@ const E = {
null, null,
t(s.batch.courses.length) + t(s.batch.courses.length) +
" " + " " +
t(o.__("Courses")), t(c.__("Courses")),
1 1
), ),
]), ]),
a("div", H, [ a("div", H, [
i(c(P), { i(o(P), {
class: "h-4 w-4 stroke-1.5 mr-2 text-gray-700", class: "h-4 w-4 stroke-1.5 mr-2 text-gray-700",
}), }),
a( a(
"span", "span",
null, null,
t( t(
c(d)(s.batch.start_date).format( o(d)(s.batch.start_date).format(
"DD MMM YYYY" "DD MMM YYYY"
) )
) + ) +
" - " + " - " +
t( t(
c(d)(s.batch.end_date).format( o(d)(s.batch.end_date).format(
"DD MMM YYYY" "DD MMM YYYY"
) )
), ),
@@ -124,15 +124,15 @@ const E = {
), ),
]), ]),
a("div", J, [ a("div", J, [
i(c(S), { i(o(S), {
class: "h-4 w-4 stroke-1.5 mr-2 text-gray-700", class: "h-4 w-4 stroke-1.5 mr-2 text-gray-700",
}), }),
a( a(
"span", "span",
null, 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 1
), ),
]), ]),
@@ -141,27 +141,27 @@ const E = {
); );
}, },
}, },
W = { class: "h-screen text-base" }, X = { class: "h-screen text-base" },
q = { q = {
class: "sticky top-0 z-10 flex items-center justify-between border-b bg-white px-3 py-2.5 sm:px-5", 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" }, K = { class: "flex" },
X = { class: "mx-5 py-5" }, W = { class: "pb-5" },
Z = { Z = {
key: 0, 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 = { ee = {
key: 1, key: 1,
class: "grid flex-1 place-items-center text-xl font-medium text-gray-500", 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" }, te = { class: "flex flex-col items-center justify-center mt-4" },
oe = { ce = {
__name: "Batches", __name: "Batches",
setup(s) { setup(s) {
var p, k; var p, k;
const d = C("$user"), const d = C("$user"),
o = Y({ c = N({
url: "lms.lms.utils.get_batches", url: "lms.lms.utils.get_batches",
cache: [ cache: [
"batches", "batches",
@@ -171,21 +171,21 @@ const E = {
], ],
auto: !0, auto: !0,
}), }),
v = j(0), v = Y(0),
_ = [ _ = [
{ {
label: "Upcoming", label: "Upcoming",
batches: m(() => { batches: m(() => {
var e; var e;
return ( return (
((e = o.data) == null ? void 0 : e.upcoming) || ((e = c.data) == null ? void 0 : e.upcoming) ||
[] []
); );
}), }),
count: m(() => { count: m(() => {
var e, l; var e, l;
return (l = return (l =
(e = o.data) == null ? void 0 : e.upcoming) == (e = c.data) == null ? void 0 : e.upcoming) ==
null null
? void 0 ? void 0
: l.length; : l.length;
@@ -199,12 +199,12 @@ const E = {
label: "Archived", label: "Archived",
batches: m(() => { batches: m(() => {
var e; var e;
return (e = o.data) == null ? void 0 : e.archived; return (e = c.data) == null ? void 0 : e.archived;
}), }),
count: m(() => { count: m(() => {
var e, l; var e, l;
return (l = return (l =
(e = o.data) == null ? void 0 : e.archived) == (e = c.data) == null ? void 0 : e.archived) ==
null null
? void 0 ? void 0
: l.length; : l.length;
@@ -214,12 +214,12 @@ const E = {
label: "Private", label: "Private",
batches: m(() => { batches: m(() => {
var e; var e;
return (e = o.data) == null ? void 0 : e.private; return (e = c.data) == null ? void 0 : e.private;
}), }),
count: m(() => { count: m(() => {
var e, l; var e, l;
return (l = return (l =
(e = o.data) == null ? void 0 : e.private) == (e = c.data) == null ? void 0 : e.private) ==
null null
? void 0 ? void 0
: l.length; : l.length;
@@ -230,25 +230,25 @@ const E = {
label: "Enrolled", label: "Enrolled",
batches: m(() => { batches: m(() => {
var e; var e;
return (e = o.data) == null ? void 0 : e.enrolled; return (e = c.data) == null ? void 0 : e.enrolled;
}), }),
count: m(() => { count: m(() => {
var e, l; var e, l;
return (l = return (l =
(e = o.data) == null ? void 0 : e.enrolled) == (e = c.data) == null ? void 0 : e.enrolled) ==
null null
? void 0 ? void 0
: l.length; : l.length;
}), }),
}), }),
(e, l) => { (e, l) => {
const w = V("router-link"); const w = L("router-link");
return ( return (
n(), n(),
u("div", W, [ u("div", X, [
a("header", q, [ a("header", q, [
i( i(
c(z), o(j),
{ {
class: "h-7", class: "h-7",
items: [ items: [
@@ -264,11 +264,11 @@ const E = {
), ),
a("div", K, [ a("div", K, [
i( i(
c(A), o(D),
{ variant: "solid" }, { variant: "solid" },
{ {
prefix: h(() => [ prefix: h(() => [
i(c(U), { class: "h-4 w-4" }), i(o(U), { class: "h-4 w-4" }),
]), ]),
default: h(() => [ default: h(() => [
f( f(
@@ -281,16 +281,16 @@ const E = {
), ),
]), ]),
]), ]),
a("div", X, [ a("div", W, [
i( i(
c(L), o(A),
{ {
class: "overflow-hidden",
modelValue: v.value, modelValue: v.value,
"onUpdate:modelValue": "onUpdate:modelValue":
l[0] || l[0] ||
(l[0] = (r) => (v.value = r)), (l[0] = (r) => (v.value = r)),
tabs: _, tabs: _,
tablistClass: "overflow-x-visible",
}, },
{ {
tab: h(({ tab: r, selected: b }) => [ tab: h(({ tab: r, selected: b }) => [
@@ -309,7 +309,7 @@ const E = {
[ [
r.icon r.icon
? (n(), ? (n(),
g(D(r.icon), { g(V(r.icon), {
key: 0, key: 0,
class: "h-5", class: "h-5",
})) }))
@@ -325,12 +325,13 @@ const E = {
1 1
), ),
i( i(
c(x), o(x),
{ {
class: $({ class: $(
"text-gray-900 border border-gray-900": b
b, ? "text-gray-800 border border-gray-800"
}), : "border border-gray-500"
),
variant: variant:
"subtle", "subtle",
theme: "gray", theme: "gray",
@@ -365,7 +366,7 @@ const E = {
u( u(
M, M,
null, null,
N( z(
r.batches.value, r.batches.value,
(b) => ( (b) => (
n(), n(),
@@ -439,5 +440,5 @@ const E = {
); );
}, },
}; };
export { oe as default }; export { ce as default };
//# sourceMappingURL=Batches-gDWZzuli.js.map //# 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, aa as B,
ab as N, ab as N,
r as $, r as $,
a as S, d as S,
s as j, s as j,
k, k,
x as i, x as i,
y, y,
F as n, G as n,
B as x, B as x,
G as t, H as t,
a7 as T, a7 as T,
J as s, C as s,
H as d, I as d,
I as R, J as R,
Q as M, Q as M,
R as E, R as E,
A as V, A as V,
K as A, K as A,
U as D, U as D,
au as P, au as P,
C as I, F as I,
b as F, a as F,
am as G, am as G,
D as J, D as J,
c as K, b as K,
} from "./frappe-ui-iPT8hMkb.js"; } from "./frappe-ui-20hnMCM8.js";
import { _ as U } from "./UserAvatar-nJqmkBPv.js"; import { _ as U } from "./UserAvatar-yrWInUTi.js";
import { a as q, t as H, c as O } from "./index-qZ7Yta4u.js"; import { a as q, t as H, c as O } from "./index-Vx7mSx23.js";
/** /**
* @license lucide-vue-next v0.309.0 - ISC * @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 _ }; 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 { import {
v as f, v as f,
aB as g, ay as g,
T as _, T as _,
W as c, X as c,
x as o, x as o,
A as l, A as l,
B as r, B as r,
aC as C, M as p,
aD as p, az as C,
N as k, aA as k,
Q as d, C as a,
V as u, y as d,
J as a, Q as u,
R as m, R as m,
y as h, V as h,
C as b, F as b,
} from "./frappe-ui-iPT8hMkb.js"; } from "./frappe-ui-20hnMCM8.js";
const v = { const v = {
name: "FontColor", name: "FontColor",
props: ["editor"], props: ["editor"],
@@ -66,16 +66,16 @@ const v = {
y = { class: "p-2" }, y = { class: "p-2" },
B = a("div", { class: "text-sm text-gray-700" }, "Text Color", -1), B = a("div", { class: "text-sm text-gray-700" }, "Text Color", -1),
P = { class: "mt-1 grid grid-cols-8 gap-1" }, P = { class: "mt-1 grid grid-cols-8 gap-1" },
D = ["aria-label", "onClick"], F = ["aria-label", "onClick"],
F = a( D = a(
"div", "div",
{ class: "mt-2 text-sm text-gray-700" }, { class: "mt-2 text-sm text-gray-700" },
"Background Color", "Background Color",
-1 -1
), ),
w = { class: "mt-1 grid grid-cols-8 gap-1" }, w = { class: "mt-1 grid grid-cols-8 gap-1" },
T = ["aria-label", "onClick"]; A = ["aria-label", "onClick"];
function A(t, R, z, E, $, n) { function T(t, z, R, E, $, n) {
const i = c("Tooltip"), const i = c("Tooltip"),
x = c("Popover"); x = c("Popover");
return ( return (
@@ -85,10 +85,10 @@ function A(t, R, z, E, $, n) {
{ transition: "default" }, { transition: "default" },
{ {
target: r(({ togglePopover: e, isOpen: s }) => [ target: r(({ togglePopover: e, isOpen: s }) => [
k( p(
t.$slots, t.$slots,
"default", "default",
p(C({ onClick: () => e(), isActive: s })) C(k({ onClick: () => e(), isActive: s }))
), ),
]), ]),
"body-main": r(() => [ "body-main": r(() => [
@@ -96,8 +96,8 @@ function A(t, R, z, E, $, n) {
B, B,
a("div", P, [ a("div", P, [
(o(!0), (o(!0),
h( d(
d, u,
null, null,
m( m(
n.foregroundColors, n.foregroundColors,
@@ -118,7 +118,7 @@ function A(t, R, z, E, $, n) {
"aria-label": "aria-label":
e.name, e.name,
class: "flex h-5 w-5 items-center justify-center rounded border text-base", class: "flex h-5 w-5 items-center justify-center rounded border text-base",
style: u({ style: h({
color: e.hex, color: e.hex,
}), }),
onClick: (s) => onClick: (s) =>
@@ -128,7 +128,7 @@ function A(t, R, z, E, $, n) {
}, },
" A ", " A ",
12, 12,
D F
), ),
]), ]),
_: 2, _: 2,
@@ -141,11 +141,11 @@ function A(t, R, z, E, $, n) {
128 128
)), )),
]), ]),
F, D,
a("div", w, [ a("div", w, [
(o(!0), (o(!0),
h( d(
d, u,
null, null,
m( m(
n.backgroundColors, n.backgroundColors,
@@ -171,7 +171,7 @@ function A(t, R, z, E, $, n) {
? "border-transparent" ? "border-transparent"
: "border-gray-200", : "border-gray-200",
]), ]),
style: u({ style: h({
backgroundColor: backgroundColor:
e.hex, e.hex,
}), }),
@@ -182,7 +182,7 @@ function A(t, R, z, E, $, n) {
}, },
" A ", " A ",
14, 14,
T A
), ),
]), ]),
_: 2, _: 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 }; 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 { import {
v as d, v as d,
D as g, D as g,
x as m, y as m,
y as f, G as s,
F as s,
B as t, B as t,
C as r,
I as p,
X as u,
x as f,
U as l, U as l,
J as r, } from "./frappe-ui-20hnMCM8.js";
H as p,
W as u,
} from "./frappe-ui-iPT8hMkb.js";
const D = { const D = {
name: "Home", name: "Home",
data() { data() {
@@ -19,12 +19,12 @@ const D = {
components: { Dialog: g }, components: { Dialog: g },
}, },
_ = { class: "max-w-3xl py-12 mx-auto" }; _ = { 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"), const a = u("Button"),
c = u("Dialog"); c = u("Dialog");
return ( return (
m(), f(),
f("div", _, [ m("div", _, [
s( s(
a, 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 }; 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, v as I,
a7 as f, a7 as f,
D, D,
aN as h, aK as h,
W as d, X as d,
x as m, x as m,
y as c, y as c,
N as _, M as _,
aD as y, az as y,
aC as C, aA as C,
F as n, G as n,
B as s, B as s,
J as i, C as i,
H as v, I as v,
I as w, J as w,
U as u, U as u,
Q as x, Q as x,
} from "./frappe-ui-iPT8hMkb.js"; } from "./frappe-ui-20hnMCM8.js";
const B = { const B = {
name: "InsertImage", name: "InsertImage",
props: ["editor"], props: ["editor"],
@@ -51,7 +51,7 @@ const B = {
}, },
k = { class: "absolute inset-0 select-none px-2 py-1 text-base" }, k = { class: "absolute inset-0 select-none px-2 py-1 text-base" },
S = ["src"]; S = ["src"];
function V(t, e, r, N, a, o) { function V(t, e, r, A, a, o) {
const g = d("Button"), const g = d("Button"),
p = d("Dialog"); p = d("Dialog");
return ( return (
@@ -147,6 +147,6 @@ function V(t, e, r, N, a, o) {
) )
); );
} }
const F = I(B, [["render", V]]); const z = I(B, [["render", V]]);
export { F as default }; export { z as default };
//# sourceMappingURL=InsertImage-pFxauZ_l.js.map //# 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, a7 as g,
am as L, am as L,
D as m, D as m,
W as i, X as i,
x as p, x as p,
y as f, y as f,
N as D, M as D,
aD as c, az as c,
aC as h, aA as h,
F as a, G as a,
B as l, B as l,
aM as v, aJ as v,
U as x, U as x,
Q as _, Q as _,
} from "./frappe-ui-iPT8hMkb.js"; } from "./frappe-ui-20hnMCM8.js";
const w = { const w = {
name: "InsertLink", name: "InsertLink",
props: ["editor"], 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"), const r = i("FormControl"),
u = i("Button"), u = i("Button"),
k = i("Dialog"); k = i("Dialog");
@@ -118,4 +118,4 @@ function V(t, e, C, B, n, s) {
} }
const R = d(w, [["render", V]]); const R = d(w, [["render", V]]);
export { R as default }; 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 _, v as _,
a7 as C, a7 as C,
D as v, D as v,
aO as k, aL as k,
W as r, X as r,
x as u, x as u,
y as c, y as c,
N as h, M as h,
aD as x, az as x,
aC as B, aA as B,
F as a, G as a,
B as l, B as l,
H as y, C as y,
U as n, U as n,
A as U, I as U,
I as p, A as w,
J as w, J as p,
Q as F, Q as A,
} from "./frappe-ui-iPT8hMkb.js"; } from "./frappe-ui-20hnMCM8.js";
const I = { const I = {
name: "InsertImage", name: "InsertImage",
props: ["editor"], props: ["editor"],
@@ -47,16 +47,16 @@ const I = {
}, },
}, },
}, },
N = { class: "flex items-center space-x-2" }, F = { class: "flex items-center space-x-2" },
A = ["src"]; N = ["src"];
function S(i, o, L, P, e, t) { function S(i, o, L, z, e, t) {
const s = r("Button"), const s = r("Button"),
V = r("FileUploader"), V = r("FileUploader"),
g = r("Dialog"); g = r("Dialog");
return ( return (
u(), u(),
c( c(
F, A,
null, null,
[ [
h(i.$slots, "default", x(B({ onClick: t.openDialog }))), h(i.$slots, "default", x(B({ onClick: t.openDialog }))),
@@ -89,14 +89,14 @@ function S(i, o, L, P, e, t) {
uploading: m, uploading: m,
openFileSelector: D, openFileSelector: D,
}) => [ }) => [
w("div", N, [ y("div", F, [
a( a(
s, s,
{ onClick: D }, { onClick: D },
{ {
default: l(() => [ default: l(() => [
n( n(
y( U(
m m
? `Uploading ${f}%` ? `Uploading ${f}%`
: e : e
@@ -115,7 +115,7 @@ function S(i, o, L, P, e, t) {
), ),
e.addVideoDialog.url e.addVideoDialog.url
? (u(), ? (u(),
U( w(
s, s,
{ {
key: 0, key: 0,
@@ -159,7 +159,7 @@ function S(i, o, L, P, e, t) {
}, },
null, null,
8, 8,
A N
)) ))
: p("", !0), : p("", !0),
]), ]),
@@ -196,6 +196,6 @@ function S(i, o, L, P, e, t) {
) )
); );
} }
const b = _(I, [["render", S]]); const R = _(I, [["render", S]]);
export { b as default }; export { R as default };
//# sourceMappingURL=InsertVideo-5zm7I1WB.js.map //# 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 { import {
a as pe, d as pe,
r as Gu, r as Gu,
b as Qu, a as Qu,
ad as Oe, ad as Oe,
k as K, k as K,
w as _e, w as _e,
G as h, H as h,
x as k, x as k,
y as E, y as E,
J as C, C,
H as v, I as v,
I as z, J as z,
A as M, A as M,
B as P, B as P,
a7 as Z, a7 as Z,
Q as cu, Q as cu,
R as ou, R as ou,
F as U, G as U,
ae as je, ae as je,
j as Ue, af as Ue,
af as Ze, j as Ze,
u as He, ag as He,
U as Ve, u as Ve,
C as Ge, F as Ge,
V as Qe, V as Qe,
ag as We, X as We,
W as Je, a6 as Je,
a6 as Ye, U as Ye,
} from "./frappe-ui-iPT8hMkb.js"; } from "./frappe-ui-20hnMCM8.js";
import { _ as Xe, C as Ke } from "./CourseOutline-7cUm8E8p.js"; import { _ as Xe, C as Ke } from "./CourseOutline-M5G5Rx7O.js";
import { _ as u0 } from "./UserAvatar-nJqmkBPv.js"; import { _ as u0 } from "./UserAvatar-yrWInUTi.js";
import { a as Pu, t as e0, c as t0 } from "./index-qZ7Yta4u.js"; import { a as Pu, t as e0, c as t0 } from "./index-Vx7mSx23.js";
import { _ as r0, C as n0 } from "./Discussions-0iopHFAD.js"; import { _ as r0, C as n0 } from "./Discussions-C9dFHLpJ.js";
/** /**
* @license lucide-vue-next v0.309.0 - ISC * @license lucide-vue-next v0.309.0 - ISC
* *
@@ -5080,7 +5080,7 @@ const Hr = { key: 0 },
}, },
setup(u) { setup(u) {
const e = pe("$user"), const e = pe("$user"),
t = We(), t = Ue(),
n = new $({ html: !0, linkify: !0 }), n = new $({ html: !0, linkify: !0 }),
c = u, c = u,
r = K({ r = K({
@@ -5124,7 +5124,7 @@ const Hr = { key: 0 },
params: { course: c.courseName }, params: { course: c.courseName },
auto: !0, auto: !0,
}), }),
a = Ue(() => { a = Ze(() => {
var g, A; var g, A;
let l = [ let l = [
{ label: "All Courses", route: { name: "Courses" } }, { label: "All Courses", route: { name: "Courses" } },
@@ -5157,10 +5157,10 @@ const Hr = { key: 0 },
l l
); );
}); });
Ze(() => { He(() => {
localStorage.setItem("sidebar_is_collapsed", !0); localStorage.setItem("sidebar_is_collapsed", !0);
}), }),
He(() => { Ve(() => {
localStorage.setItem("sidebar_is_collapsed", !1); localStorage.setItem("sidebar_is_collapsed", !1);
}), }),
_e( _e(
@@ -5187,13 +5187,13 @@ const Hr = { key: 0 },
); );
}; };
return (l, g) => { return (l, g) => {
const A = Je("router-link"); const A = We("router-link");
return h(r).data && h(o).data return h(r).data && h(o).data
? (k(), ? (k(),
E("div", kn, [ E("div", kn, [
C("header", gn, [ C("header", gn, [
U( U(
h(Ye), h(Je),
{ class: "h-7", items: a.value }, { class: "h-7", items: a.value },
null, null,
8, 8,
@@ -5236,7 +5236,7 @@ const Hr = { key: 0 },
{ {
default: P( default: P(
() => [ () => [
Ve( Ye(
v( v(
l.__( l.__(
"Start Learning" "Start Learning"
@@ -5518,6 +5518,7 @@ const Hr = { key: 0 },
ou( ou(
h(r).data.body.split(` h(r).data.body.split(`
`), `),
(y) => ( (y) => (
k(), k(),
@@ -5911,4 +5912,4 @@ const Hr = { key: 0 },
}, },
}; };
export { ac as default }; 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 { import {
r as O, r as O,
az as M, aw as X,
aA as K, ax as Q,
j as x, j as x,
w as U, w as U,
n as Q, n as Z,
x as n, x as n,
A as F, A as F,
B as d, B as c,
aB as Z, G as w,
G as a, H as a,
aC as C, ay as K,
aD as V, M as g,
C as T, az as C,
N as g, aA as V,
H as N, C as v,
F as T,
y as p, y as p,
J as b, I as N,
F as w, aB as M,
aE as W, aC as W,
aF as Y, aD as Y,
Q as R, Q as R,
I as q,
aG as ee,
U as te,
R as E, R as E,
aH as G, J as q,
aI as H, aE as ee,
aJ as ae, U as te,
aK as J, aF as G,
aG as ae,
aH as H,
k as se, k as se,
aL as le, aI as le,
a7 as re, a7 as re,
} from "./frappe-ui-iPT8hMkb.js"; } from "./frappe-ui-20hnMCM8.js";
import { a as oe, C as ue } from "./index-qZ7Yta4u.js"; import { a as oe, C as ue } from "./index-Vx7mSx23.js";
import { P as ne } from "./plus-_m-8cMp1.js"; import { P as ne } from "./plus-pxSjkL_w.js";
/** /**
* @license lucide-vue-next v0.309.0 - ISC * @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" }, 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" }, ye = { class: "mt-1 rounded-lg bg-white py-1 text-base shadow-2xl" },
ve = { class: "relative px-1.5 pt-0.5" }, be = { 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" }, ve = { key: 0, class: "px-2.5 py-1.5 text-sm font-medium text-gray-500" },
ge = { ge = {
key: 0, key: 0,
class: "mt-1.5 rounded-md px-2.5 py-1.5 text-base text-gray-600", 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 }) { setup(j, { expose: A, emit: f }) {
const r = j, const r = j,
u = f, u = f,
c = O(""), i = O(""),
h = O(!1), h = O(!1),
S = O(null), S = O(null),
k = M(), k = X(),
z = K(), z = Q(),
L = x(() => "value" in k), P = x(() => "value" in k),
_ = x({ _ = x({
get() { get() {
return L.value ? k.value : r.modelValue; return P.value ? k.value : r.modelValue;
}, },
set(t) { set(t) {
(c.value = ""), (i.value = ""),
t && (h.value = !1), t && (h.value = !1),
u(L.value ? "change" : "update:modelValue", t); u(P.value ? "change" : "update:modelValue", t);
}, },
}); });
function e() { function e() {
@@ -106,18 +106,18 @@ import { P as ne } from "./plus-_m-8cMp1.js";
key: o, key: o,
group: l.group, group: l.group,
hideLabel: l.hideLabel || !1, 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); .filter((l) => l.items.length > 0);
}); });
function i(t) { function d(t) {
return c.value return i.value
? t.filter((s) => ? t.filter((s) =>
[s.label, s.value].some((o) => [s.label, s.value].some((o) =>
(o || "") (o || "")
.toString() .toString()
.toLowerCase() .toLowerCase()
.includes(c.value.toLowerCase()) .includes(i.value.toLowerCase())
) )
) )
: t; : t;
@@ -131,17 +131,17 @@ import { P as ne } from "./plus-_m-8cMp1.js";
} }
return t == null ? void 0 : t.label; return t == null ? void 0 : t.label;
} }
U(c, (t) => { U(i, (t) => {
u("update:query", t); u("update:query", t);
}), }),
U(h, (t) => { U(h, (t) => {
t && t &&
Q(() => { Z(() => {
S.value.el.focus(); S.value.el.focus();
}); });
}); });
const $ = x(() => (r.disabled ? "text-gray-600" : "text-gray-800")), const $ = x(() => (r.disabled ? "text-gray-600" : "text-gray-800")),
X = x(() => { J = x(() => {
let t = { let t = {
sm: "text-base rounded h-7", sm: "text-base rounded h-7",
md: "text-base rounded h-8", 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 [t, s, o, $.value, "transition-colors w-full"];
}); });
return ( return (
A({ query: c }), A({ query: i }),
(t, s) => ( (t, s) => (
n(), n(),
F( F(
@@ -181,9 +181,9 @@ import { P as ne } from "./plus-_m-8cMp1.js";
nullable: "", nullable: "",
}, },
{ {
default: d(({ open: l }) => [ default: c(({ open: l }) => [
w( w(
a(Z), a(K),
{ {
class: "w-full", class: "w-full",
show: h.value, show: h.value,
@@ -192,32 +192,32 @@ import { P as ne } from "./plus-_m-8cMp1.js";
(s[2] = (o) => (h.value = o)), (s[2] = (o) => (h.value = o)),
}, },
{ {
target: d( target: c(
({ open: o, togglePopover: P }) => [ ({ open: o, togglePopover: B }) => [
g( g(
t.$slots, t.$slots,
"target", "target",
V( C(
C({ V({
open: o, open: o,
togglePopover: P, togglePopover: B,
}) })
), ),
() => [ () => [
b("div", de, [ v("div", de, [
b( v(
"button", "button",
{ {
class: T([ class: T([
"flex w-full items-center justify-between focus:outline-none", "flex w-full items-center justify-between focus:outline-none",
X.value, J.value,
]), ]),
onClick: onClick:
() => () =>
P(), B(),
}, },
[ [
b( v(
"div", "div",
pe, pe,
[ [
@@ -261,16 +261,16 @@ import { P as ne } from "./plus-_m-8cMp1.js";
), ),
] ]
), ),
body: d(({ isOpen: o }) => { body: c(({ isOpen: o }) => {
var P; var B;
return [ return [
H( M(
b( v(
"div", "div",
null, null,
[ [
b("div", ye, [ v("div", ye, [
b("div", ve, [ v("div", be, [
w( w(
a(W), a(W),
{ {
@@ -283,12 +283,12 @@ import { P as ne } from "./plus-_m-8cMp1.js";
s[0] || s[0] ||
(s[0] = (s[0] =
( (
v b
) => { ) => {
c.value = i.value =
v.target.value; b.target.value;
}), }),
value: c.value, value: i.value,
autocomplete: autocomplete:
"off", "off",
placeholder: placeholder:
@@ -300,7 +300,7 @@ import { P as ne } from "./plus-_m-8cMp1.js";
"value", "value",
] ]
), ),
b( v(
"button", "button",
{ {
class: "absolute right-1.5 inline-flex h-7 w-7 items-center justify-center", 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] ||
(s[1] = (s[1] =
( (
v b
) => ) =>
(_.value = (_.value =
null)), null)),
@@ -333,7 +333,7 @@ import { P as ne } from "./plus-_m-8cMp1.js";
}, },
{ {
default: default:
d( c(
() => [ () => [
(n( (n(
!0 !0
@@ -344,25 +344,25 @@ import { P as ne } from "./plus-_m-8cMp1.js";
E( E(
m.value, m.value,
( (
v b
) => ) =>
H( M(
(n(), (n(),
p( p(
"div", "div",
{ {
class: "mt-1.5", class: "mt-1.5",
key: v.key, key: b.key,
}, },
[ [
v.group && b.group &&
!v.hideLabel !b.hideLabel
? (n(), ? (n(),
p( p(
"div", "div",
be, ve,
N( N(
v.group b.group
), ),
1 1
)) ))
@@ -377,9 +377,9 @@ import { P as ne } from "./plus-_m-8cMp1.js";
R, R,
null, null,
E( E(
v.items, b.items,
( (
B L
) => ( ) => (
n(), n(),
F( F(
@@ -388,18 +388,18 @@ import { P as ne } from "./plus-_m-8cMp1.js";
), ),
{ {
as: "template", as: "template",
key: B.value, key: L.value,
value: B, value: L,
}, },
{ {
default: default:
d( c(
({ ({
active: D, active: D,
selected: selected:
I, I,
}) => [ }) => [
b( v(
"li", "li",
{ {
class: T( class: T(
@@ -416,13 +416,13 @@ import { P as ne } from "./plus-_m-8cMp1.js";
g( g(
t.$slots, t.$slots,
"item-prefix", "item-prefix",
V( C(
C( V(
{ {
active: D, active: D,
selected: selected:
I, I,
option: B, option: L,
} }
) )
) )
@@ -430,20 +430,20 @@ import { P as ne } from "./plus-_m-8cMp1.js";
g( g(
t.$slots, t.$slots,
"item-label", "item-label",
V( C(
C( V(
{ {
active: D, active: D,
selected: selected:
I, I,
option: B, option: L,
} }
) )
), ),
() => [ () => [
te( te(
N( N(
B.label L.label
), ),
1 1
), ),
@@ -470,7 +470,7 @@ import { P as ne } from "./plus-_m-8cMp1.js";
[ [
[ [
G, G,
v b
.items .items
.length > .length >
0, 0,
@@ -508,15 +508,15 @@ import { P as ne } from "./plus-_m-8cMp1.js";
g( g(
t.$slots, t.$slots,
"footer", "footer",
V( C(
C( V(
{ {
value: value:
(P = (B =
S.value) == S.value) ==
null null
? void 0 ? void 0
: P : B
.el .el
._value, ._value,
close: e, close: e,
@@ -562,32 +562,34 @@ import { P as ne } from "./plus-_m-8cMp1.js";
setup(j, { emit: A }) { setup(j, { emit: A }) {
const f = j, const f = j,
r = A, r = A,
u = M(), u = X(),
c = x(() => "value" in u), i = x(() => "value" in u),
h = x({ h = x({
get: () => (c.value ? u.value : f.modelValue), get: () => (i.value ? u.value : f.modelValue),
set: (e) => set: (e) => (
console.log(e == null ? void 0 : e.value, i.value),
(e == null ? void 0 : e.value) && (e == null ? void 0 : e.value) &&
r( r(
c.value ? "change" : "update:modelValue", i.value ? "change" : "update:modelValue",
e == null ? void 0 : e.value e == null ? void 0 : e.value
), )
),
}), }),
S = O(null), S = O(null),
k = O(""); k = O("");
J( H(
() => { () => {
var e; var e;
return (e = S.value) == null ? void 0 : e.query; return (e = S.value) == null ? void 0 : e.query;
}, },
(e) => { (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 } { debounce: 300, immediate: !0 }
), ),
J( H(
() => f.doctype, () => f.doctype,
() => L(""), () => P(""),
{ debounce: 300, immediate: !0 } { debounce: 300, immediate: !0 }
); );
const z = se({ const z = se({
@@ -602,7 +604,7 @@ import { P as ne } from "./plus-_m-8cMp1.js";
transform: (e) => transform: (e) =>
e.map((m) => ({ label: m.value, value: m.value })), e.map((m) => ({ label: m.value, value: m.value })),
}); });
function L(e) { function P(e) {
z.update({ z.update({
params: { txt: e, doctype: f.doctype, filters: f.filters }, 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, options: a(z).data,
modelValue: h.value, modelValue: h.value,
"onUpdate:modelValue": "onUpdate:modelValue":
m[0] || (m[0] = (i) => (h.value = i)), m[0] || (m[0] = (d) => (h.value = d)),
size: a(u).size || "sm", size: a(u).size || "sm",
variant: a(u).variant, variant: a(u).variant,
placeholder: a(u).placeholder, placeholder: a(u).placeholder,
@@ -640,22 +642,22 @@ import { P as ne } from "./plus-_m-8cMp1.js";
}, },
le( le(
{ {
target: d(({ open: i, togglePopover: y }) => [ target: c(({ open: d, togglePopover: y }) => [
g( g(
e.$slots, e.$slots,
"target", "target",
V(C({ open: i, togglePopover: y })) C(V({ open: d, togglePopover: y }))
), ),
]), ]),
prefix: d(() => [g(e.$slots, "prefix")]), prefix: c(() => [g(e.$slots, "prefix")]),
"item-prefix": d( "item-prefix": c(
({ active: i, selected: y, option: $ }) => [ ({ active: d, selected: y, option: $ }) => [
g( g(
e.$slots, e.$slots,
"item-prefix", "item-prefix",
V( C(
C({ V({
active: i, active: d,
selected: y, selected: y,
option: $, option: $,
}) })
@@ -663,14 +665,14 @@ import { P as ne } from "./plus-_m-8cMp1.js";
), ),
] ]
), ),
"item-label": d( "item-label": c(
({ active: i, selected: y, option: $ }) => [ ({ active: d, selected: y, option: $ }) => [
g( g(
e.$slots, e.$slots,
"item-label", "item-label",
V( C(
C({ V({
active: i, active: d,
selected: y, selected: y,
option: $, option: $,
}) })
@@ -684,8 +686,8 @@ import { P as ne } from "./plus-_m-8cMp1.js";
a(u).onCreate a(u).onCreate
? { ? {
name: "footer", name: "footer",
fn: d(({ value: i, close: y }) => [ fn: c(({ value: d, close: y }) => [
b("div", null, [ v("div", null, [
w( w(
a(re), a(re),
{ {
@@ -694,12 +696,12 @@ import { P as ne } from "./plus-_m-8cMp1.js";
label: "Create New", label: "Create New",
onClick: ($) => onClick: ($) =>
a(u).onCreate( a(u).onCreate(
i, d,
y y
), ),
}, },
{ {
prefix: d(() => [ prefix: c(() => [
w(a(ne), { w(a(ne), {
class: "h-4 w-4 stroke-1.5", class: "h-4 w-4 stroke-1.5",
}), }),
@@ -730,4 +732,4 @@ import { P as ne } from "./plus-_m-8cMp1.js";
}, },
}; };
export { Ve as _ }; 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 { import {
j as x, d as x,
j as v,
k as c, k as c,
x as v,
y as b, y as b,
J as e, C as e,
F as o, G as o,
G as t, H as t,
H as s, I as s,
a as k, x as k,
a6 as f, a6 as f,
} from "./frappe-ui-iPT8hMkb.js"; } from "./frappe-ui-20hnMCM8.js";
import { a as r, B as C } from "./index-qZ7Yta4u.js"; import { a as r, B as C } from "./index-Vx7mSx23.js";
import { B as L } from "./book-open-check-5hpjM2tX.js"; import { B as L } from "./book-open-check-j9IEQjWh.js";
/** /**
* @license lucide-vue-next v0.309.0 - ISC * @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" }], ["polyline", { points: "10 17 15 12 10 7", key: "1ail0h" }],
["line", { x1: "15", x2: "3", y1: "12", y2: "12", key: "v6grx8" }], ["line", { x1: "15", x2: "3", y1: "12", y2: "12", key: "v6grx8" }],
]), ]),
M = { class: "h-screen text-base" }, I = { class: "h-screen text-base" },
I = { M = {
class: "sticky top-0 z-10 flex items-center justify-between border-b bg-white px-3 py-2.5 sm:px-5", 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: "p-5" },
j = { class: "grid grid-cols-5 gap-5" }, E = { class: "grid grid-cols-5 gap-5" },
E = { class: "flex items-center border py-2 px-3 rounded-md" }, F = { class: "flex items-center border py-2 px-3 rounded-md" },
V = { class: "p-2 rounded-md bg-gray-100 mr-3" }, V = { class: "p-2 rounded-md bg-gray-100 mr-3" },
H = { class: "text-xl font-semibold mb-1" }, H = { class: "text-xl font-semibold mb-1" },
z = { class: "text-gray-700" }, z = { class: "text-gray-700" },
@@ -73,12 +73,12 @@ import { B as L } from "./book-open-check-5hpjM2tX.js";
U = { class: "text-gray-700" }, U = { class: "text-gray-700" },
D = { class: "flex items-center border py-2 px-3 rounded-md" }, D = { class: "flex items-center border py-2 px-3 rounded-md" },
G = { class: "p-2 rounded-md bg-gray-100 mr-3" }, G = { class: "p-2 rounded-md bg-gray-100 mr-3" },
J = { class: "text-xl font-semibold mb-1" }, R = { class: "text-xl font-semibold mb-1" },
R = { class: "text-gray-700" }, T = { class: "text-gray-700" },
T = { class: "flex items-center border py-2 px-3 rounded-md" }, $ = { class: "flex items-center border py-2 px-3 rounded-md" },
$ = { class: "p-2 rounded-md bg-gray-100 mr-3" }, q = { class: "p-2 rounded-md bg-gray-100 mr-3" },
q = { class: "text-xl font-semibold mb-1" }, A = { class: "text-xl font-semibold mb-1" },
A = { class: "text-gray-700" }, J = { class: "text-gray-700" },
K = { class: "flex items-center border py-2 px-3 rounded-md" }, K = { class: "flex items-center border py-2 px-3 rounded-md" },
Q = { class: "p-2 rounded-md bg-gray-100 mr-3" }, Q = { class: "p-2 rounded-md bg-gray-100 mr-3" },
W = { class: "text-xl font-semibold mb-1" }, W = { class: "text-xl font-semibold mb-1" },
@@ -86,8 +86,8 @@ import { B as L } from "./book-open-check-5hpjM2tX.js";
oe = { oe = {
__name: "Statistics", __name: "Statistics",
setup(Y) { setup(Y) {
k("dayjs"); x("dayjs");
const _ = x(() => [ const _ = v(() => [
{ label: "Statistics", route: { name: "Statistics" } }, { label: "Statistics", route: { name: "Statistics" } },
]), ]),
u = c({ u = c({
@@ -127,18 +127,18 @@ import { B as L } from "./book-open-check-5hpjM2tX.js";
cache: ["lessons_completed"], cache: ["lessons_completed"],
}); });
return (a, Z) => { return (a, Z) => {
var n, d, l, i, p; var d, n, l, i, p;
return ( return (
v(), k(),
b("div", M, [ b("div", I, [
e("header", I, [ e("header", M, [
o(t(f), { class: "h-7", items: _.value }, null, 8, [ o(t(f), { class: "h-7", items: _.value }, null, 8, [
"items", "items",
]), ]),
]), ]),
e("div", F, [ e("div", j, [
e("div", j, [ e("div", E, [
e("div", E, [ e("div", F, [
e("div", V, [ e("div", V, [
o(t(C), { o(t(C), {
class: "w-18 h-18 stroke-1.5 text-gray-700", 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", "div",
H, H,
s( s(
(n = t(m).data) == null (d = t(m).data) == null
? void 0 ? void 0
: n.toLocaleString() : d.toLocaleString()
), ),
1 1
), ),
@@ -174,9 +174,9 @@ import { B as L } from "./book-open-check-5hpjM2tX.js";
"div", "div",
P, P,
s( s(
(d = t(h).data) == null (n = t(h).data) == null
? void 0 ? void 0
: d.toLocaleString() : n.toLocaleString()
), ),
1 1
), ),
@@ -197,7 +197,7 @@ import { B as L } from "./book-open-check-5hpjM2tX.js";
e("div", null, [ e("div", null, [
e( e(
"div", "div",
J, R,
s( s(
(l = t(u).data) == null (l = t(u).data) == null
? void 0 ? void 0
@@ -207,14 +207,14 @@ import { B as L } from "./book-open-check-5hpjM2tX.js";
), ),
e( e(
"div", "div",
R, T,
s(a.__("Enrolled Users")), s(a.__("Enrolled Users")),
1 1
), ),
]), ]),
]), ]),
e("div", T, [ e("div", $, [
e("div", $, [ e("div", q, [
o(t(w), { o(t(w), {
class: "w-18 h-18 stroke-1.5 text-gray-700", 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", null, [
e( e(
"div", "div",
q, A,
s( s(
(i = t(y).data) == null (i = t(y).data) == null
? void 0 ? void 0
@@ -232,7 +232,7 @@ import { B as L } from "./book-open-check-5hpjM2tX.js";
), ),
e( e(
"div", "div",
A, J,
s(a.__("Courses Completed")), s(a.__("Courses Completed")),
1 1
), ),
@@ -271,4 +271,4 @@ import { B as L } from "./book-open-check-5hpjM2tX.js";
}, },
}; };
export { oe as default }; 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, x as r,
A as s, A as s,
av as t, av as t,
G as l, H as l,
as as u, as as u,
I as n, J as n,
} from "./frappe-ui-iPT8hMkb.js"; } from "./frappe-ui-20hnMCM8.js";
const i = { const i = {
__name: "UserAvatar", __name: "UserAvatar",
props: { user: { type: Object, default: null }, size: { type: String } }, props: { user: { type: Object, default: null }, size: { type: String } },
@@ -33,4 +33,4 @@ const i = {
}, },
}; };
export { i as _ }; 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 * @license lucide-vue-next v0.309.0 - ISC
* *
@@ -19,4 +19,4 @@ import { a as c } from "./index-qZ7Yta4u.js";
], ],
]); ]);
export { o as B }; 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 * @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" }], ["polyline", { points: "12 6 12 12 16 14", key: "68esgv" }],
]); ]);
export { c as C, a }; 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 * @license lucide-vue-next v0.309.0 - ISC
* *
@@ -9,4 +9,4 @@ import { a } from "./index-qZ7Yta4u.js";
["path", { d: "M12 5v14", key: "s699le" }], ["path", { d: "M12 5v14", key: "s699le" }],
]); ]);
export { s as P }; 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 * @license lucide-vue-next v0.309.0 - ISC
* *
@@ -14,4 +14,4 @@ import { a as o } from "./index-qZ7Yta4u.js";
], ],
]); ]);
export { a as S }; 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" /> <link rel="icon" href="/favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Frappe UI App</title> <title>Frappe UI App</title>
<script type="module" crossorigin src="/assets/index-qZ7Yta4u.js"></script> <script type="module" crossorigin src="/assets/index-Vx7mSx23.js"></script>
<link rel="modulepreload" crossorigin href="/assets/frappe-ui-iPT8hMkb.js"> <link rel="modulepreload" crossorigin href="/assets/frappe-ui-20hnMCM8.js">
<link rel="stylesheet" crossorigin href="/assets/frappe-ui-f0ZsshpU.css"> <link rel="stylesheet" crossorigin href="/assets/frappe-ui-dYBF8eAq.css">
<link rel="stylesheet" crossorigin href="/assets/index-eoiomuoN.css"> <link rel="stylesheet" crossorigin href="/assets/index-VOpIbXPv.css">
</head> </head>
<body> <body>
<div id="app"></div> <div id="app"></div>

View File

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

3851
yarn.lock

File diff suppressed because it is too large Load Diff