@feedmepos/mf-inventory-portal 1.7.9-dev.1 → 1.7.9

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 (117) hide show
  1. package/dist/App-wSwzHKiz.js +311 -0
  2. package/dist/{ApprovalView-DpkYimTU.js → ApprovalView-DRT6Qd2e.js} +9 -9
  3. package/dist/{BindingsDialog-9MteMW5_.js → BindingsDialog-CdAUadBI.js} +2 -2
  4. package/dist/{BindingsPicker-C3R1Iaci.js → BindingsPicker-BN_wX0N8.js} +2 -2
  5. package/dist/{BindingsTable-yWS4vjmz.js → BindingsTable-CK6m-C2K.js} +4 -4
  6. package/dist/BulkReceiveRequestView-BXs22T-g.js +2584 -0
  7. package/dist/{ChangeLocationComponent.vue_vue_type_script_setup_true_lang-DrehE0r3.js → ChangeLocationComponent.vue_vue_type_script_setup_true_lang-CFX666Wz.js} +1 -1
  8. package/dist/{ClosingDraftView-BO0eUpk7.js → ClosingDraftView-IffpT50J.js} +19 -19
  9. package/dist/{ClosingHistoryView-1Gu4B0qB.js → ClosingHistoryView-DrI5Qo6C.js} +5 -5
  10. package/dist/{ClosingTemplateView-CvAn5afN.js → ClosingTemplateView-DilRh_vH.js} +16 -16
  11. package/dist/{CustomPrintTemplatePreview.vue_vue_type_script_setup_true_lang-CwWbC1oH.js → CustomPrintTemplatePreview.vue_vue_type_script_setup_true_lang-Dzaimy8_.js} +1 -1
  12. package/dist/{DefaultView-DeXxhLsq.js → DefaultView-DAud5FWQ.js} +2 -2
  13. package/dist/{DeliveryOrderPrintPreview-Bilzn1WS.js → DeliveryOrderPrintPreview-V-x1xvBl.js} +2 -2
  14. package/dist/{EmailDialog.vue_vue_type_script_setup_true_lang-C5xp1ceO.js → EmailDialog.vue_vue_type_script_setup_true_lang-KUJLmR7a.js} +5067 -5072
  15. package/dist/{FmDateRangePickerChip.vue_vue_type_script_setup_true_lang-DL5i2-tq.js → FmDateRangePickerChip.vue_vue_type_script_setup_true_lang-BStqqCMn.js} +6 -6
  16. package/dist/{FmFilterableMenuOptions.vue_vue_type_script_setup_true_lang-Bq36-nnH.js → FmFilterableMenuOptions.vue_vue_type_script_setup_true_lang-BnHM1BX1.js} +2 -2
  17. package/dist/{FmInventoryTableToolbar.vue_vue_type_script_setup_true_lang-D2l0nTi_.js → FmInventoryTableToolbar.vue_vue_type_script_setup_true_lang-BPyrxPpe.js} +2 -2
  18. package/dist/{FmMultiselectDialog-COp24wS3.js → FmMultiselectDialog-BniqAG4j.js} +1 -1
  19. package/dist/{FmMultiselectDialog-CKQ1eFVZ.js → FmMultiselectDialog-C2PspPWe.js} +2 -2
  20. package/dist/{FmUnitInput.vue_vue_type_script_setup_true_lang-CN4ENCPZ.js → FmUnitInput.vue_vue_type_script_setup_true_lang-Bf3SW_Cs.js} +6 -6
  21. package/dist/{ImportView-CB3qjhvy.js → ImportView-DWRmu0QT.js} +6 -6
  22. package/dist/{IngredientBindedItem.vue_vue_type_script_setup_true_lang-CBxUyjH8.js → IngredientBindedItem.vue_vue_type_script_setup_true_lang-DY0kkryN.js} +1 -1
  23. package/dist/{IngredientGroupView-DuY6Gw5V.js → IngredientGroupView-C6VVdwdq.js} +5 -5
  24. package/dist/{IngredientsView-DxzyJE_h.js → IngredientsView-DuEBYiLy.js} +17 -18
  25. package/dist/{IntegrationExplorerView-Ma59NTHM.js → IntegrationExplorerView-DJh7dTAl.js} +4 -4
  26. package/dist/{IntegrationView-SBMEO_e9.js → IntegrationView-DsH2Hs1K.js} +925 -912
  27. package/dist/{InventoryBindingForm-CBFJRVNH.js → InventoryBindingForm-BACENuFH.js} +1 -1
  28. package/dist/InventoryBindingForm.vue_vue_type_script_setup_true_lang-BlxNT4bV.js +441 -0
  29. package/dist/{InventoryBindingSummary-c5g-35nq.js → InventoryBindingSummary-BncS50eD.js} +1 -1
  30. package/dist/{NumberPrecisionInput.vue_vue_type_script_setup_true_lang-DEtNW2wJ.js → NumberPrecisionInput.vue_vue_type_script_setup_true_lang-LzXw3Flm.js} +1 -1
  31. package/dist/{PremiumBadge.vue_vue_type_script_setup_true_lang-BInLhmxe.js → PremiumBadge.vue_vue_type_script_setup_true_lang-Dra4APix.js} +1 -1
  32. package/dist/{ProductionView-BlhsrkXW.js → ProductionView-CJ6Oi2ae.js} +7 -7
  33. package/dist/{PublishView-bMEZSiVN.js → PublishView-30yz5vFX.js} +3 -3
  34. package/dist/{PurchaseOrderPrintPreview-HvIFszQX.js → PurchaseOrderPrintPreview-CclxLcCT.js} +2 -2
  35. package/dist/{ReceiveRequestView-jwXYj2Wy.js → ReceiveRequestView-DIQeDhuy.js} +14 -14
  36. package/dist/RecipeView-D8DyqwP-.js +3584 -0
  37. package/dist/{SettingsView-BqELMK6p.js → SettingsView-Bfp1K782.js} +4 -4
  38. package/dist/{StockView-6xDfuSnV.js → StockView-BNqzu1Rt.js} +21 -21
  39. package/dist/{SubsidiaryTreeDialog.vue_vue_type_script_setup_true_lang-CBUZIEA5.js → SubsidiaryTreeDialog.vue_vue_type_script_setup_true_lang-DFI2fuD0.js} +1 -1
  40. package/dist/{SupplierView-BwMl9JFO.js → SupplierView-Bnw_eUE1.js} +12 -12
  41. package/dist/{SurchargeView-AGXGqhxy.js → SurchargeView-B0VoAU4k.js} +6 -6
  42. package/dist/{SystemTrailDialog.vue_vue_type_script_setup_true_lang-DQSq3UGp.js → SystemTrailDialog.vue_vue_type_script_setup_true_lang-Cymvi3zl.js} +2 -2
  43. package/dist/{TemplatePublishDialog.vue_vue_type_script_setup_true_lang-BBUG8N2w.js → TemplatePublishDialog.vue_vue_type_script_setup_true_lang-DBQx6RAo.js} +1 -1
  44. package/dist/{TransferDetails.vue_vue_type_script_setup_true_lang-BMrGsD-f.js → TransferDetails.vue_vue_type_script_setup_true_lang-BMpUm52g.js} +20 -20
  45. package/dist/{TransferTemplateView-DJYXlxpw.js → TransferTemplateView-BjfxrwzR.js} +20 -20
  46. package/dist/{UnitCostHistoryView-DRgWgXhB.js → UnitCostHistoryView-C3ffDyKS.js} +4 -4
  47. package/dist/{UnitDisplayControl.vue_vue_type_script_setup_true_lang-CR8a6DkX.js → UnitDisplayControl.vue_vue_type_script_setup_true_lang-VG2ecWER.js} +4 -4
  48. package/dist/{UnitView-mWUCF13E.js → UnitView-BaR_a9Kw.js} +8 -8
  49. package/dist/{WarehouseView-DY4_bxzS.js → WarehouseView-RQjCcteZ.js} +5 -5
  50. package/dist/{WastageTemplateView-D4YFC_zj.js → WastageTemplateView-D4z8zpwb.js} +14 -14
  51. package/dist/api/codemax.d.ts +5 -1
  52. package/dist/api/purchase-order.d.ts +0 -2
  53. package/dist/{app-DCSH6Br7.js → app-CyTU8N3H.js} +18885 -19657
  54. package/dist/app.d.ts +9 -888
  55. package/dist/app.js +1 -1
  56. package/dist/{closing-template-knrmn7Jq.js → closing-template-B2tB7sQC.js} +1 -1
  57. package/dist/{date2-m9Qq52B4.js → date2-DQH6DhKn.js} +5 -5
  58. package/dist/{dayjs.min-BX2fRC46.js → dayjs.min-BOciSc8b.js} +1 -1
  59. package/dist/{decimal-pgdYbjfw.js → decimal-yQvd_IOl.js} +2 -2
  60. package/dist/{defineDeepModel-C5kt7Waa.js → defineDeepModel-DXNMJH2I.js} +1 -1
  61. package/dist/{duplicate-template-B74iiBzz.js → duplicate-template-DO7WYSTm.js} +1 -1
  62. package/dist/{feature-CfkazbcV.js → feature-v0qFoj-w.js} +2 -2
  63. package/dist/{format-time-from-id-C1AIz8rq.js → format-time-from-id-BuBtGQBF.js} +1 -1
  64. package/dist/{format-unit-display-A-G-IaSa.js → format-unit-display-sljdJGi2.js} +27 -27
  65. package/dist/{import-export.helper-Dx6UODpr.js → import-export.helper-B72QRGIw.js} +6 -6
  66. package/dist/{index-uk9CA-G3.js → index-BCGkKprE.js} +33 -27
  67. package/dist/{index-DjKTLy_K.js → index-CU4Kuswf.js} +1 -1
  68. package/dist/{index-CiQiwzTH.js → index-TQcHaMrv.js} +3232 -3306
  69. package/dist/{inventory-core-dart.default-CMAgxo1z.js → inventory-core-dart.default-BgoK1eTS.js} +1 -1
  70. package/dist/{lz-string-DZI7eVks.js → lz-string-BjdS2wyT.js} +1 -1
  71. package/dist/{netsuite-CoajVOCj.js → netsuite-z7vVdCsZ.js} +2 -2
  72. package/dist/{number-qzibfxtV.js → number-CPj4E2k6.js} +3 -3
  73. package/dist/{predefined-templates-Bi2KN0S0.js → predefined-templates-Bhig3JBF.js} +1 -1
  74. package/dist/{purchase-order-template-q60hgvfd.js → purchase-order-template-CNDfnM86.js} +1 -1
  75. package/dist/{recalculationUtils-ThdsSQXA.js → recalculationUtils-CQNmwxc2.js} +1 -1
  76. package/dist/{rules-DkRl1mdI.js → rules-9N5HIcET.js} +2 -2
  77. package/dist/{stock-CDBl371n.js → stock-B7QJYZif.js} +3 -3
  78. package/dist/{stock-CfGnNgNm.js → stock-uZA1to9T.js} +1 -1
  79. package/dist/stores/bulk-job.d.ts +0 -13
  80. package/dist/style.css +1 -1
  81. package/dist/{supplier-m95t74cw.js → supplier-B8DQBfvr.js} +2 -2
  82. package/dist/{surcharge-D0KNDUtM.js → surcharge-DHf5QM_k.js} +8 -8
  83. package/dist/tsconfig.app.tsbuildinfo +1 -1
  84. package/dist/{uom-rules-DoC_viYg.js → uom-rules-IHu3f_dQ.js} +1 -1
  85. package/dist/{use-ingredient-select-dialog-DUDA6jkc.js → use-ingredient-select-dialog-Cd3IeQRi.js} +2 -2
  86. package/dist/{use-inventory-binding-dialog-DyZVwYRw.js → use-inventory-binding-dialog-BG0l9YPD.js} +2 -2
  87. package/dist/{use-template-enabled-locations-DU6ebPLW.js → use-template-enabled-locations-b39RUsFB.js} +2 -2
  88. package/dist/{use-transfer-locations-i4WVdQfZ.js → use-transfer-locations-BPzNKZEi.js} +2 -2
  89. package/dist/{useHrmPermission-D4dofQF9.js → useHrmPermission-BpoNpgJ-.js} +1 -1
  90. package/dist/{useNavigationMenu-BwZoEiX3.js → useNavigationMenu-CaG9YOud.js} +2 -2
  91. package/dist/{useSseClient-vOXEoq_d.js → useSseClient-B2KhM-LZ.js} +1 -1
  92. package/dist/views/ingredients/components/inventory-binding/InventoryBindingForm.vue.d.ts +0 -2
  93. package/dist/views/ingredients/components/inventory-binding/v2/InventoryBindingFormV2.vue.d.ts +0 -2
  94. package/dist/views/ingredients/components/inventory-binding/v2/components/InventoryRecipeBindingV2Field.vue.d.ts +0 -4
  95. package/dist/views/receive-request/components/email-dialog/EmailDialogProps.d.ts +9 -23
  96. package/dist/views/recipe/composables/use-recipe-table.d.ts +0 -11
  97. package/dist/{vue-i18n-CV9ieqUG.js → vue-i18n-DgJpgCMa.js} +501 -501
  98. package/dist/{xlsx.util-CfgV0r9W.js → xlsx.util-Bkd2A_If.js} +2 -2
  99. package/package.json +4 -4
  100. package/dist/App-DEdkuDaS.js +0 -1155
  101. package/dist/BulkReceiveRequestView-MYLE3mXl.js +0 -2646
  102. package/dist/InventoryBindingForm.vue_vue_type_script_setup_true_lang-B-nEFGKA.js +0 -563
  103. package/dist/RecipeView-DKd5h85n.js +0 -3625
  104. package/dist/api/changelog.d.ts +0 -64
  105. package/dist/views/changelog/components/ChangelogDialog.vue.d.ts +0 -19
  106. package/dist/views/changelog/components/ChangelogFloatingButton.vue.d.ts +0 -2
  107. package/dist/views/changelog/components/ChangelogPanel.vue.d.ts +0 -18
  108. package/dist/views/changelog/composables/change-path.d.ts +0 -10
  109. package/dist/views/changelog/composables/commit-message.d.ts +0 -9
  110. package/dist/views/changelog/composables/commit-message.spec.d.ts +0 -1
  111. package/dist/views/changelog/composables/json-line-diff.d.ts +0 -10
  112. package/dist/views/changelog/composables/json-line-diff.spec.d.ts +0 -1
  113. package/dist/views/changelog/composables/use-changelog.d.ts +0 -36
  114. package/dist/views/ingredients/components/inventory-binding/RecipeBindingBreakdown.vue.d.ts +0 -25
  115. package/dist/views/ingredients/components/inventory-binding/composables/recipe-breakdown.d.ts +0 -34
  116. package/dist/views/ingredients/components/inventory-binding/composables/recipe-breakdown.spec.d.ts +0 -1
  117. package/dist/views/receive-request/components/email-dialog/EmailDialog.spec.d.ts +0 -1
@@ -1,64 +0,0 @@
1
- import type { FdtoChangeLog } from '@feedmepos/zod-inventory';
2
- /** A domain the changelog browser lists generically (backend `changelog/domains`). */
3
- export interface BrowsableChangelogDomain {
4
- domain: string;
5
- labelKey: string;
6
- }
7
- /** One diff line within a commit (mirrors the changelog server's Change). */
8
- export interface ChangelogChange {
9
- at?: string;
10
- actor?: string;
11
- path: string;
12
- kind: string;
13
- from?: string;
14
- to?: string;
15
- }
16
- /** One sealed commit for a record (the server's CommitEnvelope). */
17
- export interface ChangelogCommit {
18
- doc_id: string;
19
- id: string;
20
- parent: string;
21
- at: string;
22
- authors: string[];
23
- message?: string;
24
- changes: ChangelogChange[];
25
- }
26
- export declare const useChangelogApi: () => {
27
- /**
28
- * Commits for one record. recordId is the changelog docId, `${dbName}/${id}`.
29
- * The dbName scopes the (access-checked) backend route; only the bare id is
30
- * sent — the backend rebuilds the docId server-side.
31
- */
32
- getRecordChangelog(recordId: string, limit?: number): Promise<ChangelogCommit[]>;
33
- /**
34
- * Purchase orders in a date range, each with when it last changed. The
35
- * backend joins the orders to their newest commit, so no ids travel and the
36
- * browser makes one request instead of list-then-ask-for-timestamps.
37
- */
38
- listPurchaseOrders(dbName: string, start: string, end: string): Promise<FdtoChangeLog[]>;
39
- /**
40
- * Closing drafts created in a date range, each with when it last changed.
41
- * Closing groups come back as rows of their own — their submit/approve/
42
- * reject is recorded against the group document, not its parent.
43
- */
44
- listClosingDrafts(dbName: string, start: string, end: string): Promise<FdtoChangeLog[]>;
45
- /**
46
- * The domains the browser lists generically, declared in
47
- * changelog-domains-pkg and served by the backend — a new browsable domain
48
- * becomes a tab without a portal change. Backends predating the route
49
- * yield an error the caller treats as "no extra domains".
50
- */
51
- listDomains(businessId: string): Promise<BrowsableChangelogDomain[]>;
52
- /**
53
- * One generic domain's records, each with when it last changed. Business-
54
- * scoped: the generic domains are configuration documents of the business
55
- * db, not of a location.
56
- */
57
- listDomainRecords(businessId: string, domain: string): Promise<FdtoChangeLog[]>;
58
- /**
59
- * One inventory module's records, each with when it last changed. Business-
60
- * scoped, so the db is `business_<id>` — the same prefixed name the record's
61
- * own changelog docId carries.
62
- */
63
- listInventory(businessId: string, module: 'sku' | 'recipe' | 'unit'): Promise<FdtoChangeLog[]>;
64
- };
@@ -1,19 +0,0 @@
1
- declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
2
- modelValue: boolean;
3
- }>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
4
- "update:modelValue": (value: boolean) => void;
5
- }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
6
- modelValue: boolean;
7
- }>>> & Readonly<{
8
- "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
9
- }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
10
- export default _default;
11
- type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
12
- type __VLS_TypePropsToRuntimeProps<T> = {
13
- [K in keyof T]-?: {} extends Pick<T, K> ? {
14
- type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
15
- } : {
16
- type: import('vue').PropType<T[K]>;
17
- required: true;
18
- };
19
- };
@@ -1,2 +0,0 @@
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;
@@ -1,18 +0,0 @@
1
- import type { ChangelogCommit } from '@/api/changelog';
2
- declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
3
- commits: ChangelogCommit[];
4
- isLoading: boolean;
5
- }>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
6
- commits: ChangelogCommit[];
7
- isLoading: boolean;
8
- }>>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
9
- export default _default;
10
- type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
11
- type __VLS_TypePropsToRuntimeProps<T> = {
12
- [K in keyof T]-?: {} extends Pick<T, K> ? {
13
- type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
14
- } : {
15
- type: import('vue').PropType<T[K]>;
16
- required: true;
17
- };
18
- };
@@ -1,10 +0,0 @@
1
- export declare const PATH_DELIM: string;
2
- export declare function splitPath(path: string): {
3
- raw: string;
4
- human: string;
5
- };
6
- export declare function parseHuman(path: string): {
7
- type: string;
8
- name: string;
9
- field: string[];
10
- };
@@ -1,9 +0,0 @@
1
- /** Structured commit message stored by inventory-backend: label key + verb + optional item name. */
2
- export interface StructuredMessage {
3
- labelKey: string;
4
- verb: string;
5
- name?: string;
6
- }
7
- export declare function parseStructuredMessage(message?: string): StructuredMessage | null;
8
- /** True when a human path segment is a changelog i18n key (vs a literal like an entity name). */
9
- export declare function isLabelKey(segment: string): boolean;
@@ -1,10 +0,0 @@
1
- export type DiffLine = {
2
- type: 'same' | 'add' | 'del' | 'skip';
3
- text: string;
4
- };
5
- /**
6
- * Diffs two JSON-encoded values line by line, git-style. Returns null unless
7
- * both parse to objects/arrays whose changed region is small enough to diff —
8
- * callers fall back to the plain from/to blocks.
9
- */
10
- export declare function jsonLineDiff(from: string, to: string, context?: number): DiffLine[] | null;
@@ -1,36 +0,0 @@
1
- import { type ChangelogCommit } from '@/api/changelog';
2
- export declare function useChangelog(): {
3
- commits: import("vue").Ref<{
4
- doc_id: string;
5
- id: string;
6
- parent: string;
7
- at: string;
8
- authors: string[];
9
- message?: string | undefined;
10
- changes: {
11
- at?: string | undefined;
12
- actor?: string | undefined;
13
- path: string;
14
- kind: string;
15
- from?: string | undefined;
16
- to?: string | undefined;
17
- }[];
18
- }[], ChangelogCommit[] | {
19
- doc_id: string;
20
- id: string;
21
- parent: string;
22
- at: string;
23
- authors: string[];
24
- message?: string | undefined;
25
- changes: {
26
- at?: string | undefined;
27
- actor?: string | undefined;
28
- path: string;
29
- kind: string;
30
- from?: string | undefined;
31
- to?: string | undefined;
32
- }[];
33
- }[]>;
34
- isLoading: import("vue").Ref<boolean, boolean>;
35
- load: (recordId: string, limit?: number) => Promise<void>;
36
- };
@@ -1,25 +0,0 @@
1
- declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
2
- recipeId: string;
3
- /**
4
- * The amount keyed in on the row, as typed — every contained amount previews as
5
- * configured × this. Raw text rather than a number so a cleared field is not read as 0.
6
- */
7
- multiplier: string;
8
- }>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
9
- recipeId: string;
10
- /**
11
- * The amount keyed in on the row, as typed — every contained amount previews as
12
- * configured × this. Raw text rather than a number so a cleared field is not read as 0.
13
- */
14
- multiplier: string;
15
- }>>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
16
- export default _default;
17
- type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
18
- type __VLS_TypePropsToRuntimeProps<T> = {
19
- [K in keyof T]-?: {} extends Pick<T, K> ? {
20
- type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
21
- } : {
22
- type: import('vue').PropType<T[K]>;
23
- required: true;
24
- };
25
- };
@@ -1,34 +0,0 @@
1
- import type { FdoDecimal } from '@feedmepos/core/entity';
2
- export interface RecipeBreakdownNode {
3
- key: string;
4
- name: string;
5
- /** configured amount, already compounded through the parent recipes above it */
6
- amount: FdoDecimal;
7
- /** unit the amount is keyed in, empty for a recipe or an unresolved binding */
8
- unit: string;
9
- depth: number;
10
- isRecipe: boolean;
11
- }
12
- /** what a recipe contains, and how to label a binding — supplied by the store in the composable */
13
- export interface RecipeBreakdownSource {
14
- contentsOf: (recipeId: string) => FdoInventoryBinding[];
15
- bindingName: (binding: FdoInventoryBinding) => string;
16
- bindingUnit: (binding: FdoInventoryBinding) => string;
17
- }
18
- /** exact decimal multiply: integer amounts multiply, precisions add — no float drift */
19
- export declare function multiplyDecimal(a: FdoDecimal, b: FdoDecimal): FdoDecimal;
20
- /**
21
- * What a contained amount works out to for the amount keyed in on the row:
22
- * configured × input. Takes the raw text, so a row cleared mid-typing previews
23
- * unscaled rather than flashing zeros — `+''` would read as 0.
24
- */
25
- export declare function previewAmount(amount: FdoDecimal, multiplier: string): string;
26
- /** the keyed-in text as a decimal; unscaled while it is blank or not yet a number */
27
- export declare function parseMultiplier(multiplier: string): FdoDecimal;
28
- /**
29
- * Flattens a recipe's binding tree depth-first, descending into nested recipes and
30
- * multiplying each amount by the chain of recipe amounts above it.
31
- * `visited` keeps a recipe that (transitively) contains itself from recursing forever —
32
- * the form reports that separately as a circular-dependency error.
33
- */
34
- export declare function flattenRecipeTree(recipeId: string, source: RecipeBreakdownSource, depth?: number, visited?: Set<string>, factor?: FdoDecimal): RecipeBreakdownNode[];