@enerex/template-studio 1.1.21 → 1.1.23

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,10 +1,10 @@
1
- import { jsx as s, jsxs as y } from "react/jsx-runtime";
2
- import I, { useContext as te, useState as S, useEffect as _ } from "react";
3
- import { QueryClient as pe, QueryClientProvider as me, useQuery as O, useMutation as ne, useQueryClient as ue } from "@tanstack/react-query";
4
- import K from "axios";
5
- import { Spinner as U, Form as E, Card as z, Row as G, Col as q, Button as Q } from "react-bootstrap";
1
+ import { jsx as s, jsxs as T } from "react/jsx-runtime";
2
+ import I, { useContext as Z, useState as S, useEffect as _ } from "react";
3
+ import { QueryClient as ce, QueryClientProvider as pe, useQuery as O, useMutation as ee, useQueryClient as me } from "@tanstack/react-query";
4
+ import V from "axios";
5
+ import { Spinner as U, Form as E, Card as K, Row as ue, Col as $, Button as z } from "react-bootstrap";
6
6
  import { Controller as ge, useForm as fe } from "react-hook-form";
7
- import W from "react-select";
7
+ import G from "react-select";
8
8
  const D = `<!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
@@ -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
- `, re = I.createContext(
364
+ `, te = I.createContext(
365
365
  void 0
366
366
  ), ye = ({
367
367
  children: t,
@@ -369,16 +369,16 @@ 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
- ), [p, h] = I.useState(r.userName), [f, b] = I.useState(r.projectId), w = (m) => {
373
- e(m.apiKey), l(m.clientId), b(m.projectId), o(m.enerexIdentifier), h(m.userName);
372
+ ), [p, 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
- re.Provider,
376
+ te.Provider,
377
377
  {
378
378
  value: {
379
379
  clientId: i,
380
380
  apiKey: n,
381
- setConfiguration: w,
381
+ setConfiguration: b,
382
382
  enerexIdentifier: a,
383
383
  projectId: f,
384
384
  userName: p
@@ -386,14 +386,14 @@ const D = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
386
386
  children: t
387
387
  }
388
388
  );
389
- }, T = () => {
390
- const t = te(re);
389
+ }, v = () => {
390
+ const t = Z(te);
391
391
  if (!t)
392
392
  throw new Error("widgetConfig must be used within a ConfigProvider");
393
393
  return t;
394
- }, se = (t = "", r) => ({ get: async (n, e) => {
394
+ }, ne = (t = "", r) => ({ get: async (n, e) => {
395
395
  try {
396
- const a = await K.get(
396
+ const a = await V.get(
397
397
  `${t}${n}`,
398
398
  e ?? r
399
399
  );
@@ -404,7 +404,7 @@ const D = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
404
404
  }
405
405
  }, post: async (n, e, a) => {
406
406
  try {
407
- const o = await K.post(
407
+ const o = await V.post(
408
408
  `${t}${n}`,
409
409
  e,
410
410
  a ?? r
@@ -421,7 +421,7 @@ const D = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
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
- }, ie = I.createContext({
424
+ }, re = 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 } = T(), l = {
432
+ const { clientId: r, apiKey: i } = v(), l = {
433
433
  headers: {
434
434
  client_id: r,
435
435
  "x-api-key": i
436
436
  }
437
- }, { get: n, post: e } = se(k.API_BASE_URL, l);
438
- return /* @__PURE__ */ s(ie.Provider, { value: { get: n, post: e }, children: t });
437
+ }, { get: n, post: e } = ne(k.API_BASE_URL, l);
438
+ return /* @__PURE__ */ s(re.Provider, { value: { get: n, post: e }, children: t });
439
439
  }, be = ({ children: t }) => {
440
- const r = new pe();
441
- return /* @__PURE__ */ s(he, { children: /* @__PURE__ */ s(me, { client: r, children: t }) });
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) => {
@@ -451,7 +451,7 @@ const D = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
451
451
  i.push({ category: l, entries: n });
452
452
  }), i;
453
453
  }, A = () => {
454
- const t = te(ie);
454
+ const t = Z(re);
455
455
  if (t)
456
456
  return t;
457
457
  throw new Error("useHttpClient must be used within a HttpClientProvider");
@@ -463,7 +463,7 @@ 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
  }, Te = () => {
466
- const t = A(), { enerexIdentifier: r, projectId: i } = T();
466
+ const t = A(), { enerexIdentifier: r, projectId: i } = v();
467
467
  return O({
468
468
  queryKey: ["getTemplateTags"],
469
469
  queryFn: async (n) => await t.get(
@@ -471,7 +471,7 @@ const D = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
471
471
  )
472
472
  });
473
473
  }, ve = () => {
474
- const t = A(), { enerexIdentifier: r, projectId: i } = T();
474
+ const t = A(), { enerexIdentifier: r, projectId: i } = v();
475
475
  return O({
476
476
  queryKey: ["getExcludeCategory"],
477
477
  queryFn: async (n) => await t.get(
@@ -483,9 +483,9 @@ 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 } = se(), { data: n } = Te(), { data: e } = ve(), [a, o] = S(
486
+ const { post: l } = ne(), { data: n } = Te(), { data: e } = ve(), [a, o] = S(
487
487
  t ?? { html: D, css: "" }
488
- ), { enerexIdentifier: p, projectId: h, userName: f } = T(), b = "https://plugin.stripocdn.email/content/guids/CABINET_eab4e7d5a4603ac03f4120652a3a5a540f0c79c688514939f095f67433ed4a67/images/photo256.png", w = "https://plugins.stripo.email/api/v1/auth";
488
+ ), { enerexIdentifier: p, projectId: y, userName: f } = v(), h = "https://plugin.stripocdn.email/content/guids/CABINET_eab4e7d5a4603ac03f4120652a3a5a540f0c79c688514939f095f67433ed4a67/images/photo256.png", b = "https://plugins.stripo.email/api/v1/auth";
489
489
  _(() => {
490
490
  if (n && e && !document.getElementById("UiEditorScript")) {
491
491
  const u = document.createElement("script");
@@ -501,10 +501,10 @@ 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: `${h}_${p}`,
504
+ emailId: `${y}_${p}`,
505
505
  userId: "1",
506
506
  username: f,
507
- avatarUrl: b
507
+ avatarUrl: h
508
508
  },
509
509
  locale: "en",
510
510
  onTokenRefreshRequest: async function(u) {
@@ -513,7 +513,7 @@ const D = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
513
513
  secretKey: k.EDITOR_SECRET_KEY,
514
514
  userId: "12",
515
515
  role: "user"
516
- }, g = await l(w, c);
516
+ }, g = await l(b, c);
517
517
  g && u(g.token);
518
518
  },
519
519
  codeEditorButtonSelector: "#codeEditor",
@@ -525,7 +525,7 @@ 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__ */ y("div", { className: `editor-container ${r}`, children: [
528
+ return /* @__PURE__ */ s("div", { className: "position-relative", children: /* @__PURE__ */ T("div", { className: `editor-container ${r}`, children: [
529
529
  i && /* @__PURE__ */ s("div", { className: "loading-overlay", children: /* @__PURE__ */ s(
530
530
  U,
531
531
  {
@@ -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
- }, Y = ({
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__ */ y(E.Group, { className: a + " mb-1", children: [
552
- t ? /* @__PURE__ */ y(E.Label, { className: "mb-3 d-block form-label", children: [
551
+ }) => /* @__PURE__ */ T(E.Group, { className: a + " mb-1", children: [
552
+ t ? /* @__PURE__ */ T(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,7 +568,7 @@ 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 = A(), { enerexIdentifier: r, projectId: i } = T();
571
+ const t = A(), { enerexIdentifier: r, projectId: i } = v();
572
572
  return O({
573
573
  queryKey: ["getTemplatesList"],
574
574
  queryFn: async (n) => await t.get(
@@ -576,8 +576,8 @@ const D = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
576
576
  )
577
577
  });
578
578
  }, Ie = () => {
579
- const t = A(), { enerexIdentifier: r, projectId: i } = T();
580
- return ne({
579
+ const t = A(), { enerexIdentifier: r, projectId: i } = v();
580
+ return ee({
581
581
  mutationKey: ["getTemplate"],
582
582
  mutationFn: async ({ id: n }) => {
583
583
  if (n)
@@ -587,7 +587,7 @@ const D = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
587
587
  }
588
588
  });
589
589
  }, Se = () => {
590
- const t = A(), { enerexIdentifier: r, projectId: i } = T();
590
+ const t = A(), { enerexIdentifier: r, projectId: i } = v();
591
591
  return O({
592
592
  queryKey: ["getTemplateTypes"],
593
593
  queryFn: async (n) => await t.get(
@@ -604,9 +604,9 @@ var B = { exports: {} };
604
604
  Licensed under the MIT License (MIT), see
605
605
  http://jedwatson.github.io/classnames
606
606
  */
607
- var X;
607
+ var W;
608
608
  function Ne() {
609
- return X || (X = 1, function(t) {
609
+ return W || (W = 1, function(t) {
610
610
  (function() {
611
611
  var r = {}.hasOwnProperty;
612
612
  function i() {
@@ -638,7 +638,7 @@ function Ne() {
638
638
  }(B)), B.exports;
639
639
  }
640
640
  var _e = Ne();
641
- const J = /* @__PURE__ */ Ee(_e), Ae = ({
641
+ const Y = /* @__PURE__ */ Ee(_e), Ae = ({
642
642
  name: t = "",
643
643
  control: r,
644
644
  options: i,
@@ -648,10 +648,10 @@ const J = /* @__PURE__ */ Ee(_e), Ae = ({
648
648
  labelKey: a = "name",
649
649
  disabled: o,
650
650
  isInvalid: p,
651
- value: h,
651
+ value: y,
652
652
  onChange: f,
653
- uncontrolled: b,
654
- menuPlacement: w = "auto",
653
+ uncontrolled: h,
654
+ menuPlacement: b = "auto",
655
655
  closeOnSelect: m = !0
656
656
  }) => {
657
657
  const u = {
@@ -692,10 +692,10 @@ const J = /* @__PURE__ */ Ee(_e), Ae = ({
692
692
  display: o ? "none" : "block"
693
693
  })
694
694
  };
695
- return b ? /* @__PURE__ */ s(
696
- W,
695
+ return h ? /* @__PURE__ */ s(
696
+ G,
697
697
  {
698
- className: J({
698
+ className: Y({
699
699
  "is-invalid": p
700
700
  }),
701
701
  styles: u,
@@ -705,11 +705,11 @@ const J = /* @__PURE__ */ Ee(_e), Ae = ({
705
705
  onChange: f,
706
706
  placeholder: n,
707
707
  menuPortalTarget: document.body,
708
- value: h,
708
+ value: y,
709
709
  getOptionLabel: typeof a == "string" ? (c) => c[a] : a,
710
710
  getOptionValue: (c) => c.id,
711
711
  isDisabled: o,
712
- menuPlacement: w,
712
+ menuPlacement: b,
713
713
  closeMenuOnSelect: m
714
714
  }
715
715
  ) : /* @__PURE__ */ s(
@@ -718,40 +718,40 @@ const J = /* @__PURE__ */ Ee(_e), Ae = ({
718
718
  control: r,
719
719
  name: t,
720
720
  rules: e,
721
- render: ({ field: { onChange: c, value: g, onBlur: $ } }) => /* @__PURE__ */ s(
722
- W,
721
+ render: ({ field: { onChange: c, value: g, onBlur: L } }) => /* @__PURE__ */ s(
722
+ G,
723
723
  {
724
- className: J({
724
+ className: Y({
725
725
  "is-invalid": p
726
726
  }),
727
727
  styles: u,
728
728
  classNamePrefix: "react-select",
729
729
  isMulti: l,
730
730
  options: i,
731
- onBlur: $,
731
+ onBlur: L,
732
732
  onChange: c,
733
733
  placeholder: n,
734
734
  menuPortalTarget: document.body,
735
735
  value: g,
736
- getOptionLabel: typeof a == "string" ? (v) => v[a] : a,
737
- getOptionValue: (v) => v.id,
736
+ getOptionLabel: typeof a == "string" ? (w) => w[a] : a,
737
+ getOptionValue: (w) => w.id,
738
738
  isDisabled: o,
739
- menuPlacement: w,
739
+ menuPlacement: b,
740
740
  closeMenuOnSelect: m
741
741
  },
742
742
  g ? JSON.stringify(g) : "reset"
743
743
  )
744
744
  }
745
745
  );
746
- }, Z = ({
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__ */ y(E.Group, { className: "mb-1", children: [
754
- t && /* @__PURE__ */ y(E.Label, { className: "mb-3 d-block form-label", children: [
753
+ }) => /* @__PURE__ */ T(E.Group, { className: "mb-1", children: [
754
+ t && /* @__PURE__ */ T(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: "*" })
@@ -769,16 +769,16 @@ const J = /* @__PURE__ */ Ee(_e), Ae = ({
769
769
  n && n[r] ? /* @__PURE__ */ s(E.Control.Feedback, { type: "invalid", children: n[r].message }) : null
770
770
  ] }), Pe = () => {
771
771
  const t = A();
772
- ue();
773
- const { enerexIdentifier: r, projectId: i } = T();
774
- return ne({
772
+ me();
773
+ const { enerexIdentifier: r, projectId: i } = v();
774
+ return ee({
775
775
  mutationKey: ["saveTemplate"],
776
776
  mutationFn: async (n) => (n.enerexIdentifier = r ?? "", n.projectId = i ?? "", await t.post(
777
777
  `${P.SaveTemplate}`,
778
778
  n
779
779
  ))
780
780
  });
781
- }, ee = { id: "", name: "New (Blank)" }, je = ({
781
+ }, J = { id: "", name: "New (Blank)" }, je = ({
782
782
  onSelectItem: t,
783
783
  templateLoading: r,
784
784
  onReset: i
@@ -790,24 +790,24 @@ const J = /* @__PURE__ */ Ee(_e), Ae = ({
790
790
  setValue: a,
791
791
  control: o,
792
792
  watch: p,
793
- reset: h,
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: ee
800
+ template: J
801
801
  },
802
802
  mode: "onChange"
803
803
  }), {
804
- data: b,
805
- refetch: w,
804
+ data: h,
805
+ refetch: b,
806
806
  isLoading: m
807
- } = Ce(), [u, c] = S([]), [g, $] = S(), [v, H] = S(), { mutateAsync: ae, isPending: N } = Ie(), { mutateAsync: le, isPending: L } = Pe(), { data: j, isLoading: M } = Se(), [F, oe] = S([]);
807
+ } = Ce(), [u, c] = S([]), [g, L] = S(), [w, H] = S(), { mutateAsync: se, isPending: N } = Ie(), { mutateAsync: ie, isPending: R } = Pe(), { data: j, isLoading: M } = Se(), [F, ae] = S([]);
808
808
  _(() => {
809
- j && oe(
810
- j.map((d) => ({
809
+ j && ae(
810
+ j.filter((d) => d.id !== void 0).map((d) => ({
811
811
  id: `${d.id}`,
812
812
  name: d.name
813
813
  }))
@@ -815,32 +815,32 @@ const J = /* @__PURE__ */ Ee(_e), Ae = ({
815
815
  }, [j]), _(() => {
816
816
  r(!!N);
817
817
  }, [N]), _(() => {
818
- c(b ?? []);
819
- }, [b]);
820
- const de = async (d) => {
821
- if ($(d), d) {
818
+ c(h ?? []);
819
+ }, [h]);
820
+ const le = async (d) => {
821
+ if (L(d), d) {
822
822
  if (a("templateName", d?.name), j && j.find((C) => C.id === d.type)) {
823
- const C = F.find((R) => R.id === `${d.type}`);
823
+ const C = F.find((q) => q.id === `${d.type}`);
824
824
  C && a("templateType", C);
825
- } else
826
- a("templateType", void 0);
825
+ }
827
826
  e();
828
- }
829
- const x = await ae({ id: d?.id });
827
+ } else
828
+ a("templateName", ""), a("subject", "");
829
+ const x = await se({ id: d?.id });
830
830
  H(x || void 0);
831
831
  };
832
832
  _(() => {
833
833
  let d = u.find((x) => x.id === p("template")?.id);
834
- de(d);
834
+ le(d);
835
835
  }, [p("template")]), _(() => {
836
- t(v && g ? v : void 0);
837
- }, [v, g, t]);
838
- const ce = (d) => {
836
+ w && g ? (t(w), a("subject", w.subject ?? "")) : t(void 0);
837
+ }, [w, g, t]);
838
+ const oe = (d) => {
839
839
  window.StripoEditorApi.actionsApi.getTemplateData(
840
840
  async (x) => {
841
- let C = d.template.id, R = "";
842
- g?.type === null && (C = "", R = d.template.id);
843
- const V = {
841
+ let C = d.template.id, q = "";
842
+ g?.readonly && (C = "", q = d.template.id);
843
+ const de = {
844
844
  enerexIdentifier: "",
845
845
  projectId: "",
846
846
  templateId: C,
@@ -848,134 +848,124 @@ const J = /* @__PURE__ */ Ee(_e), Ae = ({
848
848
  name: d.templateName,
849
849
  html: x.html,
850
850
  css: x.css,
851
- subject: d?.subject ?? "",
852
- parent_id: R
851
+ subject: d.templateType.id === "2" ? d?.subject ?? "" : "",
852
+ parent_id: q
853
853
  };
854
- console.log("request", V), await le(V) && (e(), h(), w());
854
+ await ie(de) && (e(), y(), b());
855
855
  }
856
856
  );
857
857
  };
858
- return /* @__PURE__ */ s(z, { className: "border border-0 text-start", children: /* @__PURE__ */ s(z.Body, { className: "pe-0 ps-2", children: /* @__PURE__ */ s("form", { onSubmit: n(ce), children: /* @__PURE__ */ y("div", { className: "template-list-container gap-3", children: [
859
- /* @__PURE__ */ y(G, { children: [
860
- /* @__PURE__ */ s(q, { md: 3, children: /* @__PURE__ */ s(
861
- Z,
862
- {
863
- label: "Type",
864
- control: o,
865
- error: f,
866
- options: F,
867
- required: !0,
868
- validation: {
869
- required: {
870
- value: !0,
871
- message: "Template Type is required"
872
- }
873
- },
874
- ...l("templateType")
875
- }
876
- ) }),
877
- /* @__PURE__ */ s(q, { md: 3, children: /* @__PURE__ */ s(
878
- Z,
879
- {
880
- label: "Template",
881
- control: o,
882
- error: f,
883
- options: [
884
- ee,
885
- ...u.filter(
886
- (d) => d.type?.toString() === p("templateType")?.id || d.type === null
887
- ).map((d) => ({
888
- id: d.id,
889
- name: d.name
890
- }))
891
- ],
892
- required: !1,
893
- ...l("template")
894
- }
895
- ) }),
896
- /* @__PURE__ */ s(q, { md: 3, children: /* @__PURE__ */ s(
897
- Y,
898
- {
899
- label: "Name",
900
- register: l,
901
- error: f,
902
- required: !0,
903
- name: "templateName",
904
- validation: {
905
- required: {
906
- value: !0,
907
- message: "Template Name is required"
908
- }
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(oe), children: /* @__PURE__ */ s("div", { className: "template-list-container gap-3", children: /* @__PURE__ */ T(ue, { children: [
859
+ /* @__PURE__ */ s($, { children: /* @__PURE__ */ s(
860
+ X,
861
+ {
862
+ label: "Type",
863
+ control: o,
864
+ error: f,
865
+ options: F,
866
+ required: !0,
867
+ validation: {
868
+ required: {
869
+ value: !0,
870
+ message: "Select a type"
871
+ }
872
+ },
873
+ ...l("templateType")
874
+ }
875
+ ) }),
876
+ /* @__PURE__ */ s($, { children: /* @__PURE__ */ s(
877
+ X,
878
+ {
879
+ label: "Template",
880
+ control: o,
881
+ error: f,
882
+ options: [
883
+ J,
884
+ ...u.filter(
885
+ (d) => (d.type?.toString() === p("templateType")?.id || d.type === null) && p("templateType")?.id != null
886
+ ).map((d) => ({
887
+ id: d.id,
888
+ name: d.name
889
+ }))
890
+ ],
891
+ required: !1,
892
+ ...l("template")
893
+ }
894
+ ) }),
895
+ /* @__PURE__ */ s($, { children: /* @__PURE__ */ s(
896
+ Q,
897
+ {
898
+ label: "Name",
899
+ register: l,
900
+ error: f,
901
+ required: !0,
902
+ name: "templateName",
903
+ validation: {
904
+ required: {
905
+ value: !0,
906
+ message: "Enter a name"
909
907
  }
910
908
  }
911
- ) }),
912
- /* @__PURE__ */ y(
913
- q,
914
- {
915
- md: 3,
916
- className: "d-flex align-items-end justify-content-end gap-2 mb-3",
917
- children: [
918
- /* @__PURE__ */ s(
919
- Q,
920
- {
921
- style: { width: "70px" },
922
- variant: "primary",
923
- disabled: m || N || L || M,
924
- onClick: () => {
925
- $(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
- Q,
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(G, { children: /* @__PURE__ */ s(q, { md: 12, children: /* @__PURE__ */ s(
965
- Y,
909
+ }
910
+ ) }),
911
+ p("templateType")?.id === "2" && /* @__PURE__ */ s($, { children: /* @__PURE__ */ s(
912
+ Q,
966
913
  {
967
- className: "mt-3",
968
914
  label: "Subject",
969
915
  register: l,
970
916
  error: f,
971
917
  required: !1,
972
918
  name: "subject"
973
919
  }
974
- ) }) })
975
- ] }) }) }) });
920
+ ) }),
921
+ /* @__PURE__ */ T($, { className: "d-flex align-items-end justify-content-end gap-2 mb-3", children: [
922
+ /* @__PURE__ */ s(
923
+ z,
924
+ {
925
+ style: { width: "70px" },
926
+ variant: "primary",
927
+ disabled: m || N || R || M,
928
+ onClick: () => {
929
+ L(void 0), y(), i();
930
+ },
931
+ children: N || R ? /* @__PURE__ */ s(
932
+ U,
933
+ {
934
+ animation: "border",
935
+ style: { width: "11px", height: "11px" },
936
+ size: "sm",
937
+ role: "status",
938
+ className: "me-1",
939
+ children: /* @__PURE__ */ s("span", { className: "visually-hidden", children: "Loading..." })
940
+ }
941
+ ) : "Clear"
942
+ }
943
+ ),
944
+ (p("templateType")?.id !== "2" || (g?.id ?? "") !== "") && /* @__PURE__ */ s(
945
+ z,
946
+ {
947
+ type: "submit",
948
+ variant: "primary",
949
+ style: { width: "80px" },
950
+ disabled: m || N || R || M,
951
+ children: N || R ? /* @__PURE__ */ s(
952
+ U,
953
+ {
954
+ animation: "border",
955
+ style: { width: "11px", height: "11px" },
956
+ size: "sm",
957
+ role: "status",
958
+ className: "me-1",
959
+ children: /* @__PURE__ */ s("span", { className: "visually-hidden", children: "Loading..." })
960
+ }
961
+ ) : g?.readonly ? "Save as" : "Save"
962
+ }
963
+ )
964
+ ] })
965
+ ] }) }) }) }) });
976
966
  }, Ue = ({ config: t }) => {
977
967
  const [r, i] = S(), [l, n] = S(!1);
978
- return /* @__PURE__ */ s(ye, { configs: t, children: /* @__PURE__ */ s(be, { children: /* @__PURE__ */ y("div", { className: "root-widget", children: [
968
+ return /* @__PURE__ */ s(ye, { configs: t, children: /* @__PURE__ */ s(be, { children: /* @__PURE__ */ T("div", { className: "root-widget", children: [
979
969
  /* @__PURE__ */ s(
980
970
  je,
981
971
  {
@@ -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,O,p,F,M){"use strict";const A=`<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
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,O,p,F,M){"use strict";const P=`<!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
- `,U=c.createContext(void 0),Z=({children:t,configs:s})=>{const[i,o]=c.useState(s.clientId),[r,e]=c.useState(s.apiKey),[l,a]=c.useState(s.enerexIdentifier),[u,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(U.Provider,{value:{clientId:i,apiKey:r,setConfiguration:C,enerexIdentifier:l,projectId:b,userName:u},children:t})},T=()=>{const t=c.useContext(U);if(!t)throw new Error("widgetConfig must be used within a ConfigProvider");return t},H=(t="",s)=>({get:async(r,e)=>{try{const l=await O.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 O.post(`${t}${r}`,e,l??s);if(a.status===200)return a.data}catch(a){throw a}}}),j={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"},V=c.createContext({get:()=>{throw new Error("HttpClientContext.get not implemented")},post:()=>{throw new Error("HttpClientContext.post not implemented")}}),R=({children:t})=>{const{clientId:s,apiKey:i}=T(),o={headers:{client_id:s,"x-api-key":i}},{get:r,post:e}=H(j.API_BASE_URL,o);return n.jsx(V.Provider,{value:{get:r,post:e},children:t})},ee=({children:t})=>{const s=new w.QueryClient;return n.jsx(R,{children:n.jsx(w.QueryClientProvider,{client:s,children:t})})},te=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},N=()=>{const t=c.useContext(V);if(t)return t;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/"},ne=()=>{const t=N(),{enerexIdentifier:s,projectId:i}=T();return w.useQuery({queryKey:["getTemplateTags"],queryFn:async r=>await t.get(`${_.MergeTags}${i}/${s}`)})},re=()=>{const t=N(),{enerexIdentifier:s,projectId:i}=T();return w.useQuery({queryKey:["getExcludeCategory"],queryFn:async r=>await t.get(`${_.ExcludeCategory}${i}/${s}`)})},se=({templateHTML:t,className:s="",loading:i=!1})=>{const{post:o}=H(),{data:r}=ne(),{data:e}=re(),[l,a]=c.useState(t??{html:A,css:""}),{enerexIdentifier:u,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=j.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}_${u}`,userId:"1",username:b,avatarUrl:x},locale:"en",onTokenRefreshRequest:async function(y){const m={pluginId:j.EDITOR_PLUGIN_ID,secretKey:j.EDITOR_SECRET_KEY,userId:"12",role:"user"},h=await o(C,m);h&&y(h.token)},codeEditorButtonSelector:"#codeEditor",undoButtonSelector:"#undoButton",redoButtonSelector:"#redoButton",mobileViewButtonSelector:"#mobileViewButton",desktopViewButtonSelector:"#desktopViewButton",mergeTags:te(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"})]})})},K=({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]}),ie=()=>{const t=N(),{enerexIdentifier:s,projectId:i}=T();return w.useQuery({queryKey:["getTemplatesList"],queryFn:async r=>await t.get(`${_.Template_list}${i}/${s}`)})},le=()=>{const t=N(),{enerexIdentifier:s,projectId:i}=T();return w.useMutation({mutationKey:["getTemplate"],mutationFn:async({id:r})=>{if(r)return await t.get(`${_.Template}${s}/${r}/${i}`)}})},oe=()=>{const t=N(),{enerexIdentifier:s,projectId:i}=T();return w.useQuery({queryKey:["getTemplateTypes"],queryFn:async r=>await t.get(`${_.TemplateTypes}${s}/${i}`)})};function ae(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var D={exports:{}};/*!
357
+ `,U=c.createContext(void 0),Q=({children:t,configs:s})=>{const[l,o]=c.useState(s.clientId),[r,e]=c.useState(s.apiKey),[i,a]=c.useState(s.enerexIdentifier),[u,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(U.Provider,{value:{clientId:l,apiKey:r,setConfiguration:C,enerexIdentifier:i,projectId:b,userName:u},children:t})},T=()=>{const t=c.useContext(U);if(!t)throw new Error("widgetConfig must be used within a ConfigProvider");return t},H=(t="",s)=>({get:async(r,e)=>{try{const i=await O.get(`${t}${r}`,e??s);if(i.status===200)return i.data}catch(i){throw i}},post:async(r,e,i)=>{try{const a=await O.post(`${t}${r}`,e,i??s);if(a.status===200)return a.data}catch(a){throw a}}}),A={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"},V=c.createContext({get:()=>{throw new Error("HttpClientContext.get not implemented")},post:()=>{throw new Error("HttpClientContext.post not implemented")}}),Z=({children:t})=>{const{clientId:s,apiKey:l}=T(),o={headers:{client_id:s,"x-api-key":l}},{get:r,post:e}=H(A.API_BASE_URL,o);return n.jsx(V.Provider,{value:{get:r,post:e},children:t})},R=({children:t})=>{const s=new w.QueryClient;return n.jsx(Z,{children:n.jsx(w.QueryClientProvider,{client:s,children:t})})},ee=t=>{const s=Array.from(new Set(t.map(o=>o.category))),l=[];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}));l.push({category:o,entries:r})}),l},N=()=>{const t=c.useContext(V);if(t)return t;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/"},te=()=>{const t=N(),{enerexIdentifier:s,projectId:l}=T();return w.useQuery({queryKey:["getTemplateTags"],queryFn:async r=>await t.get(`${_.MergeTags}${l}/${s}`)})},ne=()=>{const t=N(),{enerexIdentifier:s,projectId:l}=T();return w.useQuery({queryKey:["getExcludeCategory"],queryFn:async r=>await t.get(`${_.ExcludeCategory}${l}/${s}`)})},re=({templateHTML:t,className:s="",loading:l=!1})=>{const{post:o}=H(),{data:r}=te(),{data:e}=ne(),[i,a]=c.useState(t??{html:P,css:""}),{enerexIdentifier:u,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=A.EDITOR_SCRIPT_URL,y.onload=g,document.body.appendChild(y)}},[r,e]);const g=async()=>{window.UIEditor.initEditor(document.querySelector("#stripoEditorContainer"),{html:i.html,css:i.css,modulesExcludedCategories:e??[],forceRecreate:!0,metadata:{emailId:`${v}_${u}`,userId:"1",username:b,avatarUrl:x},locale:"en",onTokenRefreshRequest:async function(y){const m={pluginId:A.EDITOR_PLUGIN_ID,secretKey:A.EDITOR_SECRET_KEY,userId:"12",role:"user"},h=await o(C,m);h&&y(h.token)},codeEditorButtonSelector:"#codeEditor",undoButtonSelector:"#undoButton",redoButtonSelector:"#redoButton",mobileViewButtonSelector:"#mobileViewButton",desktopViewButtonSelector:"#desktopViewButton",mergeTags:ee(r??[])})};return n.jsx("div",{className:"position-relative",children:n.jsxs("div",{className:`editor-container ${s}`,children:[l&&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"})]})})},K=({label:t,register:s,validation:l,required:o=!1,name:r,error:e,className:i="",...a})=>n.jsxs(p.Form.Group,{className:i+" 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,{...l}):{},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]}),se=()=>{const t=N(),{enerexIdentifier:s,projectId:l}=T();return w.useQuery({queryKey:["getTemplatesList"],queryFn:async r=>await t.get(`${_.Template_list}${l}/${s}`)})},ie=()=>{const t=N(),{enerexIdentifier:s,projectId:l}=T();return w.useMutation({mutationKey:["getTemplate"],mutationFn:async({id:r})=>{if(r)return await t.get(`${_.Template}${s}/${r}/${l}`)}})},le=()=>{const t=N(),{enerexIdentifier:s,projectId:l}=T();return w.useQuery({queryKey:["getTemplateTypes"],queryFn:async r=>await t.get(`${_.TemplateTypes}${s}/${l}`)})};function oe(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var D={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 z;function de(){return z||(z=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})()}(D)),D.exports}var ce=de();const G=ae(ce),pe=({name:t="",control:s,options:i,multiple:o=!1,placeholder:r,validation:e,labelKey:l="name",disabled:a,isInvalid:u,value:v,onChange:b,uncontrolled:x,menuPlacement:C="auto",closeOnSelect:g=!0})=>{const y={control:m=>({...m,minHeight:"33px",borderColor:u?"var(--bs-form-invalid-border-color) !important":"var(--ct-input-border-color)",backgroundImage:u?'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:u?"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:m=>({...m,marginTop:0,width:"max-content",minWidth:"100%"}),menuPortal:m=>({...m,zIndex:9999}),multiValueRemove:m=>({...m,display:a?"none":"block"})};return x?n.jsx(M,{className:G({"is-invalid":u}),styles:y,classNamePrefix:"react-select",isMulti:o,options:i,onChange:b,placeholder:r,menuPortalTarget:document.body,value:v,getOptionLabel:typeof l=="string"?m=>m[l]:l,getOptionValue:m=>m.id,isDisabled:a,menuPlacement:C,closeMenuOnSelect:g}):n.jsx(F.Controller,{control:s,name:t,rules:e,render:({field:{onChange:m,value:h,onBlur:L}})=>n.jsx(M,{className:G({"is-invalid":u}),styles:y,classNamePrefix:"react-select",isMulti:o,options:i,onBlur:L,onChange:m,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")})},W=({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(pe,{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]}),me=()=>{const t=N();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(`${_.SaveTemplate}`,r))})},Y={id:"",name:"New (Blank)"},ue=({onSelectItem:t,templateLoading:s,onReset:i})=>{const{register:o,handleSubmit:r,clearErrors:e,setValue:l,control:a,watch:u,reset:v,formState:{errors:b}}=F.useForm({defaultValues:{templateName:"",subject:"",templateType:void 0,template:Y},mode:"onChange"}),{data:x,refetch:C,isLoading:g}=ie(),[y,m]=c.useState([]),[h,L]=c.useState(),[S,B]=c.useState(),{mutateAsync:ge,isPending:q}=le(),{mutateAsync:ye,isPending:$}=me(),{data:P,isLoading:X}=oe(),[J,he]=c.useState([]);c.useEffect(()=>{P&&he(P.map(d=>({id:`${d.id}`,name:d.name})))},[P]),c.useEffect(()=>{s(!!q)},[q]),c.useEffect(()=>{m(x??[])},[x]);const be=async d=>{if(L(d),d){if(l("templateName",d?.name),P&&P.find(I=>I.id===d.type)){const I=J.find(k=>k.id===`${d.type}`);I&&l("templateType",I)}else l("templateType",void 0);e()}const E=await ge({id:d?.id});B(E||void 0)};c.useEffect(()=>{let d=y.find(E=>E.id===u("template")?.id);be(d)},[u("template")]),c.useEffect(()=>{t(S&&h?S:void 0)},[S,h,t]);const we=d=>{window.StripoEditorApi.actionsApi.getTemplateData(async E=>{let I=d.template.id,k="";h?.type===null&&(I="",k=d.template.id);const Q={enerexIdentifier:"",projectId:"",templateId:I,templateType:d.templateType.id,name:d.templateName,html:E.html,css:E.css,subject:d?.subject??"",parent_id:k};console.log("request",Q),await ye(Q)&&(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(we),children:n.jsxs("div",{className:"template-list-container gap-3",children:[n.jsxs(p.Row,{children:[n.jsx(p.Col,{md:3,children:n.jsx(W,{label:"Type",control:a,error:b,options:J,required:!0,validation:{required:{value:!0,message:"Template Type is required"}},...o("templateType")})}),n.jsx(p.Col,{md:3,children:n.jsx(W,{label:"Template",control:a,error:b,options:[Y,...y.filter(d=>d.type?.toString()===u("templateType")?.id||d.type===null).map(d=>({id:d.id,name:d.name}))],required:!1,...o("template")})}),n.jsx(p.Col,{md:3,children:n.jsx(K,{label:"Name",register:o,error:b,required:!0,name:"templateName",validation:{required:{value:!0,message:"Template Name is required"}}})}),n.jsxs(p.Col,{md:3,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||q||$||X,onClick:()=>{L(void 0),v(),i()},children:q||$?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"}),n.jsx(p.Button,{type:"submit",variant:"primary",style:{width:"80px"},disabled:g||q||$||X,children:q||$?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?.id??"")===""?"Save":(h?.projectId??"")===0?"Save as":"Save"})]})]}),u("templateType")?.id==="2"&&n.jsx(p.Row,{children:n.jsx(p.Col,{md:12,children:n.jsx(K,{className:"mt-3",label:"Subject",register:o,error:b,required:!1,name:"subject"})})})]})})})})},fe=({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??A,a?.css??"","")},l=()=>{r(!1),i(void 0),window.StripoEditorApi&&window.StripoEditorApi.actionsApi&&window.StripoEditorApi.actionsApi.updateHtmlAndCss(A,"","")};return n.jsx(Z,{configs:t,children:n.jsx(ee,{children:n.jsxs("div",{className:"root-widget",children:[n.jsx(ue,{templateLoading:r,onSelectItem:e,onReset:l}),n.jsx(se,{templateHTML:{css:s?.css??"",html:s?.html??A},loading:o,className:"col-span-5"})]})})})};f.EditorWidget=fe,Object.defineProperty(f,Symbol.toStringTag,{value:"Module"})});
361
+ */var z;function ae(){return z||(z=1,function(t){(function(){var s={}.hasOwnProperty;function l(){for(var e="",i=0;i<arguments.length;i++){var a=arguments[i];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 l.apply(null,e);if(e.toString!==Object.prototype.toString&&!e.toString.toString().includes("[native code]"))return e.toString();var i="";for(var a in e)s.call(e,a)&&e[a]&&(i=r(i,a));return i}function r(e,i){return i?e?e+" "+i:e+i:e}t.exports?(l.default=l,t.exports=l):window.classNames=l})()}(D)),D.exports}var de=ae();const G=oe(de),ce=({name:t="",control:s,options:l,multiple:o=!1,placeholder:r,validation:e,labelKey:i="name",disabled:a,isInvalid:u,value:v,onChange:b,uncontrolled:x,menuPlacement:C="auto",closeOnSelect:g=!0})=>{const y={control:m=>({...m,minHeight:"33px",borderColor:u?"var(--bs-form-invalid-border-color) !important":"var(--ct-input-border-color)",backgroundImage:u?'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:u?"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:m=>({...m,marginTop:0,width:"max-content",minWidth:"100%"}),menuPortal:m=>({...m,zIndex:9999}),multiValueRemove:m=>({...m,display:a?"none":"block"})};return x?n.jsx(M,{className:G({"is-invalid":u}),styles:y,classNamePrefix:"react-select",isMulti:o,options:l,onChange:b,placeholder:r,menuPortalTarget:document.body,value:v,getOptionLabel:typeof i=="string"?m=>m[i]:i,getOptionValue:m=>m.id,isDisabled:a,menuPlacement:C,closeMenuOnSelect:g}):n.jsx(F.Controller,{control:s,name:t,rules:e,render:({field:{onChange:m,value:h,onBlur:L}})=>n.jsx(M,{className:G({"is-invalid":u}),styles:y,classNamePrefix:"react-select",isMulti:o,options:l,onBlur:L,onChange:m,placeholder:r,menuPortalTarget:document.body,value:h,getOptionLabel:typeof i=="string"?S=>S[i]:i,getOptionValue:S=>S.id,isDisabled:a,menuPlacement:C,closeMenuOnSelect:g},h?JSON.stringify(h):"reset")})},W=({label:t,name:s,validation:l,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(ce,{control:o,options:e.options??[],validation:l,isInvalid:r&&!!r[s],name:s}),r&&r[s]?n.jsx(p.Form.Control.Feedback,{type:"invalid",children:r[s].message}):null]}),pe=()=>{const t=N();w.useQueryClient();const{enerexIdentifier:s,projectId:l}=T();return w.useMutation({mutationKey:["saveTemplate"],mutationFn:async r=>(r.enerexIdentifier=s??"",r.projectId=l??"",await t.post(`${_.SaveTemplate}`,r))})},B={id:"",name:"New (Blank)"},me=({onSelectItem:t,templateLoading:s,onReset:l})=>{const{register:o,handleSubmit:r,clearErrors:e,setValue:i,control:a,watch:u,reset:v,formState:{errors:b}}=F.useForm({defaultValues:{templateName:"",subject:"",templateType:void 0,template:B},mode:"onChange"}),{data:x,refetch:C,isLoading:g}=se(),[y,m]=c.useState([]),[h,L]=c.useState(),[S,Y]=c.useState(),{mutateAsync:fe,isPending:j}=ie(),{mutateAsync:ge,isPending:$}=pe(),{data:q,isLoading:X}=le(),[J,ye]=c.useState([]);c.useEffect(()=>{q&&ye(q.filter(d=>d.id!==void 0).map(d=>({id:`${d.id}`,name:d.name})))},[q]),c.useEffect(()=>{s(!!j)},[j]),c.useEffect(()=>{m(x??[])},[x]);const he=async d=>{if(L(d),d){if(i("templateName",d?.name),q&&q.find(I=>I.id===d.type)){const I=J.find(k=>k.id===`${d.type}`);I&&i("templateType",I)}e()}else i("templateName",""),i("subject","");const E=await fe({id:d?.id});Y(E||void 0)};c.useEffect(()=>{let d=y.find(E=>E.id===u("template")?.id);he(d)},[u("template")]),c.useEffect(()=>{S&&h?(t(S),i("subject",S.subject??"")):t(void 0)},[S,h,t]);const be=d=>{window.StripoEditorApi.actionsApi.getTemplateData(async E=>{let I=d.template.id,k="";h?.readonly&&(I="",k=d.template.id);const we={enerexIdentifier:"",projectId:"",templateId:I,templateType:d.templateType.id,name:d.templateName,html:E.html,css:E.css,subject:d.templateType.id==="2"?d?.subject??"":"",parent_id:k};await ge(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(W,{label:"Type",control:a,error:b,options:J,required:!0,validation:{required:{value:!0,message:"Select a type"}},...o("templateType")})}),n.jsx(p.Col,{children:n.jsx(W,{label:"Template",control:a,error:b,options:[B,...y.filter(d=>(d.type?.toString()===u("templateType")?.id||d.type===null)&&u("templateType")?.id!=null).map(d=>({id:d.id,name:d.name}))],required:!1,...o("template")})}),n.jsx(p.Col,{children:n.jsx(K,{label:"Name",register:o,error:b,required:!0,name:"templateName",validation:{required:{value:!0,message:"Enter a name"}}})}),u("templateType")?.id==="2"&&n.jsx(p.Col,{children:n.jsx(K,{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||j||$||X,onClick:()=>{L(void 0),v(),l()},children:j||$?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"}),(u("templateType")?.id!=="2"||(h?.id??"")!=="")&&n.jsx(p.Button,{type:"submit",variant:"primary",style:{width:"80px"},disabled:g||j||$||X,children:j||$?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"})]})]})})})})})},ue=({config:t})=>{const[s,l]=c.useState(),[o,r]=c.useState(!1),e=a=>{l(a),window.StripoEditorApi&&window.StripoEditorApi.actionsApi&&window.StripoEditorApi.actionsApi.updateHtmlAndCss(a?.html??P,a?.css??"","")},i=()=>{r(!1),l(void 0),window.StripoEditorApi&&window.StripoEditorApi.actionsApi&&window.StripoEditorApi.actionsApi.updateHtmlAndCss(P,"","")};return n.jsx(Q,{configs:t,children:n.jsx(R,{children:n.jsxs("div",{className:"root-widget",children:[n.jsx(me,{templateLoading:r,onSelectItem:e,onReset:i}),n.jsx(re,{templateHTML:{css:s?.css??"",html:s?.html??P},loading:o,className:"col-span-5"})]})})})};f.EditorWidget=ue,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 = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enerex/template-studio",
3
- "version": "1.1.21",
3
+ "version": "1.1.23",
4
4
  "main": "./dist/enerex-template-editor.umd.js",
5
5
  "module": "./dist/enerex-template-editor.es.js",
6
6
  "types": "./dist/types/index.d.ts",