@feedmepos/mf-menu 1.0.1-dev.1 → 1.0.1-dev.3

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.
Files changed (65) hide show
  1. package/dist/{App-CXamBqwS.js → App-DEoljb3M.js} +548 -534
  2. package/dist/{BindingTable.vue_vue_type_script_setup_true_lang-DzNuoUmQ.js → BindingTable.vue_vue_type_script_setup_true_lang-DACfW6SY.js} +1 -1
  3. package/dist/{Catalog-BHb5ZB6_.js → Catalog-B6mXH-Ez.js} +4 -4
  4. package/dist/{CatalogBinding-X-AHRvcJ.js → CatalogBinding-CZbbxQCa.js} +3 -3
  5. package/dist/{CatalogEditTabs.vue_vue_type_script_setup_true_lang-NFeJpXLh.js → CatalogEditTabs.vue_vue_type_script_setup_true_lang-CFjBkgkl.js} +3 -3
  6. package/dist/{CatalogEditor.vue_vue_type_script_setup_true_lang-CrrkUkfD.js → CatalogEditor.vue_vue_type_script_setup_true_lang-owNQUf8y.js} +6 -6
  7. package/dist/{CatalogLinkProductAction.vue_vue_type_script_setup_true_lang-C43Ettr2.js → CatalogLinkProductAction.vue_vue_type_script_setup_true_lang-DJLjbLGK.js} +3 -3
  8. package/dist/{Category-MXhBgKnb.js → Category-B37n9Row.js} +2 -2
  9. package/dist/{Category-DsTyhvYK.js → Category-DHGrowud.js} +5 -5
  10. package/dist/{CategoryList.vue_vue_type_script_setup_true_lang-BJTKjE25.js → CategoryList.vue_vue_type_script_setup_true_lang-_Ux8uXwn.js} +92 -91
  11. package/dist/{CookingGuide-yBqMRWrs.js → CookingGuide-4i1KsBxo.js} +262 -256
  12. package/dist/{Group-CMKmmN3C.js → Group-DVB_G6lM.js} +5 -5
  13. package/dist/{Group-DINfX6Wn.js → Group-N5_9GK2v.js} +2 -2
  14. package/dist/{GroupList.vue_vue_type_script_setup_true_lang-BEBZmPdu.js → GroupList.vue_vue_type_script_setup_true_lang-BDWyiP8J.js} +5 -5
  15. package/dist/{Ingredient-BNQ2LIqN.js → Ingredient-C-puVgJK.js} +3 -3
  16. package/dist/LinkProductSideSheet.vue_vue_type_script_setup_true_lang-ChDd6vJd.js +707 -0
  17. package/dist/{MenuSetting-DARGZW4u.js → MenuSetting-QhU37DTL.js} +546 -513
  18. package/dist/{OrderPacing-DuGDpSLN.js → OrderPacing-COY_HJ8I.js} +96 -93
  19. package/dist/{OrderPacingFields.vue_vue_type_script_setup_true_lang-2V1SiXyH.js → OrderPacingFields.vue_vue_type_script_setup_true_lang-BAbojJnz.js} +1 -1
  20. package/dist/Preview-DrbsRznu.js +321 -0
  21. package/dist/{PriceTierNotice.vue_vue_type_script_setup_true_lang-hbG9eqTr.js → PriceTierNotice.vue_vue_type_script_setup_true_lang-BTJwvrlT.js} +1 -1
  22. package/dist/{PrintRoute-N0gXx2Wx.js → PrintRoute-DVJAvYq-.js} +158 -152
  23. package/dist/{Product-Cp2dYxav.js → Product-ClT1oFVA.js} +4 -4
  24. package/dist/{ProductEditorHost.vue_vue_type_script_setup_true_lang-imCNnKvi.js → ProductEditorHost.vue_vue_type_script_setup_true_lang-B4qpB-yA.js} +2 -2
  25. package/dist/{ProductGroupCreateSheet.vue_vue_type_script_setup_true_lang-BqZ2jz39.js → ProductGroupCreateSheet.vue_vue_type_script_setup_true_lang-BWZwFal7.js} +3 -3
  26. package/dist/{ProductImageEditorDialog.vue_vue_type_script_setup_true_lang-KrQJLxU2.js → ProductImageEditorDialog.vue_vue_type_script_setup_true_lang-yZSYrcYe.js} +1 -1
  27. package/dist/{ProductInlineCreateHost.vue_vue_type_script_setup_true_lang-i0smKuFw.js → ProductInlineCreateHost.vue_vue_type_script_setup_true_lang-3SaYTgCI.js} +1181 -1174
  28. package/dist/ProductInternalTools-DRcfn5DE.js +2147 -0
  29. package/dist/{ProductInventoryDialog-DmN4sXP_.js → ProductInventoryDialog-i48yqlp_.js} +1 -1
  30. package/dist/{ProductInventoryDialog.vue_vue_type_script_setup_true_lang-UOIkIylV.js → ProductInventoryDialog.vue_vue_type_script_setup_true_lang-C7z4BHKp.js} +1 -1
  31. package/dist/{ProductList.vue_vue_type_script_setup_true_lang-C262_Dsq.js → ProductList.vue_vue_type_script_setup_true_lang-DkIwQeby.js} +1990 -1967
  32. package/dist/{ProductVariantTranslationSheet.vue_vue_type_script_setup_true_lang-wTwunTLr.js → ProductVariantTranslationSheet.vue_vue_type_script_setup_true_lang-Dr0r1hYM.js} +1 -1
  33. package/dist/{Products-BSthFwvC.js → Products-B4yaF9Y5.js} +3 -3
  34. package/dist/{Publish-BcUXfV7Z.js → Publish-D8pKpnju.js} +3 -3
  35. package/dist/{Recipe-Nhmop5G3.js → Recipe-Cz4s5W4k.js} +3 -3
  36. package/dist/{Scheduler-DEMpmXNY.js → Scheduler-xE_rjFjJ.js} +3 -3
  37. package/dist/{ServingSequence-Dkd70bsy.js → ServingSequence-BjD1Xn6Q.js} +103 -97
  38. package/dist/{Setting-LWEFUdQK.js → Setting-BrD0NB_a.js} +6 -6
  39. package/dist/{Subcategory-YvAbjlgi.js → Subcategory-wbHw1iCU.js} +141 -129
  40. package/dist/{Takeaway-DUoXWAQT.js → Takeaway-CIqSThUQ.js} +5 -5
  41. package/dist/{Takeaway-CoK-aka9.js → Takeaway-DM7weBPk.js} +2 -2
  42. package/dist/{TakeawayList.vue_vue_type_script_setup_true_lang-D4xu-gHa.js → TakeawayList.vue_vue_type_script_setup_true_lang-HZP5jmAy.js} +117 -111
  43. package/dist/{TreeEditorOpenner.vue_vue_type_script_setup_true_lang-1iGMM-Xt.js → TreeEditorOpenner.vue_vue_type_script_setup_true_lang-CLeJxNfG.js} +6 -6
  44. package/dist/{Unit-BIoPBeiP.js → Unit-RHuHWCCg.js} +2 -2
  45. package/dist/{Variant-X4llcQO6.js → Variant-MA-mdYxx.js} +114 -108
  46. package/dist/{_id_-gKOWPBVp.js → _id_-CO1c1eIn.js} +3 -3
  47. package/dist/{app-DUyvBFfY.js → app-DnIyFwTs.js} +434 -397
  48. package/dist/app.js +1 -1
  49. package/dist/apps/mf-menu/src/app.d.ts +360 -0
  50. package/dist/apps/mf-menu/src/components/preview/MenuPreview.vue.d.ts +13 -0
  51. package/dist/apps/mf-menu/src/components/preview/simulatorPort.d.ts +23 -0
  52. package/dist/apps/mf-menu/src/router/shared.d.ts +34 -0
  53. package/dist/apps/mf-menu/src/sdk/import-export.d.ts +8 -2
  54. package/dist/apps/mf-menu/src/utils/ruleValueKey.d.ts +12 -0
  55. package/dist/apps/mf-menu/src/views/Preview/Preview.vue.d.ts +2 -0
  56. package/dist/apps/mf-menu/tsconfig.app.tsbuildinfo +1 -1
  57. package/dist/assets/{menu-compute--bTrGqr1.js → menu-compute-BYzYhsd6.js} +36 -36
  58. package/dist/assets/{validate-menu-mv20U_e_.js → validate-menu-oaYEuMiz.js} +4 -4
  59. package/dist/mf-menu.css +1 -1
  60. package/dist/{provide-CxmHxIEV.js → provide-UZbVvMqZ.js} +57396 -55718
  61. package/dist/ruleValueKey-BF52PuHb.js +10 -0
  62. package/dist/{useActionFeedback-Di6FGqLG.js → useActionFeedback-CfPMryOm.js} +1 -1
  63. package/package.json +1 -1
  64. package/dist/LinkProductSideSheet.vue_vue_type_script_setup_true_lang-B8n517dM.js +0 -671
  65. package/dist/ProductInternalTools-CJG8TsE4.js +0 -2906
package/dist/app.js CHANGED
@@ -1,4 +1,4 @@
1
- import { F as e, i as r, j as t, r as u, u as i } from "./app-DUyvBFfY.js";
1
+ import { F as e, i as r, d as t, r as u, u as i } from "./app-DnIyFwTs.js";
2
2
  export {
3
3
  e as FmApp,
4
4
  r as i18nMessages,
@@ -2459,6 +2459,76 @@ export declare const i18nMessages: {
2459
2459
  schedule_required: string;
2460
2460
  };
2461
2461
  };
2462
+ menu_preview: {
2463
+ title: string;
2464
+ subtitle: string;
2465
+ labels: {
2466
+ restaurant: string;
2467
+ catalog: string;
2468
+ no_catalog: string;
2469
+ scheduler: string;
2470
+ menu_language: string;
2471
+ menu_language_info: string;
2472
+ device: string;
2473
+ };
2474
+ usage: {
2475
+ default: string;
2476
+ pickup: string;
2477
+ takeaway: string;
2478
+ additional: string;
2479
+ };
2480
+ device: {
2481
+ phone: string;
2482
+ tablet: string;
2483
+ kiosk: string;
2484
+ };
2485
+ status: {
2486
+ connecting: string;
2487
+ building: string;
2488
+ summary: string;
2489
+ categories: string;
2490
+ items: string;
2491
+ };
2492
+ actions: {
2493
+ retry: string;
2494
+ };
2495
+ failed: {
2496
+ title: string;
2497
+ };
2498
+ load_failed: {
2499
+ title: string;
2500
+ };
2501
+ not_configured: {
2502
+ title: string;
2503
+ subtitle: string;
2504
+ };
2505
+ limits: {
2506
+ title: string;
2507
+ stock: string;
2508
+ pricing: string;
2509
+ checkout: string;
2510
+ };
2511
+ frame_title: string;
2512
+ errors: {
2513
+ no_restaurant: string;
2514
+ not_an_option: string;
2515
+ };
2516
+ restaurant: {
2517
+ single: string;
2518
+ };
2519
+ catalog: {
2520
+ single: string;
2521
+ none: string;
2522
+ };
2523
+ simulator: {
2524
+ unsupported_version: string;
2525
+ bad_payload: string;
2526
+ render_failed: string;
2527
+ untrusted_parent: string;
2528
+ no_response: string;
2529
+ build_failed: string;
2530
+ };
2531
+ };
2462
2532
  catalog_binding: {
2463
2533
  title: string;
2464
2534
  subtitle: string;
@@ -2540,6 +2610,8 @@ export declare const i18nMessages: {
2540
2610
  product_name: string;
2541
2611
  product_code: string;
2542
2612
  product_category: string;
2613
+ restaurant_custom: string;
2614
+ product_custom: string;
2543
2615
  };
2544
2616
  remove_rule: string;
2545
2617
  condition: {
@@ -5731,6 +5803,76 @@ export declare const i18nMessages: {
5731
5803
  schedule_required: string;
5732
5804
  };
5733
5805
  };
5806
+ menu_preview: {
5807
+ title: string;
5808
+ subtitle: string;
5809
+ labels: {
5810
+ restaurant: string;
5811
+ catalog: string;
5812
+ no_catalog: string;
5813
+ scheduler: string;
5814
+ menu_language: string;
5815
+ menu_language_info: string;
5816
+ device: string;
5817
+ };
5818
+ usage: {
5819
+ default: string;
5820
+ pickup: string;
5821
+ takeaway: string;
5822
+ additional: string;
5823
+ };
5824
+ device: {
5825
+ phone: string;
5826
+ tablet: string;
5827
+ kiosk: string;
5828
+ };
5829
+ status: {
5830
+ connecting: string;
5831
+ building: string;
5832
+ summary: string;
5833
+ categories: string;
5834
+ items: string;
5835
+ };
5836
+ actions: {
5837
+ retry: string;
5838
+ };
5839
+ failed: {
5840
+ title: string;
5841
+ };
5842
+ load_failed: {
5843
+ title: string;
5844
+ };
5845
+ not_configured: {
5846
+ title: string;
5847
+ subtitle: string;
5848
+ };
5849
+ limits: {
5850
+ title: string;
5851
+ stock: string;
5852
+ pricing: string;
5853
+ checkout: string;
5854
+ };
5855
+ frame_title: string;
5856
+ errors: {
5857
+ no_restaurant: string;
5858
+ not_an_option: string;
5859
+ };
5860
+ restaurant: {
5861
+ single: string;
5862
+ };
5863
+ catalog: {
5864
+ single: string;
5865
+ none: string;
5866
+ };
5867
+ simulator: {
5868
+ unsupported_version: string;
5869
+ bad_payload: string;
5870
+ render_failed: string;
5871
+ untrusted_parent: string;
5872
+ no_response: string;
5873
+ build_failed: string;
5874
+ };
5875
+ };
5734
5876
  catalog_binding: {
5735
5877
  title: string;
5736
5878
  subtitle: string;
@@ -5812,6 +5954,8 @@ export declare const i18nMessages: {
5812
5954
  product_name: string;
5813
5955
  product_code: string;
5814
5956
  product_category: string;
5957
+ restaurant_custom: string;
5958
+ product_custom: string;
5815
5959
  };
5816
5960
  remove_rule: string;
5817
5961
  condition: {
@@ -9003,6 +9147,76 @@ export declare const i18nMessages: {
9003
9147
  schedule_required: string;
9004
9148
  };
9005
9149
  };
9150
+ menu_preview: {
9151
+ title: string;
9152
+ subtitle: string;
9153
+ labels: {
9154
+ restaurant: string;
9155
+ catalog: string;
9156
+ no_catalog: string;
9157
+ scheduler: string;
9158
+ menu_language: string;
9159
+ menu_language_info: string;
9160
+ device: string;
9161
+ };
9162
+ usage: {
9163
+ default: string;
9164
+ pickup: string;
9165
+ takeaway: string;
9166
+ additional: string;
9167
+ };
9168
+ device: {
9169
+ phone: string;
9170
+ tablet: string;
9171
+ kiosk: string;
9172
+ };
9173
+ status: {
9174
+ connecting: string;
9175
+ building: string;
9176
+ summary: string;
9177
+ categories: string;
9178
+ items: string;
9179
+ };
9180
+ actions: {
9181
+ retry: string;
9182
+ };
9183
+ failed: {
9184
+ title: string;
9185
+ };
9186
+ load_failed: {
9187
+ title: string;
9188
+ };
9189
+ not_configured: {
9190
+ title: string;
9191
+ subtitle: string;
9192
+ };
9193
+ limits: {
9194
+ title: string;
9195
+ stock: string;
9196
+ pricing: string;
9197
+ checkout: string;
9198
+ };
9199
+ frame_title: string;
9200
+ errors: {
9201
+ no_restaurant: string;
9202
+ not_an_option: string;
9203
+ };
9204
+ restaurant: {
9205
+ single: string;
9206
+ };
9207
+ catalog: {
9208
+ single: string;
9209
+ none: string;
9210
+ };
9211
+ simulator: {
9212
+ unsupported_version: string;
9213
+ bad_payload: string;
9214
+ render_failed: string;
9215
+ untrusted_parent: string;
9216
+ no_response: string;
9217
+ build_failed: string;
9218
+ };
9219
+ };
9006
9220
  catalog_binding: {
9007
9221
  title: string;
9008
9222
  subtitle: string;
@@ -9084,6 +9298,8 @@ export declare const i18nMessages: {
9084
9298
  product_name: string;
9085
9299
  product_code: string;
9086
9300
  product_category: string;
9301
+ restaurant_custom: string;
9302
+ product_custom: string;
9087
9303
  };
9088
9304
  remove_rule: string;
9089
9305
  condition: {
@@ -12278,6 +12494,76 @@ export declare const i18nMessages: {
12278
12494
  schedule_required: string;
12279
12495
  };
12280
12496
  };
12497
+ menu_preview: {
12498
+ title: string;
12499
+ subtitle: string;
12500
+ labels: {
12501
+ restaurant: string;
12502
+ catalog: string;
12503
+ no_catalog: string;
12504
+ scheduler: string;
12505
+ menu_language: string;
12506
+ menu_language_info: string;
12507
+ device: string;
12508
+ };
12509
+ usage: {
12510
+ default: string;
12511
+ pickup: string;
12512
+ takeaway: string;
12513
+ additional: string;
12514
+ };
12515
+ device: {
12516
+ phone: string;
12517
+ tablet: string;
12518
+ kiosk: string;
12519
+ };
12520
+ status: {
12521
+ connecting: string;
12522
+ building: string;
12523
+ summary: string;
12524
+ categories: string;
12525
+ items: string;
12526
+ };
12527
+ actions: {
12528
+ retry: string;
12529
+ };
12530
+ failed: {
12531
+ title: string;
12532
+ };
12533
+ load_failed: {
12534
+ title: string;
12535
+ };
12536
+ not_configured: {
12537
+ title: string;
12538
+ subtitle: string;
12539
+ };
12540
+ limits: {
12541
+ title: string;
12542
+ stock: string;
12543
+ pricing: string;
12544
+ checkout: string;
12545
+ };
12546
+ frame_title: string;
12547
+ errors: {
12548
+ no_restaurant: string;
12549
+ not_an_option: string;
12550
+ };
12551
+ restaurant: {
12552
+ single: string;
12553
+ };
12554
+ catalog: {
12555
+ single: string;
12556
+ none: string;
12557
+ };
12558
+ simulator: {
12559
+ unsupported_version: string;
12560
+ bad_payload: string;
12561
+ render_failed: string;
12562
+ untrusted_parent: string;
12563
+ no_response: string;
12564
+ build_failed: string;
12565
+ };
12566
+ };
12281
12567
  catalog_binding: {
12282
12568
  title: string;
12283
12569
  subtitle: string;
@@ -12359,6 +12645,8 @@ export declare const i18nMessages: {
12359
12645
  product_name: string;
12360
12646
  product_code: string;
12361
12647
  product_category: string;
12648
+ restaurant_custom: string;
12649
+ product_custom: string;
12362
12650
  };
12363
12651
  remove_rule: string;
12364
12652
  condition: {
@@ -15550,6 +15838,76 @@ export declare const i18nMessages: {
15550
15838
  schedule_required: string;
15551
15839
  };
15552
15840
  };
15841
+ menu_preview: {
15842
+ title: string;
15843
+ subtitle: string;
15844
+ labels: {
15845
+ restaurant: string;
15846
+ catalog: string;
15847
+ no_catalog: string;
15848
+ scheduler: string;
15849
+ menu_language: string;
15850
+ menu_language_info: string;
15851
+ device: string;
15852
+ };
15853
+ usage: {
15854
+ default: string;
15855
+ pickup: string;
15856
+ takeaway: string;
15857
+ additional: string;
15858
+ };
15859
+ device: {
15860
+ phone: string;
15861
+ tablet: string;
15862
+ kiosk: string;
15863
+ };
15864
+ status: {
15865
+ connecting: string;
15866
+ building: string;
15867
+ summary: string;
15868
+ categories: string;
15869
+ items: string;
15870
+ };
15871
+ actions: {
15872
+ retry: string;
15873
+ };
15874
+ failed: {
15875
+ title: string;
15876
+ };
15877
+ load_failed: {
15878
+ title: string;
15879
+ };
15880
+ not_configured: {
15881
+ title: string;
15882
+ subtitle: string;
15883
+ };
15884
+ limits: {
15885
+ title: string;
15886
+ stock: string;
15887
+ pricing: string;
15888
+ checkout: string;
15889
+ };
15890
+ frame_title: string;
15891
+ errors: {
15892
+ no_restaurant: string;
15893
+ not_an_option: string;
15894
+ };
15895
+ restaurant: {
15896
+ single: string;
15897
+ };
15898
+ catalog: {
15899
+ single: string;
15900
+ none: string;
15901
+ };
15902
+ simulator: {
15903
+ unsupported_version: string;
15904
+ bad_payload: string;
15905
+ render_failed: string;
15906
+ untrusted_parent: string;
15907
+ no_response: string;
15908
+ build_failed: string;
15909
+ };
15910
+ };
15553
15911
  catalog_binding: {
15554
15912
  title: string;
15555
15913
  subtitle: string;
@@ -15631,6 +15989,8 @@ export declare const i18nMessages: {
15631
15989
  product_name: string;
15632
15990
  product_code: string;
15633
15991
  product_category: string;
15992
+ restaurant_custom: string;
15993
+ product_custom: string;
15634
15994
  };
15635
15995
  remove_rule: string;
15636
15996
  condition: {
@@ -0,0 +1,13 @@
1
+ import type { MenuPreviewModule } from '@feedmepos/menu-sdk';
2
+ type MenuPreviewPageSdk = {
3
+ preview: Pick<MenuPreviewModule, 'open'>;
4
+ };
5
+ type __VLS_Props = {
6
+ sdk: MenuPreviewPageSdk;
7
+ /** The deployed simulator; null where this environment has none. */
8
+ simulatorUrl: string | null;
9
+ /** This page's origin, which the simulator posts back to. */
10
+ parentOrigin?: string;
11
+ };
12
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
13
+ export default _default;
@@ -0,0 +1,23 @@
1
+ import type { MenuPreviewSimulatorPort } from '@feedmepos/menu-sdk';
2
+ /**
3
+ * Where the simulator iframe points, and the origin every message to and from
4
+ * it must carry.
5
+ *
6
+ * The simulator posts only to the origin named in `?parent=` and refuses one
7
+ * that is not on its allowlist (`feedmepos/menu-simulator` `src/lib/contract.ts`
8
+ * and `public/_headers`), so this page's own origin goes there.
9
+ */
10
+ export declare function simulatorFrame(simulatorUrl: string, parentOrigin: string): {
11
+ readonly src: string;
12
+ readonly origin: string;
13
+ };
14
+ /**
15
+ * The host side of the simulator iframe, handed to the SDK's preview session.
16
+ *
17
+ * Only the window plumbing lives here: posting to the frame at the simulator's
18
+ * exact origin (never `'*'`), and passing on a `message` event only when both
19
+ * its origin and its source are that frame — an origin check alone would let a
20
+ * same-origin frame elsewhere on the page speak for it. Every message itself,
21
+ * handshake to acknowledgement, is the SDK's.
22
+ */
23
+ export declare function createSimulatorPort(frame: () => HTMLIFrameElement | null, origin: string, host?: Pick<Window, 'addEventListener' | 'removeEventListener'>): MenuPreviewSimulatorPort;
@@ -6,6 +6,39 @@ export declare function setMenuCatalogBindingCapability(next: Capability): void;
6
6
  export declare let appReady: Promise<void>;
7
7
  export declare function resetAppReady(): void;
8
8
  export declare function signalAppReady(): void;
9
+ /** What a shell publishes about its scope for the gated route guards. */
10
+ export interface ShellScope {
11
+ routes: MenuRouteCapabilities;
12
+ publish: Capability;
13
+ catalogBinding: Capability;
14
+ /** The session is terminal, so a gated guard can decide on `routes`. */
15
+ settled: boolean;
16
+ }
17
+ export interface AttachedShell {
18
+ /**
19
+ * Whether this is still the latest shell (reactive). Only it may decide a
20
+ * route: a replaced shell would pair its own settled session with the
21
+ * capabilities the newer shell publishes, provisional ones included.
22
+ */
23
+ isCurrent(): boolean;
24
+ /** Publishes this shell's scope; ignored once a newer shell has attached. */
25
+ publish(scope: ShellScope): void;
26
+ detach(): void;
27
+ }
28
+ /**
29
+ * Called by the shell when it is set up. The latest shell owns readiness and
30
+ * the capabilities the guards read: one set up before an earlier shell
31
+ * unmounts (a transition, a keyed remount, HMR) must not have its scope
32
+ * overwritten by a late update from that earlier shell, nor lose its
33
+ * attachment or its signal to that earlier shell's detach.
34
+ */
35
+ export declare function attachShell(): AttachedShell;
36
+ /**
37
+ * Where the settled scope sends `route`, or `null` to stay: its `scopeRedirect`
38
+ * target, else Catalog when its `scopeGuard` fails. The one rule both the
39
+ * route guard and the shell apply to a scope-gated route.
40
+ */
41
+ export declare function scopeRedirectTarget(route: Pick<RouteLocationNormalized, 'meta' | 'query'>): RouteLocationRaw | null;
9
42
  /** Keeps businessId/country on the URL so the query-state plugin need not redirect again. */
10
43
  export declare function withQuery(target: RouteLocationRaw, from: Pick<RouteLocationNormalized, 'query'>): RouteLocationRaw;
11
44
  export declare enum RouteName {
@@ -23,6 +56,7 @@ export declare enum RouteName {
23
56
  COOKING_GUIDE = "$menu-cooking-guide",
24
57
  PRINT_ROUTE = "$menu-print-route",
25
58
  PUBLISH = "$menu-publish",
59
+ PREVIEW = "$menu-preview",
26
60
  CATALOG_BINDING = "$menu-catalog-binding",
27
61
  PRODUCT_INTERNAL_TOOLS = "$menu-product-internal-tools"
28
62
  }
@@ -1,3 +1,9 @@
1
- import type { MenuExportArtifact, MenuImportExportParser } from '@feedmepos/menu-sdk';
1
+ import type { MenuExportResult, MenuImportExportParser } from '@feedmepos/menu-sdk';
2
2
  export declare const menuImportExportParser: MenuImportExportParser;
3
- export declare function downloadMenuExport(artifacts: readonly MenuExportArtifact[]): void;
3
+ /**
4
+ * Saves an export the way the SDK names it: one zip when it gives an
5
+ * `archiveName` (several files would each be a download, which the browser
6
+ * stops to ask about), otherwise the single file as it is. The workbooks are
7
+ * already deflated, so the zip only stores them.
8
+ */
9
+ export declare function downloadMenuExport(result: MenuExportResult): Promise<void>;
@@ -0,0 +1,12 @@
1
+ import type { RuleValue } from '@feedmepos/menu-sdk';
2
+ /**
3
+ * A rule condition value as an FmSelect item value, and back.
4
+ *
5
+ * FmSelect needs a primitive, and a condition value may be `null` (the
6
+ * uncategorised bucket), a number or a boolean (a tag keeps its type) or any
7
+ * string a merchant tagged a record with. A sentinel string for `null` would
8
+ * collide with a tag value spelled the same way; the JSON encoding of a value
9
+ * is unique per value and per type, so it round-trips every one of them.
10
+ */
11
+ export declare function ruleValueKey(value: RuleValue): string;
12
+ export declare function ruleValueFromKey(key: string): RuleValue;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;