@feedmepos/mf-brand-app-builder 0.5.42-prod → 0.5.43-dev.1

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.
@@ -4,10 +4,10 @@ import { V as C } from "./vue-sonner-CBFYmm8_.js";
4
4
  import { useRoute as R, useRouter as V, RouterLink as L, RouterView as P } from "vue-router";
5
5
  import { g as A } from "./index-D0LOMBBD.js";
6
6
  import { u as N } from "./index-BA2J-Ffh.js";
7
- import { i as $ } from "./useBusinessFeatureFlag-Bug04V-a.js";
7
+ import { i as $ } from "./useBusinessFeatureFlag-2_0Z_IYf.js";
8
8
  const z = { class: "shrink-0 w-64 h-full bg-fm-color-neutral-white border-r border-fm-color-neutral-gray-100 p-[10px] flex flex-col gap-12" }, M = /* @__PURE__ */ d({
9
9
  __name: "NavigationSidebar",
10
- setup(g) {
10
+ setup(v) {
11
11
  const e = R();
12
12
  V();
13
13
  const c = [
@@ -54,7 +54,7 @@ const z = { class: "shrink-0 w-64 h-full bg-fm-color-neutral-white border-r bord
54
54
  }
55
55
  }), E = { class: "relative h-[calc(100vh-56px)] w-screen" }, O = { class: "flex w-full h-full" }, J = /* @__PURE__ */ d({
56
56
  __name: "App",
57
- setup(g) {
57
+ setup(v) {
58
58
  const e = S(), c = N(), o = b(!0);
59
59
  async function s() {
60
60
  var t;
@@ -62,7 +62,7 @@ const z = { class: "shrink-0 w-64 h-full bg-fm-color-neutral-white border-r bord
62
62
  }
63
63
  return x(async () => {
64
64
  console.log(
65
- `Running v0.5.42-prod on ${e.namespace.value}`
65
+ `Running v0.5.43-dev.1 on ${e.namespace.value}`
66
66
  ), e.hideSidebar.value = !0;
67
67
  const t = e.namespace.value === "prod" ? "prod" : "dev";
68
68
  $(t).catch(
@@ -75,7 +75,7 @@ const z = { class: "shrink-0 w-64 h-full bg-fm-color-neutral-white border-r bord
75
75
  () => s(),
76
76
  { immediate: !0 }
77
77
  ), (t, n) => {
78
- const r = u("FmCircularProgress"), v = u("FmOverlay");
78
+ const r = u("FmCircularProgress"), g = u("FmOverlay");
79
79
  return i(), m(f, null, [
80
80
  n[0] || (n[0] = l("link", {
81
81
  href: "https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@24,400,0..1,0",
@@ -88,7 +88,7 @@ const z = { class: "shrink-0 w-64 h-full bg-fm-color-neutral-white border-r bord
88
88
  "close-button": "",
89
89
  duration: 3e3
90
90
  }),
91
- o.value ? (i(), F(v, {
91
+ o.value ? (i(), F(g, {
92
92
  key: 0,
93
93
  "dismiss-away": !1,
94
94
  "prevent-backdrop-event": !1,
@@ -3,12 +3,12 @@ import { B as hr } from "./index-CVVQJJYY.js";
3
3
  import { B as Qn } from "./ColorPicker-RKWzhLBO.js";
4
4
  import { u as eo } from "./index-BA2J-Ffh.js";
5
5
  import { useCoreStore as Kr, useI18n as Qr, RestaurantSelector as to } from "@feedmepos/mf-common";
6
- import { u as ro, b as q } from "./brandkit-C8uulbNE.js";
6
+ import { u as ro, b as q } from "./brandkit-1Te5zV_c.js";
7
7
  import { useDialogChild as ao, useDialog as ea, useSnackbar as ta } from "@feedmepos/ui-library";
8
8
  import { _ as ra } from "./_plugin-vue_export-helper-CHgC5LLL.js";
9
- import { d as no } from "./dayjs.min-hxHfVOnf.js";
9
+ import { d as no } from "./dayjs.min-Bdy6lFTt.js";
10
10
  import { I as va, r as fa } from "./image-D_Djf1PS.js";
11
- import { u as ha } from "./useBusinessFeatureFlag-Bug04V-a.js";
11
+ import { u as ha } from "./useBusinessFeatureFlag-2_0Z_IYf.js";
12
12
  import { v as ga } from "./v4-CKwdnpQf.js";
13
13
  const oo = { class: "fm-typo-en-body-md-400" }, so = { class: "flex gap-8 items-center" }, io = { class: "p-4 relative" }, lo = { class: "shadow-lg rounded-lg p-8" }, uo = {
14
14
  key: 0,
@@ -7,12 +7,12 @@ import { v as Ra } from "./v4-CKwdnpQf.js";
7
7
  import { _ as ho } from "./Icon.vue_vue_type_style_index_0_lang-BcRjQndc.js";
8
8
  import { B as sn } from "./BaDivider-Cp9gfB4r.js";
9
9
  import { useI18n as Ze, useCoreStore as We } from "@feedmepos/mf-common";
10
- import { C as $a, _ as yo, a as vo } from "./main-C9K35EYD.js";
10
+ import { C as $a, _ as yo, a as vo } from "./main-CozSePSS.js";
11
11
  import { useDialog as To, components as xo, useSnackbar as Co } from "@feedmepos/ui-library";
12
12
  import { useRouter as dn } from "vue-router";
13
- import { u as Ia, a as _o, b as wo } from "./brandkit-C8uulbNE.js";
13
+ import { u as Ia, a as _o, b as wo } from "./brandkit-1Te5zV_c.js";
14
14
  import { u as Ea } from "./index-BA2J-Ffh.js";
15
- import { u as Io, F as Eo, a as So } from "./app-DHYTc3vA.js";
15
+ import { u as Io, F as Eo, a as So } from "./app-BlFm1Tkh.js";
16
16
  import { K as Ao, V as Lo } from "./vue-sonner-CBFYmm8_.js";
17
17
  /**!
18
18
  * Sortable 1.14.0
@@ -1,7 +1,7 @@
1
1
  import { defineComponent as y, ref as b, resolveComponent as w, createElementBlock as r, openBlock as s, createVNode as c, createCommentVNode as f, Fragment as C, createElementVNode as i, unref as u } from "vue";
2
2
  import { r as g, I as h } from "./image-D_Djf1PS.js";
3
3
  import { useCoreStore as I } from "@feedmepos/mf-common";
4
- import "./main-C9K35EYD.js";
4
+ import "./main-CozSePSS.js";
5
5
  import { _ as $ } from "./Icon.vue_vue_type_style_index_0_lang-BcRjQndc.js";
6
6
  import { C as k } from "./CircularProgress-DdblYCtV.js";
7
7
  import { v as F } from "./v4-CKwdnpQf.js";
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as b, resolveComponent as y, createBlock as s, openBlock as c, unref as u, withCtx as i, createElementBlock as m, Fragment as x, renderList as g, createElementVNode as p, createVNode as n, resolveDynamicComponent as F } from "vue";
2
- import { F as f } from "./app-DHYTc3vA.js";
2
+ import { F as f } from "./app-BlFm1Tkh.js";
3
3
  const h = { class: "flex justify-end gap-4 items-center w-full py-16 px-12 border-b" }, z = { class: "flex flex-col gap-4 w-full p-12" }, I = /* @__PURE__ */ b({
4
4
  __name: "ListRepeater",
5
5
  props: {
@@ -1,6 +1,6 @@
1
- import { defineComponent as F, ref as _, computed as I, watch as V, resolveComponent as d, createElementBlock as b, openBlock as p, createElementVNode as o, createVNode as m, toDisplayString as B, unref as l, createBlock as q, createCommentVNode as T, withCtx as A } from "vue";
1
+ import { defineComponent as F, ref as _, computed as I, watch as V, resolveComponent as g, createElementBlock as f, openBlock as v, createElementVNode as u, createVNode as d, toDisplayString as B, unref as l, createBlock as q, createCommentVNode as T, withCtx as A } from "vue";
2
2
  import { useCoreStore as R, useI18n as N } from "@feedmepos/mf-common";
3
- import { B as g } from "./index-CVVQJJYY.js";
3
+ import { B as h } from "./index-CVVQJJYY.js";
4
4
  import { K as x } from "./vue-sonner-CBFYmm8_.js";
5
5
  import { r as D, I as j } from "./image-D_Djf1PS.js";
6
6
  import { useSnackbar as E } from "@feedmepos/ui-library";
@@ -505,40 +505,40 @@ const K = new RegExp(/^[a-z0-9][a-z0-9\-]{4,}[a-z0-9]$/), L = [
505
505
  ], M = { class: "w-full flex flex-col gap-40" }, O = { class: "flex flex-col gap-24" }, G = { class: "w-full flex items-center justify-between h-[36px]" }, H = { class: "fm-typo-en-title-sm-600 text-fm-color-typo-primary" }, J = { class: "w-full flex gap-32" }, Q = { class: "relative shrink-0 h-[100px] w-[100px]" }, W = ["src"], X = { class: "absolute -top-8 -right-8 rounded-full h-32 w-32 border border-fm-color-neutral-gray-100 bg-fm-color-neutral-white flex justify-center items-center" }, Y = { class: "w-full flex flex-col gap-24 max-w-[400px]" }, Z = { class: "text-fm-color-typo-secondary" }, le = /* @__PURE__ */ F({
506
506
  __name: "ManagementSettings",
507
507
  setup(ee) {
508
- const e = R(), h = E(), { t: r } = N(), v = _(!0), s = _({
508
+ const e = R(), w = E(), { t: r } = N(), b = _(!0), s = _({
509
509
  name: "",
510
510
  url: "",
511
511
  thumbnail: ""
512
512
  }), z = I(
513
513
  () => "https://{slug}.feedmedev.vip".replace("https://{slug}", "")
514
514
  );
515
- function f(t) {
515
+ function y(a) {
516
516
  var n;
517
- const a = (n = e.currentBusiness.value) == null ? void 0 : n._id;
518
- return a ? t || a : "";
517
+ const t = (n = e.currentBusiness.value) == null ? void 0 : n._id;
518
+ return t ? a || t : "";
519
519
  }
520
- function $(t) {
520
+ function C(a) {
521
521
  var n;
522
- const a = (n = e.currentBusiness.value) == null ? void 0 : n._id;
523
- return !t || t === a ? "" : t;
522
+ const t = (n = e.currentBusiness.value) == null ? void 0 : n._id;
523
+ return !a || a === t ? "" : a;
524
524
  }
525
- function C() {
526
- var t;
525
+ function $() {
526
+ var a;
527
527
  navigator.clipboard.writeText(
528
528
  "https://{slug}.feedmedev.vip".replace(
529
529
  "{slug}",
530
- f((t = e.currentBusiness.value) == null ? void 0 : t.url)
530
+ y((a = e.currentBusiness.value) == null ? void 0 : a.url)
531
531
  )
532
532
  ).then(() => {
533
- h.open(
533
+ w.open(
534
534
  {
535
535
  message: r("brand.settings.management.toast.copiedUrl"),
536
536
  type: "success"
537
537
  },
538
538
  1500
539
539
  );
540
- }).catch((a) => {
541
- h.open(
540
+ }).catch((t) => {
541
+ w.open(
542
542
  {
543
543
  message: r("brand.settings.management.toast.failedToCopyUrl"),
544
544
  type: "error"
@@ -550,35 +550,38 @@ const K = new RegExp(/^[a-z0-9][a-z0-9\-]{4,}[a-z0-9]$/), L = [
550
550
  function P() {
551
551
  x.promise(
552
552
  async () => {
553
- var a;
554
- const t = f(s.value.url);
555
- return s.value.url != ((a = e.currentBusiness.value) == null ? void 0 : a.url) && await g.setShortUrl(
553
+ var o, p;
554
+ const a = y(s.value.url), t = ((o = e.currentBusiness.value) == null ? void 0 : o.url) ?? "", n = s.value.url != ((p = e.currentBusiness.value) == null ? void 0 : p.url), m = await h.updateBusinessProfile(
555
+ e.currentBusiness.value._id,
556
+ {
557
+ name: s.value.name,
558
+ url: s.value.url,
559
+ thumbnail: e.currentBusiness.value.thumbnail,
560
+ coverPhoto: e.currentBusiness.value.coverPhoto
561
+ }
562
+ ).catch((c) => {
563
+ throw { message: c.message };
564
+ });
565
+ return n && await h.setShortUrl(
556
566
  s.value.url,
557
- e.currentBusiness.value.url ?? "",
567
+ t,
558
568
  e.currentBusiness.value._id
559
- ).catch((n) => {
560
- throw { message: n.message };
561
- }), await g.updateBusinessProfile(e.currentBusiness.value._id, {
562
- name: s.value.name,
563
- url: s.value.url,
564
- thumbnail: e.currentBusiness.value.thumbnail,
565
- coverPhoto: e.currentBusiness.value.coverPhoto
566
- }).then((n) => (e.currentBusiness.value.name = s.value.name, e.currentBusiness.value.url = t, n)).catch((n) => {
567
- throw { message: n.message };
568
- });
569
+ ).catch((c) => {
570
+ console.warn("short-url cache warm failed; it will self-heal", c);
571
+ }), e.currentBusiness.value.name = s.value.name, e.currentBusiness.value.url = a, m;
569
572
  },
570
573
  {
571
574
  loading: r("brand.settings.management.toast.saving"),
572
575
  success: () => r("brand.settings.management.toast.saved"),
573
- error: (t) => t.message ?? r("brand.settings.management.toast.errorSaving")
576
+ error: (a) => a.message ?? r("brand.settings.management.toast.errorSaving")
574
577
  }
575
578
  );
576
579
  }
577
580
  function U() {
578
- const t = s.value.thumbnail.split("/").pop();
579
- t && x.promise(
581
+ const a = s.value.thumbnail.split("/").pop();
582
+ a && x.promise(
580
583
  async () => {
581
- await j.deleteImage(e.currentBusiness.value._id, t), await g.updateBusinessProfile(e.currentBusiness.value._id, {
584
+ await j.deleteImage(e.currentBusiness.value._id, a), await h.updateBusinessProfile(e.currentBusiness.value._id, {
582
585
  name: s.value.name,
583
586
  url: s.value.url,
584
587
  thumbnail: null,
@@ -592,72 +595,72 @@ const K = new RegExp(/^[a-z0-9][a-z0-9\-]{4,}[a-z0-9]$/), L = [
592
595
  }
593
596
  );
594
597
  }
595
- function S(t) {
596
- var n, c;
597
- const a = ((n = t.dataTransfer) == null ? void 0 : n.files[0]) ?? ((c = t.target) == null ? void 0 : c.files[0]);
598
+ function S(a) {
599
+ var n, m;
600
+ const t = ((n = a.dataTransfer) == null ? void 0 : n.files[0]) ?? ((m = a.target) == null ? void 0 : m.files[0]);
598
601
  j.uploadImage(
599
602
  e.currentBusiness.value._id,
600
- `thumbnail/${(/* @__PURE__ */ new Date()).toISOString()}.${a.name.split(".").pop()}`,
601
- a
602
- ).then(async (u) => {
603
- await g.updateBusinessProfile(e.currentBusiness.value._id, {
603
+ `thumbnail/${(/* @__PURE__ */ new Date()).toISOString()}.${t.name.split(".").pop()}`,
604
+ t
605
+ ).then(async (o) => {
606
+ await h.updateBusinessProfile(e.currentBusiness.value._id, {
604
607
  name: s.value.name,
605
608
  url: s.value.url,
606
- thumbnail: `https://image.feedmedev.cc/business/${e.currentBusiness.value._id}/${u.imagePath}`,
609
+ thumbnail: `https://image.feedmedev.cc/business/${e.currentBusiness.value._id}/${o.imagePath}`,
607
610
  coverPhoto: e.currentBusiness.value.coverPhoto
608
- }), e.currentBusiness.value.thumbnail = `https://image.feedmedev.cc/business/${e.currentBusiness.value._id}/${u.imagePath}`, s.value.thumbnail = `https://image.feedmedev.cc/business/${e.currentBusiness.value._id}/${u.imagePath}`;
611
+ }), e.currentBusiness.value.thumbnail = `https://image.feedmedev.cc/business/${e.currentBusiness.value._id}/${o.imagePath}`, s.value.thumbnail = `https://image.feedmedev.cc/business/${e.currentBusiness.value._id}/${o.imagePath}`;
609
612
  });
610
613
  }
611
614
  return V(
612
615
  () => e.currentBusiness.value,
613
616
  () => {
614
- var t, a, n;
615
- s.value.name = ((t = e.currentBusiness.value) == null ? void 0 : t.name) ?? "", s.value.url = $((a = e.currentBusiness.value) == null ? void 0 : a.url), s.value.thumbnail = ((n = e.currentBusiness.value) == null ? void 0 : n.thumbnail) ?? "";
617
+ var a, t, n;
618
+ s.value.name = ((a = e.currentBusiness.value) == null ? void 0 : a.name) ?? "", s.value.url = C((t = e.currentBusiness.value) == null ? void 0 : t.url), s.value.thumbnail = ((n = e.currentBusiness.value) == null ? void 0 : n.thumbnail) ?? "";
616
619
  },
617
620
  { immediate: !0 }
618
- ), (t, a) => {
619
- var y, k;
620
- const n = d("FmButton"), c = d("FmAvatar"), u = d("FmIcon"), w = d("FmTextField");
621
- return p(), b("div", M, [
622
- o("div", O, [
623
- o("div", G, [
624
- o("h2", H, B(l(r)("brand.settings.management.details")), 1),
625
- m(n, {
626
- disabled: v.value,
621
+ ), (a, t) => {
622
+ var c, k;
623
+ const n = g("FmButton"), m = g("FmAvatar"), o = g("FmIcon"), p = g("FmTextField");
624
+ return v(), f("div", M, [
625
+ u("div", O, [
626
+ u("div", G, [
627
+ u("h2", H, B(l(r)("brand.settings.management.details")), 1),
628
+ d(n, {
629
+ disabled: b.value,
627
630
  label: l(r)("brand.settings.management.save"),
628
631
  onClick: P
629
632
  }, null, 8, ["disabled", "label"])
630
633
  ]),
631
- o("div", J, [
632
- o("div", Q, [
633
- s.value.thumbnail ? (p(), b("img", {
634
+ u("div", J, [
635
+ u("div", Q, [
636
+ s.value.thumbnail ? (v(), f("img", {
634
637
  key: 0,
635
638
  class: "h-full w-full rounded-full",
636
639
  src: l(D)(s.value.thumbnail)
637
- }, null, 8, W)) : (p(), q(c, {
640
+ }, null, 8, W)) : (v(), q(m, {
638
641
  key: 1,
639
- name: ((y = l(e).currentBusiness.value) == null ? void 0 : y.name) ?? "",
642
+ name: ((c = l(e).currentBusiness.value) == null ? void 0 : c.name) ?? "",
640
643
  class: "h-full w-full !fm-typo-en-title-md-600 bg-fm-color-primary-oats text-fm-color-primary"
641
644
  }, null, 8, ["name"])),
642
- s.value.thumbnail ? (p(), b("button", {
645
+ s.value.thumbnail ? (v(), f("button", {
643
646
  key: 2,
644
647
  class: "absolute -left-8 -top-8 rounded-full h-32 w-32 bg-fm-color-system-error-300 flex items-center justify-center",
645
648
  onClick: U
646
649
  }, [
647
- m(u, {
650
+ d(o, {
648
651
  size: "sm",
649
652
  name: "close",
650
653
  color: "typo-white"
651
654
  })
652
655
  ])) : T("", !0),
653
- o("button", X, [
654
- o("input", {
656
+ u("button", X, [
657
+ u("input", {
655
658
  class: "absolute top-0 left-0 h-32 w-32 opacity-0 cursor-pointer",
656
659
  type: "file",
657
660
  accept: "image/*",
658
661
  onChange: S
659
662
  }, null, 32),
660
- m(u, {
663
+ d(o, {
661
664
  size: "md",
662
665
  name: "edit",
663
666
  color: "neutral-black",
@@ -665,24 +668,24 @@ const K = new RegExp(/^[a-z0-9][a-z0-9\-]{4,}[a-z0-9]$/), L = [
665
668
  })
666
669
  ])
667
670
  ]),
668
- o("div", Y, [
669
- m(w, {
671
+ u("div", Y, [
672
+ d(p, {
670
673
  class: "w-full",
671
674
  label: l(r)("brand.settings.management.businessName"),
672
675
  modelValue: s.value.name,
673
676
  "onUpdate:modelValue": [
674
- a[0] || (a[0] = (i) => s.value.name = i),
675
- a[1] || (a[1] = (i) => v.value = !1)
677
+ t[0] || (t[0] = (i) => s.value.name = i),
678
+ t[1] || (t[1] = (i) => b.value = !1)
676
679
  ]
677
680
  }, null, 8, ["label", "modelValue"]),
678
- m(w, {
681
+ d(p, {
679
682
  class: "w-full",
680
683
  label: l(r)("brand.settings.management.url"),
681
684
  placeholder: (k = l(e).currentBusiness.value) == null ? void 0 : k._id,
682
685
  modelValue: s.value.url,
683
686
  "onUpdate:modelValue": [
684
- a[2] || (a[2] = (i) => s.value.url = i),
685
- a[3] || (a[3] = (i) => v.value = !1)
687
+ t[2] || (t[2] = (i) => s.value.url = i),
688
+ t[3] || (t[3] = (i) => b.value = !1)
686
689
  ],
687
690
  rules: [
688
691
  (i) => !i || l(K).test(i) || l(r)("brand.settings.management.validation.minCharacters"),
@@ -690,11 +693,11 @@ const K = new RegExp(/^[a-z0-9][a-z0-9\-]{4,}[a-z0-9]$/), L = [
690
693
  ]
691
694
  }, {
692
695
  append: A(() => [
693
- o("span", Z, B(z.value), 1),
694
- m(n, {
696
+ u("span", Z, B(z.value), 1),
697
+ d(n, {
695
698
  icon: "content_copy",
696
699
  variant: "plain",
697
- onClick: C
700
+ onClick: $
698
701
  })
699
702
  ]),
700
703
  _: 1
@@ -3,8 +3,8 @@ import { u as Z } from "./index-Bk6TOZrx.js";
3
3
  import { useCoreStore as q, useI18n as b } from "@feedmepos/mf-common";
4
4
  import { p as y } from "./views-BDWw3w14.js";
5
5
  import { useRouter as X } from "vue-router";
6
- import { d as p } from "./dayjs.min-hxHfVOnf.js";
7
- import { g as V, c as _, u as $ } from "./app-DHYTc3vA.js";
6
+ import { d as p } from "./dayjs.min-Bdy6lFTt.js";
7
+ import { g as V, c as _, u as $ } from "./app-BlFm1Tkh.js";
8
8
  import { useDialog as oo, components as eo } from "@feedmepos/ui-library";
9
9
  import { K as m } from "./vue-sonner-CBFYmm8_.js";
10
10
  var z = { exports: {} };