@enerex/template-studio 1.1.22 → 1.1.24
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 s, jsxs as
|
|
2
|
-
import I, { useContext as
|
|
3
|
-
import { QueryClient as
|
|
1
|
+
import { jsx as s, jsxs as v } from "react/jsx-runtime";
|
|
2
|
+
import I, { useContext as J, useState as S, useEffect as C } from "react";
|
|
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
|
|
5
|
+
import { Spinner as B, Form as E, Card as K, Row as ue, Col as P, Button as z } from "react-bootstrap";
|
|
6
6
|
import { Controller as ge, useForm as fe } from "react-hook-form";
|
|
7
|
-
import
|
|
8
|
-
const
|
|
7
|
+
import G from "react-select";
|
|
8
|
+
const R = `<!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
|
|
@@ -361,7 +361,7 @@ const D = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
|
|
|
361
361
|
</div>\r
|
|
362
362
|
</body>\r
|
|
363
363
|
</html>\r
|
|
364
|
-
`,
|
|
364
|
+
`, ee = I.createContext(
|
|
365
365
|
void 0
|
|
366
366
|
), ye = ({
|
|
367
367
|
children: t,
|
|
@@ -369,29 +369,29 @@ const D = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
|
|
|
369
369
|
}) => {
|
|
370
370
|
const [i, l] = I.useState(r.clientId), [n, e] = I.useState(r.apiKey), [a, o] = I.useState(
|
|
371
371
|
r.enerexIdentifier
|
|
372
|
-
), [
|
|
373
|
-
e(m.apiKey), l(m.clientId),
|
|
372
|
+
), [c, y] = I.useState(r.userName), [f, h] = I.useState(r.projectId), b = (m) => {
|
|
373
|
+
e(m.apiKey), l(m.clientId), h(m.projectId), o(m.enerexIdentifier), y(m.userName);
|
|
374
374
|
};
|
|
375
375
|
return /* @__PURE__ */ s(
|
|
376
|
-
|
|
376
|
+
ee.Provider,
|
|
377
377
|
{
|
|
378
378
|
value: {
|
|
379
379
|
clientId: i,
|
|
380
380
|
apiKey: n,
|
|
381
|
-
setConfiguration:
|
|
381
|
+
setConfiguration: b,
|
|
382
382
|
enerexIdentifier: a,
|
|
383
383
|
projectId: f,
|
|
384
|
-
userName:
|
|
384
|
+
userName: c
|
|
385
385
|
},
|
|
386
386
|
children: t
|
|
387
387
|
}
|
|
388
388
|
);
|
|
389
|
-
},
|
|
390
|
-
const t = ee
|
|
389
|
+
}, T = () => {
|
|
390
|
+
const t = J(ee);
|
|
391
391
|
if (!t)
|
|
392
392
|
throw new Error("widgetConfig must be used within a ConfigProvider");
|
|
393
393
|
return t;
|
|
394
|
-
},
|
|
394
|
+
}, te = (t = "", r) => ({ get: async (n, e) => {
|
|
395
395
|
try {
|
|
396
396
|
const a = await V.get(
|
|
397
397
|
`${t}${n}`,
|
|
@@ -414,14 +414,14 @@ const D = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
|
|
|
414
414
|
} catch (o) {
|
|
415
415
|
throw o;
|
|
416
416
|
}
|
|
417
|
-
} }),
|
|
417
|
+
} }), $ = {
|
|
418
418
|
EDITOR_SCRIPT_URL: "https://plugins.stripo.email/resources/uieditor/latest/UIEditor.js",
|
|
419
419
|
EDITOR_PLUGIN_ID: "1afdc3161ec7409a8627a1c8561d45f5",
|
|
420
420
|
EDITOR_SECRET_KEY: "54ba748ed7e94f2e929555783acb03da",
|
|
421
421
|
API_BASE_URL: "https://dev-socket.enerex.com/common/api"
|
|
422
422
|
//API_BASE_URL: "https://localhost:44338/api",
|
|
423
423
|
// more env variables...
|
|
424
|
-
},
|
|
424
|
+
}, ne = I.createContext({
|
|
425
425
|
get: () => {
|
|
426
426
|
throw new Error("HttpClientContext.get not implemented");
|
|
427
427
|
},
|
|
@@ -429,16 +429,16 @@ const D = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
|
|
|
429
429
|
throw new Error("HttpClientContext.post not implemented");
|
|
430
430
|
}
|
|
431
431
|
}), he = ({ children: t }) => {
|
|
432
|
-
const { clientId: r, apiKey: i } =
|
|
432
|
+
const { clientId: r, apiKey: i } = T(), l = {
|
|
433
433
|
headers: {
|
|
434
434
|
client_id: r,
|
|
435
435
|
"x-api-key": i
|
|
436
436
|
}
|
|
437
|
-
}, { get: n, post: e } =
|
|
438
|
-
return /* @__PURE__ */ s(
|
|
437
|
+
}, { get: n, post: e } = te($.API_BASE_URL, l);
|
|
438
|
+
return /* @__PURE__ */ s(ne.Provider, { value: { get: n, post: e }, children: t });
|
|
439
439
|
}, be = ({ children: t }) => {
|
|
440
|
-
const r = new
|
|
441
|
-
return /* @__PURE__ */ s(he, { children: /* @__PURE__ */ s(
|
|
440
|
+
const r = new ce();
|
|
441
|
+
return /* @__PURE__ */ s(he, { children: /* @__PURE__ */ s(pe, { client: r, children: t }) });
|
|
442
442
|
}, we = (t) => {
|
|
443
443
|
const r = Array.from(new Set(t.map((l) => l.category))), i = [];
|
|
444
444
|
return r.forEach((l) => {
|
|
@@ -450,12 +450,12 @@ const D = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
|
|
|
450
450
|
}));
|
|
451
451
|
i.push({ category: l, entries: n });
|
|
452
452
|
}), i;
|
|
453
|
-
},
|
|
454
|
-
const t =
|
|
453
|
+
}, _ = () => {
|
|
454
|
+
const t = J(ne);
|
|
455
455
|
if (t)
|
|
456
456
|
return t;
|
|
457
457
|
throw new Error("useHttpClient must be used within a HttpClientProvider");
|
|
458
|
-
},
|
|
458
|
+
}, A = {
|
|
459
459
|
Template_list: "/Template/list/",
|
|
460
460
|
Template: "/Template/GetTemplate/",
|
|
461
461
|
MergeTags: "/Template/TemplateMergeTags/",
|
|
@@ -463,19 +463,19 @@ const D = `<!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 t =
|
|
467
|
-
return
|
|
466
|
+
const t = _(), { enerexIdentifier: r, projectId: i } = T();
|
|
467
|
+
return q({
|
|
468
468
|
queryKey: ["getTemplateTags"],
|
|
469
469
|
queryFn: async (n) => await t.get(
|
|
470
|
-
`${
|
|
470
|
+
`${A.MergeTags}${i}/${r}`
|
|
471
471
|
)
|
|
472
472
|
});
|
|
473
473
|
}, Te = () => {
|
|
474
|
-
const t =
|
|
475
|
-
return
|
|
474
|
+
const t = _(), { enerexIdentifier: r, projectId: i } = T();
|
|
475
|
+
return q({
|
|
476
476
|
queryKey: ["getExcludeCategory"],
|
|
477
477
|
queryFn: async (n) => await t.get(
|
|
478
|
-
`${
|
|
478
|
+
`${A.ExcludeCategory}${i}/${r}`
|
|
479
479
|
)
|
|
480
480
|
});
|
|
481
481
|
}, xe = ({
|
|
@@ -483,13 +483,13 @@ const D = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
|
|
|
483
483
|
className: r = "",
|
|
484
484
|
loading: i = !1
|
|
485
485
|
}) => {
|
|
486
|
-
const { post: l } =
|
|
487
|
-
t ?? { html:
|
|
488
|
-
), { enerexIdentifier:
|
|
489
|
-
|
|
486
|
+
const { post: l } = te(), { data: n } = ve(), { data: e } = Te(), [a, o] = S(
|
|
487
|
+
t ?? { html: R, css: "" }
|
|
488
|
+
), { enerexIdentifier: c, projectId: y, userName: f } = T(), h = "https://plugin.stripocdn.email/content/guids/CABINET_eab4e7d5a4603ac03f4120652a3a5a540f0c79c688514939f095f67433ed4a67/images/photo256.png", b = "https://plugins.stripo.email/api/v1/auth";
|
|
489
|
+
C(() => {
|
|
490
490
|
if (n && e && !document.getElementById("UiEditorScript")) {
|
|
491
491
|
const u = document.createElement("script");
|
|
492
|
-
u.id = "UiEditorScript", u.type = "module", u.src =
|
|
492
|
+
u.id = "UiEditorScript", u.type = "module", u.src = $.EDITOR_SCRIPT_URL, u.onload = m, document.body.appendChild(u);
|
|
493
493
|
}
|
|
494
494
|
}, [n, e]);
|
|
495
495
|
const m = async () => {
|
|
@@ -501,19 +501,19 @@ const D = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
|
|
|
501
501
|
modulesExcludedCategories: e ?? [],
|
|
502
502
|
forceRecreate: !0,
|
|
503
503
|
metadata: {
|
|
504
|
-
emailId: `${
|
|
504
|
+
emailId: `${y}_${c}`,
|
|
505
505
|
userId: "1",
|
|
506
506
|
username: f,
|
|
507
|
-
avatarUrl:
|
|
507
|
+
avatarUrl: h
|
|
508
508
|
},
|
|
509
509
|
locale: "en",
|
|
510
510
|
onTokenRefreshRequest: async function(u) {
|
|
511
|
-
const
|
|
512
|
-
pluginId:
|
|
513
|
-
secretKey:
|
|
511
|
+
const p = {
|
|
512
|
+
pluginId: $.EDITOR_PLUGIN_ID,
|
|
513
|
+
secretKey: $.EDITOR_SECRET_KEY,
|
|
514
514
|
userId: "12",
|
|
515
515
|
role: "user"
|
|
516
|
-
}, g = await l(
|
|
516
|
+
}, g = await l(b, p);
|
|
517
517
|
g && u(g.token);
|
|
518
518
|
},
|
|
519
519
|
codeEditorButtonSelector: "#codeEditor",
|
|
@@ -525,9 +525,9 @@ const D = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
|
|
|
525
525
|
}
|
|
526
526
|
);
|
|
527
527
|
};
|
|
528
|
-
return /* @__PURE__ */ s("div", { className: "position-relative", children: /* @__PURE__ */
|
|
528
|
+
return /* @__PURE__ */ s("div", { className: "position-relative", children: /* @__PURE__ */ v("div", { className: `editor-container ${r}`, children: [
|
|
529
529
|
i && /* @__PURE__ */ s("div", { className: "loading-overlay", children: /* @__PURE__ */ s(
|
|
530
|
-
|
|
530
|
+
B,
|
|
531
531
|
{
|
|
532
532
|
animation: "border",
|
|
533
533
|
style: { width: "11px", height: "11px" },
|
|
@@ -539,7 +539,7 @@ const D = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
|
|
|
539
539
|
/* @__PURE__ */ s("div", { id: "externalSystemContainer" }),
|
|
540
540
|
/* @__PURE__ */ s("div", { id: "stripoEditorContainer" })
|
|
541
541
|
] }) });
|
|
542
|
-
},
|
|
542
|
+
}, Q = ({
|
|
543
543
|
label: t,
|
|
544
544
|
register: r,
|
|
545
545
|
validation: i,
|
|
@@ -548,8 +548,8 @@ const D = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
|
|
|
548
548
|
error: e,
|
|
549
549
|
className: a = "",
|
|
550
550
|
...o
|
|
551
|
-
}) => /* @__PURE__ */
|
|
552
|
-
t ? /* @__PURE__ */
|
|
551
|
+
}) => /* @__PURE__ */ v(E.Group, { className: a + " mb-1", children: [
|
|
552
|
+
t ? /* @__PURE__ */ v(E.Label, { className: "mb-3 d-block form-label", children: [
|
|
553
553
|
t,
|
|
554
554
|
l && /* @__PURE__ */ s("label", { className: "text-danger", children: "*" })
|
|
555
555
|
] }) : null,
|
|
@@ -568,45 +568,45 @@ const D = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
|
|
|
568
568
|
),
|
|
569
569
|
e && e[n] ? /* @__PURE__ */ s(E.Control.Feedback, { type: "invalid", children: e[n].message }) : null
|
|
570
570
|
] }), Ce = () => {
|
|
571
|
-
const t =
|
|
572
|
-
return
|
|
571
|
+
const t = _(), { enerexIdentifier: r, projectId: i } = T();
|
|
572
|
+
return q({
|
|
573
573
|
queryKey: ["getTemplatesList"],
|
|
574
574
|
queryFn: async (n) => await t.get(
|
|
575
|
-
`${
|
|
575
|
+
`${A.Template_list}${i}/${r}`
|
|
576
576
|
)
|
|
577
577
|
});
|
|
578
578
|
}, Ie = () => {
|
|
579
|
-
const t =
|
|
580
|
-
return
|
|
579
|
+
const t = _(), { enerexIdentifier: r, projectId: i } = T();
|
|
580
|
+
return Z({
|
|
581
581
|
mutationKey: ["getTemplate"],
|
|
582
582
|
mutationFn: async ({ id: n }) => {
|
|
583
583
|
if (n)
|
|
584
584
|
return await t.get(
|
|
585
|
-
`${
|
|
585
|
+
`${A.Template}${r}/${n}/${i}`
|
|
586
586
|
);
|
|
587
587
|
}
|
|
588
588
|
});
|
|
589
589
|
}, Se = () => {
|
|
590
|
-
const t =
|
|
591
|
-
return
|
|
590
|
+
const t = _(), { enerexIdentifier: r, projectId: i } = T();
|
|
591
|
+
return q({
|
|
592
592
|
queryKey: ["getTemplateTypes"],
|
|
593
593
|
queryFn: async (n) => await t.get(
|
|
594
|
-
`${
|
|
594
|
+
`${A.TemplateTypes}${r}/${i}`
|
|
595
595
|
)
|
|
596
596
|
});
|
|
597
597
|
};
|
|
598
598
|
function Ee(t) {
|
|
599
599
|
return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, "default") ? t.default : t;
|
|
600
600
|
}
|
|
601
|
-
var
|
|
601
|
+
var k = { exports: {} };
|
|
602
602
|
/*!
|
|
603
603
|
Copyright (c) 2018 Jed Watson.
|
|
604
604
|
Licensed under the MIT License (MIT), see
|
|
605
605
|
http://jedwatson.github.io/classnames
|
|
606
606
|
*/
|
|
607
|
-
var
|
|
607
|
+
var W;
|
|
608
608
|
function Ne() {
|
|
609
|
-
return
|
|
609
|
+
return W || (W = 1, function(t) {
|
|
610
610
|
(function() {
|
|
611
611
|
var r = {}.hasOwnProperty;
|
|
612
612
|
function i() {
|
|
@@ -635,10 +635,10 @@ function Ne() {
|
|
|
635
635
|
}
|
|
636
636
|
t.exports ? (i.default = i, t.exports = i) : window.classNames = i;
|
|
637
637
|
})();
|
|
638
|
-
}(
|
|
638
|
+
}(k)), k.exports;
|
|
639
639
|
}
|
|
640
640
|
var _e = Ne();
|
|
641
|
-
const
|
|
641
|
+
const Y = /* @__PURE__ */ Ee(_e), Ae = ({
|
|
642
642
|
name: t = "",
|
|
643
643
|
control: r,
|
|
644
644
|
options: i,
|
|
@@ -647,25 +647,25 @@ const X = /* @__PURE__ */ Ee(_e), Ae = ({
|
|
|
647
647
|
validation: e,
|
|
648
648
|
labelKey: a = "name",
|
|
649
649
|
disabled: o,
|
|
650
|
-
isInvalid:
|
|
651
|
-
value:
|
|
650
|
+
isInvalid: c,
|
|
651
|
+
value: y,
|
|
652
652
|
onChange: f,
|
|
653
|
-
uncontrolled:
|
|
654
|
-
menuPlacement:
|
|
653
|
+
uncontrolled: h,
|
|
654
|
+
menuPlacement: b = "auto",
|
|
655
655
|
closeOnSelect: m = !0
|
|
656
656
|
}) => {
|
|
657
657
|
const u = {
|
|
658
|
-
control: (
|
|
659
|
-
...
|
|
658
|
+
control: (p) => ({
|
|
659
|
+
...p,
|
|
660
660
|
minHeight: "33px",
|
|
661
661
|
// state.isFocused can display different borderColor if you need it
|
|
662
|
-
borderColor:
|
|
663
|
-
backgroundImage:
|
|
662
|
+
borderColor: c ? "var(--bs-form-invalid-border-color) !important" : "var(--ct-input-border-color)",
|
|
663
|
+
backgroundImage: c ? '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",
|
|
664
664
|
backgroundRepeat: "no-repeat",
|
|
665
665
|
backgroundPosition: "right calc(0.375em + 0.225rem) center",
|
|
666
666
|
backgroundSize: "calc(0.75em + 0.45rem) calc(0.75em + 0.45rem)",
|
|
667
667
|
"&:hover": {
|
|
668
|
-
borderColor:
|
|
668
|
+
borderColor: c ? "var(--bs-form-invalid-border-color)" : "var(--ct-input-border-color)"
|
|
669
669
|
},
|
|
670
670
|
"& .react-select__single-value": {
|
|
671
671
|
color: "var(--ct-input-color) !important"
|
|
@@ -677,26 +677,26 @@ const X = /* @__PURE__ */ Ee(_e), Ae = ({
|
|
|
677
677
|
display: "none"
|
|
678
678
|
}
|
|
679
679
|
}),
|
|
680
|
-
menu: (
|
|
681
|
-
...
|
|
680
|
+
menu: (p) => ({
|
|
681
|
+
...p,
|
|
682
682
|
marginTop: 0,
|
|
683
683
|
width: "max-content",
|
|
684
684
|
minWidth: "100%"
|
|
685
685
|
}),
|
|
686
|
-
menuPortal: (
|
|
687
|
-
...
|
|
686
|
+
menuPortal: (p) => ({
|
|
687
|
+
...p,
|
|
688
688
|
zIndex: 9999
|
|
689
689
|
}),
|
|
690
|
-
multiValueRemove: (
|
|
691
|
-
...
|
|
690
|
+
multiValueRemove: (p) => ({
|
|
691
|
+
...p,
|
|
692
692
|
display: o ? "none" : "block"
|
|
693
693
|
})
|
|
694
694
|
};
|
|
695
|
-
return
|
|
696
|
-
|
|
695
|
+
return h ? /* @__PURE__ */ s(
|
|
696
|
+
G,
|
|
697
697
|
{
|
|
698
|
-
className:
|
|
699
|
-
"is-invalid":
|
|
698
|
+
className: Y({
|
|
699
|
+
"is-invalid": c
|
|
700
700
|
}),
|
|
701
701
|
styles: u,
|
|
702
702
|
classNamePrefix: "react-select",
|
|
@@ -705,11 +705,11 @@ const X = /* @__PURE__ */ Ee(_e), Ae = ({
|
|
|
705
705
|
onChange: f,
|
|
706
706
|
placeholder: n,
|
|
707
707
|
menuPortalTarget: document.body,
|
|
708
|
-
value:
|
|
709
|
-
getOptionLabel: typeof a == "string" ? (
|
|
710
|
-
getOptionValue: (
|
|
708
|
+
value: y,
|
|
709
|
+
getOptionLabel: typeof a == "string" ? (p) => p[a] : a,
|
|
710
|
+
getOptionValue: (p) => p.id,
|
|
711
711
|
isDisabled: o,
|
|
712
|
-
menuPlacement:
|
|
712
|
+
menuPlacement: b,
|
|
713
713
|
closeMenuOnSelect: m
|
|
714
714
|
}
|
|
715
715
|
) : /* @__PURE__ */ s(
|
|
@@ -718,40 +718,40 @@ const X = /* @__PURE__ */ Ee(_e), Ae = ({
|
|
|
718
718
|
control: r,
|
|
719
719
|
name: t,
|
|
720
720
|
rules: e,
|
|
721
|
-
render: ({ field: { onChange:
|
|
722
|
-
|
|
721
|
+
render: ({ field: { onChange: p, value: g, onBlur: j } }) => /* @__PURE__ */ s(
|
|
722
|
+
G,
|
|
723
723
|
{
|
|
724
|
-
className:
|
|
725
|
-
"is-invalid":
|
|
724
|
+
className: Y({
|
|
725
|
+
"is-invalid": c
|
|
726
726
|
}),
|
|
727
727
|
styles: u,
|
|
728
728
|
classNamePrefix: "react-select",
|
|
729
729
|
isMulti: l,
|
|
730
730
|
options: i,
|
|
731
|
-
onBlur:
|
|
732
|
-
onChange:
|
|
731
|
+
onBlur: j,
|
|
732
|
+
onChange: p,
|
|
733
733
|
placeholder: n,
|
|
734
734
|
menuPortalTarget: document.body,
|
|
735
735
|
value: g,
|
|
736
|
-
getOptionLabel: typeof a == "string" ? (
|
|
737
|
-
getOptionValue: (
|
|
736
|
+
getOptionLabel: typeof a == "string" ? (w) => w[a] : a,
|
|
737
|
+
getOptionValue: (w) => w.id,
|
|
738
738
|
isDisabled: o,
|
|
739
|
-
menuPlacement:
|
|
739
|
+
menuPlacement: b,
|
|
740
740
|
closeMenuOnSelect: m
|
|
741
741
|
},
|
|
742
742
|
g ? JSON.stringify(g) : "reset"
|
|
743
743
|
)
|
|
744
744
|
}
|
|
745
745
|
);
|
|
746
|
-
},
|
|
746
|
+
}, X = ({
|
|
747
747
|
label: t,
|
|
748
748
|
name: r,
|
|
749
749
|
validation: i,
|
|
750
750
|
control: l,
|
|
751
751
|
error: n,
|
|
752
752
|
...e
|
|
753
|
-
}) => /* @__PURE__ */
|
|
754
|
-
t && /* @__PURE__ */
|
|
753
|
+
}) => /* @__PURE__ */ v(E.Group, { className: "mb-1", children: [
|
|
754
|
+
t && /* @__PURE__ */ v(E.Label, { className: "mb-3 d-block form-label", children: [
|
|
755
755
|
t,
|
|
756
756
|
" ",
|
|
757
757
|
e.required && /* @__PURE__ */ s("span", { className: "text-danger", children: "*" })
|
|
@@ -768,17 +768,17 @@ const X = /* @__PURE__ */ Ee(_e), Ae = ({
|
|
|
768
768
|
),
|
|
769
769
|
n && n[r] ? /* @__PURE__ */ s(E.Control.Feedback, { type: "invalid", children: n[r].message }) : null
|
|
770
770
|
] }), Pe = () => {
|
|
771
|
-
const t =
|
|
772
|
-
|
|
773
|
-
const { enerexIdentifier: r, projectId: i } =
|
|
774
|
-
return
|
|
771
|
+
const t = _();
|
|
772
|
+
me();
|
|
773
|
+
const { enerexIdentifier: r, projectId: i } = T();
|
|
774
|
+
return Z({
|
|
775
775
|
mutationKey: ["saveTemplate"],
|
|
776
776
|
mutationFn: async (n) => (n.enerexIdentifier = r ?? "", n.projectId = i ?? "", await t.post(
|
|
777
|
-
`${
|
|
777
|
+
`${A.SaveTemplate}`,
|
|
778
778
|
n
|
|
779
779
|
))
|
|
780
780
|
});
|
|
781
|
-
},
|
|
781
|
+
}, O = { id: "", name: "New (Blank)" }, je = ({
|
|
782
782
|
onSelectItem: t,
|
|
783
783
|
templateLoading: r,
|
|
784
784
|
onReset: i
|
|
@@ -789,206 +789,191 @@ const X = /* @__PURE__ */ Ee(_e), Ae = ({
|
|
|
789
789
|
clearErrors: e,
|
|
790
790
|
setValue: a,
|
|
791
791
|
control: o,
|
|
792
|
-
watch:
|
|
793
|
-
reset:
|
|
792
|
+
watch: c,
|
|
793
|
+
reset: y,
|
|
794
794
|
formState: { errors: f }
|
|
795
795
|
} = fe({
|
|
796
796
|
defaultValues: {
|
|
797
797
|
templateName: "",
|
|
798
798
|
subject: "",
|
|
799
799
|
templateType: void 0,
|
|
800
|
-
template:
|
|
800
|
+
template: O
|
|
801
801
|
},
|
|
802
802
|
mode: "onChange"
|
|
803
803
|
}), {
|
|
804
|
-
data:
|
|
805
|
-
refetch:
|
|
804
|
+
data: h,
|
|
805
|
+
refetch: b,
|
|
806
806
|
isLoading: m
|
|
807
|
-
} = Ce(), [u,
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
807
|
+
} = Ce(), [u, p] = S([]), [g, j] = S(), [w, U] = S(), { mutateAsync: re, isPending: N } = Ie(), { mutateAsync: se, isPending: L } = Pe(), { data: D, isLoading: H } = Se(), [ie, ae] = S([]);
|
|
808
|
+
C(() => {
|
|
809
|
+
D && ae(
|
|
810
|
+
D.filter((d) => d.id !== void 0).map((d) => ({
|
|
811
811
|
id: `${d.id}`,
|
|
812
812
|
name: d.name
|
|
813
813
|
}))
|
|
814
814
|
);
|
|
815
|
-
}, [
|
|
815
|
+
}, [D]), C(() => {
|
|
816
816
|
r(!!N);
|
|
817
|
-
}, [N]),
|
|
818
|
-
|
|
819
|
-
}, [
|
|
820
|
-
const
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
C && a("templateType", C);
|
|
825
|
-
}
|
|
826
|
-
e();
|
|
827
|
-
} else
|
|
828
|
-
a("templateName", "");
|
|
829
|
-
const x = await ie({ id: d?.id });
|
|
830
|
-
H(x || void 0);
|
|
817
|
+
}, [N]), C(() => {
|
|
818
|
+
p(h ?? []);
|
|
819
|
+
}, [h]);
|
|
820
|
+
const le = async (d) => {
|
|
821
|
+
j(d), d ? (a("templateName", d?.name), e()) : (a("templateName", ""), a("subject", ""));
|
|
822
|
+
const x = await re({ id: d?.id });
|
|
823
|
+
U(x || void 0);
|
|
831
824
|
};
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
}, [
|
|
838
|
-
|
|
825
|
+
C(() => {
|
|
826
|
+
a("template", O);
|
|
827
|
+
}, [c("templateType")]), C(() => {
|
|
828
|
+
let d = u.find((x) => x.id === c("template")?.id);
|
|
829
|
+
le(d);
|
|
830
|
+
}, [c("template")]), C(() => {
|
|
831
|
+
w && g ? (t(w), a("subject", w.subject ?? "")) : t(void 0);
|
|
832
|
+
}, [w, g, t]);
|
|
833
|
+
const oe = (d) => {
|
|
839
834
|
window.StripoEditorApi.actionsApi.getTemplateData(
|
|
840
835
|
async (x) => {
|
|
841
|
-
let
|
|
842
|
-
g?.
|
|
843
|
-
const
|
|
836
|
+
let M = d.template.id, F = "";
|
|
837
|
+
g?.readonly && (M = "", F = d.template.id);
|
|
838
|
+
const de = {
|
|
844
839
|
enerexIdentifier: "",
|
|
845
840
|
projectId: "",
|
|
846
|
-
templateId:
|
|
841
|
+
templateId: M,
|
|
847
842
|
templateType: d.templateType.id,
|
|
848
843
|
name: d.templateName,
|
|
849
844
|
html: x.html,
|
|
850
845
|
css: x.css,
|
|
851
|
-
subject: d?.subject ?? "",
|
|
852
|
-
parent_id:
|
|
846
|
+
subject: d.templateType.id === "2" ? d?.subject ?? "" : "",
|
|
847
|
+
parent_id: F
|
|
853
848
|
};
|
|
854
|
-
await
|
|
849
|
+
await se(de) && (e(), y(), b());
|
|
855
850
|
}
|
|
856
851
|
);
|
|
857
852
|
};
|
|
858
|
-
return /* @__PURE__ */ s(K, { className: "border border-0 text-start", children: /* @__PURE__ */ s(K.Body, { className: "pe-0 ps-2", children: /* @__PURE__ */ s("form", { onSubmit: n(
|
|
859
|
-
/* @__PURE__ */
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
message: "Template Name is required"
|
|
908
|
-
}
|
|
853
|
+
return /* @__PURE__ */ s(K, { className: "border border-0 text-start", children: /* @__PURE__ */ s(K.Body, { className: "pe-0 ps-2", children: /* @__PURE__ */ s("form", { onSubmit: n(oe), children: /* @__PURE__ */ s("div", { className: "template-list-container gap-3", children: /* @__PURE__ */ v(ue, { children: [
|
|
854
|
+
/* @__PURE__ */ s(P, { children: /* @__PURE__ */ s(
|
|
855
|
+
X,
|
|
856
|
+
{
|
|
857
|
+
label: "Type",
|
|
858
|
+
control: o,
|
|
859
|
+
error: f,
|
|
860
|
+
options: ie,
|
|
861
|
+
required: !0,
|
|
862
|
+
validation: {
|
|
863
|
+
required: {
|
|
864
|
+
value: !0,
|
|
865
|
+
message: "Select a type"
|
|
866
|
+
}
|
|
867
|
+
},
|
|
868
|
+
...l("templateType")
|
|
869
|
+
}
|
|
870
|
+
) }),
|
|
871
|
+
/* @__PURE__ */ s(P, { children: /* @__PURE__ */ s(
|
|
872
|
+
X,
|
|
873
|
+
{
|
|
874
|
+
label: "Template",
|
|
875
|
+
control: o,
|
|
876
|
+
error: f,
|
|
877
|
+
options: [
|
|
878
|
+
O,
|
|
879
|
+
...u.filter(
|
|
880
|
+
(d) => (d.type?.toString() === c("templateType")?.id || d.type === null) && c("templateType")?.id != null
|
|
881
|
+
).map((d) => ({
|
|
882
|
+
id: d.id,
|
|
883
|
+
name: d.name
|
|
884
|
+
}))
|
|
885
|
+
],
|
|
886
|
+
required: !1,
|
|
887
|
+
...l("template")
|
|
888
|
+
}
|
|
889
|
+
) }),
|
|
890
|
+
/* @__PURE__ */ s(P, { children: /* @__PURE__ */ s(
|
|
891
|
+
Q,
|
|
892
|
+
{
|
|
893
|
+
label: "Name",
|
|
894
|
+
register: l,
|
|
895
|
+
error: f,
|
|
896
|
+
required: !0,
|
|
897
|
+
name: "templateName",
|
|
898
|
+
validation: {
|
|
899
|
+
required: {
|
|
900
|
+
value: !0,
|
|
901
|
+
message: "Enter a name"
|
|
909
902
|
}
|
|
910
903
|
}
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
md: 3,
|
|
916
|
-
className: "d-flex align-items-end justify-content-end gap-2 mb-3",
|
|
917
|
-
children: [
|
|
918
|
-
/* @__PURE__ */ s(
|
|
919
|
-
G,
|
|
920
|
-
{
|
|
921
|
-
style: { width: "70px" },
|
|
922
|
-
variant: "primary",
|
|
923
|
-
disabled: m || N || L || M,
|
|
924
|
-
onClick: () => {
|
|
925
|
-
q(void 0), h(), i();
|
|
926
|
-
},
|
|
927
|
-
children: N || L ? /* @__PURE__ */ s(
|
|
928
|
-
U,
|
|
929
|
-
{
|
|
930
|
-
animation: "border",
|
|
931
|
-
style: { width: "11px", height: "11px" },
|
|
932
|
-
size: "sm",
|
|
933
|
-
role: "status",
|
|
934
|
-
className: "me-1",
|
|
935
|
-
children: /* @__PURE__ */ s("span", { className: "visually-hidden", children: "Loading..." })
|
|
936
|
-
}
|
|
937
|
-
) : "Clear"
|
|
938
|
-
}
|
|
939
|
-
),
|
|
940
|
-
/* @__PURE__ */ s(
|
|
941
|
-
G,
|
|
942
|
-
{
|
|
943
|
-
type: "submit",
|
|
944
|
-
variant: "primary",
|
|
945
|
-
style: { width: "80px" },
|
|
946
|
-
disabled: m || N || L || M,
|
|
947
|
-
children: N || L ? /* @__PURE__ */ s(
|
|
948
|
-
U,
|
|
949
|
-
{
|
|
950
|
-
animation: "border",
|
|
951
|
-
style: { width: "11px", height: "11px" },
|
|
952
|
-
size: "sm",
|
|
953
|
-
role: "status",
|
|
954
|
-
className: "me-1",
|
|
955
|
-
children: /* @__PURE__ */ s("span", { className: "visually-hidden", children: "Loading..." })
|
|
956
|
-
}
|
|
957
|
-
) : (g?.id ?? "") === "" ? "Save" : (g?.projectId ?? "") === 0 ? "Save as" : "Save"
|
|
958
|
-
}
|
|
959
|
-
)
|
|
960
|
-
]
|
|
961
|
-
}
|
|
962
|
-
)
|
|
963
|
-
] }),
|
|
964
|
-
p("templateType")?.id === "2" && /* @__PURE__ */ s(z, { children: /* @__PURE__ */ s($, { md: 12, children: /* @__PURE__ */ s(
|
|
965
|
-
W,
|
|
904
|
+
}
|
|
905
|
+
) }),
|
|
906
|
+
c("templateType")?.id === "2" && /* @__PURE__ */ s(P, { children: /* @__PURE__ */ s(
|
|
907
|
+
Q,
|
|
966
908
|
{
|
|
967
|
-
className: "mt-3",
|
|
968
909
|
label: "Subject",
|
|
969
910
|
register: l,
|
|
970
911
|
error: f,
|
|
971
912
|
required: !1,
|
|
972
913
|
name: "subject"
|
|
973
914
|
}
|
|
974
|
-
) })
|
|
975
|
-
|
|
915
|
+
) }),
|
|
916
|
+
/* @__PURE__ */ v(P, { className: "d-flex align-items-end justify-content-end gap-2 mb-3", children: [
|
|
917
|
+
/* @__PURE__ */ s(
|
|
918
|
+
z,
|
|
919
|
+
{
|
|
920
|
+
style: { width: "70px" },
|
|
921
|
+
variant: "primary",
|
|
922
|
+
disabled: m || N || L || H,
|
|
923
|
+
onClick: () => {
|
|
924
|
+
j(void 0), y(), i();
|
|
925
|
+
},
|
|
926
|
+
children: N || L ? /* @__PURE__ */ s(
|
|
927
|
+
B,
|
|
928
|
+
{
|
|
929
|
+
animation: "border",
|
|
930
|
+
style: { width: "11px", height: "11px" },
|
|
931
|
+
size: "sm",
|
|
932
|
+
role: "status",
|
|
933
|
+
className: "me-1",
|
|
934
|
+
children: /* @__PURE__ */ s("span", { className: "visually-hidden", children: "Loading..." })
|
|
935
|
+
}
|
|
936
|
+
) : "Clear"
|
|
937
|
+
}
|
|
938
|
+
),
|
|
939
|
+
(c("templateType")?.id !== "2" || (g?.id ?? "") !== "") && /* @__PURE__ */ s(
|
|
940
|
+
z,
|
|
941
|
+
{
|
|
942
|
+
type: "submit",
|
|
943
|
+
variant: "primary",
|
|
944
|
+
style: { width: "80px" },
|
|
945
|
+
disabled: m || N || L || H,
|
|
946
|
+
children: N || L ? /* @__PURE__ */ s(
|
|
947
|
+
B,
|
|
948
|
+
{
|
|
949
|
+
animation: "border",
|
|
950
|
+
style: { width: "11px", height: "11px" },
|
|
951
|
+
size: "sm",
|
|
952
|
+
role: "status",
|
|
953
|
+
className: "me-1",
|
|
954
|
+
children: /* @__PURE__ */ s("span", { className: "visually-hidden", children: "Loading..." })
|
|
955
|
+
}
|
|
956
|
+
) : g?.readonly ? "Save as" : "Save"
|
|
957
|
+
}
|
|
958
|
+
)
|
|
959
|
+
] })
|
|
960
|
+
] }) }) }) }) });
|
|
976
961
|
}, Ue = ({ config: t }) => {
|
|
977
962
|
const [r, i] = S(), [l, n] = S(!1);
|
|
978
|
-
return /* @__PURE__ */ s(ye, { configs: t, children: /* @__PURE__ */ s(be, { children: /* @__PURE__ */
|
|
963
|
+
return /* @__PURE__ */ s(ye, { configs: t, children: /* @__PURE__ */ s(be, { children: /* @__PURE__ */ v("div", { className: "root-widget", children: [
|
|
979
964
|
/* @__PURE__ */ s(
|
|
980
965
|
je,
|
|
981
966
|
{
|
|
982
967
|
templateLoading: n,
|
|
983
968
|
onSelectItem: (o) => {
|
|
984
969
|
i(o), window.StripoEditorApi && window.StripoEditorApi.actionsApi && window.StripoEditorApi.actionsApi.updateHtmlAndCss(
|
|
985
|
-
o?.html ??
|
|
970
|
+
o?.html ?? R,
|
|
986
971
|
o?.css ?? "",
|
|
987
972
|
""
|
|
988
973
|
);
|
|
989
974
|
},
|
|
990
975
|
onReset: () => {
|
|
991
|
-
n(!1), i(void 0), window.StripoEditorApi && window.StripoEditorApi.actionsApi && window.StripoEditorApi.actionsApi.updateHtmlAndCss(
|
|
976
|
+
n(!1), i(void 0), window.StripoEditorApi && window.StripoEditorApi.actionsApi && window.StripoEditorApi.actionsApi.updateHtmlAndCss(R, "", "");
|
|
992
977
|
}
|
|
993
978
|
}
|
|
994
979
|
),
|
|
@@ -997,7 +982,7 @@ const X = /* @__PURE__ */ Ee(_e), Ae = ({
|
|
|
997
982
|
{
|
|
998
983
|
templateHTML: {
|
|
999
984
|
css: r?.css ?? "",
|
|
1000
|
-
html: r?.html ??
|
|
985
|
+
html: r?.html ?? R
|
|
1001
986
|
},
|
|
1002
987
|
loading: l,
|
|
1003
988
|
className: "col-span-5"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(f,n){typeof exports=="object"&&typeof module<"u"?n(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"],n):(f=typeof globalThis<"u"?globalThis:f||self,n(f.EnerexTemplateEditor={},f.jsxRuntime,f.React,f.reactQuery,f.axios,f.reactBootstrap,f.reactHookForm,f.Select$1))})(this,function(f,n,c,w,
|
|
1
|
+
(function(f,n){typeof exports=="object"&&typeof module<"u"?n(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"],n):(f=typeof globalThis<"u"?globalThis:f||self,n(f.EnerexTemplateEditor={},f.jsxRuntime,f.React,f.reactQuery,f.axios,f.reactBootstrap,f.reactHookForm,f.Select$1))})(this,function(f,n,c,w,D,p,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
|
-
`,
|
|
357
|
+
`,M=c.createContext(void 0),J=({children:t,configs:s})=>{const[i,o]=c.useState(s.clientId),[r,e]=c.useState(s.apiKey),[l,a]=c.useState(s.enerexIdentifier),[m,v]=c.useState(s.userName),[b,x]=c.useState(s.projectId),C=g=>{e(g.apiKey),o(g.clientId),x(g.projectId),a(g.enerexIdentifier),v(g.userName)};return n.jsx(M.Provider,{value:{clientId:i,apiKey:r,setConfiguration:C,enerexIdentifier:l,projectId:b,userName:m},children:t})},T=()=>{const t=c.useContext(M);if(!t)throw new Error("widgetConfig must be used within a ConfigProvider");return t},U=(t="",s)=>({get:async(r,e)=>{try{const l=await D.get(`${t}${r}`,e??s);if(l.status===200)return l.data}catch(l){throw l}},post:async(r,e,l)=>{try{const a=await D.post(`${t}${r}`,e,l??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=c.createContext({get:()=>{throw new Error("HttpClientContext.get not implemented")},post:()=>{throw new Error("HttpClientContext.post not implemented")}}),Q=({children:t})=>{const{clientId:s,apiKey:i}=T(),o={headers:{client_id:s,"x-api-key":i}},{get:r,post:e}=U(q.API_BASE_URL,o);return n.jsx(H.Provider,{value:{get:r,post:e},children:t})},Z=({children:t})=>{const s=new w.QueryClient;return n.jsx(Q,{children:n.jsx(w.QueryClientProvider,{client:s,children:t})})},R=t=>{const s=Array.from(new Set(t.map(o=>o.category))),i=[];return s.forEach(o=>{const r=t.filter(e=>e.category===o).map(e=>({label:e.label,value:e.value,hint:e.hint,hidden:e.hidden}));i.push({category:o,entries:r})}),i},I=()=>{const t=c.useContext(H);if(t)return t;throw new Error("useHttpClient must be used within a HttpClientProvider")},N={Template_list:"/Template/list/",Template:"/Template/GetTemplate/",MergeTags:"/Template/TemplateMergeTags/",ExcludeCategory:"/Template/GetExcludeCategories/",SaveTemplate:"/Template/save-update/",TemplateTypes:"/Template/TemplateTypes/"},ee=()=>{const t=I(),{enerexIdentifier:s,projectId:i}=T();return w.useQuery({queryKey:["getTemplateTags"],queryFn:async r=>await t.get(`${N.MergeTags}${i}/${s}`)})},te=()=>{const t=I(),{enerexIdentifier:s,projectId:i}=T();return w.useQuery({queryKey:["getExcludeCategory"],queryFn:async r=>await t.get(`${N.ExcludeCategory}${i}/${s}`)})},ne=({templateHTML:t,className:s="",loading:i=!1})=>{const{post:o}=U(),{data:r}=ee(),{data:e}=te(),[l,a]=c.useState(t??{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";c.useEffect(()=>{if(r&&e&&!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)}},[r,e]);const g=async()=>{window.UIEditor.initEditor(document.querySelector("#stripoEditorContainer"),{html:l.html,css:l.css,modulesExcludedCategories:e??[],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(r??[])})};return n.jsx("div",{className:"position-relative",children:n.jsxs("div",{className:`editor-container ${s}`,children:[i&&n.jsx("div",{className:"loading-overlay",children:n.jsx(p.Spinner,{animation:"border",style:{width:"11px",height:"11px"},size:"sm",role:"status",className:"me-1"})}),n.jsx("div",{id:"externalSystemContainer"}),n.jsx("div",{id:"stripoEditorContainer"})]})})},V=({label:t,register:s,validation:i,required:o=!1,name:r,error:e,className:l="",...a})=>n.jsxs(p.Form.Group,{className:l+" mb-1",children:[t?n.jsxs(p.Form.Label,{className:"mb-3 d-block form-label",children:[t,o&&n.jsx("label",{className:"text-danger",children:"*"})]}):null,n.jsx(p.Form.Control,{name:r,type:"text",...a,isInvalid:!!(e&&e[r]),...s?s(r,{...i}):{},className:`react-select__control ${e&&e[r]&&"border border-danger"}`}),e&&e[r]?n.jsx(p.Form.Control.Feedback,{type:"invalid",children:e[r].message}):null]}),re=()=>{const t=I(),{enerexIdentifier:s,projectId:i}=T();return w.useQuery({queryKey:["getTemplatesList"],queryFn:async r=>await t.get(`${N.Template_list}${i}/${s}`)})},se=()=>{const t=I(),{enerexIdentifier:s,projectId:i}=T();return w.useMutation({mutationKey:["getTemplate"],mutationFn:async({id:r})=>{if(r)return await t.get(`${N.Template}${s}/${r}/${i}`)}})},le=()=>{const t=I(),{enerexIdentifier:s,projectId:i}=T();return w.useQuery({queryKey:["getTemplateTypes"],queryFn:async r=>await t.get(`${N.TemplateTypes}${s}/${i}`)})};function ie(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}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
|
|
361
|
+
*/var K;function oe(){return K||(K=1,function(t){(function(){var s={}.hasOwnProperty;function i(){for(var e="",l=0;l<arguments.length;l++){var a=arguments[l];a&&(e=r(e,o(a)))}return e}function o(e){if(typeof e=="string"||typeof e=="number")return e;if(typeof e!="object")return"";if(Array.isArray(e))return i.apply(null,e);if(e.toString!==Object.prototype.toString&&!e.toString.toString().includes("[native code]"))return e.toString();var l="";for(var a in e)s.call(e,a)&&e[a]&&(l=r(l,a));return l}function r(e,l){return l?e?e+" "+l:e+l:e}t.exports?(i.default=i,t.exports=i):window.classNames=i})()}(L)),L.exports}var ae=oe();const z=ie(ae),de=({name:t="",control:s,options:i,multiple:o=!1,placeholder:r,validation:e,labelKey:l="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?n.jsx(F,{className:z({"is-invalid":m}),styles:y,classNamePrefix:"react-select",isMulti:o,options:i,onChange:b,placeholder:r,menuPortalTarget:document.body,value:v,getOptionLabel:typeof l=="string"?u=>u[l]:l,getOptionValue:u=>u.id,isDisabled:a,menuPlacement:C,closeMenuOnSelect:g}):n.jsx(O.Controller,{control:s,name:t,rules:e,render:({field:{onChange:u,value:h,onBlur:P}})=>n.jsx(F,{className:z({"is-invalid":m}),styles:y,classNamePrefix:"react-select",isMulti:o,options:i,onBlur:P,onChange:u,placeholder:r,menuPortalTarget:document.body,value:h,getOptionLabel:typeof l=="string"?S=>S[l]:l,getOptionValue:S=>S.id,isDisabled:a,menuPlacement:C,closeMenuOnSelect:g},h?JSON.stringify(h):"reset")})},G=({label:t,name:s,validation:i,control:o,error:r,...e})=>n.jsxs(p.Form.Group,{className:"mb-1",children:[t&&n.jsxs(p.Form.Label,{className:"mb-3 d-block form-label",children:[t," ",e.required&&n.jsx("span",{className:"text-danger",children:"*"})]}),n.jsx(de,{control:o,options:e.options??[],validation:i,isInvalid:r&&!!r[s],name:s}),r&&r[s]?n.jsx(p.Form.Control.Feedback,{type:"invalid",children:r[s].message}):null]}),ce=()=>{const t=I();w.useQueryClient();const{enerexIdentifier:s,projectId:i}=T();return w.useMutation({mutationKey:["saveTemplate"],mutationFn:async r=>(r.enerexIdentifier=s??"",r.projectId=i??"",await t.post(`${N.SaveTemplate}`,r))})},$={id:"",name:"New (Blank)"},pe=({onSelectItem:t,templateLoading:s,onReset:i})=>{const{register:o,handleSubmit:r,clearErrors:e,setValue:l,control:a,watch:m,reset:v,formState:{errors:b}}=O.useForm({defaultValues:{templateName:"",subject:"",templateType:void 0,template:$},mode:"onChange"}),{data:x,refetch:C,isLoading:g}=re(),[y,u]=c.useState([]),[h,P]=c.useState(),[S,W]=c.useState(),{mutateAsync:ue,isPending:_}=se(),{mutateAsync:fe,isPending:A}=ce(),{data:k,isLoading:B}=le(),[ge,ye]=c.useState([]);c.useEffect(()=>{k&&ye(k.filter(d=>d.id!==void 0).map(d=>({id:`${d.id}`,name:d.name})))},[k]),c.useEffect(()=>{s(!!_)},[_]),c.useEffect(()=>{u(x??[])},[x]);const he=async d=>{P(d),d?(l("templateName",d?.name),e()):(l("templateName",""),l("subject",""));const E=await ue({id:d?.id});W(E||void 0)};c.useEffect(()=>{l("template",$)},[m("templateType")]),c.useEffect(()=>{let d=y.find(E=>E.id===m("template")?.id);he(d)},[m("template")]),c.useEffect(()=>{S&&h?(t(S),l("subject",S.subject??"")):t(void 0)},[S,h,t]);const be=d=>{window.StripoEditorApi.actionsApi.getTemplateData(async E=>{let Y=d.template.id,X="";h?.readonly&&(Y="",X=d.template.id);const we={enerexIdentifier:"",projectId:"",templateId:Y,templateType:d.templateType.id,name:d.templateName,html:E.html,css:E.css,subject:d.templateType.id==="2"?d?.subject??"":"",parent_id:X};await fe(we)&&(e(),v(),C())})};return n.jsx(p.Card,{className:"border border-0 text-start",children:n.jsx(p.Card.Body,{className:"pe-0 ps-2",children:n.jsx("form",{onSubmit:r(be),children:n.jsx("div",{className:"template-list-container gap-3",children:n.jsxs(p.Row,{children:[n.jsx(p.Col,{children:n.jsx(G,{label:"Type",control:a,error:b,options:ge,required:!0,validation:{required:{value:!0,message:"Select a type"}},...o("templateType")})}),n.jsx(p.Col,{children:n.jsx(G,{label:"Template",control:a,error:b,options:[$,...y.filter(d=>(d.type?.toString()===m("templateType")?.id||d.type===null)&&m("templateType")?.id!=null).map(d=>({id:d.id,name:d.name}))],required:!1,...o("template")})}),n.jsx(p.Col,{children:n.jsx(V,{label:"Name",register:o,error:b,required:!0,name:"templateName",validation:{required:{value:!0,message:"Enter a name"}}})}),m("templateType")?.id==="2"&&n.jsx(p.Col,{children:n.jsx(V,{label:"Subject",register:o,error:b,required:!1,name:"subject"})}),n.jsxs(p.Col,{className:"d-flex align-items-end justify-content-end gap-2 mb-3",children:[n.jsx(p.Button,{style:{width:"70px"},variant:"primary",disabled:g||_||A||B,onClick:()=>{P(void 0),v(),i()},children:_||A?n.jsx(p.Spinner,{animation:"border",style:{width:"11px",height:"11px"},size:"sm",role:"status",className:"me-1",children:n.jsx("span",{className:"visually-hidden",children:"Loading..."})}):"Clear"}),(m("templateType")?.id!=="2"||(h?.id??"")!=="")&&n.jsx(p.Button,{type:"submit",variant:"primary",style:{width:"80px"},disabled:g||_||A||B,children:_||A?n.jsx(p.Spinner,{animation:"border",style:{width:"11px",height:"11px"},size:"sm",role:"status",className:"me-1",children:n.jsx("span",{className:"visually-hidden",children:"Loading..."})}):h?.readonly?"Save as":"Save"})]})]})})})})})},me=({config:t})=>{const[s,i]=c.useState(),[o,r]=c.useState(!1),e=a=>{i(a),window.StripoEditorApi&&window.StripoEditorApi.actionsApi&&window.StripoEditorApi.actionsApi.updateHtmlAndCss(a?.html??j,a?.css??"","")},l=()=>{r(!1),i(void 0),window.StripoEditorApi&&window.StripoEditorApi.actionsApi&&window.StripoEditorApi.actionsApi.updateHtmlAndCss(j,"","")};return n.jsx(J,{configs:t,children:n.jsx(Z,{children:n.jsxs("div",{className:"root-widget",children:[n.jsx(pe,{templateLoading:r,onSelectItem:e,onReset:l}),n.jsx(ne,{templateHTML:{css:s?.css??"",html:s?.html??j},loading:o,className:"col-span-5"})]})})})};f.EditorWidget=me,Object.defineProperty(f,Symbol.toStringTag,{value:"Module"})});
|
|
@@ -7,6 +7,7 @@ export type ITemplatesList = {
|
|
|
7
7
|
name: string;
|
|
8
8
|
type: number;
|
|
9
9
|
projectId: number;
|
|
10
|
+
readonly: boolean;
|
|
10
11
|
};
|
|
11
12
|
export type ITemplate = {
|
|
12
13
|
templateID: string;
|
|
@@ -16,6 +17,7 @@ export type ITemplate = {
|
|
|
16
17
|
active: string;
|
|
17
18
|
enerexIdentifier: string;
|
|
18
19
|
projectId: string;
|
|
20
|
+
subject: string;
|
|
19
21
|
templateType: number;
|
|
20
22
|
};
|
|
21
23
|
export type ITemplateTypes = {
|