@enerex/template-studio 1.1.22 → 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 ee, useState as S, useEffect as _ } from "react";
3
- import { QueryClient as pe, QueryClientProvider as me, useQuery as O, useMutation as te, useQueryClient as ue } from "@tanstack/react-query";
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
4
  import V from "axios";
5
- import { Spinner as U, Form as E, Card as K, Row as z, Col as $, Button as G } from "react-bootstrap";
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 Q 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
- `, ne = 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
- ne.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
@@ -387,11 +387,11 @@ const D = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
387
387
  }
388
388
  );
389
389
  }, v = () => {
390
- const t = ee(ne);
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
- }, re = (t = "", r) => ({ get: async (n, e) => {
394
+ }, ne = (t = "", r) => ({ get: async (n, e) => {
395
395
  try {
396
396
  const a = await V.get(
397
397
  `${t}${n}`,
@@ -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
- }, se = I.createContext({
424
+ }, re = I.createContext({
425
425
  get: () => {
426
426
  throw new Error("HttpClientContext.get not implemented");
427
427
  },
@@ -434,11 +434,11 @@ const D = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
434
434
  client_id: r,
435
435
  "x-api-key": i
436
436
  }
437
- }, { get: n, post: e } = re(k.API_BASE_URL, l);
438
- return /* @__PURE__ */ s(se.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 = ee(se);
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");
@@ -462,7 +462,7 @@ const D = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
462
462
  ExcludeCategory: "/Template/GetExcludeCategories/",
463
463
  SaveTemplate: "/Template/save-update/",
464
464
  TemplateTypes: "/Template/TemplateTypes/"
465
- }, ve = () => {
465
+ }, Te = () => {
466
466
  const t = A(), { enerexIdentifier: r, projectId: i } = v();
467
467
  return O({
468
468
  queryKey: ["getTemplateTags"],
@@ -470,7 +470,7 @@ const D = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
470
470
  `${P.MergeTags}${i}/${r}`
471
471
  )
472
472
  });
473
- }, Te = () => {
473
+ }, ve = () => {
474
474
  const t = A(), { enerexIdentifier: r, projectId: i } = v();
475
475
  return O({
476
476
  queryKey: ["getExcludeCategory"],
@@ -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 } = re(), { data: n } = ve(), { data: e } = Te(), [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 } = v(), 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
- }, W = ({
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,
@@ -577,7 +577,7 @@ const D = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:
577
577
  });
578
578
  }, Ie = () => {
579
579
  const t = A(), { enerexIdentifier: r, projectId: i } = v();
580
- return te({
580
+ return ee({
581
581
  mutationKey: ["getTemplate"],
582
582
  mutationFn: async ({ id: n }) => {
583
583
  if (n)
@@ -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 Y;
607
+ var W;
608
608
  function Ne() {
609
- return Y || (Y = 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 X = /* @__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 X = /* @__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 X = /* @__PURE__ */ Ee(_e), Ae = ({
692
692
  display: o ? "none" : "block"
693
693
  })
694
694
  };
695
- return b ? /* @__PURE__ */ s(
696
- Q,
695
+ return h ? /* @__PURE__ */ s(
696
+ G,
697
697
  {
698
- className: X({
698
+ className: Y({
699
699
  "is-invalid": p
700
700
  }),
701
701
  styles: u,
@@ -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: 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 X = /* @__PURE__ */ Ee(_e), Ae = ({
718
718
  control: r,
719
719
  name: t,
720
720
  rules: e,
721
- render: ({ field: { onChange: c, value: g, onBlur: q } }) => /* @__PURE__ */ s(
722
- Q,
721
+ render: ({ field: { onChange: c, value: g, onBlur: L } }) => /* @__PURE__ */ s(
722
+ G,
723
723
  {
724
- className: X({
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: q,
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" ? (T) => T[a] : a,
737
- getOptionValue: (T) => T.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
- }, J = ({
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 X = /* @__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();
772
+ me();
773
773
  const { enerexIdentifier: r, projectId: i } = v();
774
- return te({
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
- }, Z = { 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,23 +790,23 @@ const X = /* @__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: Z
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, q] = S(), [T, H] = S(), { mutateAsync: ie, isPending: N } = Ie(), { mutateAsync: ae, isPending: L } = Pe(), { data: j, isLoading: M } = Se(), [F, le] = 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 && le(
809
+ j && ae(
810
810
  j.filter((d) => d.id !== void 0).map((d) => ({
811
811
  id: `${d.id}`,
812
812
  name: d.name
@@ -815,32 +815,32 @@ const X = /* @__PURE__ */ Ee(_e), Ae = ({
815
815
  }, [j]), _(() => {
816
816
  r(!!N);
817
817
  }, [N]), _(() => {
818
- c(b ?? []);
819
- }, [b]);
820
- const oe = async (d) => {
821
- if (q(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
825
  }
826
826
  e();
827
827
  } else
828
- a("templateName", "");
829
- const x = await ie({ id: d?.id });
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
- oe(d);
834
+ le(d);
835
835
  }, [p("template")]), _(() => {
836
- t(T && g ? T : void 0);
837
- }, [T, g, t]);
838
- const de = (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 ce = {
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 X = /* @__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
- await ae(ce) && (e(), h(), w());
854
+ await ie(de) && (e(), y(), b());
855
855
  }
856
856
  );
857
857
  };
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(de), children: /* @__PURE__ */ y("div", { className: "template-list-container gap-3", children: [
859
- /* @__PURE__ */ y(z, { children: [
860
- /* @__PURE__ */ s($, { md: 3, children: /* @__PURE__ */ s(
861
- J,
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($, { md: 3, children: /* @__PURE__ */ s(
878
- J,
879
- {
880
- label: "Template",
881
- control: o,
882
- error: f,
883
- options: [
884
- Z,
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($, { md: 3, children: /* @__PURE__ */ s(
897
- W,
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
- $,
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,
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),Q=({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")}}),Z=({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})},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))),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/"},te=()=>{const t=N(),{enerexIdentifier:s,projectId:i}=T();return w.useQuery({queryKey:["getTemplateTags"],queryFn:async r=>await t.get(`${_.MergeTags}${i}/${s}`)})},ne=()=>{const t=N(),{enerexIdentifier:s,projectId:i}=T();return w.useQuery({queryKey:["getExcludeCategory"],queryFn:async r=>await t.get(`${_.ExcludeCategory}${i}/${s}`)})},re=({templateHTML:t,className:s="",loading:i=!1})=>{const{post:o}=H(),{data:r}=te(),{data:e}=ne(),[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:ee(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]}),se=()=>{const t=N(),{enerexIdentifier:s,projectId:i}=T();return w.useQuery({queryKey:["getTemplatesList"],queryFn:async r=>await t.get(`${_.Template_list}${i}/${s}`)})},ie=()=>{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}`)}})},le=()=>{const t=N(),{enerexIdentifier:s,projectId:i}=T();return w.useQuery({queryKey:["getTemplateTypes"],queryFn:async r=>await t.get(`${_.TemplateTypes}${s}/${i}`)})};function oe(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 ae(){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 de=ae();const G=oe(de),ce=({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(ce,{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]}),pe=()=>{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)"},me=({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}=se(),[y,m]=c.useState([]),[h,L]=c.useState(),[S,B]=c.useState(),{mutateAsync:fe,isPending:q}=ie(),{mutateAsync:ge,isPending:$}=pe(),{data:P,isLoading:X}=le(),[J,ye]=c.useState([]);c.useEffect(()=>{P&&ye(P.filter(d=>d.id!==void 0).map(d=>({id:`${d.id}`,name:d.name})))},[P]),c.useEffect(()=>{s(!!q)},[q]),c.useEffect(()=>{m(x??[])},[x]);const he=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)}e()}else l("templateName","");const E=await fe({id:d?.id});B(E||void 0)};c.useEffect(()=>{let d=y.find(E=>E.id===u("template")?.id);he(d)},[u("template")]),c.useEffect(()=>{t(S&&h?S:void 0)},[S,h,t]);const be=d=>{window.StripoEditorApi.actionsApi.getTemplateData(async E=>{let I=d.template.id,k="";h?.type===null&&(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?.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.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"})})})]})})})})},ue=({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(Q,{configs:t,children:n.jsx(R,{children:n.jsxs("div",{className:"root-widget",children:[n.jsx(me,{templateLoading:r,onSelectItem:e,onReset:l}),n.jsx(re,{templateHTML:{css:s?.css??"",html:s?.html??A},loading:o,className:"col-span-5"})]})})})};f.EditorWidget=ue,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.22",
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",