{"version":3,"file":"order-calculator-b36bc3c7.js","sources":["../../../client/src/javascripts/customer_pages/_utils/_order-data/order-calculator.js"],"sourcesContent":["const HOME_DELIVERY_OPTIONS = [\n  'POST',\n  'COURIER',\n  'POST_EXPRESS',\n  'COURIER_EXPRESS',\n];\n\nexport default {\n  somePrints(prints) {\n    return prints && !!prints.quantity;\n  },\n\n  somePrismItems(prismItems) {\n    return prismItems && !!prismItems.length;\n  },\n\n  totalQuantity({ prints, prismItems }) {\n    const printsQuantity = this.alivePrintSizes(prints).reduce((memo, size) => {\n      return memo + size.quantity;\n    }, 0);\n\n    return this.alivePrismItems(prismItems).reduce(\n      (memo, prismItem) => memo + prismItem.quantity,\n      printsQuantity || 0\n    );\n  },\n\n  lineItemCount({ prints, prismItems }) {\n    return (\n      (this.alivePrints(prints) ? 1 : 0) +\n      this.alivePrismItems(prismItems).length\n    );\n  },\n\n  totalVouchers({ vouchers }) {\n    return (vouchers || []).reduce((memo, voucher) => {\n      return memo + voucher.discount_amount;\n    }, 0);\n  },\n\n  shippingCost({ prints, prismItems }) {\n    let total = 0;\n\n    const deliveryOption =\n      this.somePrints(prints) &&\n      (prints.delivery_options || []).find(d => d.key == prints.delivery);\n    if (deliveryOption && deliveryOption.cost) {\n      total += deliveryOption.cost;\n    }\n\n    for (let item of this.alivePrismItems(prismItems)) {\n      if (item.delivery && item.delivery.cost) {\n        total += item.delivery.cost;\n      }\n    }\n\n    return total;\n  },\n\n  subtotalPrice({ prints, prismItems }) {\n    const printsPrice = this.alivePrintSizes(prints).reduce((memo, size) => {\n      return memo + size.total_price;\n    }, 0);\n\n    return this.alivePrismItems(prismItems).reduce(\n      (memo, prismItem) => memo + prismItem.cost,\n      printsPrice || 0\n    );\n  },\n\n  totalPrice({ prints, prismItems, vouchers }) {\n    return Math.max(\n      0,\n      this.subtotalPrice({ prints, prismItems }) -\n        this.totalVouchers({ vouchers })\n    );\n  },\n\n  homeDeliveryItemsPrice({ prints, prismItems }) {\n    const itemsWithDelivery = [\n      this.alivePrintSizesWithDelivery(prints),\n      ...this.alivePrismItems(prismItems),\n    ].filter(Boolean);\n\n    return itemsWithDelivery.reduce((sum, item) => {\n      const deliveryOption = (item.delivery_options || []).find(\n        (option) => option.key === item.delivery,\n      );\n\n      if (\n        deliveryOption &&\n        HOME_DELIVERY_OPTIONS.includes(deliveryOption.type)\n      ) {\n        return sum + (item.total_price || item.cost);\n      }\n      return sum;\n    }, 0);\n  },\n\n  alivePrintSizesWithDelivery(prints) {\n    const aliveSizes = this.alivePrintSizes(prints);\n\n    if (!aliveSizes.length) return null;\n\n    const totalPrice = aliveSizes.reduce((memo, size) => memo + size.total_price, 0);\n\n    return {\n      total_price: totalPrice,\n      delivery: prints.delivery,\n      delivery_options: prints.delivery_options,\n    };\n  },\n\n  alivePrints(prints) {\n    return this.somePrints(prints) && !!this.alivePrintSizes(prints).length\n      ? prints\n      : null;\n  },\n\n  alivePrintSizes(prints) {\n    if (!this.somePrints(prints)) {\n      return [];\n    }\n\n    return prints.sizes.filter(\n      size =>\n        !size.deleted &&\n        !(prints.deletedFinishes || []).includes(size.print_finish_key)\n    );\n  },\n\n  alivePrismItems(prismItems) {\n    return (prismItems || []).filter(prismItem => !prismItem.deleted);\n  },\n};\n"],"names":["HOME_DELIVERY_OPTIONS","OrderCalculator","prints","prismItems","printsQuantity","memo","size","prismItem","vouchers","voucher","total","deliveryOption","d","item","printsPrice","sum","option","aliveSizes"],"mappings":"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"}