@feedmepos/mf-menu 0.31.11-prod → 0.31.12-beta.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.
- package/dist/{App-Dfi0zOsF.js → App-DUaVnMKY.js} +6 -6
- package/dist/{ApplyProduct.vue_vue_type_script_setup_true_lang-dWRraNPC.js → ApplyProduct.vue_vue_type_script_setup_true_lang-BQjH58c8.js} +2 -2
- package/dist/{Catalog-dJ_2wE-J.js → Catalog-BBX3Pq4h.js} +5 -5
- package/dist/{Category-DvzBTtSt.js → Category-CdQRh_dy.js} +5 -5
- package/dist/{Category-BcBmkyFo.js → Category-CslEpONp.js} +4 -4
- package/dist/{CookingGuide-BnxJTlou.js → CookingGuide-DKv5bs5r.js} +3 -3
- package/dist/{CustomAttributeChip.vue_vue_type_script_setup_true_lang-CLAYCioZ.js → CustomAttributeChip.vue_vue_type_script_setup_true_lang-BZmxz1MA.js} +1 -1
- package/dist/{Group-BFbPDjW1.js → Group-CXV2YABG.js} +3 -3
- package/dist/{Group-YAUoZc4h.js → Group-I5Yg2wzg.js} +1 -1
- package/dist/{Group.vue_vue_type_script_setup_true_lang-CQl3CWqY.js → Group.vue_vue_type_script_setup_true_lang-DZWJw7HR.js} +7 -7
- package/dist/{GroupMarkupPriceDialog.vue_vue_type_script_setup_true_lang-Doek0-j6.js → GroupMarkupPriceDialog.vue_vue_type_script_setup_true_lang-Dv_XaQh4.js} +3 -3
- package/dist/{ImportProductDialog.vue_vue_type_script_setup_true_lang-BfQlsQ7c.js → ImportProductDialog.vue_vue_type_script_setup_true_lang-BHiI2JNW.js} +1267 -1267
- package/dist/{Ingredient-D4EXC9Bf.js → Ingredient-Bjfd73Gs.js} +3 -3
- package/dist/{InventoryBinding.vue_vue_type_script_setup_true_lang-C66-kUAs.js → InventoryBinding.vue_vue_type_script_setup_true_lang-BY8E-MXM.js} +1052 -1052
- package/dist/{LinkProductSideSheet-CDhJgOvy.js → LinkProductSideSheet-CexHNJkJ.js} +1 -1
- package/dist/{MenuSetting-CeQAtyFu.js → MenuSetting-KUUyO4fI.js} +4 -4
- package/dist/{PrintRoute-C7AhzUYZ.js → PrintRoute-B1vwUMqf.js} +3 -3
- package/dist/{Product-CWqg0N2A.js → Product-CxVknZIk.js} +1 -1
- package/dist/{Product.vue_vue_type_script_setup_true_lang-BN2-Tp1i.js → Product.vue_vue_type_script_setup_true_lang-CptNLcjQ.js} +11 -11
- package/dist/{Products-Ds4vfE7z.js → Products-Bfy4uouC.js} +521 -521
- package/dist/{Publish-DaY3YcVq.js → Publish-GdVl9zk1.js} +3 -3
- package/dist/{Recipe-BXPZcplq.js → Recipe-6w19ZJJK.js} +4 -4
- package/dist/{Scheduler-DaqJcXDr.js → Scheduler-C05ezynD.js} +3 -3
- package/dist/{ServingSequence-eNtOX2KS.js → ServingSequence-CZCg-JF_.js} +3 -3
- package/dist/{Setting-b6cKOlzO.js → Setting-BbWTF4XX.js} +4 -4
- package/dist/{Subcategory-9crl-RxJ.js → Subcategory-CmrTtyid.js} +4 -4
- package/dist/{Takeaway-Dn83ULVR.js → Takeaway-D2-FtYgp.js} +1 -1
- package/dist/{Takeaway-BVLXs79x.js → Takeaway-DwMEWLO2.js} +4 -4
- package/dist/{Takeaway.vue_vue_type_script_setup_true_lang-CFCvnaPR.js → Takeaway.vue_vue_type_script_setup_true_lang-DkdxfKzw.js} +5 -5
- package/dist/{TreeEditorOpenner.vue_vue_type_script_setup_true_lang-BlZZVcjm.js → TreeEditorOpenner.vue_vue_type_script_setup_true_lang-EhXKdsxk.js} +13 -13
- package/dist/{Unit-DLoy6lAQ.js → Unit-SFOSdJrF.js} +2 -2
- package/dist/{Variant-IfKi-Sc8.js → Variant-DLAHAM6_.js} +3 -3
- package/dist/{_id_-BxFQNyZX.js → _id_-C_K_0jJR.js} +9 -9
- package/dist/{app-DAVxohO7.js → app-C3zqJmd-.js} +1 -1
- package/dist/{app-Buz7Hr7K.js → app-CN-sHkMr.js} +56 -56
- package/dist/app.js +1 -1
- package/dist/apps/mf-menu/tsconfig.app.tsbuildinfo +1 -1
- package/dist/assets/{linked-status-DJdzo5PV.js → linked-status-BClKFg5a.js} +2 -2
- package/dist/assets/{override-menu-D3_blPtq.js → override-menu-Cs7sEWri.js} +2 -2
- package/dist/assets/{validate-menu-D_K9_jhy.js → validate-menu-koi7hTe7.js} +2 -2
- package/dist/{catalog-DywMNhqu.js → catalog-CSQ_MVB4.js} +1 -1
- package/dist/{catalogSetting-DAzjpMy_.js → catalogSetting-Dd8hg6lc.js} +1 -1
- package/dist/{category-scszBlCD.js → category-DMdeZtAC.js} +1 -1
- package/dist/{currency-D5HsYV_o.js → currency-G39so7E9.js} +1 -1
- package/dist/{dayjs.min-CuZlmzqU.js → dayjs.min-Curl0gja.js} +1 -1
- package/dist/{index-DwaW__Il.js → index-0al5q1KP.js} +1 -1
- package/dist/{index-Dd4zgUww.js → index-B8pkovx3.js} +2 -2
- package/dist/{index-CSnuNvkE.js → index-DeVPhG1v.js} +3 -3
- package/dist/{item-BJwsv9wH.js → item-fQKCg9Fj.js} +932 -932
- package/dist/{menu-TxdbkYDV.js → menu-DPhZMKfP.js} +132 -132
- package/dist/{menu-Cy7Z9Uon.js → menu-DiOTTn-g.js} +1 -1
- package/dist/{priceTier-BWQr4Tp_.js → priceTier-ZK9n29An.js} +1 -1
- package/dist/{scheduler-Cz7gGSkk.js → scheduler-DSVUVnRa.js} +3 -3
- package/dist/{subcategory-anzAD_yZ.js → subcategory-Ozr1vPRf.js} +83 -83
- package/dist/{toExcel-CLb9bvrO.js → toExcel-BfCJ430y.js} +2 -2
- package/dist/{unit-Dkqxq0ey.js → unit-iSgNkRTG.js} +1 -1
- package/package.json +1 -1
- package/dist/packages/shared/src/components/form/RestaurantSelector.vue.d.ts +0 -37
- package/dist/packages/shared/src/components/form/RestaurantSelectorMultiple.vue.d.ts +0 -22
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ref as
|
|
1
|
+
import { ref as T, computed as ee, defineComponent as re, createElementBlock as O, openBlock as A, Fragment as me, renderList as ge, normalizeClass as Ze, createElementVNode as R, createCommentVNode as _e, toDisplayString as K, pushScopeId as et, popScopeId as tt, watch as be, nextTick as ye, onMounted as at, onBeforeUnmount as it, normalizeStyle as ot, renderSlot as nt, resolveComponent as rt, createBlock as lt, withCtx as st, createVNode as ct, defineAsyncComponent as ut } from "vue";
|
|
2
2
|
import { useBreakpoints as dt } from "@feedmepos/ui-library";
|
|
3
3
|
let j;
|
|
4
4
|
const pt = new Uint8Array(16);
|
|
@@ -31,7 +31,7 @@ function Pe(e, t) {
|
|
|
31
31
|
const { toString: yt } = Object.prototype, { getPrototypeOf: le } = Object, z = /* @__PURE__ */ ((e) => (t) => {
|
|
32
32
|
const a = yt.call(t);
|
|
33
33
|
return e[a] || (e[a] = a.slice(8, -1).toLowerCase());
|
|
34
|
-
})(/* @__PURE__ */ Object.create(null)), x = (e) => (e = e.toLowerCase(), (t) => z(t) === e), V = (e) => (t) => typeof t === e, { isArray:
|
|
34
|
+
})(/* @__PURE__ */ Object.create(null)), x = (e) => (e = e.toLowerCase(), (t) => z(t) === e), V = (e) => (t) => typeof t === e, { isArray: N } = Array, I = V("undefined");
|
|
35
35
|
function ht(e) {
|
|
36
36
|
return e !== null && !I(e) && e.constructor !== null && !I(e.constructor) && w(e.constructor.isBuffer) && e.constructor.isBuffer(e);
|
|
37
37
|
}
|
|
@@ -54,7 +54,7 @@ function D(e, t, { allOwnKeys: a = !1 } = {}) {
|
|
|
54
54
|
if (e === null || typeof e > "u")
|
|
55
55
|
return;
|
|
56
56
|
let i, o;
|
|
57
|
-
if (typeof e != "object" && (e = [e]),
|
|
57
|
+
if (typeof e != "object" && (e = [e]), N(e))
|
|
58
58
|
for (i = 0, o = e.length; i < o; i++)
|
|
59
59
|
t.call(null, e[i], i, e);
|
|
60
60
|
else {
|
|
@@ -77,7 +77,7 @@ const Ue = typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : typ
|
|
|
77
77
|
function te() {
|
|
78
78
|
const { caseless: e } = Ie(this) && this || {}, t = {}, a = (i, o) => {
|
|
79
79
|
const n = e && Ne(t, o) || o;
|
|
80
|
-
B(t[n]) && B(i) ? t[n] = te(t[n], i) : B(i) ? t[n] = te({}, i) :
|
|
80
|
+
B(t[n]) && B(i) ? t[n] = te(t[n], i) : B(i) ? t[n] = te({}, i) : N(i) ? t[n] = i.slice() : t[n] = i;
|
|
81
81
|
};
|
|
82
82
|
for (let i = 0, o = arguments.length; i < o; i++)
|
|
83
83
|
arguments[i] && D(arguments[i], a);
|
|
@@ -107,7 +107,7 @@ const Pt = (e, t, a, { allOwnKeys: i } = {}) => (D(t, (o, n) => {
|
|
|
107
107
|
}, It = (e) => {
|
|
108
108
|
if (!e)
|
|
109
109
|
return null;
|
|
110
|
-
if (
|
|
110
|
+
if (N(e))
|
|
111
111
|
return e;
|
|
112
112
|
let t = e.length;
|
|
113
113
|
if (!Te(t))
|
|
@@ -161,7 +161,7 @@ const Pt = (e, t, a, { allOwnKeys: i } = {}) => (D(t, (o, n) => {
|
|
|
161
161
|
a[n] = !0;
|
|
162
162
|
});
|
|
163
163
|
};
|
|
164
|
-
return
|
|
164
|
+
return N(e) ? i(e) : i(String(e).split(t)), a;
|
|
165
165
|
}, Vt = () => {
|
|
166
166
|
}, Gt = (e, t) => (e = +e, Number.isFinite(e) ? e : t), Y = "abcdefghijklmnopqrstuvwxyz", ve = "0123456789", Le = {
|
|
167
167
|
DIGIT: ve,
|
|
@@ -184,7 +184,7 @@ const Wt = (e) => {
|
|
|
184
184
|
return;
|
|
185
185
|
if (!("toJSON" in i)) {
|
|
186
186
|
t[o] = i;
|
|
187
|
-
const n =
|
|
187
|
+
const n = N(i) ? [] : {};
|
|
188
188
|
return D(i, (r, c) => {
|
|
189
189
|
const p = a(r, o + 1);
|
|
190
190
|
!I(p) && (n[c] = p);
|
|
@@ -195,7 +195,7 @@ const Wt = (e) => {
|
|
|
195
195
|
};
|
|
196
196
|
return a(e, 0);
|
|
197
197
|
}, Kt = x("AsyncFunction"), Yt = (e) => e && (G(e) || w(e)) && w(e.then) && w(e.catch), l = {
|
|
198
|
-
isArray:
|
|
198
|
+
isArray: N,
|
|
199
199
|
isArrayBuffer: qe,
|
|
200
200
|
isBuffer: ht,
|
|
201
201
|
isFormData: Ct,
|
|
@@ -635,7 +635,7 @@ const ue = ce, pa = l.toObjectSet([
|
|
|
635
635
|
o = n.indexOf(":"), a = n.substring(0, o).trim().toLowerCase(), i = n.substring(o + 1).trim(), !(!a || t[a] && pa[a]) && (a === "set-cookie" ? t[a] ? t[a].push(i) : t[a] = [i] : t[a] = t[a] ? t[a] + ", " + i : i);
|
|
636
636
|
}), t;
|
|
637
637
|
}, Se = Symbol("internals");
|
|
638
|
-
function
|
|
638
|
+
function U(e) {
|
|
639
639
|
return e && String(e).trim().toLowerCase();
|
|
640
640
|
}
|
|
641
641
|
function F(e) {
|
|
@@ -680,7 +680,7 @@ class J {
|
|
|
680
680
|
set(t, a, i) {
|
|
681
681
|
const o = this;
|
|
682
682
|
function n(c, p, d) {
|
|
683
|
-
const s =
|
|
683
|
+
const s = U(p);
|
|
684
684
|
if (!s)
|
|
685
685
|
throw new Error("header name must be a non-empty string");
|
|
686
686
|
const m = l.findKey(o, s);
|
|
@@ -690,7 +690,7 @@ class J {
|
|
|
690
690
|
return l.isPlainObject(t) || t instanceof this.constructor ? r(t, a) : l.isString(t) && (t = t.trim()) && !_a(t) ? r(ma(t), a) : t != null && n(a, t, i), this;
|
|
691
691
|
}
|
|
692
692
|
get(t, a) {
|
|
693
|
-
if (t =
|
|
693
|
+
if (t = U(t), t) {
|
|
694
694
|
const i = l.findKey(this, t);
|
|
695
695
|
if (i) {
|
|
696
696
|
const o = this[i];
|
|
@@ -707,7 +707,7 @@ class J {
|
|
|
707
707
|
}
|
|
708
708
|
}
|
|
709
709
|
has(t, a) {
|
|
710
|
-
if (t =
|
|
710
|
+
if (t = U(t), t) {
|
|
711
711
|
const i = l.findKey(this, t);
|
|
712
712
|
return !!(i && this[i] !== void 0 && (!a || Q(this, this[i], i, a)));
|
|
713
713
|
}
|
|
@@ -717,7 +717,7 @@ class J {
|
|
|
717
717
|
const i = this;
|
|
718
718
|
let o = !1;
|
|
719
719
|
function n(r) {
|
|
720
|
-
if (r =
|
|
720
|
+
if (r = U(r), r) {
|
|
721
721
|
const c = l.findKey(i, r);
|
|
722
722
|
c && (!a || Q(i, i[c], c, a)) && (delete i[c], o = !0);
|
|
723
723
|
}
|
|
@@ -776,7 +776,7 @@ class J {
|
|
|
776
776
|
accessors: {}
|
|
777
777
|
}).accessors, i = this.prototype;
|
|
778
778
|
function o(n) {
|
|
779
|
-
const r =
|
|
779
|
+
const r = U(n);
|
|
780
780
|
a[r] || (ya(i, n), a[r] = !0);
|
|
781
781
|
}
|
|
782
782
|
return l.isArray(t) ? t.forEach(o) : o(t), this;
|
|
@@ -1067,7 +1067,7 @@ function Ce(e) {
|
|
|
1067
1067
|
});
|
|
1068
1068
|
}
|
|
1069
1069
|
const Ee = (e) => e instanceof C ? e.toJSON() : e;
|
|
1070
|
-
function
|
|
1070
|
+
function q(e, t) {
|
|
1071
1071
|
t = t || {};
|
|
1072
1072
|
const a = {};
|
|
1073
1073
|
function i(d, s, m) {
|
|
@@ -1195,7 +1195,7 @@ class $ {
|
|
|
1195
1195
|
* @returns {Promise} The Promise to be fulfilled
|
|
1196
1196
|
*/
|
|
1197
1197
|
request(t, a) {
|
|
1198
|
-
typeof t == "string" ? (a = a || {}, a.url = t) : a = t || {}, a =
|
|
1198
|
+
typeof t == "string" ? (a = a || {}, a.url = t) : a = t || {}, a = q(this.defaults, a);
|
|
1199
1199
|
const { transitional: i, paramsSerializer: o, headers: n } = a;
|
|
1200
1200
|
i !== void 0 && oe.assertOptions(i, {
|
|
1201
1201
|
silentJSONParsing: E.transitional(E.boolean),
|
|
@@ -1254,14 +1254,14 @@ class $ {
|
|
|
1254
1254
|
return s;
|
|
1255
1255
|
}
|
|
1256
1256
|
getUri(t) {
|
|
1257
|
-
t =
|
|
1257
|
+
t = q(this.defaults, t);
|
|
1258
1258
|
const a = Je(t.baseURL, t.url);
|
|
1259
1259
|
return $e(a, t.params, t.paramsSerializer);
|
|
1260
1260
|
}
|
|
1261
1261
|
}
|
|
1262
1262
|
l.forEach(["delete", "get", "head", "options"], function(e) {
|
|
1263
1263
|
$.prototype[e] = function(t, a) {
|
|
1264
|
-
return this.request(
|
|
1264
|
+
return this.request(q(a || {}, {
|
|
1265
1265
|
method: e,
|
|
1266
1266
|
url: t,
|
|
1267
1267
|
data: (a || {}).data
|
|
@@ -1271,7 +1271,7 @@ l.forEach(["delete", "get", "head", "options"], function(e) {
|
|
|
1271
1271
|
l.forEach(["post", "put", "patch"], function(e) {
|
|
1272
1272
|
function t(a) {
|
|
1273
1273
|
return function(i, o, n) {
|
|
1274
|
-
return this.request(
|
|
1274
|
+
return this.request(q(n || {}, {
|
|
1275
1275
|
method: e,
|
|
1276
1276
|
headers: a ? {
|
|
1277
1277
|
"Content-Type": "multipart/form-data"
|
|
@@ -1433,7 +1433,7 @@ const Ta = ne;
|
|
|
1433
1433
|
function Ye(e) {
|
|
1434
1434
|
const t = new M(e), a = Pe(M.prototype.request, t);
|
|
1435
1435
|
return l.extend(a, M.prototype, t, { allOwnKeys: !0 }), l.extend(a, t, null, { allOwnKeys: !0 }), a.create = function(i) {
|
|
1436
|
-
return Ye(
|
|
1436
|
+
return Ye(q(e, i));
|
|
1437
1437
|
}, a;
|
|
1438
1438
|
}
|
|
1439
1439
|
const f = Ye(ue);
|
|
@@ -1450,7 +1450,7 @@ f.all = function(e) {
|
|
|
1450
1450
|
};
|
|
1451
1451
|
f.spread = Pa;
|
|
1452
1452
|
f.isAxiosError = qa;
|
|
1453
|
-
f.mergeConfig =
|
|
1453
|
+
f.mergeConfig = q;
|
|
1454
1454
|
f.AxiosHeaders = C;
|
|
1455
1455
|
f.formToJSON = (e) => Ge(l.isHTMLForm(e) ? new FormData(e) : e);
|
|
1456
1456
|
f.getAdapter = We.getAdapter;
|
|
@@ -1609,7 +1609,7 @@ class Ua {
|
|
|
1609
1609
|
}
|
|
1610
1610
|
}
|
|
1611
1611
|
function ui(e) {
|
|
1612
|
-
const t =
|
|
1612
|
+
const t = T(new Ua(e)), a = ee(() => t.value.sessions || []), i = ee(() => {
|
|
1613
1613
|
var c;
|
|
1614
1614
|
return (c = t.value.sessions) == null ? void 0 : c[t.value.sessions.length - 1];
|
|
1615
1615
|
});
|
|
@@ -1664,7 +1664,7 @@ const Qe = (e) => (et("data-v-97b727dd"), e = e(), tt(), e), Ia = {
|
|
|
1664
1664
|
__name: "Chatbox",
|
|
1665
1665
|
emits: ["select"],
|
|
1666
1666
|
setup(e, { expose: t, emit: a }) {
|
|
1667
|
-
const i =
|
|
1667
|
+
const i = T([]), o = a;
|
|
1668
1668
|
async function n(d, s) {
|
|
1669
1669
|
i.value.push({
|
|
1670
1670
|
isUser: !0,
|
|
@@ -1737,7 +1737,7 @@ const Qe = (e) => (et("data-v-97b727dd"), e = e(), tt(), e), Ia = {
|
|
|
1737
1737
|
}
|
|
1738
1738
|
};
|
|
1739
1739
|
function Wa(e, t) {
|
|
1740
|
-
const a =
|
|
1740
|
+
const a = T({ top: 0, bottom: 0, left: 0, right: 0 });
|
|
1741
1741
|
function i() {
|
|
1742
1742
|
if (e.value) {
|
|
1743
1743
|
const o = e.value.getBoundingClientRect();
|
|
@@ -1762,7 +1762,7 @@ function Wa(e, t) {
|
|
|
1762
1762
|
const Ka = /* @__PURE__ */ re({
|
|
1763
1763
|
__name: "FullWrapper",
|
|
1764
1764
|
setup(e) {
|
|
1765
|
-
const t = dt(), a =
|
|
1765
|
+
const t = dt(), a = T(null), i = Wa(a), o = ee(() => {
|
|
1766
1766
|
var c;
|
|
1767
1767
|
const r = t.isAtMost("sm") ? 56 : 0;
|
|
1768
1768
|
return {
|
|
@@ -1797,7 +1797,7 @@ const Ka = /* @__PURE__ */ re({
|
|
|
1797
1797
|
loadingComponent: Qa
|
|
1798
1798
|
});
|
|
1799
1799
|
function di() {
|
|
1800
|
-
const e =
|
|
1800
|
+
const e = T({}), t = (a) => {
|
|
1801
1801
|
var i;
|
|
1802
1802
|
((i = a.data) == null ? void 0 : i.type) === "publish-notifier" && (e.value = a.data.data);
|
|
1803
1803
|
};
|
|
@@ -1811,10 +1811,10 @@ const Xa = /* @__PURE__ */ JSON.parse(`{"title":"Menu","common":{"actions":{"upd
|
|
|
1811
1811
|
menu: ai
|
|
1812
1812
|
}, oi = /* @__PURE__ */ JSON.parse(`{"title":"菜單","common":{"actions":{"update":"更新","cancel":"取消","add":"添加","search":"搜索","delete":"刪除","remove":"移除","deselect_all":"取消選擇","move":"移動","edit":"編輯","download":"下載","save":"保存","confirm":"確認","yes":"是","no":"否","link":"鏈接","migrate":"遷移","add_new_variant":"添加新規格","add_group":"添加組","apply_product":"應用產品","link_product":"鏈接產品","deselect":"取消選擇"},"labels":{"name":"名稱","detail":"詳情","items_linked":"{count} 個項目已鏈接","search_placeholder":"搜索 {type}","symbol":"符號","products_linked":"{count} 個產品已鏈接","product_linked_singular":"{count} 個產品已鏈接","product_linked_plural":"{count} 個產品已鏈接","enter_name":"輸入名稱","product":"產品","selected_items":"{count} 個項目已選擇","all":"全部","category":"分類:{name}","group_name":"組名稱","min_select":"最少選擇","max_select":"最多選擇","group_type":"組類型","stackable":"可堆疊","stackable_sublabel":"顧客可以多次選擇相同選項","configuration":"配置","variant":"規格","product_title":"產品標題","price":"價格 ({symbol})","order_from":"下單來源","inventory":"庫存","search_groups":"搜索組","search_variants":"搜索規格","product_count":"{count} 個產品已應用","search_product":"搜索產品","product_image":"產品圖片","optional":"(可選)","products_selected":"{count} 個產品已選擇","items_selected":"{count} 個項目已選擇","catalog":"目錄","scheduler":"調度器","all_time":"全天","main":"主","unknown":"未知","all_day":"全天","scheduler_title":"調度器:{label}","link_product_title":"鏈接產品","products_count":"已選 {count} 個產品","search":"搜索","status":"狀態"},"dialog":{"remove_confirmation":"確定要移除 {name} 嗎?","change_type":{"title":"更改附加組類型","message":"更改附加組類型將清除所有產品。確定要繼續嗎?"},"remove":{"catalog":{"title":"移除目錄","message":"確定要移除 {name} 嗎?"},"category":{"title":"移除分類","message":"確定要移除 {name} 嗎?"},"subcategory":{"title":"移除子分類","message":"確定要移除 {name} 嗎?"},"product":{"title":"移除產品","message":"確定要移除 {name} 嗎?","success":"產品已成功移除。"},"recipe":{"title":"移除配方","message":"確定要移除配方 {name} 嗎?"},"ingredient":{"title":"移除配料","message":"確定要移除配料 {name} 嗎?"},"takeaway":{"title":"移除外帶","message":"確定要移除 {name} 嗎?"},"unit":{"title":"移除單位","message":"確定要移除單位 {name} 嗎?"},"variant":{"title":"移除規格","message":"確定要移除 {name} 嗎?"}}},"validation":{"required":"{field} 為必填項","min_max":"最小選擇數必須小於或等於最大選擇數","product_title_required":"產品標題為必填項","min_value":"最小值為 {value}","max_value":"最大值為 {value}","field_required":"{field} 為必填項","required_field":"必填項","invalid_amount":"無效金額","max_default_items":"組中的默認產品數量不得多於 {max}","default_items_tip":"已選擇 {count} / {max} 個默認產品,默認產品下單時將自動選中"},"file":{"accepts":"接受 .jpg、.jpeg、.png、.gif 格式"},"empty":{"no_group":{"title":"未找到組","subtitle":"您還未創建組"},"no_variant":{"title":"未找到規格","subtitle":"您還沒創建任何規格"}}},"category":{"title":"分類","add":"添加分類","detail":"分類詳情","name":"分類名稱","empty":{"title":"將產品分組到分類中","subtitle":"使用分類來組織您的產品。","no_group":{"title":"未找到分組","subtitle":"看起來您還沒有創建任何分組"}},"columns":{"title":"分類標題","products":"應用產品"},"dialog":{"remove":{"title":"移除分類","error":"無法刪除此分類"},"add":{"title":"添加分類","name":{"label":"分類名稱","placeholder":"在此輸入分類名稱","required":"分類名稱為必填項"}}},"products":{"title":"產品","add":"添加產品","linked_count":"已鏈接 {count} 個產品","search":"搜索","columns":{"name":"產品名稱","code":"代碼"}},"selector":{"all":"全部","title":"分類:{label}"},"manager":{"dialog":{"add":{"title":"添加分類","action":"創建"},"update":{"title":"更新分類","action":"更新"}}}},"subcategory":{"title":"子分類","add":"添加子分類","detail":"子分類詳情","name":"子分類名稱","empty":{"title":"將產品分組到子分類中","subtitle":"使用子分類來組織您的產品。"},"columns":{"title":"子分類標題"},"dialog":{"remove":{"title":"移除子分類","error":"無法刪除此子分類"},"add":{"title":"添加子分類","name":{"label":"子分類名稱","placeholder":"在此輸入子分類名稱","required":"子分類名稱為必填項"}}},"manager":{"dialog":{"add":{"title":"添加子分類","action":"創建"},"update":{"title":"更新子分類","action":"更新"}}}},"variant":{"title":"規格","add":"添加規格","columns":{"name":"規格名稱","options":"選項值","applied_products":"已應用產品"},"mobile":{"value":"值:{values}"},"empty":{"title":"添加規格","subtitle":"規格配置為商家提供自定義產品選項的功能。","no_variant":{"title":"未找到規格","subtitle":"看起來您還沒有創建規格"}},"select":{"title":"選擇規格","subtitle":"選擇規格以應用更改"},"form":{"title":{"add":"添加規格","edit":"編輯規格"},"detail":"規格詳情","name":{"label":"規格名稱","placeholder":"杯型尺寸","helper":"為這組選項命名。例如,您可以將此選項組命名為杯型尺寸或糖度。","required":"規格名稱為必填項"},"options":{"title":"選項值","placeholder":"選項","min_required":"至少需要 1 個選項","name_required":"選項名稱為必填項"},"applied_product":"已應用產品"}},"unit":{"title":"單位","add":"添加單位","update":"更新單位","precision":"精度","precision_placeholder":"輸入一個數字","empty":{"title":"添加您的第一個單位","subtitle":"單位用於指定您希望如何測量產品。"},"columns":{"name":"名稱","symbol":"符號"},"measurement":{"add":"添加測量","title":"測量 {number}","name":"名稱","symbol":"符號","conversion":"轉換","preview":"1 {name} 等於 {value} {unit}","preview_label":"預覽"}},"print_dept":{"title":"打印路線","add":"添加打印路線","update":"編輯打印路線","columns":{"name":"打印路線名稱","products":"已應用產品"}},"sku":{"title":"配料","add":"添加配料","update":"更新配料","columns":{"code":"代碼","name":"名稱","unit":"單位"},"empty":{"no_unit":"未找到單位","subtitle":"添加單位以開始添加配料。"},"validation":{"code_used":"代碼已被其他配料使用"},"errors":{"select_recipe_ingredient":"選擇配方或配料以轉換"},"convertible":{"label":"可轉換","sublabel":"可從其他配方或配料轉換","convert_to":"配方和配料轉換為"}},"recipe":{"title":"配方","add":"添加配方","update":"更新配方","columns":{"name":"名稱"},"validation":{"bind_required":"綁定至少一個配方或配料"},"table":{"columns":{"name":"名稱","ingredients":"配料"},"search":{"placeholder":"搜索配方"}},"empty":{"title":"添加您的第一個配方","subtitle":"創建配方以標準化您的食品製備流程","action":"添加配方"},"actions":{"add":"添加配方"}},"serving_sequence":{"title":"上菜順序","add":"添加順序","update":"更新順序","columns":{"name":"順序名稱"},"empty":{"title":"沒有上菜順序","subtitle":"設置訂單順序,以確保用餐體驗流暢有序。"}},"group":{"title":"組","add":"添加組","update":"更新組","form":{"tagging":{"title":"標籤","subtitle":"通過標籤對組進行分組,以簡化報告和管理"}},"option":{"title":"產品","link_products":"鏈接產品","add_option":"添加選項","product_title":"名稱","product_title_required":"產品標題為必填項","price":"價格 ({symbol})","inventory":"庫存","variant":"規格","code":"代碼","is_default":"默認","should_link_at_least_one_variant":"至少需要鏈接\\"{name}\\"的一個規格"},"types":{"normal":"正常","product":"產品","dynamic":"動態"},"select":{"title":"選擇組","subtitle":"選擇組以應用更改"},"empty":{"title":"未找到組","subtitle":"看起來您還沒有添加附加組。"},"search":{"placeholder":"搜索組"},"type":{"title":"組:{type} 類型","all":"所有類型","normal":"正常類型","product":"產品類型","dynamic":"動態類型"},"list":{"items_linked":"{count} 個項目已鏈接","products_linked":"{count} 個產品已鏈接","columns":{"name":"組名稱","products":"產品","type":"類型","applied_products":"已應用產品"},"types":{"normal":"正常","product":"產品","dynamic":"動態"},"variants":"{ count } 種規格","more_items":"與其他 { count } 個"},"actions":{"add":"添加組","duplicate":{"title":"複製組","message":"您確定要複製 {name} 嗎?"},"apply_product":"應用產品","duplicate_action":"複製"},"dialogs":{"delete":{"title":"刪除組","message":"您確定要刪除 {name} 嗎?","unlink_warning":"以下 {count} 個項目將被取消連結:"},"update":{"title":"更新組"}}},"migrate":{"title":"遷移到新版本","description":"您想遷移到新版本嗎?一旦遷移,將無法恢復到舊版本。","message":"將您的菜單遷移到新版本,以享受更多功能。新菜單的內容將與當前相同。","notification":{"title":"新版本的菜單已發佈!","description":"將當前菜單版本遷移到最新版本,以享受更多功能,例如產品順序分發、上菜順序、調度器等!您的內容和當前設置將被保留。"},"errors":{"no_restaurant":"至少需要一個餐廳才能遷移","pos_version":"升級 POS 到 V{version} 以使用新菜單:{restaurants}"}},"scheduler":{"title":"調度器","select":{"title":"選擇調度器","all_time":"全天"},"empty":{"title":"未找到調度器","subtitle":"添加調度器以安排產品顯示時間。","action":"添加調度器"},"table":{"columns":{"name":"調度器名稱","repeat":"重複","period":" 時段","products":"應用產品"},"products_linked":"{count} 個項目已鏈接","search":{"placeholder":"搜索調度器"}},"repeat":{"daily":"每日","weekdays":"工作日","weekends":"週末","except":"每日除外 {day}","range":"{start} 到 {end}"},"days":{"monday":"週一","tuesday":"週二","wednesday":"週三","thursday":"週四","friday":"週五","saturday":"週六","sunday":"週日"},"dialog":{"add":{"title":"添加調度器","action":"添加"},"update":{"title":"更新調度器","action":"更新"},"sections":{"detail":{"title":"調度器詳情","name":{"label":"調度器名稱","placeholder":"佔位符","required":"必填項"}},"availability":{"title":"可用性","daily":"每日","weekly":"每週"},"period":{"title":"啓用時段","all_day":"全天","custom":"自定義時段","add":"添加時段"},"autolink":{"title":"自動鏈接產品","label":"自動鏈接產品","sublabel":"根據過濾器自動鏈接產品","all_items":"自動鏈接所有項目","filter_message":"自動鏈接符合以下過濾條件的項目。","tooltip":"您可以在過濾值中使用通配符('*' 用於任何字符,'$' 用於任何數字字符)。例如,A*1 匹配 A1、AG1、AC51,但不匹配 A2、B1、C9、A$ 匹配 A1、A11、A124,但不匹配 AQ1、AG1、AC"},"filter":{"add":"添加過濾器","matches":"匹配","or":"或","types":{"code":"代碼","category":"分類"},"placeholder":{"category":"選擇分類"}},"products":{"title":"應用產品","link":"鏈接產品"}},"actions":{"cancel":"取消"}},"dialogs":{"remove":{"title":"移除調度器","message":"您確定要移除調度器 {name} 嗎?"}}},"revert":{"title":"恢復菜單","description":"將 {name} 的菜單恢復到上次發佈的版本。如果它不在上次發佈的版本中,則將外送目錄設置為主目錄。","labels":{"restaurant":"餐廳","revert_to":"恢復到","default":"默認","pos_takeaway":"POS 外帶","pickup":"自取","additional_catalogs":"附加目錄"}},"remy":{"title":"Remy","description":"您的 AI 助手","actions":{"start":"與 Remy 開始","close":"關閉 Remy"},"messages":{"welcome":"你好!我是 Remy,您的 AI 助手。今天我能為您做什麼?","thinking":"正在思考...","error":"抱歉,我遇到了錯誤。請再試一次。"}},"picker":{"title":"選擇 {type}","search":"搜索 {type}","no_results":"未找到 {type}","selected":"{count} 已選擇"},"apply_product":{"title":"應用產品","link":{"title":"鏈接產品","subtitle":"鏈接產品以應用更改"},"table":{"category_count":"{name} ({count})","inventory":"庫存","value":"值:{values}"}},"catalog":{"title":"目錄","detail":"目錄詳情","main":"主產品","form":{"name":"目錄名稱","tax":{"title":"税計算","auto":{"label":"自動","sublabel":"所有價格默認排除,當通過外送公司訂購時將自動變為含税"},"manual":{"label":"手動","sublabel":"您可以為此目錄指定自己的税計算"},"inclusive":"{code} 包含"},"link":{"title":"鏈接產品配置","auto_link":{"label":"自動鏈接項目","sublabel":"自動將產品鏈接至主目錄以供可用性"},"options":{"all":"可供所有人使用","pos_only":"僅在 POS 上訂購"}},"markup":{"title":"價格加價配置","auto":{"label":"自動加價價格","sublabel":"自動加價價格適用於目錄、組和調度"},"add":"添加加價配置","config":"配置 {number}","percentage":"加價百分比:{value}%","products":"{count} 個產品已鏈接","all_items":"適用於所有項目"}},"validation":{"name_used":"目錄名稱已使用","name_required":"目錄名稱必填"},"edit":{"back":"返回目錄","export":"導出","import":"導入","link_product":"鏈接產品","apply_scheduler":"應用調度器","tabs":{"product":"產品","category":"分類","group":"組","takeaway":"外帶","setting":"設置"},"scheduler":{"remove":{"title":"移除調度器","message":"您確定要移除調度器 {name} 嗎?"}}},"usage":{"title":"目錄概覽","tax_calculation":"税計算","products":"{count} 個產品","restaurant":"餐廳","usage":"使用"},"table":{"columns":{"title":"目錄標題","tax_calculation":"税計算","auto_link":"自動鏈接項目"}},"empty":{"title":"構建您的菜單目錄","subtitle":"使用目錄組織菜單。添加產品、設置價格並根據用餐、外帶或外送進行定製。"},"actions":{"add":"添加目錄","view_usage":"目錄概覽"},"dialogs":{"remove":{"title":"移除目錄","message":"您確定要移除 {name} 嗎?","error":"目錄被 {restaurants} 家餐廳使用"}}},"currency":{"input":{"field":"字段"}},"order":{"from":{"options":{"all":"可供所有人使用","pos_only":"僅在 POS 上訂購","none":"無"}}},"inventory":{"title":"庫存","subtitle":"調整配料並自定義產品配方","columns":{"product_name":"產品名稱","ingredient":"配料","recipe":"配方"},"status":{"sku_linked":"已鏈接 {count} 個配料","recipe_linked":"已鏈接 {count} 個配方","not_set":"未設置"},"dialog":{"title":"{name} 庫存"},"form":{"title":"庫存","product_name":"產品名稱"},"binding":{"recipe":{"title":"配方","columns":{"name":"配方","amount":"數量"}},"ingredient":{"title":"配料","columns":{"name":"配料","amount":"數量","unit":"單位"},"select_unit":"選擇單位","loop_warning":"哎呀!檢測到循環。請驗證或刪除它。"},"link":{"title":"鏈接 {type}","recipe":"配方","ingredient":"配料"}}},"link_product":{"title":"應用產品"},"catalog_scheduler":{"title":"更新產品來源","subtitle":"選擇目錄和調度器以更新產品"},"apply_products":{"category":{"count":"{selected}/{total}"}},"markup":{"dialog":{"title":{"add":"添加加價配置","update":"更新加價配置"},"fields":{"percentage":{"label":"加價百分比","placeholder":"0","required":"加價百分比必填"}},"options":{"all":"適用於所有產品","custom":"自定義產品"},"products":{"link":"鏈接產品","count":"{count} 個產品已鏈接"}}},"import":{"dialog":{"title":"導入產品","subtitle":"上傳需要導入的文檔","info":"請不要更改原始模板中的任何標題行,否則導入將失敗。","fields":{"type":"菜單類型","file":{"replace":"替換文件"}},"actions":{"import":"導入"},"errors":{"select_file":"請選擇要導入的文件"},"button":{"label":"添加文件"}}},"product":{"form":{"title":{"add":"添加產品","update":"更新產品"},"summary":{"title":"產品摘要","fields":{"code":"產品代碼","name":"產品名稱","category":"分類","order_from":"下單來源","selling_price":"銷售價格","tax":"税","inventory":"庫存","takeaway":"外帶"}},"sections":{"general":{"title":"通用設置","description":"使用不同的通用設置"},"tagging":{"title":"標籤","subtitle":"通過標籤對產品進行分組,以簡化報告和管理"},"price":{"title":"更新價格","description":"使用不同的價格設置"},"print":{"title":"更新打印","description":"使用不同的打印設置"},"variant":{"title":"更新規格","description":"使用不同的規格設置"},"group":{"title":"更新組","description":"使用不同的組設置"},"inventory":{"title":"更新庫存","description":"使用不同的庫存設置"},"takeaway":{"title":"更新外帶","description":"使用不同的外帶設置"}},"detail":{"title":"產品詳情","fields":{"code":{"label":"產品代碼","placeholder":"無代碼"},"name":{"label":"產品名稱","required":"名稱必填","duplicate_warning":"此產品與 {count} 其他項目共享相同名稱。它們將在報告中作為一種產品分組。"},"description":{"label":"描述","optional":"(可選)","placeholder":"無描述"}},"category":{"label":"分類","required":"分類必填","placeholder":"選擇分類以結構化您的菜單","add_new":"添加新分類","add_first":"請先添加產品分類","options":{"product":{"label":"作為產品或附加項銷售","sublabel":"產品可單獨銷售,也可作為附加項銷售"},"addon":{"label":"僅作為附加項銷售","sublabel":"產品將作為附加項出現"}}},"subcategory":{"label":"子分類","required":"子分類為必填項","add_new":"添加新子分類"},"path":{"label":"子分類 - 菜單路徑","placeholder":"選擇子分類以建立您的菜單結構,例如:咖啡/拿鐵","helperText":"添加子類別以結構化您的菜單"},"order_from":{"label":"下單來源","default":"跟隨主目錄"}},"group":{"title":"組","subtitle":"為您的產添加組以作為套餐銷售","add":"添加組","circularError":"檢測到循環鏈接,組 {groupName} 已鏈接到產品 {productName}","columns":{"title":"組標題","type":"類型"}},"price":{"title":"價格","fields":{"selling_price":{"label":"銷售價格","required":"價格必填"},"tax":{"label":"税選項不可用","label_with_code":"{code}(適用於餐廳配置 {code} 已設置)"}},"settings":{"title":"價格設置","open_price":{"label":"開放價格","sublabel":"允許在不獲得許可的情況下調整價格"},"sell_by_unit":{"label":"按單位銷售","sublabel":"按特定單位(重量、長度等)銷售產品。","per_unit":{"label":"每","placeholder":"輸入數量","required":"每單位必填","min":"每單位必須大於 0"},"unit":{"placeholder":"輸入單位","required":"單位必填"}},"track_costing":{"label":"跟蹤成本"},"min_price":{"label":"在應用折扣後有最低價格"}}},"print":{"title":"打印","config":{"label":"打印配置","group_parent":{"label":"與父級組","sublabel":"在作為附加項提供時打印此產品及其父級"}},"kds":{"label":"KDS 配置","options":{"all":{"label":"一次性發送","description":"將產品一次性發送至所有部門,以加快準備速度"},"sequential":{"label":"順序分發","description":"將產品按順序發送至每個部門,逐步準備"}}},"routes":{"label":"鏈接路線","add":"添加路線"}},"takeaway":{"title":"外帶","subtitle":"選擇外帶費用以添加到產品中","columns":{"variant":"產品 & 規格","product":"產品","takeaway":"外帶"},"options":{"follows_main":"跟隨主目錄","no_preset":"沒有預設外帶","add_new":"添加新外帶"}},"variant":{"title":"規格","subtitle":"添加選項,如大小、顏色或類型","add":"添加規格","columns":{"variant":"規格","code":"代碼","order_from":"下單來源","price":"價格","min_price":"最低價格"},"validation":{"max_variants":"您只能添加 {max} 個規格"},"placeholders":{"no_code":"無代碼","follow_general":"跟隨通用"}}},"empty":{"with_create":{"title":"添加您的產品","subtitle":"首先通過進貨您的商店,為您的顧客提供他們喜愛的產品","action":"添加產品"},"no_scheduler":{"title":"沒有產品鏈接","subtitle":"通過從主目錄鏈接產品來添加此目錄中的產品。"},"with_scheduler":{"title":"沒有應用產品","subtitle":"通過從主目錄鏈接產品來應用此調度器中的產品。"}},"table":{"columns":{"code":"代碼","name":"產品名稱","category":"分類","price":"價格 ({ currency })","order_from":"下單來源","tagging":"標籤"},"category":{"all":"全部分類","collapse":"收起","expand":"+ 還有 {count} 個"},"tagging":{"all":"全部標籤","collapse":"收起","expand":"+ {count} 個"},"bulk_edit":{"title":"批量編輯產品","actions":{"reset_all":"重置所有","save":"保存"}},"selection":{"count":"{count} 項已選擇","actions":{"deselect_all":"取消選擇所有","remove":"移除"}},"empty":{"title":"添加您的產品","subtitle":"首先通過進貨您的商店,為您的顧客提供他們喜愛的產品","actions":{"add":"添加產品","import":"導入"}},"search":{"placeholder":"搜索產品"},"validation":{"name_required":"名稱必填","price_min":"價格必須大於或等於 0"}}},"setting":{"catalog":{"title":"目錄詳情","fields":{"name":{"label":"目錄名稱","required":"目錄名稱必填","used":"目錄名稱已使用"}},"warnings":{"delivery":"此目錄正在被外送公司和其他訂單方法使用。這可能會導致價格計算錯誤,請審查每個目錄使用的價格。"}},"tax":{"title":"税計算","modes":{"auto":{"label":"自動","sublabel":"所有價格默認排除,當通過外送公司訂購時將自動變為含税"},"manual":{"label":"手動","sublabel":"您可以為此目錄指定自己的税計算"}},"inclusive":"{code} 包含"},"link":{"title":"鏈接產品配置","auto_link":{"label":"自動鏈接項目","sublabel":"自動將產品鏈接至主目錄以供可用性"},"options":{"all":"可供所有人使用","pos_only":"僅在 POS 上訂購"}},"markup":{"title":"價格加價配置","auto_markup":{"label":"自動加價價格","sublabel":"自動加價價格適用於目錄、組和調度"},"add":"添加加價配置","config":"配置 {number}","percentage":"加價百分比:{value}%","products":{"all":"適用於所有產品","linked":"{count} 個產品已鏈接"}}},"takeaway":{"actions":{"add":"添加外帶"},"title":"外帶","add":"添加外帶","update":"更新外帶","columns":{"title":"外帶標題","price":"價格"},"placeholders":{"title":"在此輸入外帶標題"},"empty":{"title":"未找到外帶","subtitle":"看起來您還沒有創建外帶。","action":"添加外帶"},"table":{"columns":{"name":"外帶名稱","price":"價格 ({symbol})","products":"應用產品"},"items_linked":"{count} 項已鏈接","search":{"placeholder":"搜索外帶"}}},"thumbnail":{"alt":{"default":"項目","with_name":"{name}"}},"cooking_guide":{"title":"烹飪指南","empty":{"title":"添加烹飪指南","subtitle":"烹飪指南配置工具使商家能夠為多個分店的標準化烹飪説明。","action":"添加指南"},"table":{"columns":{"name":"指南名稱","products":"已鏈接產品","steps":"{count} 步"},"search":{"placeholder":"搜索指南"},"mobile":{"products_linked":"{count} 個產品已鏈接"}},"dialogs":{"remove":{"title":"移除烹飪指南","message":{"prefix":"您確定要移除烹飪指南 ","products_using":"有 ","products_count":" 個產品使用此烹飪指南。 "}}},"actions":{"add":"添加指南","remove":"移除","cancel":"取消"},"dialog":{"add":{"title":"添加指南","action":"添加"},"update":{"title":"更新指南","action":"更新"},"sections":{"guide_detail":{"title":"指南詳情","name":{"label":"指南名稱","placeholder":"佔位符","required":"必填項"}},"steps":{"title":"步驟","add":"添加步驟","empty":"尚未添加任何步驟"},"apply_product":{"title":"應用產品","link":"鏈接產品","products_linked":"{count} 個產品已鏈接","search":"搜索"}},"actions":{"cancel":"取消"}},"step_dialog":{"add":{"title":"添加步驟","action":"添加"},"update":{"title":"更新步驟","action":"更新"},"sections":{"variables":{"title":"變量","add":"添加變量","columns":{"key":"鍵","value":"值"},"placeholders":{"key":"鍵","value":"默認值"},"validation":{"required":"必填項","lowercase":"僅小寫字母","duplicate":"重複鍵"}},"instruction":{"title":"指令"}},"actions":{"cancel":"取消","back":"返回"}},"step_override_dialog":{"title":"自定義烹飪步驟","columns":{"instructions":"指令","variables":"變量","value":"值"},"actions":{"save":"保存","cancel":"取消"}}},"ingredient":{"title":"配料","empty":{"title":"添加您的第一個配料","subtitle":"配料是食物和飲料的重要組成部分。管理它們涉及採購高質量產品、確保存儲合規性以及維護安全標準,因為它們對風味和質量有顯著影響。","action":"添加配料"},"table":{"columns":{"code":"代碼","name":"名稱","unit":"單位"},"search":{"placeholder":"搜索配料"},"mobile":{"code":"代碼:{code}","unit":"單位:{unit}"}},"actions":{"add":"添加配料"}},"print_route":{"title":"打印路線","empty":{"title":"未找到路線","subtitle":"根據您的打印目的地進行定製,以確保高效的訂單管理。","action":"添加路線"},"table":{"columns":{"name":"打印路線名稱","products":"已鏈接產品","products_count":"{count} 個產品"},"search":{"placeholder":"搜索路線"},"mobile":{"products_linked":"{count} 個產品已鏈接"}},"dialogs":{"remove":{"title":"移除打印路線","message":{"prefix":"您確定要移除打印路線嗎? ","products_using":"有 ","products_count":" 個產品使用此打印路線。 "}}},"actions":{"add":"添加路線","remove":"移除","cancel":"取消"},"department_dialog":{"add":{"title":"添加路線","action":"添加"},"update":{"title":"更新路線","action":"更新"},"sections":{"route_detail":{"title":"路線詳情","name":{"label":"路線名稱","placeholder":"佔位符","required":"必填項"}},"link_product":{"title":"鏈接產品","link":"鏈接產品","products_linked":"{count} 個產品已鏈接","search":"搜索"}},"actions":{"cancel":"取消"}}},"products":{"title":"產品","actions":{"export":"導出","import":"導入","add":"添加產品","link":"鏈接產品","apply_scheduler":"應用調度器"}},"publish":{"title":"發佈","table":{"columns":{"restaurant":"餐廳","default":"默認","pos_takeaway":"POS 外帶","pickup":"自取","version":"版本"},"search":{"placeholder":"搜索"},"status":{"latest":"最新","outdated":"已過時"}},"empty":{"title":"創建餐廳","subtitle":"您還沒有創建任何餐廳。添加餐廳以開始發佈菜單","action":"創建餐廳"},"actions":{"publish":"發佈","publish_all":"發佈所有","revert":"恢復菜單"},"labels":{"main_version":"主版本:{version}","catalog":{"main":"主","invalid":"無效目錄"}},"update_catalog_dialog":{"title":"更新目錄","sections":{"default":{"label":"默認目錄","use_default":"主"},"pos_takeaway":{"label":"POS 外帶目錄"},"pickup":{"label":"自取目錄"},"additional":{"title":"附加目錄","subtitle":"附加目錄可以用於桌號"}},"actions":{"update":"更新","cancel":"取消"}}},"tax_setting":{"title":"税設置"},"menu_setting":{"title":"菜單設置","fields":{"low_stock":{"not_set":"未設置","must_be_integer":"值必須為整數","title":"在線點單的產品閾值","subtitle":"當庫存低於此限制時禁用在線點單","helper_text":"如果庫存達到或低於此數量,產品將被提示從在線點單中移除","updated":"菜單設置已更新"}},"tabs":{"menu_configuration":"菜單配置","price_group":"價格組"}},"price_tier":{"price_group":"價格組","description":"設置不同價格組以應用於多個目錄","add_price_group":"添加價格組","add_price_group_success":"價格組創建成功","group_title":"組標題","price_group_description":"當前目錄已鏈接到價格組 \\"{group}\\"。請在主目錄中管理價格。","delete_dialog":{"title":"刪除價格組","message":"您確定要刪除價格組 {name} 嗎?","success":"價格組刪除成功"},"settings_table":{"columns":{"name":"名稱"}},"form":{"table":{"columns":{"name":"組標題","price":"銷售價格"}}},"price_tier_config":"價格組設置","link_price_group":"鏈接價格組","link_price_group_description":"選擇一個價格組以應用於目錄。如果沒有鏈接,將使用基礎價格。"},"tree_editor":{"title":"菜單管理","actions":{"add_category":"添加新分類","expand_all":"展開所有","collapse_all":"摺疊所有","add_product":"添加產品","delete_product":"刪除產品","edit_category":"編輯","delete_category":"刪除分類","link_category_to_catalog":"鏈接分類到目錄","link_product_to_catalog":"鏈接產品到目錄","unlink_product_from_catalog":"取消鏈接產品"},"labels":{"main_catalog":"主目錄","all_time":"所有時間","products":"產品: {count}","variants":"規格: {count}","groups":"組: {count}","addon":"附加項","unknown":"未知","please_select_a_product_to_edit":"請選擇一個產品進行編輯","no_items":"沒有產品可顯示"}}}`), ni = {
|
|
1813
1813
|
menu: oi
|
|
1814
|
-
},
|
|
1814
|
+
}, P = T(!1);
|
|
1815
1815
|
window.addEventListener("message", (e) => {
|
|
1816
1816
|
var t;
|
|
1817
|
-
((t = e.data) == null ? void 0 : t.type) === "menu-version-notifier" && (
|
|
1817
|
+
((t = e.data) == null ? void 0 : t.type) === "menu-version-notifier" && (P.value = e.data.data.isV4);
|
|
1818
1818
|
});
|
|
1819
1819
|
var ri = /* @__PURE__ */ ((e) => (e.OVERVIEW = "$menu-overview", e.CATALOG = "$menu-catalog", e.EDIT_CATALOG = "$menu-catalog-edit", e.EDIT_CATALOG_PRODUCT = "$menu-catalog-edit-product", e.EDIT_CATALOG_CATEGORY = "$menu-catalog-edit-category", e.EDIT_CATALOG_GROUP = "$menu-catalog-edit-group", e.EDIT_CATALOG_TAKEAWAY = "$menu-catalog-edit-takeaway", e.EDIT_CATALOG_SETTING = "$menu-catalog-edit-setting", e.SCHEDULER = "$menu-scheduler", e.VARIANT = "$menu-variant", e.COOKING_GUIDE = "$menu-cooking-guide", e.PRINT_ROUTE = "$menu-print-route", e.PUBLISH = "$menu-publish", e))(ri || {});
|
|
1820
1820
|
const pi = [
|
|
@@ -1825,7 +1825,7 @@ const pi = [
|
|
|
1825
1825
|
{
|
|
1826
1826
|
path: "/product",
|
|
1827
1827
|
name: "$menu-products",
|
|
1828
|
-
component: y(() => import("./Products-
|
|
1828
|
+
component: y(() => import("./Products-Bfy4uouC.js")),
|
|
1829
1829
|
meta: {
|
|
1830
1830
|
isNavItem: !0,
|
|
1831
1831
|
i18nId: "menu.products.title"
|
|
@@ -1834,7 +1834,7 @@ const pi = [
|
|
|
1834
1834
|
{
|
|
1835
1835
|
path: "/category",
|
|
1836
1836
|
name: "$menu-category",
|
|
1837
|
-
component: y(() => import("./Category-
|
|
1837
|
+
component: y(() => import("./Category-CdQRh_dy.js")),
|
|
1838
1838
|
meta: {
|
|
1839
1839
|
isNavItem: !0,
|
|
1840
1840
|
i18nId: "menu.category.title"
|
|
@@ -1843,16 +1843,16 @@ const pi = [
|
|
|
1843
1843
|
{
|
|
1844
1844
|
path: "/subcategory",
|
|
1845
1845
|
name: "$menu-subcategory",
|
|
1846
|
-
component: y(() => import("./Subcategory-
|
|
1846
|
+
component: y(() => import("./Subcategory-CmrTtyid.js")),
|
|
1847
1847
|
meta: {
|
|
1848
|
-
isNavItem:
|
|
1848
|
+
isNavItem: () => P.value,
|
|
1849
1849
|
i18nId: "menu.subcategory.title"
|
|
1850
1850
|
}
|
|
1851
1851
|
},
|
|
1852
1852
|
{
|
|
1853
1853
|
path: "/group",
|
|
1854
1854
|
name: "$menu-group",
|
|
1855
|
-
component: y(() => import("./Group-
|
|
1855
|
+
component: y(() => import("./Group-CXV2YABG.js")),
|
|
1856
1856
|
meta: {
|
|
1857
1857
|
isNavItem: !0,
|
|
1858
1858
|
i18nId: "menu.group.title"
|
|
@@ -1861,7 +1861,7 @@ const pi = [
|
|
|
1861
1861
|
{
|
|
1862
1862
|
path: "/takeaway",
|
|
1863
1863
|
name: "$menu-takeaway",
|
|
1864
|
-
component: y(() => import("./Takeaway-
|
|
1864
|
+
component: y(() => import("./Takeaway-DwMEWLO2.js")),
|
|
1865
1865
|
meta: {
|
|
1866
1866
|
isNavItem: !0,
|
|
1867
1867
|
i18nId: "menu.takeaway.title"
|
|
@@ -1870,7 +1870,7 @@ const pi = [
|
|
|
1870
1870
|
{
|
|
1871
1871
|
path: "/scheduler",
|
|
1872
1872
|
name: "$menu-scheduler",
|
|
1873
|
-
component: y(() => import("./Scheduler-
|
|
1873
|
+
component: y(() => import("./Scheduler-C05ezynD.js")),
|
|
1874
1874
|
meta: {
|
|
1875
1875
|
isNavItem: !0,
|
|
1876
1876
|
i18nId: "menu.scheduler.title"
|
|
@@ -1879,7 +1879,7 @@ const pi = [
|
|
|
1879
1879
|
{
|
|
1880
1880
|
path: "/variant",
|
|
1881
1881
|
name: "$menu-variant",
|
|
1882
|
-
component: y(() => import("./Variant-
|
|
1882
|
+
component: y(() => import("./Variant-DLAHAM6_.js")),
|
|
1883
1883
|
meta: {
|
|
1884
1884
|
isNavItem: !0,
|
|
1885
1885
|
i18nId: "menu.variant.title"
|
|
@@ -1888,34 +1888,34 @@ const pi = [
|
|
|
1888
1888
|
{
|
|
1889
1889
|
path: "/recipe",
|
|
1890
1890
|
name: "$menu-recipe",
|
|
1891
|
-
component: y(() => import("./Recipe-
|
|
1891
|
+
component: y(() => import("./Recipe-6w19ZJJK.js")),
|
|
1892
1892
|
meta: {
|
|
1893
|
-
isNavItem: () => !
|
|
1893
|
+
isNavItem: () => !P.value,
|
|
1894
1894
|
i18nId: "menu.recipe.title"
|
|
1895
1895
|
}
|
|
1896
1896
|
},
|
|
1897
1897
|
{
|
|
1898
1898
|
path: "/ingredient",
|
|
1899
1899
|
name: "$menu-ingredient",
|
|
1900
|
-
component: y(() => import("./Ingredient-
|
|
1900
|
+
component: y(() => import("./Ingredient-Bjfd73Gs.js")),
|
|
1901
1901
|
meta: {
|
|
1902
|
-
isNavItem: () => !
|
|
1902
|
+
isNavItem: () => !P.value,
|
|
1903
1903
|
i18nId: "menu.ingredient.title"
|
|
1904
1904
|
}
|
|
1905
1905
|
},
|
|
1906
1906
|
{
|
|
1907
1907
|
path: "/unit",
|
|
1908
1908
|
name: "$menu-unit",
|
|
1909
|
-
component: y(() => import("./Unit-
|
|
1909
|
+
component: y(() => import("./Unit-SFOSdJrF.js")),
|
|
1910
1910
|
meta: {
|
|
1911
|
-
isNavItem: () => !
|
|
1911
|
+
isNavItem: () => !P.value,
|
|
1912
1912
|
i18nId: "menu.unit.title"
|
|
1913
1913
|
}
|
|
1914
1914
|
},
|
|
1915
1915
|
{
|
|
1916
1916
|
path: "/cooking-guide",
|
|
1917
1917
|
name: "$menu-cooking-guide",
|
|
1918
|
-
component: y(() => import("./CookingGuide-
|
|
1918
|
+
component: y(() => import("./CookingGuide-DKv5bs5r.js")),
|
|
1919
1919
|
meta: {
|
|
1920
1920
|
isNavItem: !0,
|
|
1921
1921
|
i18nId: "menu.cooking_guide.title"
|
|
@@ -1924,7 +1924,7 @@ const pi = [
|
|
|
1924
1924
|
{
|
|
1925
1925
|
path: "/print-route",
|
|
1926
1926
|
name: "$menu-print-route",
|
|
1927
|
-
component: y(() => import("./PrintRoute-
|
|
1927
|
+
component: y(() => import("./PrintRoute-B1vwUMqf.js")),
|
|
1928
1928
|
meta: {
|
|
1929
1929
|
isNavItem: !0,
|
|
1930
1930
|
i18nId: "menu.print_route.title"
|
|
@@ -1933,16 +1933,16 @@ const pi = [
|
|
|
1933
1933
|
{
|
|
1934
1934
|
path: "/serving-sequence",
|
|
1935
1935
|
name: "$menu-serving-sequence",
|
|
1936
|
-
component: y(() => import("./ServingSequence-
|
|
1936
|
+
component: y(() => import("./ServingSequence-CZCg-JF_.js")),
|
|
1937
1937
|
meta: {
|
|
1938
|
-
isNavItem: () =>
|
|
1938
|
+
isNavItem: () => P.value,
|
|
1939
1939
|
i18nId: "menu.serving_sequence.title"
|
|
1940
1940
|
}
|
|
1941
1941
|
},
|
|
1942
1942
|
{
|
|
1943
1943
|
path: "/publish",
|
|
1944
1944
|
name: "$menu-publish",
|
|
1945
|
-
component: y(() => import("./Publish-
|
|
1945
|
+
component: y(() => import("./Publish-GdVl9zk1.js")),
|
|
1946
1946
|
meta: {
|
|
1947
1947
|
isNavItem: !0,
|
|
1948
1948
|
i18nId: "menu.publish.title"
|
|
@@ -1955,7 +1955,7 @@ const pi = [
|
|
|
1955
1955
|
{
|
|
1956
1956
|
path: "/setting",
|
|
1957
1957
|
name: "$menu-menu-setting",
|
|
1958
|
-
component: y(() => import("./MenuSetting-
|
|
1958
|
+
component: y(() => import("./MenuSetting-KUUyO4fI.js")),
|
|
1959
1959
|
meta: {
|
|
1960
1960
|
isNavItem: !0,
|
|
1961
1961
|
i18nId: "menu.menu_setting.title"
|
|
@@ -1970,7 +1970,7 @@ const pi = [
|
|
|
1970
1970
|
{
|
|
1971
1971
|
path: "/catalog",
|
|
1972
1972
|
name: "$menu-catalog",
|
|
1973
|
-
component: y(() => import("./Catalog-
|
|
1973
|
+
component: y(() => import("./Catalog-BBX3Pq4h.js")),
|
|
1974
1974
|
meta: {
|
|
1975
1975
|
isNavItem: !0,
|
|
1976
1976
|
i18nId: "menu.catalog.title"
|
|
@@ -1978,7 +1978,7 @@ const pi = [
|
|
|
1978
1978
|
},
|
|
1979
1979
|
{
|
|
1980
1980
|
path: "/catalog/edit/:id",
|
|
1981
|
-
component: y(() => import("./_id_-
|
|
1981
|
+
component: y(() => import("./_id_-C_K_0jJR.js")),
|
|
1982
1982
|
name: "$menu-catalog-edit",
|
|
1983
1983
|
children: [
|
|
1984
1984
|
{
|
|
@@ -1990,31 +1990,31 @@ const pi = [
|
|
|
1990
1990
|
},
|
|
1991
1991
|
{
|
|
1992
1992
|
path: "/catalog/edit/:id/product",
|
|
1993
|
-
component: y(() => import("./Product-
|
|
1993
|
+
component: y(() => import("./Product-CxVknZIk.js")),
|
|
1994
1994
|
name: "$menu-catalog-edit-product"
|
|
1995
1995
|
/* EDIT_CATALOG_PRODUCT */
|
|
1996
1996
|
},
|
|
1997
1997
|
{
|
|
1998
1998
|
path: "/catalog/edit/:id/category",
|
|
1999
|
-
component: y(() => import("./Category-
|
|
1999
|
+
component: y(() => import("./Category-CslEpONp.js")),
|
|
2000
2000
|
name: "$menu-catalog-edit-category"
|
|
2001
2001
|
/* EDIT_CATALOG_CATEGORY */
|
|
2002
2002
|
},
|
|
2003
2003
|
{
|
|
2004
2004
|
path: "/catalog/edit/:id/group",
|
|
2005
|
-
component: y(() => import("./Group-
|
|
2005
|
+
component: y(() => import("./Group-I5Yg2wzg.js")),
|
|
2006
2006
|
name: "$menu-catalog-edit-group"
|
|
2007
2007
|
/* EDIT_CATALOG_GROUP */
|
|
2008
2008
|
},
|
|
2009
2009
|
{
|
|
2010
2010
|
path: "/catalog/edit/:id/takeaway",
|
|
2011
|
-
component: y(() => import("./Takeaway-
|
|
2011
|
+
component: y(() => import("./Takeaway-D2-FtYgp.js")),
|
|
2012
2012
|
name: "$menu-catalog-edit-takeaway"
|
|
2013
2013
|
/* EDIT_CATALOG_TAKEAWAY */
|
|
2014
2014
|
},
|
|
2015
2015
|
{
|
|
2016
2016
|
path: "/catalog/edit/:id/setting",
|
|
2017
|
-
component: y(() => import("./Setting-
|
|
2017
|
+
component: y(() => import("./Setting-BbWTF4XX.js")),
|
|
2018
2018
|
name: "$menu-catalog-edit-setting"
|
|
2019
2019
|
/* EDIT_CATALOG_SETTING */
|
|
2020
2020
|
}
|
|
@@ -2022,7 +2022,7 @@ const pi = [
|
|
|
2022
2022
|
}
|
|
2023
2023
|
], li = "treeEditorOpen", gi = () => {
|
|
2024
2024
|
window.postMessage({ type: li }, "*");
|
|
2025
|
-
}, _i = y(() => import("./App-
|
|
2025
|
+
}, _i = y(() => import("./App-DUaVnMKY.js"));
|
|
2026
2026
|
function bi(e, t) {
|
|
2027
2027
|
e.use(Ja);
|
|
2028
2028
|
}
|
package/dist/app.js
CHANGED