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
@@ -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
} }
+21
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
-11
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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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}
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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"}
@@ -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"}
@@ -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
@@ -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"}
@@ -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]}
@@ -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
@@ -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"}
@@ -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]}
@@ -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]}
@@ -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
@@ -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"}
@@ -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
@@ -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"}
+238
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
@@ -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]}
@@ -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
@@ -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}
@@ -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
@@ -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
@@ -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
@@ -1 +0,0 @@
{"version":3,"file":"UserAvatar-nJqmkBPv.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -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
@@ -0,0 +1 @@
{"version":3,"file":"UserAvatar-yrWInUTi.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -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]}
@@ -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
@@ -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]}
@@ -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
@@ -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]}
@@ -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
@@ -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
File diff suppressed because one or more lines are too long
@@ -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]}
@@ -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
@@ -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]}
@@ -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]}
@@ -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
@@ -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]}
+4 -4
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>
+1 -1
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
View File
File diff suppressed because it is too large Load Diff