@feedmepos/mf-menu 0.32.72-dev.1 → 0.32.73-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.
Files changed (72) hide show
  1. package/dist/{App-DpBAxq_x.js → App-DFetmhVn.js} +6 -6
  2. package/dist/{ApplyProduct.vue_vue_type_script_setup_true_lang-BE34SL6B.js → ApplyProduct.vue_vue_type_script_setup_true_lang-y1XTvJl-.js} +3 -3
  3. package/dist/{ApplyProductDialog.vue_vue_type_script_setup_true_lang-Cg4oaBql.js → ApplyProductDialog.vue_vue_type_script_setup_true_lang-Direr0Er.js} +3 -3
  4. package/dist/{Catalog-BCKu3av3.js → Catalog-CEsuu92E.js} +6 -6
  5. package/dist/{Category-D8fstrW5.js → Category-9pOjST0B.js} +4 -4
  6. package/dist/{Category-DRyJ8Y9S.js → Category-DXNrywxa.js} +4 -4
  7. package/dist/{CookingGuide-BKTlBPm-.js → CookingGuide-Dc2JV-ns.js} +5 -5
  8. package/dist/{CustomAttributeChip.vue_vue_type_script_setup_true_lang-BHqJGqLf.js → CustomAttributeChip.vue_vue_type_script_setup_true_lang-p55lJ4Hz.js} +1 -1
  9. package/dist/{Group-DMLdJAIA.js → Group-BYplVkpK.js} +1 -1
  10. package/dist/{Group-_vEUeyva.js → Group-ChJNWs6L.js} +3 -3
  11. package/dist/{Group.vue_vue_type_script_setup_true_lang-BEONKZuB.js → Group.vue_vue_type_script_setup_true_lang-a9lXnDNz.js} +7 -7
  12. package/dist/{GroupMarkupPriceDialog.vue_vue_type_script_setup_true_lang-B2pS71Xq.js → GroupMarkupPriceDialog.vue_vue_type_script_setup_true_lang-TsK2geUE.js} +5 -5
  13. package/dist/{ImportProductDialog.vue_vue_type_script_setup_true_lang-BHNmNXw0.js → ImportProductDialog.vue_vue_type_script_setup_true_lang-DfxbyQj0.js} +7 -7
  14. package/dist/{Ingredient-DeGrqMqN.js → Ingredient-C36fI_Y_.js} +4 -4
  15. package/dist/{InventoryBinding.vue_vue_type_script_setup_true_lang-DFOcD2mw.js → InventoryBinding.vue_vue_type_script_setup_true_lang-DuaXjIZE.js} +2 -2
  16. package/dist/{LinkProductSideSheet-BZNe2r8t.js → LinkProductSideSheet-Cdi9Hm7U.js} +4 -4
  17. package/dist/{MenuSetting-yb8w_Nwc.js → MenuSetting-BkOcUXNz.js} +7 -7
  18. package/dist/{OrderPacing-DRApEr9x.js → OrderPacing-D47y0kVV.js} +5 -5
  19. package/dist/{PrintRoute-DK3ZMajo.js → PrintRoute-BRyphVV7.js} +5 -5
  20. package/dist/{Product-CBhhhicD.js → Product-CqimpkrA.js} +1 -1
  21. package/dist/{Product.vue_vue_type_script_setup_true_lang-CPgECJwS.js → Product.vue_vue_type_script_setup_true_lang-yvCJfuKc.js} +14 -14
  22. package/dist/{ProductInternalTools-D8j9hMuA.js → ProductInternalTools-Wreu7jnK.js} +6 -6
  23. package/dist/{Products-Db0Ihn6p.js → Products-DMghTzRH.js} +41 -41
  24. package/dist/{Publish-BFBUjUWu.js → Publish-C8NIDU84.js} +4 -4
  25. package/dist/{Recipe-B0r5vJz6.js → Recipe-DjbiXqIa.js} +5 -5
  26. package/dist/{RestaurantAttributesSelector.vue_vue_type_script_setup_true_lang-C8Jk7KEh.js → RestaurantAttributesSelector.vue_vue_type_script_setup_true_lang-CHo_osK5.js} +1 -1
  27. package/dist/{RuleView.vue_vue_type_script_setup_true_lang-DPCcNBrm.js → RuleView.vue_vue_type_script_setup_true_lang-CdFD-539.js} +193 -193
  28. package/dist/{Scheduler-yOdnbwyV.js → Scheduler-BHsNpRwi.js} +3 -3
  29. package/dist/{ServingSequence-CEcYzZKq.js → ServingSequence-BzXN3119.js} +3 -3
  30. package/dist/{Setting-CEwxLrwm.js → Setting-DwzUJeeQ.js} +5 -5
  31. package/dist/{Subcategory-b1NEH4Rt.js → Subcategory--mYhyjBU.js} +6 -6
  32. package/dist/{Takeaway-BwGq2ti3.js → Takeaway-C-9Xn5-s.js} +4 -4
  33. package/dist/{Takeaway-C4X3hjz2.js → Takeaway-SjNunTHs.js} +1 -1
  34. package/dist/{Takeaway.vue_vue_type_script_setup_true_lang-Da28Vzx1.js → Takeaway.vue_vue_type_script_setup_true_lang-7ilTVxnf.js} +5 -5
  35. package/dist/{TranslationFieldSection.vue_vue_type_script_setup_true_lang-DIP7cNpd.js → TranslationFieldSection.vue_vue_type_script_setup_true_lang-C2ypt2gn.js} +1 -1
  36. package/dist/{TranslationSideSheet.vue_vue_type_script_setup_true_lang-CCYzllV_.js → TranslationSideSheet.vue_vue_type_script_setup_true_lang-FCwo1ffe.js} +2 -2
  37. package/dist/{TreeEditorOpenner.vue_vue_type_script_setup_true_lang-e_pAe_Ob.js → TreeEditorOpenner.vue_vue_type_script_setup_true_lang-C6T1-4VW.js} +15 -15
  38. package/dist/{Unit-DWGvi3C5.js → Unit-DdHWcsOq.js} +2 -2
  39. package/dist/{Variant-2YYwBJmZ.js → Variant-C0NHZgVG.js} +3 -3
  40. package/dist/{_id_-3pf3YlPS.js → _id_-CGj-_Wf1.js} +10 -10
  41. package/dist/{app-D6CmNX90.js → app-BDnlfh91.js} +1 -1
  42. package/dist/{app-D1p44Rbf.js → app-C2sqVqgY.js} +57 -57
  43. package/dist/app.js +1 -1
  44. package/dist/apps/mf-menu/src/api/media.d.ts +11 -5
  45. package/dist/apps/mf-menu/src/components/feature/TreeEditor/composable/productImages.d.ts +5 -15
  46. package/dist/assets/{linked-status-B_5fbldk.js → linked-status-BEVoil9k.js} +3 -3
  47. package/dist/assets/{menu-export-Dje2CzXB.js → menu-export-b7kp_kR4.js} +3 -3
  48. package/dist/assets/{override-menu-CpJc9-6f.js → override-menu-B3SmDhgz.js} +3 -3
  49. package/dist/assets/{validate-menu-CpDDVAwU.js → validate-menu-_Zzd_I1D.js} +2 -2
  50. package/dist/{catalog-Ds7c8bSK.js → catalog-B1ZziPQB.js} +1 -1
  51. package/dist/{catalogSetting-qbnlvX9R.js → catalogSetting-BS1ezczk.js} +1 -1
  52. package/dist/{currency-BQjK22_U.js → currency-DL5g-dtI.js} +1 -1
  53. package/dist/{dayjs.min-BjENDBB5.js → dayjs.min-CQ1_LhKX.js} +2 -2
  54. package/dist/{discardConfirm-DhbS0wLN.js → discardConfirm-C4LZQnld.js} +1 -1
  55. package/dist/{index-C2rMjg4b.js → index-BXJxVDMu.js} +1 -1
  56. package/dist/{index-YU-FPKch.js → index-CaeqCjsO.js} +5 -5
  57. package/dist/{index-BqB1Vagh.js → index-Sy9RYXAX.js} +6 -6
  58. package/dist/{index.vue_vue_type_script_setup_true_lang-DILo07iQ.js → index.vue_vue_type_script_setup_true_lang-CY1f2x06.js} +451 -445
  59. package/dist/{item-CN-mYmn-.js → item-CrOu6IJL.js} +679 -682
  60. package/dist/{jszip.min-DdiexxWX.js → jszip.min-D9mU7b7T.js} +3 -3
  61. package/dist/{linkProducts-DSa1bP0Z.js → linkProducts-B4-dbciM.js} +4 -4
  62. package/dist/{memberPricing-BLIgqSgU.js → memberPricing-BXvkOfwz.js} +1 -1
  63. package/dist/{menu-kYSa55lO.js → menu-DKl9OUBT.js} +1 -1
  64. package/dist/{menuV2-BJ-6TZDX.js → menuV2-BIf1stG4.js} +92 -92
  65. package/dist/{order_pacing-CeCi-pP3.js → order_pacing-Ydt58quc.js} +5 -5
  66. package/dist/packages/shared/src/components/form/ImageDropField.vue.d.ts +5 -0
  67. package/dist/{priceTier-CsF1g5ie.js → priceTier-fJf9R5E-.js} +1 -1
  68. package/dist/{rules-C3jtb0rM.js → rules-CcUhxgHd.js} +3 -3
  69. package/dist/{scheduler-DZpjPLLc.js → scheduler-DTqvX1G_.js} +5 -5
  70. package/dist/{toExcel-DI9BOlMc.js → toExcel-sGZOMN7R.js} +2 -2
  71. package/dist/{unit-DeNymCWc.js → unit-DBrzymPd.js} +3 -3
  72. package/package.json +2 -2
package/dist/app.js CHANGED
@@ -1,4 +1,4 @@
1
- import { F as e, i as r, j as o, o as t, r as i, u as p } from "./app-D1p44Rbf.js";
1
+ import { F as e, i as r, j as o, o as t, r as i, u as p } from "./app-C2sqVqgY.js";
2
2
  export {
3
3
  e as FmApp,
4
4
  r as i18nMessages,
@@ -119,8 +119,8 @@ export declare const mediaService: {
119
119
  * alone. For rewriting the original itself, see `updateOriginal` — same endpoint,
120
120
  * different mode, and the only one that is not AI generation.
121
121
  *
122
- * Both modes here are AI generation, and which one runs is decided by the field that
123
- * is filled (either, or both):
122
+ * Normally this endpoint runs AI generation, and which mode runs is decided by the
123
+ * field that is filled:
124
124
  * - `base64` stores the supplied bytes as the *source* and queues generation from
125
125
  * them. It is not a passthrough: the service trims uniform bars off the source and
126
126
  * hands it to the model, so what lands is a redraw of the merchant's image at this
@@ -129,9 +129,13 @@ export declare const mediaService: {
129
129
  * - `instruction` queues a re-edit of the variant's *current* image (with
130
130
  * `regenerateFromOrigin`, of the original instead, discarding previous edits).
131
131
  *
132
- * Either way the ratio drops back to `pending` for ~40s and the request consumes one
133
- * AI generation from the business's license allowance. The service rejects an update
134
- * carrying neither field with `400 INVALID_PARAM`.
132
+ * - `directUpload: true` together with `base64` stores those bytes directly as the
133
+ * named ratio. It is synchronous, does not use an AI-generation allowance, and is
134
+ * the mode used when a merchant uploads the final ratio image.
135
+ *
136
+ * The two AI modes drop the ratio back to `pending` for ~40s and consume one AI
137
+ * generation from the business's license allowance. The service rejects an update
138
+ * carrying neither `base64` nor `instruction` with `400 INVALID_PARAM`.
135
139
  *
136
140
  * Unlike an upload these bytes do pass through the service pod — there is no
137
141
  * variant-level `upload-intent` — so callers must send a cropped, re-encoded image
@@ -146,6 +150,8 @@ export declare const mediaService: {
146
150
  aspectRatio: AspectRatio;
147
151
  base64?: string;
148
152
  instruction?: string;
153
+ /** Store `base64` as this ratio's final bytes instead of using it as an AI source. */
154
+ directUpload?: boolean;
149
155
  /**
150
156
  * Instruction-mode modifier: re-derive from the original instead of the current
151
157
  * variant. Sent only when true — the service reads the mode off which key is
@@ -251,21 +251,11 @@ export declare function generateAspectRatios(itemId: string, image: FdoMenuV4Ite
251
251
  /** `/images/update` carries its bytes inline, so the file has to become a data URL. */
252
252
  export declare function readFileAsDataUrl(file: File): Promise<string>;
253
253
  /**
254
- * Queues one ratio to be generated from a photo the merchant supplies, and marks it
255
- * custom.
256
- *
257
- * Named "replace" after what it does for the merchant, not after what reaches storage:
258
- * media-service stores these bytes as the generation *source* and hands them to the
259
- * model (`/images/update` with `base64`), so the variant ends up a redraw of the
260
- * supplied photo rather than the photo itself. Cropping to `ratio` in the editor is what
261
- * frames the subject for the model. It no longer pads the source to the ratio first: the
262
- * service trims uniform bars off a generation source, so the bars were discarded before
263
- * the model ever saw them — a real crop at least lets the merchant choose what survives.
264
- *
265
- * So this is asynchronous and billable, exactly like `regenerateAspectRatio`: the ratio
266
- * drops back to `pending` for ~40s and one AI generation is consumed. Callers must show
267
- * the ratio as generating and poll `listImages` — treating the returned image as final
268
- * shows the merchant the old variant and calls it done.
254
+ * Replaces one ratio with the merchant's final image and marks it custom.
255
+ *
256
+ * The image editor crops to the requested ratio, then `/images/update` stores those
257
+ * bytes directly with `directUpload: true`. This is synchronous and never invokes AI,
258
+ * so the preview can refresh immediately rather than entering the generation poll.
269
259
  *
270
260
  * The variant keeps its URL, so the only difference between the input image and the
271
261
  * returned one is `imageSet[ratio]`: it now carries the variant URL as a marker meaning