@enerex/template-studio 1.1.24 → 1.1.26

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