@enerex/template-studio 1.1.24 → 1.1.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import I, { useContext as J, useState as
|
|
1
|
+
import { jsx as a, jsxs as v } from "react/jsx-runtime";
|
|
2
|
+
import I, { useContext as J, useState as E, useEffect as C } from "react";
|
|
3
3
|
import { QueryClient as ce, QueryClientProvider as pe, useQuery as q, useMutation as Z, useQueryClient as me } from "@tanstack/react-query";
|
|
4
4
|
import V from "axios";
|
|
5
|
-
import { Spinner as B, Form as
|
|
6
|
-
import { Controller as
|
|
5
|
+
import { Spinner as B, Form as S, Card as K, Row as ue, Col as P, Button as z } from "react-bootstrap";
|
|
6
|
+
import { Controller as fe, useForm as ge } from "react-hook-form";
|
|
7
7
|
import G from "react-select";
|
|
8
|
-
const
|
|
8
|
+
const L = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
|
|
9
9
|
<html\r
|
|
10
10
|
dir="ltr"\r
|
|
11
11
|
xmlns:o="urn:schemas-microsoft-com:office:office"\r
|
|
@@ -364,50 +364,50 @@ const R = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
|
|
|
364
364
|
`, ee = I.createContext(
|
|
365
365
|
void 0
|
|
366
366
|
), ye = ({
|
|
367
|
-
children:
|
|
367
|
+
children: n,
|
|
368
368
|
configs: r
|
|
369
369
|
}) => {
|
|
370
|
-
const [
|
|
370
|
+
const [s, l] = I.useState(r.clientId), [e, t] = I.useState(r.apiKey), [i, o] = I.useState(
|
|
371
371
|
r.enerexIdentifier
|
|
372
|
-
), [c, y] = I.useState(r.userName), [
|
|
373
|
-
|
|
372
|
+
), [c, y] = I.useState(r.userName), [g, h] = I.useState(r.projectId), b = (m) => {
|
|
373
|
+
t(m.apiKey), l(m.clientId), h(m.projectId), o(m.enerexIdentifier), y(m.userName);
|
|
374
374
|
};
|
|
375
|
-
return /* @__PURE__ */
|
|
375
|
+
return /* @__PURE__ */ a(
|
|
376
376
|
ee.Provider,
|
|
377
377
|
{
|
|
378
378
|
value: {
|
|
379
|
-
clientId:
|
|
380
|
-
apiKey:
|
|
379
|
+
clientId: s,
|
|
380
|
+
apiKey: e,
|
|
381
381
|
setConfiguration: b,
|
|
382
|
-
enerexIdentifier:
|
|
383
|
-
projectId:
|
|
382
|
+
enerexIdentifier: i,
|
|
383
|
+
projectId: g,
|
|
384
384
|
userName: c
|
|
385
385
|
},
|
|
386
|
-
children:
|
|
386
|
+
children: n
|
|
387
387
|
}
|
|
388
388
|
);
|
|
389
389
|
}, T = () => {
|
|
390
|
-
const
|
|
391
|
-
if (!
|
|
390
|
+
const n = J(ee);
|
|
391
|
+
if (!n)
|
|
392
392
|
throw new Error("widgetConfig must be used within a ConfigProvider");
|
|
393
|
-
return
|
|
394
|
-
}, te = (
|
|
393
|
+
return n;
|
|
394
|
+
}, te = (n = "", r) => ({ get: async (e, t) => {
|
|
395
395
|
try {
|
|
396
|
-
const
|
|
397
|
-
`${
|
|
398
|
-
|
|
396
|
+
const i = await V.get(
|
|
397
|
+
`${n}${e}`,
|
|
398
|
+
t ?? r
|
|
399
399
|
);
|
|
400
|
-
if (
|
|
401
|
-
return
|
|
402
|
-
} catch (
|
|
403
|
-
throw
|
|
400
|
+
if (i.status === 200)
|
|
401
|
+
return i.data;
|
|
402
|
+
} catch (i) {
|
|
403
|
+
throw i;
|
|
404
404
|
}
|
|
405
|
-
}, post: async (
|
|
405
|
+
}, post: async (e, t, i) => {
|
|
406
406
|
try {
|
|
407
407
|
const o = await V.post(
|
|
408
|
-
`${
|
|
409
|
-
|
|
410
|
-
|
|
408
|
+
`${n}${e}`,
|
|
409
|
+
t,
|
|
410
|
+
i ?? r
|
|
411
411
|
);
|
|
412
412
|
if (o.status === 200)
|
|
413
413
|
return o.data;
|
|
@@ -428,32 +428,32 @@ const R = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
|
|
|
428
428
|
post: () => {
|
|
429
429
|
throw new Error("HttpClientContext.post not implemented");
|
|
430
430
|
}
|
|
431
|
-
}), he = ({ children:
|
|
432
|
-
const { clientId: r, apiKey:
|
|
431
|
+
}), he = ({ children: n }) => {
|
|
432
|
+
const { clientId: r, apiKey: s } = T(), l = {
|
|
433
433
|
headers: {
|
|
434
434
|
client_id: r,
|
|
435
|
-
"x-api-key":
|
|
435
|
+
"x-api-key": s
|
|
436
436
|
}
|
|
437
|
-
}, { get:
|
|
438
|
-
return /* @__PURE__ */
|
|
439
|
-
}, be = ({ children:
|
|
437
|
+
}, { get: e, post: t } = te($.API_BASE_URL, l);
|
|
438
|
+
return /* @__PURE__ */ a(ne.Provider, { value: { get: e, post: t }, children: n });
|
|
439
|
+
}, be = ({ children: n }) => {
|
|
440
440
|
const r = new ce();
|
|
441
|
-
return /* @__PURE__ */
|
|
442
|
-
}, we = (
|
|
443
|
-
const r = Array.from(new Set(
|
|
441
|
+
return /* @__PURE__ */ a(he, { children: /* @__PURE__ */ a(pe, { client: r, children: n }) });
|
|
442
|
+
}, we = (n) => {
|
|
443
|
+
const r = Array.from(new Set(n.map((l) => l.category))), s = [];
|
|
444
444
|
return r.forEach((l) => {
|
|
445
|
-
const
|
|
446
|
-
label:
|
|
447
|
-
value:
|
|
448
|
-
hint:
|
|
449
|
-
hidden:
|
|
445
|
+
const e = n.filter((t) => t.category === l).map((t) => ({
|
|
446
|
+
label: t.label,
|
|
447
|
+
value: t.value,
|
|
448
|
+
hint: t.hint,
|
|
449
|
+
hidden: t.hidden
|
|
450
450
|
}));
|
|
451
|
-
|
|
452
|
-
}),
|
|
453
|
-
},
|
|
454
|
-
const
|
|
455
|
-
if (
|
|
456
|
-
return
|
|
451
|
+
s.push({ category: l, entries: e });
|
|
452
|
+
}), s;
|
|
453
|
+
}, N = () => {
|
|
454
|
+
const n = J(ne);
|
|
455
|
+
if (n)
|
|
456
|
+
return n;
|
|
457
457
|
throw new Error("useHttpClient must be used within a HttpClientProvider");
|
|
458
458
|
}, A = {
|
|
459
459
|
Template_list: "/Template/list/",
|
|
@@ -463,47 +463,47 @@ const R = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
|
|
|
463
463
|
SaveTemplate: "/Template/save-update/",
|
|
464
464
|
TemplateTypes: "/Template/TemplateTypes/"
|
|
465
465
|
}, ve = () => {
|
|
466
|
-
const
|
|
466
|
+
const n = N(), { enerexIdentifier: r, projectId: s } = T();
|
|
467
467
|
return q({
|
|
468
468
|
queryKey: ["getTemplateTags"],
|
|
469
|
-
queryFn: async (
|
|
470
|
-
`${A.MergeTags}${
|
|
469
|
+
queryFn: async (e) => await n.get(
|
|
470
|
+
`${A.MergeTags}${s}/${r}`
|
|
471
471
|
)
|
|
472
472
|
});
|
|
473
473
|
}, Te = () => {
|
|
474
|
-
const
|
|
474
|
+
const n = N(), { enerexIdentifier: r, projectId: s } = T();
|
|
475
475
|
return q({
|
|
476
476
|
queryKey: ["getExcludeCategory"],
|
|
477
|
-
queryFn: async (
|
|
478
|
-
`${A.ExcludeCategory}${
|
|
477
|
+
queryFn: async (e) => await n.get(
|
|
478
|
+
`${A.ExcludeCategory}${s}/${r}`
|
|
479
479
|
)
|
|
480
480
|
});
|
|
481
481
|
}, xe = ({
|
|
482
|
-
templateHTML:
|
|
482
|
+
templateHTML: n,
|
|
483
483
|
className: r = "",
|
|
484
|
-
loading:
|
|
484
|
+
loading: s = !1
|
|
485
485
|
}) => {
|
|
486
|
-
const { post: l } = te(), { data:
|
|
487
|
-
|
|
488
|
-
), { enerexIdentifier: c, projectId: y, userName:
|
|
486
|
+
const { post: l } = te(), { data: e } = ve(), { data: t } = Te(), [i, o] = E(
|
|
487
|
+
n ?? { html: L, css: "" }
|
|
488
|
+
), { enerexIdentifier: c, projectId: y, userName: g } = T(), h = "https://plugin.stripocdn.email/content/guids/CABINET_eab4e7d5a4603ac03f4120652a3a5a540f0c79c688514939f095f67433ed4a67/images/photo256.png", b = "https://plugins.stripo.email/api/v1/auth";
|
|
489
489
|
C(() => {
|
|
490
|
-
if (
|
|
490
|
+
if (e && t && !document.getElementById("UiEditorScript")) {
|
|
491
491
|
const u = document.createElement("script");
|
|
492
492
|
u.id = "UiEditorScript", u.type = "module", u.src = $.EDITOR_SCRIPT_URL, u.onload = m, document.body.appendChild(u);
|
|
493
493
|
}
|
|
494
|
-
}, [
|
|
494
|
+
}, [e, t]);
|
|
495
495
|
const m = async () => {
|
|
496
496
|
window.UIEditor.initEditor(
|
|
497
497
|
document.querySelector("#stripoEditorContainer"),
|
|
498
498
|
{
|
|
499
|
-
html:
|
|
500
|
-
css:
|
|
501
|
-
modulesExcludedCategories:
|
|
499
|
+
html: i.html,
|
|
500
|
+
css: i.css,
|
|
501
|
+
modulesExcludedCategories: t ?? [],
|
|
502
502
|
forceRecreate: !0,
|
|
503
503
|
metadata: {
|
|
504
504
|
emailId: `${y}_${c}`,
|
|
505
505
|
userId: "1",
|
|
506
|
-
username:
|
|
506
|
+
username: g,
|
|
507
507
|
avatarUrl: h
|
|
508
508
|
},
|
|
509
509
|
locale: "en",
|
|
@@ -513,20 +513,20 @@ const R = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
|
|
|
513
513
|
secretKey: $.EDITOR_SECRET_KEY,
|
|
514
514
|
userId: "12",
|
|
515
515
|
role: "user"
|
|
516
|
-
},
|
|
517
|
-
|
|
516
|
+
}, f = await l(b, p);
|
|
517
|
+
f && u(f.token);
|
|
518
518
|
},
|
|
519
519
|
codeEditorButtonSelector: "#codeEditor",
|
|
520
520
|
undoButtonSelector: "#undoButton",
|
|
521
521
|
redoButtonSelector: "#redoButton",
|
|
522
522
|
mobileViewButtonSelector: "#mobileViewButton",
|
|
523
523
|
desktopViewButtonSelector: "#desktopViewButton",
|
|
524
|
-
mergeTags: we(
|
|
524
|
+
mergeTags: we(e ?? [])
|
|
525
525
|
}
|
|
526
526
|
);
|
|
527
527
|
};
|
|
528
|
-
return /* @__PURE__ */
|
|
529
|
-
|
|
528
|
+
return /* @__PURE__ */ a("div", { className: "position-relative", children: /* @__PURE__ */ v("div", { className: `editor-container ${r}`, children: [
|
|
529
|
+
s && /* @__PURE__ */ a("div", { className: "loading-overlay", children: /* @__PURE__ */ a(
|
|
530
530
|
B,
|
|
531
531
|
{
|
|
532
532
|
animation: "border",
|
|
@@ -536,67 +536,79 @@ const R = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
|
|
|
536
536
|
className: "me-1"
|
|
537
537
|
}
|
|
538
538
|
) }),
|
|
539
|
-
/* @__PURE__ */
|
|
540
|
-
/* @__PURE__ */
|
|
539
|
+
/* @__PURE__ */ a("div", { id: "externalSystemContainer" }),
|
|
540
|
+
/* @__PURE__ */ a("div", { id: "stripoEditorContainer" })
|
|
541
541
|
] }) });
|
|
542
542
|
}, Q = ({
|
|
543
|
-
label:
|
|
543
|
+
label: n,
|
|
544
544
|
register: r,
|
|
545
|
-
validation:
|
|
545
|
+
validation: s,
|
|
546
546
|
required: l = !1,
|
|
547
|
-
name:
|
|
548
|
-
error:
|
|
549
|
-
className:
|
|
547
|
+
name: e,
|
|
548
|
+
error: t,
|
|
549
|
+
className: i = "",
|
|
550
550
|
...o
|
|
551
|
-
}) => /* @__PURE__ */ v(
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
l && /* @__PURE__ */
|
|
551
|
+
}) => /* @__PURE__ */ v(S.Group, { className: i + " mb-1", children: [
|
|
552
|
+
n ? /* @__PURE__ */ v(S.Label, { className: "mb-3 d-block form-label", children: [
|
|
553
|
+
n,
|
|
554
|
+
l && /* @__PURE__ */ a("label", { className: "text-danger", children: "*" })
|
|
555
555
|
] }) : null,
|
|
556
|
-
/* @__PURE__ */
|
|
557
|
-
|
|
556
|
+
/* @__PURE__ */ a(
|
|
557
|
+
S.Control,
|
|
558
558
|
{
|
|
559
|
-
name:
|
|
559
|
+
name: e,
|
|
560
560
|
type: "text",
|
|
561
561
|
...o,
|
|
562
|
-
isInvalid: !!(
|
|
563
|
-
...r ? r(
|
|
564
|
-
...
|
|
562
|
+
isInvalid: !!(t && t[e]),
|
|
563
|
+
...r ? r(e, {
|
|
564
|
+
...s
|
|
565
565
|
}) : {},
|
|
566
|
-
className: `react-select__control ${
|
|
566
|
+
className: `react-select__control ${t && t[e] && "border border-danger"}`
|
|
567
567
|
}
|
|
568
568
|
),
|
|
569
|
-
|
|
569
|
+
t && t[e] ? /* @__PURE__ */ a(S.Control.Feedback, { type: "invalid", children: t[e].message }) : null
|
|
570
570
|
] }), Ce = () => {
|
|
571
|
-
const
|
|
571
|
+
const n = N(), { enerexIdentifier: r, projectId: s } = T();
|
|
572
572
|
return q({
|
|
573
573
|
queryKey: ["getTemplatesList"],
|
|
574
|
-
queryFn: async (
|
|
575
|
-
`${A.Template_list}${
|
|
574
|
+
queryFn: async (e) => await n.get(
|
|
575
|
+
`${A.Template_list}${s}/${r}`
|
|
576
576
|
)
|
|
577
577
|
});
|
|
578
|
-
}
|
|
579
|
-
|
|
578
|
+
};
|
|
579
|
+
function Ie(n) {
|
|
580
|
+
let r = [], s = n.filter((e) => e.id != null), l = [];
|
|
581
|
+
return s.forEach((e) => {
|
|
582
|
+
e.parent_id !== 0 && !l.includes(e.parent_id) && l.push(e.parent_id);
|
|
583
|
+
}), l.forEach((e) => {
|
|
584
|
+
let t = s.filter((o) => o.parent_id === e).map((o) => ({ name: o.name, id: o.id })), i = s.find((o) => o.id === e)?.name;
|
|
585
|
+
i && r.push({ label: i, options: t });
|
|
586
|
+
}), s.forEach((e) => {
|
|
587
|
+
e.parent_id === 0 && !l.includes(e.id) && r.push({ name: e.name, id: e.id });
|
|
588
|
+
}), r;
|
|
589
|
+
}
|
|
590
|
+
const Ee = () => {
|
|
591
|
+
const n = N(), { enerexIdentifier: r, projectId: s } = T();
|
|
580
592
|
return Z({
|
|
581
593
|
mutationKey: ["getTemplate"],
|
|
582
|
-
mutationFn: async ({ id:
|
|
583
|
-
if (
|
|
584
|
-
return await
|
|
585
|
-
`${A.Template}${r}/${
|
|
594
|
+
mutationFn: async ({ id: e }) => {
|
|
595
|
+
if (e)
|
|
596
|
+
return await n.get(
|
|
597
|
+
`${A.Template}${r}/${e}/${s}`
|
|
586
598
|
);
|
|
587
599
|
}
|
|
588
600
|
});
|
|
589
601
|
}, Se = () => {
|
|
590
|
-
const
|
|
602
|
+
const n = N(), { enerexIdentifier: r, projectId: s } = T();
|
|
591
603
|
return q({
|
|
592
604
|
queryKey: ["getTemplateTypes"],
|
|
593
|
-
queryFn: async (
|
|
594
|
-
`${A.TemplateTypes}${r}/${
|
|
605
|
+
queryFn: async (e) => await n.get(
|
|
606
|
+
`${A.TemplateTypes}${r}/${s}`
|
|
595
607
|
)
|
|
596
608
|
});
|
|
597
609
|
};
|
|
598
|
-
function
|
|
599
|
-
return
|
|
610
|
+
function _e(n) {
|
|
611
|
+
return n && n.__esModule && Object.prototype.hasOwnProperty.call(n, "default") ? n.default : n;
|
|
600
612
|
}
|
|
601
613
|
var k = { exports: {} };
|
|
602
614
|
/*!
|
|
@@ -606,50 +618,50 @@ var k = { exports: {} };
|
|
|
606
618
|
*/
|
|
607
619
|
var W;
|
|
608
620
|
function Ne() {
|
|
609
|
-
return W || (W = 1, function(
|
|
621
|
+
return W || (W = 1, function(n) {
|
|
610
622
|
(function() {
|
|
611
623
|
var r = {}.hasOwnProperty;
|
|
612
|
-
function
|
|
613
|
-
for (var
|
|
614
|
-
var o = arguments[
|
|
615
|
-
o && (
|
|
624
|
+
function s() {
|
|
625
|
+
for (var t = "", i = 0; i < arguments.length; i++) {
|
|
626
|
+
var o = arguments[i];
|
|
627
|
+
o && (t = e(t, l(o)));
|
|
616
628
|
}
|
|
617
|
-
return
|
|
629
|
+
return t;
|
|
618
630
|
}
|
|
619
|
-
function l(
|
|
620
|
-
if (typeof
|
|
621
|
-
return
|
|
622
|
-
if (typeof
|
|
631
|
+
function l(t) {
|
|
632
|
+
if (typeof t == "string" || typeof t == "number")
|
|
633
|
+
return t;
|
|
634
|
+
if (typeof t != "object")
|
|
623
635
|
return "";
|
|
624
|
-
if (Array.isArray(
|
|
625
|
-
return
|
|
626
|
-
if (
|
|
627
|
-
return
|
|
628
|
-
var
|
|
629
|
-
for (var o in
|
|
630
|
-
r.call(
|
|
631
|
-
return
|
|
636
|
+
if (Array.isArray(t))
|
|
637
|
+
return s.apply(null, t);
|
|
638
|
+
if (t.toString !== Object.prototype.toString && !t.toString.toString().includes("[native code]"))
|
|
639
|
+
return t.toString();
|
|
640
|
+
var i = "";
|
|
641
|
+
for (var o in t)
|
|
642
|
+
r.call(t, o) && t[o] && (i = e(i, o));
|
|
643
|
+
return i;
|
|
632
644
|
}
|
|
633
|
-
function
|
|
634
|
-
return
|
|
645
|
+
function e(t, i) {
|
|
646
|
+
return i ? t ? t + " " + i : t + i : t;
|
|
635
647
|
}
|
|
636
|
-
|
|
648
|
+
n.exports ? (s.default = s, n.exports = s) : window.classNames = s;
|
|
637
649
|
})();
|
|
638
650
|
}(k)), k.exports;
|
|
639
651
|
}
|
|
640
|
-
var
|
|
641
|
-
const Y = /* @__PURE__ */
|
|
642
|
-
name:
|
|
652
|
+
var Ae = Ne();
|
|
653
|
+
const Y = /* @__PURE__ */ _e(Ae), Pe = ({
|
|
654
|
+
name: n = "",
|
|
643
655
|
control: r,
|
|
644
|
-
options:
|
|
656
|
+
options: s,
|
|
645
657
|
multiple: l = !1,
|
|
646
|
-
placeholder:
|
|
647
|
-
validation:
|
|
648
|
-
labelKey:
|
|
658
|
+
placeholder: e,
|
|
659
|
+
validation: t,
|
|
660
|
+
labelKey: i = "name",
|
|
649
661
|
disabled: o,
|
|
650
662
|
isInvalid: c,
|
|
651
663
|
value: y,
|
|
652
|
-
onChange:
|
|
664
|
+
onChange: g,
|
|
653
665
|
uncontrolled: h,
|
|
654
666
|
menuPlacement: b = "auto",
|
|
655
667
|
closeOnSelect: m = !0
|
|
@@ -692,7 +704,7 @@ const Y = /* @__PURE__ */ Ee(_e), Ae = ({
|
|
|
692
704
|
display: o ? "none" : "block"
|
|
693
705
|
})
|
|
694
706
|
};
|
|
695
|
-
return h ? /* @__PURE__ */
|
|
707
|
+
return h ? /* @__PURE__ */ a(
|
|
696
708
|
G,
|
|
697
709
|
{
|
|
698
710
|
className: Y({
|
|
@@ -701,24 +713,24 @@ const Y = /* @__PURE__ */ Ee(_e), Ae = ({
|
|
|
701
713
|
styles: u,
|
|
702
714
|
classNamePrefix: "react-select",
|
|
703
715
|
isMulti: l,
|
|
704
|
-
options:
|
|
705
|
-
onChange:
|
|
706
|
-
placeholder:
|
|
716
|
+
options: s,
|
|
717
|
+
onChange: g,
|
|
718
|
+
placeholder: e,
|
|
707
719
|
menuPortalTarget: document.body,
|
|
708
720
|
value: y,
|
|
709
|
-
getOptionLabel: typeof
|
|
721
|
+
getOptionLabel: typeof i == "string" ? (p) => p[i] : i,
|
|
710
722
|
getOptionValue: (p) => p.id,
|
|
711
723
|
isDisabled: o,
|
|
712
724
|
menuPlacement: b,
|
|
713
725
|
closeMenuOnSelect: m
|
|
714
726
|
}
|
|
715
|
-
) : /* @__PURE__ */
|
|
716
|
-
|
|
727
|
+
) : /* @__PURE__ */ a(
|
|
728
|
+
fe,
|
|
717
729
|
{
|
|
718
730
|
control: r,
|
|
719
|
-
name:
|
|
720
|
-
rules:
|
|
721
|
-
render: ({ field: { onChange: p, value:
|
|
731
|
+
name: n,
|
|
732
|
+
rules: t,
|
|
733
|
+
render: ({ field: { onChange: p, value: f, onBlur: j } }) => /* @__PURE__ */ a(
|
|
722
734
|
G,
|
|
723
735
|
{
|
|
724
736
|
className: Y({
|
|
@@ -727,72 +739,72 @@ const Y = /* @__PURE__ */ Ee(_e), Ae = ({
|
|
|
727
739
|
styles: u,
|
|
728
740
|
classNamePrefix: "react-select",
|
|
729
741
|
isMulti: l,
|
|
730
|
-
options:
|
|
742
|
+
options: s,
|
|
731
743
|
onBlur: j,
|
|
732
744
|
onChange: p,
|
|
733
|
-
placeholder:
|
|
745
|
+
placeholder: e,
|
|
734
746
|
menuPortalTarget: document.body,
|
|
735
|
-
value:
|
|
736
|
-
getOptionLabel: typeof
|
|
747
|
+
value: f,
|
|
748
|
+
getOptionLabel: typeof i == "string" ? (w) => w[i] : i,
|
|
737
749
|
getOptionValue: (w) => w.id,
|
|
738
750
|
isDisabled: o,
|
|
739
751
|
menuPlacement: b,
|
|
740
752
|
closeMenuOnSelect: m
|
|
741
753
|
},
|
|
742
|
-
|
|
754
|
+
f ? JSON.stringify(f) : "reset"
|
|
743
755
|
)
|
|
744
756
|
}
|
|
745
757
|
);
|
|
746
758
|
}, X = ({
|
|
747
|
-
label:
|
|
759
|
+
label: n,
|
|
748
760
|
name: r,
|
|
749
|
-
validation:
|
|
761
|
+
validation: s,
|
|
750
762
|
control: l,
|
|
751
|
-
error:
|
|
752
|
-
...
|
|
753
|
-
}) => /* @__PURE__ */ v(
|
|
754
|
-
|
|
755
|
-
|
|
763
|
+
error: e,
|
|
764
|
+
...t
|
|
765
|
+
}) => /* @__PURE__ */ v(S.Group, { className: "mb-1", children: [
|
|
766
|
+
n && /* @__PURE__ */ v(S.Label, { className: "mb-3 d-block form-label", children: [
|
|
767
|
+
n,
|
|
756
768
|
" ",
|
|
757
|
-
|
|
769
|
+
t.required && /* @__PURE__ */ a("span", { className: "text-danger", children: "*" })
|
|
758
770
|
] }),
|
|
759
|
-
/* @__PURE__ */
|
|
760
|
-
|
|
771
|
+
/* @__PURE__ */ a(
|
|
772
|
+
Pe,
|
|
761
773
|
{
|
|
762
774
|
control: l,
|
|
763
|
-
options:
|
|
764
|
-
validation:
|
|
765
|
-
isInvalid:
|
|
775
|
+
options: t.options ?? [],
|
|
776
|
+
validation: s,
|
|
777
|
+
isInvalid: e && !!e[r],
|
|
766
778
|
name: r
|
|
767
779
|
}
|
|
768
780
|
),
|
|
769
|
-
|
|
770
|
-
] }),
|
|
771
|
-
const
|
|
781
|
+
e && e[r] ? /* @__PURE__ */ a(S.Control.Feedback, { type: "invalid", children: e[r].message }) : null
|
|
782
|
+
] }), je = () => {
|
|
783
|
+
const n = N();
|
|
772
784
|
me();
|
|
773
|
-
const { enerexIdentifier: r, projectId:
|
|
785
|
+
const { enerexIdentifier: r, projectId: s } = T();
|
|
774
786
|
return Z({
|
|
775
787
|
mutationKey: ["saveTemplate"],
|
|
776
|
-
mutationFn: async (
|
|
788
|
+
mutationFn: async (e) => (e.enerexIdentifier = r ?? "", e.projectId = s ?? "", await n.post(
|
|
777
789
|
`${A.SaveTemplate}`,
|
|
778
|
-
|
|
790
|
+
e
|
|
779
791
|
))
|
|
780
792
|
});
|
|
781
|
-
}, O = { id: "", name: "New (Blank)" },
|
|
782
|
-
onSelectItem:
|
|
793
|
+
}, O = { id: "", name: "New (Blank)" }, Re = ({
|
|
794
|
+
onSelectItem: n,
|
|
783
795
|
templateLoading: r,
|
|
784
|
-
onReset:
|
|
796
|
+
onReset: s
|
|
785
797
|
}) => {
|
|
786
798
|
const {
|
|
787
799
|
register: l,
|
|
788
|
-
handleSubmit:
|
|
789
|
-
clearErrors:
|
|
790
|
-
setValue:
|
|
800
|
+
handleSubmit: e,
|
|
801
|
+
clearErrors: t,
|
|
802
|
+
setValue: i,
|
|
791
803
|
control: o,
|
|
792
804
|
watch: c,
|
|
793
805
|
reset: y,
|
|
794
|
-
formState: { errors:
|
|
795
|
-
} =
|
|
806
|
+
formState: { errors: g }
|
|
807
|
+
} = ge({
|
|
796
808
|
defaultValues: {
|
|
797
809
|
templateName: "",
|
|
798
810
|
subject: "",
|
|
@@ -804,41 +816,36 @@ const Y = /* @__PURE__ */ Ee(_e), Ae = ({
|
|
|
804
816
|
data: h,
|
|
805
817
|
refetch: b,
|
|
806
818
|
isLoading: m
|
|
807
|
-
} = Ce(), [u, p] =
|
|
819
|
+
} = Ce(), [u, p] = E([]), [f, j] = E(), [w, M] = E(), { mutateAsync: re, isPending: _ } = Ee(), { mutateAsync: se, isPending: R } = je(), { data: D, isLoading: U } = Se(), [ie, ae] = E([]);
|
|
808
820
|
C(() => {
|
|
809
|
-
D && ae(
|
|
810
|
-
D.filter((d) => d.id !== void 0).map((d) => ({
|
|
811
|
-
id: `${d.id}`,
|
|
812
|
-
name: d.name
|
|
813
|
-
}))
|
|
814
|
-
);
|
|
821
|
+
D && ae(Ie(D));
|
|
815
822
|
}, [D]), C(() => {
|
|
816
|
-
r(!!
|
|
817
|
-
}, [
|
|
823
|
+
r(!!_);
|
|
824
|
+
}, [_]), C(() => {
|
|
818
825
|
p(h ?? []);
|
|
819
826
|
}, [h]);
|
|
820
827
|
const le = async (d) => {
|
|
821
|
-
j(d), d ? (
|
|
828
|
+
j(d), d ? (i("templateName", d?.name), t()) : (i("templateName", ""), i("subject", ""));
|
|
822
829
|
const x = await re({ id: d?.id });
|
|
823
|
-
|
|
830
|
+
M(x || void 0);
|
|
824
831
|
};
|
|
825
832
|
C(() => {
|
|
826
|
-
|
|
833
|
+
i("template", O);
|
|
827
834
|
}, [c("templateType")]), C(() => {
|
|
828
835
|
let d = u.find((x) => x.id === c("template")?.id);
|
|
829
836
|
le(d);
|
|
830
837
|
}, [c("template")]), C(() => {
|
|
831
|
-
w &&
|
|
832
|
-
}, [w,
|
|
838
|
+
w && f ? (n(w), i("subject", w.subject ?? "")) : n(void 0);
|
|
839
|
+
}, [w, f, n]);
|
|
833
840
|
const oe = (d) => {
|
|
834
841
|
window.StripoEditorApi.actionsApi.getTemplateData(
|
|
835
842
|
async (x) => {
|
|
836
|
-
let
|
|
837
|
-
|
|
843
|
+
let H = d.template.id, F = "";
|
|
844
|
+
f?.readonly && (H = "", F = d.template.id);
|
|
838
845
|
const de = {
|
|
839
846
|
enerexIdentifier: "",
|
|
840
847
|
projectId: "",
|
|
841
|
-
templateId:
|
|
848
|
+
templateId: H,
|
|
842
849
|
templateType: d.templateType.id,
|
|
843
850
|
name: d.templateName,
|
|
844
851
|
html: x.html,
|
|
@@ -846,17 +853,17 @@ const Y = /* @__PURE__ */ Ee(_e), Ae = ({
|
|
|
846
853
|
subject: d.templateType.id === "2" ? d?.subject ?? "" : "",
|
|
847
854
|
parent_id: F
|
|
848
855
|
};
|
|
849
|
-
await se(de) && (
|
|
856
|
+
await se(de) && (t(), y(), b());
|
|
850
857
|
}
|
|
851
858
|
);
|
|
852
859
|
};
|
|
853
|
-
return /* @__PURE__ */
|
|
854
|
-
/* @__PURE__ */
|
|
860
|
+
return /* @__PURE__ */ a(K, { className: "border border-0 text-start", children: /* @__PURE__ */ a(K.Body, { className: "pe-0 ps-2", children: /* @__PURE__ */ a("form", { onSubmit: e(oe), children: /* @__PURE__ */ a("div", { className: "template-list-container gap-3", children: /* @__PURE__ */ v(ue, { children: [
|
|
861
|
+
/* @__PURE__ */ a(P, { children: /* @__PURE__ */ a(
|
|
855
862
|
X,
|
|
856
863
|
{
|
|
857
864
|
label: "Type",
|
|
858
865
|
control: o,
|
|
859
|
-
error:
|
|
866
|
+
error: g,
|
|
860
867
|
options: ie,
|
|
861
868
|
required: !0,
|
|
862
869
|
validation: {
|
|
@@ -868,12 +875,12 @@ const Y = /* @__PURE__ */ Ee(_e), Ae = ({
|
|
|
868
875
|
...l("templateType")
|
|
869
876
|
}
|
|
870
877
|
) }),
|
|
871
|
-
/* @__PURE__ */
|
|
878
|
+
/* @__PURE__ */ a(P, { children: /* @__PURE__ */ a(
|
|
872
879
|
X,
|
|
873
880
|
{
|
|
874
881
|
label: "Template",
|
|
875
882
|
control: o,
|
|
876
|
-
error:
|
|
883
|
+
error: g,
|
|
877
884
|
options: [
|
|
878
885
|
O,
|
|
879
886
|
...u.filter(
|
|
@@ -887,12 +894,12 @@ const Y = /* @__PURE__ */ Ee(_e), Ae = ({
|
|
|
887
894
|
...l("template")
|
|
888
895
|
}
|
|
889
896
|
) }),
|
|
890
|
-
/* @__PURE__ */
|
|
897
|
+
/* @__PURE__ */ a(P, { children: /* @__PURE__ */ a(
|
|
891
898
|
Q,
|
|
892
899
|
{
|
|
893
900
|
label: "Name",
|
|
894
901
|
register: l,
|
|
895
|
-
error:
|
|
902
|
+
error: g,
|
|
896
903
|
required: !0,
|
|
897
904
|
name: "templateName",
|
|
898
905
|
validation: {
|
|
@@ -903,27 +910,27 @@ const Y = /* @__PURE__ */ Ee(_e), Ae = ({
|
|
|
903
910
|
}
|
|
904
911
|
}
|
|
905
912
|
) }),
|
|
906
|
-
c("templateType")?.id === "2" && /* @__PURE__ */
|
|
913
|
+
c("templateType")?.id === "2" && /* @__PURE__ */ a(P, { children: /* @__PURE__ */ a(
|
|
907
914
|
Q,
|
|
908
915
|
{
|
|
909
916
|
label: "Subject",
|
|
910
917
|
register: l,
|
|
911
|
-
error:
|
|
918
|
+
error: g,
|
|
912
919
|
required: !1,
|
|
913
920
|
name: "subject"
|
|
914
921
|
}
|
|
915
922
|
) }),
|
|
916
923
|
/* @__PURE__ */ v(P, { className: "d-flex align-items-end justify-content-end gap-2 mb-3", children: [
|
|
917
|
-
/* @__PURE__ */
|
|
924
|
+
/* @__PURE__ */ a(
|
|
918
925
|
z,
|
|
919
926
|
{
|
|
920
927
|
style: { width: "70px" },
|
|
921
928
|
variant: "primary",
|
|
922
|
-
disabled: m ||
|
|
929
|
+
disabled: m || _ || R || U,
|
|
923
930
|
onClick: () => {
|
|
924
|
-
j(void 0), y(),
|
|
931
|
+
j(void 0), y(), s();
|
|
925
932
|
},
|
|
926
|
-
children:
|
|
933
|
+
children: _ || R ? /* @__PURE__ */ a(
|
|
927
934
|
B,
|
|
928
935
|
{
|
|
929
936
|
animation: "border",
|
|
@@ -931,19 +938,19 @@ const Y = /* @__PURE__ */ Ee(_e), Ae = ({
|
|
|
931
938
|
size: "sm",
|
|
932
939
|
role: "status",
|
|
933
940
|
className: "me-1",
|
|
934
|
-
children: /* @__PURE__ */
|
|
941
|
+
children: /* @__PURE__ */ a("span", { className: "visually-hidden", children: "Loading..." })
|
|
935
942
|
}
|
|
936
943
|
) : "Clear"
|
|
937
944
|
}
|
|
938
945
|
),
|
|
939
|
-
(c("templateType")?.id !== "2" || (
|
|
946
|
+
(c("templateType")?.id !== "2" || (f?.id ?? "") !== "") && /* @__PURE__ */ a(
|
|
940
947
|
z,
|
|
941
948
|
{
|
|
942
949
|
type: "submit",
|
|
943
950
|
variant: "primary",
|
|
944
951
|
style: { width: "80px" },
|
|
945
|
-
disabled: m ||
|
|
946
|
-
children:
|
|
952
|
+
disabled: m || _ || R || U,
|
|
953
|
+
children: _ || R ? /* @__PURE__ */ a(
|
|
947
954
|
B,
|
|
948
955
|
{
|
|
949
956
|
animation: "border",
|
|
@@ -951,38 +958,38 @@ const Y = /* @__PURE__ */ Ee(_e), Ae = ({
|
|
|
951
958
|
size: "sm",
|
|
952
959
|
role: "status",
|
|
953
960
|
className: "me-1",
|
|
954
|
-
children: /* @__PURE__ */
|
|
961
|
+
children: /* @__PURE__ */ a("span", { className: "visually-hidden", children: "Loading..." })
|
|
955
962
|
}
|
|
956
|
-
) :
|
|
963
|
+
) : f?.readonly ? "Save as" : "Save"
|
|
957
964
|
}
|
|
958
965
|
)
|
|
959
966
|
] })
|
|
960
967
|
] }) }) }) }) });
|
|
961
|
-
}, Ue = ({ config:
|
|
962
|
-
const [r,
|
|
963
|
-
return /* @__PURE__ */
|
|
964
|
-
/* @__PURE__ */
|
|
965
|
-
|
|
968
|
+
}, Ue = ({ config: n }) => {
|
|
969
|
+
const [r, s] = E(), [l, e] = E(!1);
|
|
970
|
+
return /* @__PURE__ */ a(ye, { configs: n, children: /* @__PURE__ */ a(be, { children: /* @__PURE__ */ v("div", { className: "root-widget", children: [
|
|
971
|
+
/* @__PURE__ */ a(
|
|
972
|
+
Re,
|
|
966
973
|
{
|
|
967
|
-
templateLoading:
|
|
974
|
+
templateLoading: e,
|
|
968
975
|
onSelectItem: (o) => {
|
|
969
|
-
|
|
970
|
-
o?.html ??
|
|
976
|
+
s(o), window.StripoEditorApi && window.StripoEditorApi.actionsApi && window.StripoEditorApi.actionsApi.updateHtmlAndCss(
|
|
977
|
+
o?.html ?? L,
|
|
971
978
|
o?.css ?? "",
|
|
972
979
|
""
|
|
973
980
|
);
|
|
974
981
|
},
|
|
975
982
|
onReset: () => {
|
|
976
|
-
|
|
983
|
+
e(!1), s(void 0), window.StripoEditorApi && window.StripoEditorApi.actionsApi && window.StripoEditorApi.actionsApi.updateHtmlAndCss(L, "", "");
|
|
977
984
|
}
|
|
978
985
|
}
|
|
979
986
|
),
|
|
980
|
-
/* @__PURE__ */
|
|
987
|
+
/* @__PURE__ */ a(
|
|
981
988
|
xe,
|
|
982
989
|
{
|
|
983
990
|
templateHTML: {
|
|
984
991
|
css: r?.css ?? "",
|
|
985
|
-
html: r?.html ??
|
|
992
|
+
html: r?.html ?? L
|
|
986
993
|
},
|
|
987
994
|
loading: l,
|
|
988
995
|
className: "col-span-5"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(f,
|
|
1
|
+
(function(f,r){typeof exports=="object"&&typeof module<"u"?r(exports,require("react/jsx-runtime"),require("react"),require("@tanstack/react-query"),require("axios"),require("react-bootstrap"),require("react-hook-form"),require("react-select")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react","@tanstack/react-query","axios","react-bootstrap","react-hook-form","react-select"],r):(f=typeof globalThis<"u"?globalThis:f||self,r(f.EnerexTemplateEditor={},f.jsxRuntime,f.React,f.reactQuery,f.axios,f.reactBootstrap,f.reactHookForm,f.Select$1))})(this,function(f,r,d,w,D,c,O,F){"use strict";const j=`<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
|
|
2
2
|
<html\r
|
|
3
3
|
dir="ltr"\r
|
|
4
4
|
xmlns:o="urn:schemas-microsoft-com:office:office"\r
|
|
@@ -354,8 +354,8 @@
|
|
|
354
354
|
</div>\r
|
|
355
355
|
</body>\r
|
|
356
356
|
</html>\r
|
|
357
|
-
`,M=
|
|
357
|
+
`,M=d.createContext(void 0),J=({children:n,configs:s})=>{const[l,o]=d.useState(s.clientId),[e,t]=d.useState(s.apiKey),[i,a]=d.useState(s.enerexIdentifier),[m,v]=d.useState(s.userName),[b,x]=d.useState(s.projectId),C=g=>{t(g.apiKey),o(g.clientId),x(g.projectId),a(g.enerexIdentifier),v(g.userName)};return r.jsx(M.Provider,{value:{clientId:l,apiKey:e,setConfiguration:C,enerexIdentifier:i,projectId:b,userName:m},children:n})},T=()=>{const n=d.useContext(M);if(!n)throw new Error("widgetConfig must be used within a ConfigProvider");return n},U=(n="",s)=>({get:async(e,t)=>{try{const i=await D.get(`${n}${e}`,t??s);if(i.status===200)return i.data}catch(i){throw i}},post:async(e,t,i)=>{try{const a=await D.post(`${n}${e}`,t,i??s);if(a.status===200)return a.data}catch(a){throw a}}}),q={EDITOR_SCRIPT_URL:"https://plugins.stripo.email/resources/uieditor/latest/UIEditor.js",EDITOR_PLUGIN_ID:"1afdc3161ec7409a8627a1c8561d45f5",EDITOR_SECRET_KEY:"54ba748ed7e94f2e929555783acb03da",API_BASE_URL:"https://dev-socket.enerex.com/common/api"},H=d.createContext({get:()=>{throw new Error("HttpClientContext.get not implemented")},post:()=>{throw new Error("HttpClientContext.post not implemented")}}),Q=({children:n})=>{const{clientId:s,apiKey:l}=T(),o={headers:{client_id:s,"x-api-key":l}},{get:e,post:t}=U(q.API_BASE_URL,o);return r.jsx(H.Provider,{value:{get:e,post:t},children:n})},Z=({children:n})=>{const s=new w.QueryClient;return r.jsx(Q,{children:r.jsx(w.QueryClientProvider,{client:s,children:n})})},R=n=>{const s=Array.from(new Set(n.map(o=>o.category))),l=[];return s.forEach(o=>{const e=n.filter(t=>t.category===o).map(t=>({label:t.label,value:t.value,hint:t.hint,hidden:t.hidden}));l.push({category:o,entries:e})}),l},I=()=>{const n=d.useContext(H);if(n)return n;throw new Error("useHttpClient must be used within a HttpClientProvider")},_={Template_list:"/Template/list/",Template:"/Template/GetTemplate/",MergeTags:"/Template/TemplateMergeTags/",ExcludeCategory:"/Template/GetExcludeCategories/",SaveTemplate:"/Template/save-update/",TemplateTypes:"/Template/TemplateTypes/"},ee=()=>{const n=I(),{enerexIdentifier:s,projectId:l}=T();return w.useQuery({queryKey:["getTemplateTags"],queryFn:async e=>await n.get(`${_.MergeTags}${l}/${s}`)})},te=()=>{const n=I(),{enerexIdentifier:s,projectId:l}=T();return w.useQuery({queryKey:["getExcludeCategory"],queryFn:async e=>await n.get(`${_.ExcludeCategory}${l}/${s}`)})},ne=({templateHTML:n,className:s="",loading:l=!1})=>{const{post:o}=U(),{data:e}=ee(),{data:t}=te(),[i,a]=d.useState(n??{html:j,css:""}),{enerexIdentifier:m,projectId:v,userName:b}=T(),x="https://plugin.stripocdn.email/content/guids/CABINET_eab4e7d5a4603ac03f4120652a3a5a540f0c79c688514939f095f67433ed4a67/images/photo256.png",C="https://plugins.stripo.email/api/v1/auth";d.useEffect(()=>{if(e&&t&&!document.getElementById("UiEditorScript")){const y=document.createElement("script");y.id="UiEditorScript",y.type="module",y.src=q.EDITOR_SCRIPT_URL,y.onload=g,document.body.appendChild(y)}},[e,t]);const g=async()=>{window.UIEditor.initEditor(document.querySelector("#stripoEditorContainer"),{html:i.html,css:i.css,modulesExcludedCategories:t??[],forceRecreate:!0,metadata:{emailId:`${v}_${m}`,userId:"1",username:b,avatarUrl:x},locale:"en",onTokenRefreshRequest:async function(y){const u={pluginId:q.EDITOR_PLUGIN_ID,secretKey:q.EDITOR_SECRET_KEY,userId:"12",role:"user"},h=await o(C,u);h&&y(h.token)},codeEditorButtonSelector:"#codeEditor",undoButtonSelector:"#undoButton",redoButtonSelector:"#redoButton",mobileViewButtonSelector:"#mobileViewButton",desktopViewButtonSelector:"#desktopViewButton",mergeTags:R(e??[])})};return r.jsx("div",{className:"position-relative",children:r.jsxs("div",{className:`editor-container ${s}`,children:[l&&r.jsx("div",{className:"loading-overlay",children:r.jsx(c.Spinner,{animation:"border",style:{width:"11px",height:"11px"},size:"sm",role:"status",className:"me-1"})}),r.jsx("div",{id:"externalSystemContainer"}),r.jsx("div",{id:"stripoEditorContainer"})]})})},V=({label:n,register:s,validation:l,required:o=!1,name:e,error:t,className:i="",...a})=>r.jsxs(c.Form.Group,{className:i+" mb-1",children:[n?r.jsxs(c.Form.Label,{className:"mb-3 d-block form-label",children:[n,o&&r.jsx("label",{className:"text-danger",children:"*"})]}):null,r.jsx(c.Form.Control,{name:e,type:"text",...a,isInvalid:!!(t&&t[e]),...s?s(e,{...l}):{},className:`react-select__control ${t&&t[e]&&"border border-danger"}`}),t&&t[e]?r.jsx(c.Form.Control.Feedback,{type:"invalid",children:t[e].message}):null]}),re=()=>{const n=I(),{enerexIdentifier:s,projectId:l}=T();return w.useQuery({queryKey:["getTemplatesList"],queryFn:async e=>await n.get(`${_.Template_list}${l}/${s}`)})};function se(n){let s=[],l=n.filter(e=>e.id!=null),o=[];return l.forEach(e=>{e.parent_id!==0&&!o.includes(e.parent_id)&&o.push(e.parent_id)}),o.forEach(e=>{let t=l.filter(a=>a.parent_id===e).map(a=>({name:a.name,id:a.id})),i=l.find(a=>a.id===e)?.name;i&&s.push({label:i,options:t})}),l.forEach(e=>{e.parent_id===0&&!o.includes(e.id)&&s.push({name:e.name,id:e.id})}),s}const le=()=>{const n=I(),{enerexIdentifier:s,projectId:l}=T();return w.useMutation({mutationKey:["getTemplate"],mutationFn:async({id:e})=>{if(e)return await n.get(`${_.Template}${s}/${e}/${l}`)}})},ie=()=>{const n=I(),{enerexIdentifier:s,projectId:l}=T();return w.useQuery({queryKey:["getTemplateTypes"],queryFn:async e=>await n.get(`${_.TemplateTypes}${s}/${l}`)})};function oe(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var L={exports:{}};/*!
|
|
358
358
|
Copyright (c) 2018 Jed Watson.
|
|
359
359
|
Licensed under the MIT License (MIT), see
|
|
360
360
|
http://jedwatson.github.io/classnames
|
|
361
|
-
*/var K;function
|
|
361
|
+
*/var K;function ae(){return K||(K=1,function(n){(function(){var s={}.hasOwnProperty;function l(){for(var t="",i=0;i<arguments.length;i++){var a=arguments[i];a&&(t=e(t,o(a)))}return t}function o(t){if(typeof t=="string"||typeof t=="number")return t;if(typeof t!="object")return"";if(Array.isArray(t))return l.apply(null,t);if(t.toString!==Object.prototype.toString&&!t.toString.toString().includes("[native code]"))return t.toString();var i="";for(var a in t)s.call(t,a)&&t[a]&&(i=e(i,a));return i}function e(t,i){return i?t?t+" "+i:t+i:t}n.exports?(l.default=l,n.exports=l):window.classNames=l})()}(L)),L.exports}var de=ae();const z=oe(de),ce=({name:n="",control:s,options:l,multiple:o=!1,placeholder:e,validation:t,labelKey:i="name",disabled:a,isInvalid:m,value:v,onChange:b,uncontrolled:x,menuPlacement:C="auto",closeOnSelect:g=!0})=>{const y={control:u=>({...u,minHeight:"33px",borderColor:m?"var(--bs-form-invalid-border-color) !important":"var(--ct-input-border-color)",backgroundImage:m?'url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 12 12%27 width=%2712%27 height=%2712%27 fill=%27none%27 stroke=%27%23fa5c7c%27%3e%3ccircle cx=%276%27 cy=%276%27 r=%274.5%27/%3e%3cpath stroke-linejoin=%27round%27 d=%27M5.8 3.6h.4L6 6.5z%27/%3e%3ccircle cx=%276%27 cy=%278.2%27 r=%27.6%27 fill=%27%23fa5c7c%27 stroke=%27none%27/%3e%3c/svg%3e")':"none",backgroundRepeat:"no-repeat",backgroundPosition:"right calc(0.375em + 0.225rem) center",backgroundSize:"calc(0.75em + 0.45rem) calc(0.75em + 0.45rem)","&:hover":{borderColor:m?"var(--bs-form-invalid-border-color)":"var(--ct-input-border-color)"},"& .react-select__single-value":{color:"var(--ct-input-color) !important"},"& .react-select__placeholder":{color:"var(--ct-input-placeholder-color) !important"},"& .react-select__indicators":{display:"none"}}),menu:u=>({...u,marginTop:0,width:"max-content",minWidth:"100%"}),menuPortal:u=>({...u,zIndex:9999}),multiValueRemove:u=>({...u,display:a?"none":"block"})};return x?r.jsx(F,{className:z({"is-invalid":m}),styles:y,classNamePrefix:"react-select",isMulti:o,options:l,onChange:b,placeholder:e,menuPortalTarget:document.body,value:v,getOptionLabel:typeof i=="string"?u=>u[i]:i,getOptionValue:u=>u.id,isDisabled:a,menuPlacement:C,closeMenuOnSelect:g}):r.jsx(O.Controller,{control:s,name:n,rules:t,render:({field:{onChange:u,value:h,onBlur:P}})=>r.jsx(F,{className:z({"is-invalid":m}),styles:y,classNamePrefix:"react-select",isMulti:o,options:l,onBlur:P,onChange:u,placeholder:e,menuPortalTarget:document.body,value:h,getOptionLabel:typeof i=="string"?E=>E[i]:i,getOptionValue:E=>E.id,isDisabled:a,menuPlacement:C,closeMenuOnSelect:g},h?JSON.stringify(h):"reset")})},G=({label:n,name:s,validation:l,control:o,error:e,...t})=>r.jsxs(c.Form.Group,{className:"mb-1",children:[n&&r.jsxs(c.Form.Label,{className:"mb-3 d-block form-label",children:[n," ",t.required&&r.jsx("span",{className:"text-danger",children:"*"})]}),r.jsx(ce,{control:o,options:t.options??[],validation:l,isInvalid:e&&!!e[s],name:s}),e&&e[s]?r.jsx(c.Form.Control.Feedback,{type:"invalid",children:e[s].message}):null]}),pe=()=>{const n=I();w.useQueryClient();const{enerexIdentifier:s,projectId:l}=T();return w.useMutation({mutationKey:["saveTemplate"],mutationFn:async e=>(e.enerexIdentifier=s??"",e.projectId=l??"",await n.post(`${_.SaveTemplate}`,e))})},k={id:"",name:"New (Blank)"},me=({onSelectItem:n,templateLoading:s,onReset:l})=>{const{register:o,handleSubmit:e,clearErrors:t,setValue:i,control:a,watch:m,reset:v,formState:{errors:b}}=O.useForm({defaultValues:{templateName:"",subject:"",templateType:void 0,template:k},mode:"onChange"}),{data:x,refetch:C,isLoading:g}=re(),[y,u]=d.useState([]),[h,P]=d.useState(),[E,W]=d.useState(),{mutateAsync:fe,isPending:N}=le(),{mutateAsync:ge,isPending:A}=pe(),{data:$,isLoading:B}=ie(),[ye,he]=d.useState([]);d.useEffect(()=>{$&&he(se($))},[$]),d.useEffect(()=>{s(!!N)},[N]),d.useEffect(()=>{u(x??[])},[x]);const be=async p=>{P(p),p?(i("templateName",p?.name),t()):(i("templateName",""),i("subject",""));const S=await fe({id:p?.id});W(S||void 0)};d.useEffect(()=>{i("template",k)},[m("templateType")]),d.useEffect(()=>{let p=y.find(S=>S.id===m("template")?.id);be(p)},[m("template")]),d.useEffect(()=>{E&&h?(n(E),i("subject",E.subject??"")):n(void 0)},[E,h,n]);const we=p=>{window.StripoEditorApi.actionsApi.getTemplateData(async S=>{let Y=p.template.id,X="";h?.readonly&&(Y="",X=p.template.id);const Te={enerexIdentifier:"",projectId:"",templateId:Y,templateType:p.templateType.id,name:p.templateName,html:S.html,css:S.css,subject:p.templateType.id==="2"?p?.subject??"":"",parent_id:X};await ge(Te)&&(t(),v(),C())})};return r.jsx(c.Card,{className:"border border-0 text-start",children:r.jsx(c.Card.Body,{className:"pe-0 ps-2",children:r.jsx("form",{onSubmit:e(we),children:r.jsx("div",{className:"template-list-container gap-3",children:r.jsxs(c.Row,{children:[r.jsx(c.Col,{children:r.jsx(G,{label:"Type",control:a,error:b,options:ye,required:!0,validation:{required:{value:!0,message:"Select a type"}},...o("templateType")})}),r.jsx(c.Col,{children:r.jsx(G,{label:"Template",control:a,error:b,options:[k,...y.filter(p=>(p.type?.toString()===m("templateType")?.id||p.type===null)&&m("templateType")?.id!=null).map(p=>({id:p.id,name:p.name}))],required:!1,...o("template")})}),r.jsx(c.Col,{children:r.jsx(V,{label:"Name",register:o,error:b,required:!0,name:"templateName",validation:{required:{value:!0,message:"Enter a name"}}})}),m("templateType")?.id==="2"&&r.jsx(c.Col,{children:r.jsx(V,{label:"Subject",register:o,error:b,required:!1,name:"subject"})}),r.jsxs(c.Col,{className:"d-flex align-items-end justify-content-end gap-2 mb-3",children:[r.jsx(c.Button,{style:{width:"70px"},variant:"primary",disabled:g||N||A||B,onClick:()=>{P(void 0),v(),l()},children:N||A?r.jsx(c.Spinner,{animation:"border",style:{width:"11px",height:"11px"},size:"sm",role:"status",className:"me-1",children:r.jsx("span",{className:"visually-hidden",children:"Loading..."})}):"Clear"}),(m("templateType")?.id!=="2"||(h?.id??"")!=="")&&r.jsx(c.Button,{type:"submit",variant:"primary",style:{width:"80px"},disabled:g||N||A||B,children:N||A?r.jsx(c.Spinner,{animation:"border",style:{width:"11px",height:"11px"},size:"sm",role:"status",className:"me-1",children:r.jsx("span",{className:"visually-hidden",children:"Loading..."})}):h?.readonly?"Save as":"Save"})]})]})})})})})},ue=({config:n})=>{const[s,l]=d.useState(),[o,e]=d.useState(!1),t=a=>{l(a),window.StripoEditorApi&&window.StripoEditorApi.actionsApi&&window.StripoEditorApi.actionsApi.updateHtmlAndCss(a?.html??j,a?.css??"","")},i=()=>{e(!1),l(void 0),window.StripoEditorApi&&window.StripoEditorApi.actionsApi&&window.StripoEditorApi.actionsApi.updateHtmlAndCss(j,"","")};return r.jsx(J,{configs:n,children:r.jsx(Z,{children:r.jsxs("div",{className:"root-widget",children:[r.jsx(me,{templateLoading:e,onSelectItem:t,onReset:i}),r.jsx(ne,{templateHTML:{css:s?.css??"",html:s?.html??j},loading:o,className:"col-span-5"})]})})})};f.EditorWidget=ue,Object.defineProperty(f,Symbol.toStringTag,{value:"Module"})});
|
|
@@ -6,10 +6,13 @@ export type HasId = {
|
|
|
6
6
|
export type HasName = {
|
|
7
7
|
name: string;
|
|
8
8
|
};
|
|
9
|
+
export type HasGroup = {
|
|
10
|
+
group?: string;
|
|
11
|
+
};
|
|
9
12
|
export type HasExternalId = {
|
|
10
13
|
externalId: string;
|
|
11
14
|
};
|
|
12
|
-
export type BasicEntity = HasId & HasName;
|
|
15
|
+
export type BasicEntity = HasId & HasName & HasGroup;
|
|
13
16
|
interface SelectProps extends SelectHTMLAttributes<HTMLSelectElement> {
|
|
14
17
|
label?: string;
|
|
15
18
|
name: string;
|