JezK
Edit File: sc-conditional-form.entry.js.map
{"file":"sc-conditional-form.entry.js","mappings":"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","names":["selectedProcessor"],"sources":["src/components/controllers/checkout-form/sc-conditional-form/conditional-functions.ts","src/components/controllers/checkout-form/sc-conditional-form/sc-conditional-form.css?tag=sc-conditional-form&encapsulation=shadow","src/components/controllers/checkout-form/sc-conditional-form/sc-conditional-form.tsx"],"sourcesContent":["import { ArrayOperators, Checkout, NumberOperators, Product, Rule, RuleGroup } from '../../../../types';\n\n/**\n * Check if any of the rule groups is passed or not.\n *\n * @param {array} groups Rule groups.\n * @param {object} props Data.\n * @returns {boolean}\n */\nexport const hasAnyRuleGroupPassed = (groups: RuleGroup[], props: { checkout: Checkout; processor: string }) => {\n return (groups || []).some(({ rules }) => hasRulesPassed(rules, props));\n};\n\n/**\n * CHeck if all rules are passed or not.\n *\n * @param {array} rules Rules.\n * @param {object} props Data.\n * @returns {boolean}\n */\nexport const hasRulesPassed = (rules: Rule[], { checkout, processor }) => {\n return rules\n .map(rule => {\n const ruleValue = Array.isArray(rule?.value) ? (rule?.value).map(ruleValue => ruleValue?.value || ruleValue) : rule?.value;\n switch (rule?.condition) {\n case 'total':\n return compareNumberValues(parseFloat(checkout.total_amount), parseFloat(ruleValue as string), rule?.operator as NumberOperators);\n case 'products':\n return compareObjectValues(getCartProductIds(checkout), ruleValue as string[], rule?.operator as ArrayOperators);\n case 'prices':\n return compareObjectValues(getCartPriceIds(checkout), ruleValue as string[], rule?.operator as ArrayOperators);\n case 'coupons':\n return compareObjectValues(getCartCouponIds(checkout), ruleValue as string[], rule?.operator as ArrayOperators);\n case 'shipping_country':\n return compareObjectValues([checkout?.shipping_address?.country], ruleValue as string[], rule?.operator as ArrayOperators);\n case 'billing_country':\n return compareObjectValues([checkout?.billing_address?.country], ruleValue as string[], rule?.operator as ArrayOperators);\n case 'processors':\n return compareObjectValues([processor], ruleValue as string[], rule?.operator as ArrayOperators);\n default:\n return false;\n }\n })\n .every(rules => rules);\n};\n\n/**\n * Get array of products from checkout.\n *\n * @param {object} checkout CHeckout data.\n * @returns {array}\n */\nexport const getCartProductIds = (checkout: Checkout) => {\n return (checkout?.line_items?.data || []).map(({ price }) => (price?.product as Product)?.id);\n};\n\n/**\n * Get array of price ids from checkout.\n *\n * @param {object} checkout Checkout data.\n * @returns {array}\n */\nexport const getCartPriceIds = (checkout: Checkout) => {\n return (checkout?.line_items?.data || []).map(({ price }) => price?.id).filter(Boolean) as string[];\n};\n\n/**\n * Get array of coupons from checkout.\n *\n * @param {object} checkout CHeckout data.\n * @returns {array}\n */\nexport const getCartCouponIds = (checkout: Checkout) => {\n return checkout?.discount?.coupon?.id ? [checkout?.discount?.coupon?.id] : [];\n};\n\n/**\n * Compare object values.\n *\n * @param {array} cart_values order values.\n * @param {array} rule_values rules values.\n * @param {string} operator rule operator.\n * @returns {boolean}\n */\n\nexport const compareObjectValues = (cart_values: string[], rule_values: string[], operator: 'all' | 'any' | 'none' | 'exist' | 'not_exist') => {\n switch (operator) {\n case 'all':\n return rule_values.filter(n1 => cart_values.some(n2 => n1 == n2)).length === rule_values.length;\n case 'any':\n return cart_values.filter(n1 => rule_values.some(n2 => n1 == n2)).length >= 1;\n case 'none':\n return cart_values.filter(n1 => rule_values.some(n2 => n1 == n2)).length === 0;\n case 'exist':\n return cart_values.length >= 1;\n case 'not_exist':\n return cart_values.length === 0;\n default:\n return false;\n }\n};\n\n/**\n * Compare string values.\n *\n * @param string number1 The actual number from cart/order.\n * @param array number2 Rule values.\n * @param string operator Rule operator.\n * @returns {boolean}\n */\nexport const compareNumberValues = (number1: number, number2: number, operator: string) => {\n switch (operator) {\n case '==':\n return number1 === number2;\n case '!=':\n return number1 !== number2;\n case '>':\n return number1 > number2;\n case '<':\n return number1 < number2;\n case '<=':\n return number1 <= number2;\n case '>=':\n return number1 >= number2;\n }\n\n return false;\n};\n",":host {\n display: block;\n}\n","import { Component, Host, h, Prop } from '@stencil/core';\nimport { RuleGroup } from '../../../../types';\nimport { hasAnyRuleGroupPassed } from './conditional-functions';\nimport { state as selectedProcessor } from '@store/selected-processor';\nimport { currentCheckout } from '@store/checkout/getters';\n\n@Component({\n tag: 'sc-conditional-form',\n styleUrl: 'sc-conditional-form.css',\n shadow: true,\n})\nexport class ScConditionalForm {\n /** Selector label */\n @Prop() rule_groups: RuleGroup[];\n\n render() {\n let show = hasAnyRuleGroupPassed(this.rule_groups, { checkout: currentCheckout(), processor: selectedProcessor?.id });\n if (!show) return null;\n return (\n <Host>\n <slot></slot>\n </Host>\n );\n }\n}\n"],"version":3}