{"version":3,"file":"test-data.mjs","sources":["../../src/data/test-data.ts"],"sourcesContent":["import { BffResponse } from \"../backend-types/common\";\nimport { randomHexString, randomUUID } from \"../utils\";\n\nconst ONE_MONTH_IN_MS = 30 * 24 * 60 * 60 * 1000;\n\nexport function makeTestBffData(): BffResponse {\n  const mockNow = new Date().toISOString();\n  const mockExpiry = new Date(Date.now() + ONE_MONTH_IN_MS).toISOString();\n  return {\n    session: {\n      payment_session_id: `ps-${randomHexString(24)}`,\n      created: mockNow,\n      updated: mockNow,\n      status: \"ACTIVE\",\n      reference_id: randomUUID(),\n      description: \"Test session\",\n      currency: \"IDR\",\n      amount: 10000,\n      country: \"ID\",\n      expires_at: mockExpiry,\n      session_type: \"PAY\",\n      mode: \"COMPONENTS\",\n      locale: \"en\",\n      business_id: randomHexString(24),\n      customer_id: `cust-${randomUUID()}`,\n      capture_method: \"AUTOMATIC\",\n      allow_save_payment_method: \"OPTIONAL\",\n      items: [\n        {\n          reference_id: randomUUID(),\n          type: \"DIGITAL_PRODUCT\",\n          name: \"Item 1\",\n          net_unit_amount: 50000,\n          quantity: 1,\n          category: \"\",\n        },\n        {\n          reference_id: randomUUID(),\n          type: \"DIGITAL_SERVICE\",\n          name: \"Item 2\",\n          net_unit_amount: 50000,\n          quantity: 1,\n          category: \"\",\n        },\n      ],\n    },\n    business: {\n      name: \"Components Mock Merchant\",\n      country_of_operation: \"Indonesia\",\n      merchant_profile_picture_url:\n        \"https://placehold.co/256x256.png?text=Logo\",\n    },\n    customer: {\n      type: \"INDIVIDUAL\",\n      id: `cust-${randomUUID()}`,\n      email: \"exa**@example.com\",\n      mobile_number: null,\n      phone_number: null,\n      individual_detail: {\n        given_names: \"exa********\",\n        surname: null,\n      },\n      business_detail: null,\n    },\n    channels: [\n      {\n        brand_name: \"Cards\",\n        channel_code: \"CARDS\",\n        brand_logo_url:\n          \"https://assets.xendit.co/payment-session/logos/CARDS.svg\",\n        ui_group: \"cards\",\n        pm_type: \"CARDS\",\n        allow_pay_without_save: true,\n        allow_save: true,\n        brand_color: \"#000000\",\n        min_amount: 5000,\n        max_amount: 200000000,\n        requires_customer_details: false,\n        _mock_action_type: \"IFRAME\",\n        card: {\n          brands: [\n            {\n              name: \"VISA\",\n              logo_url:\n                \"https://assets.xendit.co/payment-session/logos/VISA.svg\",\n            },\n            {\n              name: \"MASTERCARD\",\n              logo_url:\n                \"https://assets.xendit.co/payment-session/logos/MASTERCARD.svg\",\n            },\n            {\n              name: \"JCB\",\n              logo_url:\n                \"https://assets.xendit.co/payment-session/logos/JCB.svg\",\n            },\n          ],\n        },\n        form: [\n          {\n            group_label: \"Card Details\",\n            label: \"Card Number\",\n            placeholder: \"1234 1234 1234 1234\",\n            type: {\n              name: \"credit_card_number\",\n            },\n            channel_property: \"card_details.card_number\",\n            required: true,\n            span: 2,\n          },\n          {\n            label: \"Card Expiry Date\",\n            placeholder: \"MM/YY\",\n            type: {\n              name: \"credit_card_expiry\",\n            },\n            channel_property: [\n              \"card_details.expiry_month\",\n              \"card_details.expiry_year\",\n            ],\n            required: true,\n            span: 1,\n            join: true,\n          },\n          {\n            label: \"CVN\",\n            placeholder: \"CVV\",\n            type: {\n              name: \"credit_card_cvn\",\n            },\n            channel_property: \"card_details.cvn\",\n            required: true,\n            span: 1,\n            join: true,\n          },\n          {\n            group_label: \"Cardholder Name\",\n            label: \"First Name\",\n            placeholder: \"First Name\",\n            type: {\n              name: \"text\",\n              min_length: 1,\n              max_length: 50,\n              regex_validators: [\n                {\n                  regex: \"/^[a-zA-Z\\\\u00C0-\\\\u017F\\\\s]+$/\",\n                  message:\n                    \"Invalid input. Please use alphabetic characters only\",\n                },\n              ],\n            },\n            channel_property: \"card_details.cardholder_first_name\",\n            required: true,\n            span: 1,\n          },\n          {\n            label: \"Last Name\",\n            placeholder: \"Last Name\",\n            type: {\n              name: \"text\",\n              min_length: 1,\n              max_length: 50,\n              regex_validators: [\n                {\n                  regex: \"/^[ -~]+$/\",\n                  message:\n                    \"Invalid input. Please use alphabetic characters only\",\n                },\n              ],\n            },\n            channel_property: \"card_details.cardholder_last_name\",\n            required: true,\n            span: 1,\n          },\n          {\n            label: \"Email\",\n            placeholder: \"john.doe@example.com\",\n            type: {\n              name: \"email\",\n            },\n            channel_property: \"card_details.cardholder_email\",\n            required: true,\n            span: 2,\n          },\n          {\n            label: \"Mobile Number\",\n            placeholder: \"8000032341\",\n            type: {\n              name: \"phone_number\",\n            },\n            channel_property: \"card_details.cardholder_phone_number\",\n            required: true,\n            span: 2,\n          },\n          {\n            label: \"Installment plan\",\n            placeholder: \"Select installment plan\",\n            type: {\n              name: \"installment_plan\",\n            },\n            channel_property: [\n              \"installment_configuration.terms\",\n              \"installment_configuration.interval\",\n              \"installment_configuration.code\",\n            ],\n            required: false,\n            span: 2,\n          },\n          {\n            group_label: \"Billing Address\",\n            label: \"First Name\",\n            placeholder: \"First Name\",\n            type: {\n              name: \"text\",\n              max_length: 255,\n            },\n            channel_property: \"billing_information.first_name\",\n            span: 1,\n            required: true,\n            flags: {\n              require_billing_information: true,\n            },\n          },\n          {\n            label: \"Last Name\",\n            placeholder: \"Last Name\",\n            type: {\n              name: \"text\",\n              max_length: 255,\n            },\n            channel_property: \"billing_information.last_name\",\n            span: 1,\n            required: true,\n            flags: {\n              require_billing_information: true,\n            },\n            join: true,\n          },\n          {\n            label: \"Email\",\n            placeholder: \"Email\",\n            type: {\n              name: \"text\",\n              max_length: 255,\n            },\n            channel_property: \"billing_information.email\",\n            span: 2,\n            required: true,\n            flags: {\n              require_billing_information: true,\n            },\n            join: true,\n          },\n          {\n            label: \"Country\",\n            placeholder: \"Country\",\n            type: {\n              name: \"country\",\n            },\n            channel_property: \"billing_information.country\",\n            span: 1,\n            required: true,\n            flags: {\n              require_billing_information: true,\n            },\n            join: true,\n          },\n          {\n            label: \"Province\",\n            placeholder: \"State / Province\",\n            type: {\n              name: \"province\",\n            },\n            channel_property: \"billing_information.province_state\",\n            span: 1,\n            required: true,\n            flags: {\n              require_billing_information: true,\n            },\n            join: true,\n          },\n          {\n            label: \"City\",\n            placeholder: \"City\",\n            type: {\n              name: \"text\",\n              max_length: 255,\n            },\n            channel_property: \"billing_information.city\",\n            span: 2,\n            required: true,\n            flags: {\n              require_billing_information: true,\n            },\n            join: true,\n          },\n          {\n            label: \"Address Line 1\",\n            placeholder: \"Address Line 1\",\n            type: {\n              name: \"text\",\n              max_length: 255,\n            },\n            channel_property: \"billing_information.street_line1\",\n            span: 2,\n            required: true,\n            flags: {\n              require_billing_information: true,\n            },\n            join: true,\n          },\n          {\n            label: \"Address Line 2\",\n            placeholder: \"Address Line 2\",\n            type: {\n              name: \"text\",\n              max_length: 255,\n            },\n            channel_property: \"billing_information.street_line2\",\n            span: 2,\n            required: true,\n            flags: {\n              require_billing_information: true,\n            },\n            join: true,\n          },\n          {\n            label: \"Postal Code\",\n            placeholder: \"Postal Code\",\n            type: {\n              name: \"postal_code\",\n            },\n            channel_property: \"billing_information.postal_code\",\n            span: 2,\n            required: true,\n            flags: {\n              require_billing_information: true,\n            },\n            join: true,\n          },\n        ],\n        instructions: [\n          \"Mock Cards channel\",\n          \"This mock channel behaves similarly to the production CARDS channel.\",\n        ],\n      },\n      {\n        brand_name: \"Mock E-Wallet Channel (Redirect action)\",\n        channel_code: \"MOCK_EWALLET\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"other\",\n        pm_type: \"EWALLET\",\n        allow_pay_without_save: false,\n        allow_save: false,\n        brand_color: \"#000000\",\n        min_amount: 1000,\n        max_amount: 100000000,\n        requires_customer_details: false,\n        _mock_action_type: \"REDIRECT\",\n        form: [],\n        instructions: [\n          \"Mock E-Wallet channel\",\n          \"This mock channel has a redirect action.\",\n        ],\n      },\n      {\n        brand_name: \"Mock E-Wallet Channel (Redirect and Paylink actions)\",\n        channel_code: \"MOCK_EWALLET_PAYLINK\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"other\",\n        pm_type: \"EWALLET\",\n        allow_pay_without_save: false,\n        allow_save: false,\n        brand_color: \"#000000\",\n        min_amount: 1000,\n        max_amount: 100000000,\n        requires_customer_details: false,\n        _mock_action_type: [\"REDIRECT\", \"PAYLINK\"],\n        form: [],\n        instructions: [\n          \"Mock E-Wallet channel\",\n          \"This mock channel has a redirect and a paylink action.\",\n        ],\n      },\n      {\n        brand_name: \"Mock E-Wallet Channel (Iframe action)\",\n        channel_code: \"MOCK_EWALLET_IFRAME\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"other\",\n        pm_type: \"EWALLET\",\n        allow_pay_without_save: false,\n        allow_save: false,\n        brand_color: \"#000000\",\n        min_amount: 1000,\n        max_amount: 100000000,\n        requires_customer_details: false,\n        _mock_action_type: \"IFRAME\",\n        form: [],\n        instructions: [\n          \"Mock E-Wallet channel\",\n          \"This mock channel has as iframe action.\",\n        ],\n      },\n      {\n        brand_name: \"Mock E-Wallet Channel (Deeplink action)\",\n        channel_code: \"MOCK_EWALLET_DEEP_LINK\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"other\",\n        pm_type: \"EWALLET\",\n        allow_pay_without_save: false,\n        allow_save: false,\n        brand_color: \"#000000\",\n        min_amount: 1000,\n        max_amount: 100000000,\n        requires_customer_details: false,\n        _mock_action_type: \"DEEP_LINK\",\n        form: [],\n        instructions: [\n          \"Mock E-Wallet channel\",\n          \"This mock channel has a deeplink action.\",\n        ],\n      },\n      {\n        brand_name: \"Mock E-Wallet Channel (Push notification action)\",\n        channel_code: \"MOCK_EWALLET_PUSH_NOTIFICATION\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"other\",\n        pm_type: \"EWALLET\",\n        allow_pay_without_save: false,\n        allow_save: false,\n        brand_color: \"#000000\",\n        min_amount: 1000,\n        max_amount: 100000000,\n        requires_customer_details: false,\n        _mock_action_type: \"PUSH_NOTIFICATION\",\n        form: [],\n        instructions: [\n          \"Mock E-Wallet channel\",\n          \"This mock channel shows a message prompting the user to tap a push notification.\",\n        ],\n      },\n      {\n        brand_name: \"Mock E-Wallet Channel (Phone input)\",\n        channel_code: \"MOCK_EWALLET_WITH_PHONE\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"other\",\n        pm_type: \"EWALLET\",\n        allow_pay_without_save: false,\n        allow_save: false,\n        brand_color: \"#000000\",\n        min_amount: 1000,\n        max_amount: 100000000,\n        requires_customer_details: false,\n        _mock_action_type: \"REDIRECT\",\n        form: [\n          {\n            label: \"Phone Number\",\n            placeholder: \"123 123 132\",\n            type: {\n              name: \"phone_number\",\n            },\n            channel_property: \"phone_number_field\",\n            required: true,\n            span: 2,\n          },\n        ],\n        instructions: [\n          \"Mock E-Wallet channel\",\n          \"This mock channel behaves similarly to production E-Wallets channels with a phone number input.\",\n        ],\n      },\n      {\n        brand_name: \"Mock QR Channel\",\n        channel_code: \"MOCK_QR\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"other\",\n        pm_type: \"QR_CODE\",\n        allow_pay_without_save: false,\n        allow_save: false,\n        brand_color: \"#000000\",\n        min_amount: 1000,\n        max_amount: 100000000,\n        requires_customer_details: false,\n        _mock_action_type: \"QR\",\n        form: [],\n        instructions: [\n          \"Mock QR channel\",\n          \"This mock channel behaves similarly to production QR channels.\",\n        ],\n      },\n      {\n        brand_name: \"Mock QR Channel (Custom Art)\",\n        channel_code: \"MOCK_QR_CUSTOM_ART\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"other\",\n        pm_type: \"QR_CODE\",\n        allow_pay_without_save: false,\n        allow_save: false,\n        brand_color: \"#000000\",\n        min_amount: 1000,\n        max_amount: 100000000,\n        requires_customer_details: false,\n        _mock_action_type: \"QR\",\n        form: [\n          {\n            label: \"QR Style\",\n            placeholder: \"Select\",\n            type: {\n              name: \"dropdown\",\n              options: [\n                { label: \"QRIS\", value: \"QRIS\" },\n                { label: \"PayNow\", value: \"SGQR\" },\n                {\n                  label: \"Duitnow QR\",\n                  value: \"DUITNOW_QR\",\n                },\n                { label: \"PromptPay\", value: \"PROMPTPAY\" },\n                { label: \"QRPH\", value: \"QRPH\" },\n              ],\n            },\n            channel_property: \"mock_channel_code_for_qr_art\",\n            required: false,\n            span: 2,\n          },\n        ],\n        instructions: [\n          \"Mock QR channel\",\n          \"This mock channel has a QR action with branded layouts. You can choose what branded layout to use.\",\n        ],\n      },\n      {\n        brand_name: \"Mock Direct Debit Channel\",\n        channel_code: \"MOCK_DIRECT_DEBIT\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"other\",\n        pm_type: \"DIRECT_DEBIT\",\n        allow_pay_without_save: false,\n        allow_save: false,\n        brand_color: \"#000000\",\n        min_amount: 1000,\n        max_amount: 100000000,\n        requires_customer_details: false,\n        form: [],\n        instructions: [\n          \"Mock Direct Debit channel\",\n          \"This mock channel behaves similarly to production Direct Debit channels.\",\n        ],\n      },\n      {\n        brand_name: \"Mock FPX Business Channel\",\n        channel_code: \"MOCK_FPX_BUSINESS\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"other\",\n        pm_type: \"ONLINE_BANKING\",\n        allow_pay_without_save: false,\n        allow_save: false,\n        brand_color: \"#000000\",\n        min_amount: 1000,\n        max_amount: 100000000,\n        requires_customer_details: false,\n        _mock_action_type: \"PENDING\",\n        form: [],\n        instructions: [\n          \"Mock FPX channel\",\n          \"This mock channel behaves similarly to production FPX channels. It has a banner and it will enter the pending state after submission.\",\n        ],\n        banner: {\n          image_url:\n            \"https://assets.xendit.co/payment-session/banners/fpx-banner.svg\",\n          alt_text: \"FPX Pay with Online Banking\",\n          aspect_ratio: 9.7,\n        },\n      },\n      {\n        brand_name: \"Mock OTC Channel\",\n        channel_code: \"MOCK_OTC\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"other\",\n        pm_type: \"OVER_THE_COUNTER\",\n        allow_pay_without_save: false,\n        allow_save: false,\n        brand_color: \"#000000\",\n        min_amount: 1000,\n        max_amount: 100000000,\n        requires_customer_details: false,\n        _mock_action_type: \"BARCODE\",\n        form: [\n          {\n            label: \"Payer Name\",\n            placeholder: \"Payer Name\",\n            type: {\n              name: \"text\",\n              max_length: 50,\n            },\n            channel_property: \"payer_name\",\n            required: true,\n            span: 2,\n          },\n        ],\n        instructions: [\n          \"Mock OTC channel\",\n          \"This mock channel behaves similarly to production OTC channels.\",\n        ],\n      },\n      {\n        brand_name: \"Mock VA Channel\",\n        channel_code: \"MOCK_VA\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"other\",\n        pm_type: \"VIRTUAL_ACCOUNT\",\n        allow_pay_without_save: false,\n        allow_save: false,\n        brand_color: \"#000000\",\n        min_amount: 1000,\n        max_amount: 100000000,\n        requires_customer_details: false,\n        _mock_action_type: \"VA\",\n        form: [],\n        instructions: [\n          \"Mock VA channel\",\n          \"This mock channel behaves similarly to production VA channels.\",\n        ],\n      },\n      {\n        brand_name: \"Mock Installments Channel\",\n        channel_code: \"MOCK_INSTALLMENTS\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"other\",\n        pm_type: \"CARDS_INSTALLMENT\",\n        allow_pay_without_save: false,\n        allow_save: false,\n        brand_color: \"#000000\",\n        min_amount: 1000,\n        max_amount: 100000000,\n        requires_customer_details: false,\n        form: [\n          {\n            label: \"Installment plan\",\n            placeholder: \"Select installment plan\",\n            type: {\n              name: \"installment_plan\",\n            },\n            channel_property: [\n              \"installment_configuration.terms\",\n              \"installment_configuration.interval\",\n              \"installment_configuration.code\",\n            ],\n            required: false,\n            span: 2,\n          },\n        ],\n        instructions: [\n          \"Mock Installments channel\",\n          \"This mock channel behaves similarly to production installment channels in Thailand.\",\n        ],\n      },\n      {\n        brand_name: \"Input Test\",\n        channel_code: \"UI_INPUT_TEST\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"ui_tests\",\n        allow_pay_without_save: false,\n        allow_save: false,\n        brand_color: \"#000000\",\n        min_amount: 1000,\n        max_amount: 100000000,\n        requires_customer_details: false,\n        form: [\n          {\n            label: \"Card Number (Iframe)\",\n            placeholder: \"1234 1234 1234 1234\",\n            type: {\n              name: \"credit_card_number\",\n            },\n            channel_property: \"card_number\",\n            required: false,\n            span: 2,\n          },\n          {\n            label: \"Card Expiry Date (Iframe)\",\n            placeholder: \"MM/YY\",\n            type: {\n              name: \"credit_card_expiry\",\n            },\n            channel_property: [\"expiry_month\", \"expiry_year\"],\n            required: false,\n            span: 2,\n          },\n          {\n            label: \"CVN (Iframe)\",\n            placeholder: \"CVV\",\n            type: {\n              name: \"credit_card_cvn\",\n            },\n            channel_property: \"cvn\",\n            required: false,\n            span: 2,\n          },\n          {\n            label: \"Text\",\n            placeholder: \"Text\",\n            type: {\n              name: \"text\",\n              max_length: 50,\n            },\n            channel_property: \"text_field\",\n            required: false,\n            span: 2,\n          },\n          {\n            label: \"Phone Number\",\n            placeholder: \"123 123 123\",\n            type: {\n              name: \"phone_number\",\n            },\n            channel_property: \"phone_number_field\",\n            required: false,\n            span: 2,\n          },\n          {\n            label: \"Email\",\n            placeholder: \"test@example.com\",\n            type: {\n              name: \"email\",\n            },\n            channel_property: \"email_field\",\n            required: false,\n            span: 2,\n          },\n          {\n            label: \"Postal Code\",\n            placeholder: \"123456\",\n            type: {\n              name: \"postal_code\",\n            },\n            channel_property: \"postal_code_field\",\n            required: false,\n            span: 2,\n          },\n          {\n            label: \"Country\",\n            placeholder: \"Select\",\n            type: {\n              name: \"country\",\n            },\n            channel_property: \"country_field\",\n            required: false,\n            span: 2,\n          },\n          {\n            label: \"Dropdown\",\n            placeholder: \"Select\",\n            type: {\n              name: \"dropdown\",\n              options: [\n                { label: \"Option 1\", value: \"option_1\" },\n                { label: \"Option 2\", value: \"option_2\" },\n                { label: \"Option 3\", value: \"option_3\" },\n                {\n                  label: \"Option 4\",\n                  value: \"option_4\",\n                  subtitle: \"With subtitle\",\n                },\n                {\n                  label: \"Option 5\",\n                  value: \"option_5\",\n                  subtitle: \"With subtitle\",\n                },\n              ],\n            },\n            channel_property: \"dropdown_field\",\n            required: false,\n            span: 2,\n          },\n          {\n            label: \"Dropdown With Icons\",\n            placeholder: \"Select\",\n            type: {\n              name: \"dropdown\",\n              options: [\n                {\n                  label: \"Option 1\",\n                  value: \"option_1\",\n                  icon_url: \"https://placehold.co/16\",\n                },\n                {\n                  label: \"Option 2\",\n                  value: \"option_2\",\n                  icon_url: \"https://placehold.co/16\",\n                },\n                {\n                  label: \"Option 3\",\n                  value: \"option_3\",\n                  icon_url: \"https://placehold.co/16\",\n                },\n              ],\n            },\n            channel_property: \"dropdown_field_with_icons\",\n            required: false,\n            span: 2,\n          },\n        ],\n        instructions: [\n          \"This test demonstrates basic usage of all input types.\",\n          \"All fields here are optional and blank values should pass validation.\",\n        ],\n      },\n      {\n        brand_name: \"Initial Value Test\",\n        channel_code: \"UI_INITIAL_VALUE_TEST\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"ui_tests\",\n        allow_pay_without_save: false,\n        allow_save: false,\n        brand_color: \"#000000\",\n        min_amount: 1000,\n        max_amount: 100000000,\n        requires_customer_details: false,\n        form: [\n          {\n            label: \"Text\",\n            placeholder: \"Text\",\n            type: {\n              name: \"text\",\n              max_length: 50,\n            },\n            channel_property: \"text_field\",\n            required: false,\n            span: 2,\n            initial_value: \"Initial value\",\n          },\n          {\n            label: \"Phone Number\",\n            placeholder: \"123 123 123\",\n            type: {\n              name: \"phone_number\",\n            },\n            channel_property: \"phone_number_field\",\n            required: false,\n            span: 2,\n            initial_value: \"+6581234567\",\n          },\n          {\n            label: \"Email\",\n            placeholder: \"test@example.com\",\n            type: {\n              name: \"email\",\n            },\n            channel_property: \"email_field\",\n            required: false,\n            span: 2,\n            initial_value: \"initial_value@test.com\",\n          },\n          {\n            label: \"Postal Code\",\n            placeholder: \"123456\",\n            type: {\n              name: \"postal_code\",\n            },\n            channel_property: \"postal_code_field\",\n            required: false,\n            span: 2,\n            initial_value: \"123456\",\n          },\n          {\n            label: \"Country\",\n            placeholder: \"Select\",\n            type: {\n              name: \"country\",\n            },\n            channel_property: \"country_field\",\n            required: false,\n            span: 2,\n            initial_value: \"SG\",\n          },\n          {\n            label: \"Dropdown\",\n            placeholder: \"Select\",\n            type: {\n              name: \"dropdown\",\n              options: [\n                { label: \"Option 1\", value: \"option_1\" },\n                { label: \"Option 2\", value: \"option_2\" },\n                { label: \"Option 3\", value: \"option_3\" },\n              ],\n            },\n            channel_property: \"dropdown_field\",\n            required: false,\n            span: 2,\n            initial_value: \"option_2\",\n          },\n        ],\n        instructions: [\n          \"This test demonstrates initial field values.\",\n          \"All fields here should be populated by default.\",\n        ],\n      },\n      {\n        brand_name: \"Field Grouping Test\",\n        channel_code: \"UI_FIELD_GROUPING_TEST\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"ui_tests\",\n        allow_pay_without_save: false,\n        allow_save: false,\n        brand_color: \"#000000\",\n        min_amount: 1000,\n        max_amount: 100000000,\n        requires_customer_details: false,\n        form: [\n          {\n            group_label: \"Vertical Grouping\",\n            label: \"Top\",\n            placeholder: \"Top\",\n            type: {\n              name: \"text\",\n              max_length: 50,\n            },\n            channel_property: \"a1\",\n            required: false,\n            span: 2,\n          },\n          {\n            label: \"Middle\",\n            placeholder: \"Middle\",\n            type: {\n              name: \"text\",\n              max_length: 50,\n            },\n            channel_property: \"a2\",\n            required: false,\n            span: 2,\n            join: true,\n          },\n          {\n            label: \"Bottom\",\n            placeholder: \"Bottom\",\n            type: {\n              name: \"text\",\n              max_length: 50,\n            },\n            channel_property: \"a3\",\n            required: false,\n            span: 2,\n            join: true,\n          },\n          {\n            group_label: \"Horizontal Grouping\",\n            label: \"Text\",\n            placeholder: \"Left\",\n            type: {\n              name: \"text\",\n              max_length: 50,\n            },\n            channel_property: \"b1\",\n            required: false,\n            span: 1,\n          },\n          {\n            label: \"Text\",\n            placeholder: \"Right\",\n            type: {\n              name: \"text\",\n              max_length: 50,\n            },\n            channel_property: \"b1\",\n            required: false,\n            span: 1,\n            join: true,\n          },\n          {\n            group_label: \"Mixed Grouping\",\n            label: \"Text\",\n            placeholder: \"Top Left\",\n            type: {\n              name: \"text\",\n              max_length: 50,\n            },\n            channel_property: \"c1\",\n            required: false,\n            span: 1,\n          },\n          {\n            label: \"Text\",\n            placeholder: \"Top Right\",\n            type: {\n              name: \"text\",\n              max_length: 50,\n            },\n            channel_property: \"c2\",\n            required: false,\n            span: 1,\n            join: true,\n          },\n          {\n            label: \"Text\",\n            placeholder: \"Middle Left\",\n            type: {\n              name: \"text\",\n              max_length: 50,\n            },\n            channel_property: \"c3\",\n            required: false,\n            span: 1,\n            join: true,\n          },\n          {\n            label: \"Text\",\n            placeholder: \"Middle Right\",\n            type: {\n              name: \"text\",\n              max_length: 50,\n            },\n            channel_property: \"c4\",\n            required: false,\n            span: 1,\n            join: true,\n          },\n          {\n            label: \"Text\",\n            placeholder: \"Bottom Left\",\n            type: {\n              name: \"text\",\n              max_length: 50,\n            },\n            channel_property: \"c5\",\n            required: false,\n            span: 1,\n            join: true,\n          },\n          {\n            label: \"Text\",\n            placeholder: \"Bottom Right\",\n            type: {\n              name: \"text\",\n              max_length: 50,\n            },\n            channel_property: \"c6\",\n            required: false,\n            span: 1,\n            join: true,\n          },\n        ],\n        instructions: [\n          \"This test demonstrates field grouping.\",\n          \"Fields can be 1 or 2 cells wide and can be grouped in any arrangement.\",\n        ],\n      },\n      {\n        brand_name: \"Text Validation Test\",\n        channel_code: \"UI_TEXT_VALIDATION_TEST\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"ui_tests\",\n        allow_pay_without_save: false,\n        allow_save: false,\n        brand_color: \"#000000\",\n        min_amount: 1000,\n        max_amount: 100000000,\n        requires_customer_details: false,\n        form: [\n          {\n            label: \"Required Text Field\",\n            placeholder: \"Required\",\n            type: {\n              name: \"text\",\n              max_length: 50,\n            },\n            channel_property: \"required\",\n            required: true,\n            span: 2,\n          },\n          {\n            label: \"Validate Minimum Length (5)\",\n            placeholder: \"Min 5 characters\",\n            type: {\n              name: \"text\",\n              min_length: 5,\n              max_length: 50,\n            },\n            channel_property: \"min_5_chars\",\n            required: false,\n            span: 2,\n          },\n          {\n            label: \"Validate Using Regexp (/^[a-zA-Z0-9]+$/)\",\n            placeholder: \"Alphanumeric only\",\n            type: {\n              name: \"text\",\n              max_length: 50,\n              regex_validators: [\n                {\n                  regex: \"/^[a-zA-Z0-9]+$/\",\n                  message:\n                    \"Invalid input. Please use alphanumeric characters only\",\n                },\n              ],\n            },\n            channel_property: \"regexp_validation\",\n            required: false,\n            span: 2,\n          },\n        ],\n        instructions: [\n          \"This test demonstrates text field validation.\",\n          \"Fields should validate on blur or `submit()` or `revealValidationErrors()`. Blurring a blank field does not trigger validation.\",\n        ],\n      },\n      {\n        brand_name: \"State/Province Field Test\",\n        channel_code: \"UI_STATE_PROVINCE_TEST\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"ui_tests\",\n        allow_pay_without_save: false,\n        allow_save: false,\n        brand_color: \"#000000\",\n        min_amount: 1000,\n        max_amount: 100000000,\n        requires_customer_details: false,\n        form: [\n          {\n            group_label: \"Country + State/Province Fields\",\n            label: \"Country\",\n            placeholder: \"Country\",\n            type: {\n              name: \"country\",\n            },\n            channel_property: \"country_field\",\n            required: true,\n            span: 2,\n            initial_value: \"US\",\n          },\n          {\n            label: \"State / Province\",\n            placeholder: \"State / Province\",\n            type: {\n              name: \"province\",\n            },\n            channel_property: \"province_field\",\n            required: true,\n            span: 2,\n            join: true,\n            initial_value: \"CA\",\n          },\n          {\n            group_label:\n              \"Country + State/Province Fields (Horizontal Grouping)\",\n            label: \"Country\",\n            placeholder: \"Country\",\n            type: {\n              name: \"country\",\n            },\n            channel_property: \"country_field_2\",\n            required: true,\n            span: 1,\n            initial_value: \"AU\",\n          },\n          {\n            label: \"State / Province\",\n            placeholder: \"State / Province\",\n            type: {\n              name: \"province\",\n            },\n            channel_property: \"province_field_2\",\n            required: true,\n            span: 1,\n            join: true,\n            initial_value: \"NSW\",\n          },\n        ],\n        instructions: [\n          \"This test demonstrates the country + state/province field combination.\",\n          \"Selecting certain countries (US, CA, GB) should change the state/province field to a dropdown with predefined options.\",\n        ],\n      },\n      {\n        brand_name: \"Conditional Field Test\",\n        channel_code: \"UI_CONDITIONAL_FIELD_TEST\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"ui_tests\",\n        allow_pay_without_save: false,\n        allow_save: false,\n        brand_color: \"#000000\",\n        min_amount: 1000,\n        max_amount: 100000000,\n        requires_customer_details: false,\n        form: [\n          {\n            label: \"Toggle Hidden Field\",\n            placeholder: \"Select\",\n            type: {\n              name: \"dropdown\",\n              options: [\n                { label: \"Show\", value: \"show\" },\n                { label: \"Hide\", value: \"hide\" },\n              ],\n            },\n            channel_property: \"toggle\",\n            required: true,\n            span: 2,\n          },\n          {\n            label: \"Conditional Field\",\n            placeholder: \"This field is conditionally shown\",\n            type: {\n              name: \"text\",\n              max_length: 50,\n            },\n            channel_property: \"conditional_field\",\n            required: true,\n            span: 2,\n            join: true,\n            display_if: [[\"toggle\", \"equals\", \"show\"]],\n          },\n        ],\n        instructions: [\n          \"This test demonstrates conditional field display based on another field's value.\",\n          \"The second field should only appear if 'Show' is selected in the first field.\",\n        ],\n      },\n      {\n        brand_name: \"Save Payment Details Test\",\n        channel_code: \"UI_SAVE_PAYMENT_DETAILS_TEST\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"ui_tests\",\n        allow_pay_without_save: true,\n        allow_save: true,\n        brand_color: \"#000000\",\n        min_amount: 1000,\n        max_amount: 100000000,\n        requires_customer_details: false,\n        form: [],\n        instructions: [\n          \"This channel supports both one-time payment and pay-and-save.\",\n          \"A checkbox should be displayed.\",\n        ],\n      },\n      {\n        brand_name: \"Paired Channels Test\",\n        channel_code: \"UI_PAIRED_CHANNELS_TEST_1\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"ui_tests\",\n        allow_pay_without_save: true,\n        allow_save: false,\n        brand_color: \"#000000\",\n        min_amount: 1000,\n        max_amount: 100000000,\n        requires_customer_details: false,\n        form: [\n          {\n            label: \"This should show if the save checkbox is unchecked\",\n            placeholder: \"Unchecked\",\n            type: {\n              name: \"text\",\n              max_length: 50,\n            },\n            channel_property: \"nonsave\",\n            required: false,\n            span: 2,\n          },\n        ],\n        instructions: [\n          \"This channel does not support save, but has a paired channel that does.\",\n          \"Changing the save checkbox switches between the two channels.\",\n        ],\n      },\n      {\n        brand_name: \"Paired Channels Test\",\n        channel_code: \"UI_PAIRED_CHANNELS_TEST_2\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"ui_tests\",\n        allow_pay_without_save: false,\n        allow_save: true,\n        brand_color: \"#000000\",\n        min_amount: 1000,\n        max_amount: 100000000,\n        requires_customer_details: false,\n        form: [\n          {\n            label: \"This should show if the save checkbox is checked\",\n            placeholder: \"Checked\",\n            type: {\n              name: \"text\",\n              max_length: 50,\n            },\n            channel_property: \"save\",\n            required: false,\n            span: 2,\n          },\n        ],\n        instructions: [\n          \"This channel can only be used for pay-and-save, but has a paired channel that supports one time payment.\",\n          \"Changing the save checkbox switches between the two channels.\",\n        ],\n      },\n      {\n        brand_name: \"Banner Test\",\n        channel_code: \"UI_BANNER_TEST\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"ui_tests\",\n        allow_pay_without_save: true,\n        allow_save: false,\n        brand_color: \"#000000\",\n        min_amount: 1000,\n        max_amount: 100000000,\n        requires_customer_details: false,\n        banner: {\n          image_url: \"https://placehold.co/512x32.svg?text=Banner\",\n          alt_text: \"\",\n          aspect_ratio: 16,\n        },\n        form: [],\n        instructions: [\n          \"This channel has a banner image.\",\n          \"It should be displayed above this text.\",\n        ],\n      },\n      {\n        brand_name: \"Single Item Test\",\n        channel_code: \"GROUP_SINGLE_ITEM_TEST\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"single_item\",\n        allow_pay_without_save: false,\n        allow_save: false,\n        brand_color: \"#000000\",\n        min_amount: 1000,\n        max_amount: 100000000,\n        requires_customer_details: false,\n        form: [],\n        instructions: [\n          \"This channel is in a group by itself.\",\n          \"The channel picker should automatically select it when the group is opened.\",\n        ],\n      },\n      {\n        brand_name: \"Disabled Group Test\",\n        channel_code: \"GROUP_DISABLED_GROUP_TEST\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"disabled\",\n        allow_pay_without_save: false,\n        allow_save: false,\n        brand_color: \"#000000\",\n        min_amount: 999999999,\n        max_amount: 9999999999,\n        requires_customer_details: false,\n        form: [],\n        instructions: [\n          \"This channel is in a disabled group.\",\n          \"Since all channels in this group are disabled, the group should not be selectable. You should never see this text because creating this channel will throw an error.\",\n        ],\n      },\n      {\n        brand_name: \"Partial Disabled Group (Enabled)\",\n        channel_code: \"GROUP_PARTIAL_DISABLED_1\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"partial_disabled\",\n        allow_pay_without_save: false,\n        allow_save: false,\n        brand_color: \"#000000\",\n        min_amount: 1000,\n        max_amount: 100000000,\n        requires_customer_details: false,\n        form: [],\n        instructions: [\n          \"This channel is in a partially disabled group.\",\n          \"This channel is enabled, but the other channel in the group is disabled. This channel should be automatically selected by the channel picker because it's the only enabled option.\",\n        ],\n      },\n      {\n        brand_name: \"Partial Disabled Group (Disabled)\",\n        channel_code: \"GROUP_PARTIAL_DISABLED_2\",\n        brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n        ui_group: \"partial_disabled\",\n        allow_pay_without_save: false,\n        allow_save: false,\n        brand_color: \"#000000\",\n        min_amount: 999999999,\n        max_amount: 9999999999,\n        requires_customer_details: false,\n        form: [],\n        instructions: [\n          \"This channel is in a partially disabled group.\",\n          \"This channel is disabled. You should never see this text because creating this channel will throw an error.\",\n        ],\n      },\n    ],\n    channel_ui_groups: [\n      {\n        id: \"cards\",\n        label: \"Mock Cards\",\n        icon_url: \"https://assets.xendit.co/payment-session/logos/CARDS.svg\",\n      },\n      {\n        id: \"other\",\n        label: \"Other Mock Channels\",\n        icon_url: \"https://placehold.co/48x48.png?text=Logo\",\n      },\n      {\n        id: \"ui_tests\",\n        label: \"Channel UI Test Cases\",\n        icon_url: \"https://placehold.co/48x48.png?text=Logo\",\n      },\n      {\n        id: \"single_item\",\n        label: \"Mock Single Item Group\",\n        icon_url: \"https://placehold.co/48x48.png?text=Logo\",\n      },\n      {\n        id: \"disabled\",\n        label: \"Mock Disabled Group\",\n        icon_url: \"https://placehold.co/48x48.png?text=Logo\",\n      },\n      {\n        id: \"partial_disabled\",\n        label: \"Mock Partial Disabled Group\",\n        icon_url: \"https://placehold.co/48x48.png?text=Logo\",\n      },\n    ],\n    digital_wallets: {\n      google_pay: {\n        merchant_id: \"mock-googlepay-merchant-id\",\n        allowed_payment_methods: [\n          {\n            channel_code: \"CARDS\",\n            payment_request_id: `pr-${randomHexString(32)}`,\n            payment_method_specification: {\n              type: \"CARD\",\n              parameters: {\n                billingAddressRequired: true,\n                allowedAuthMethods: [\"PAN_ONLY\", \"CRYPTOGRAM_3DS\"],\n                allowedCardNetworks: [\"AMEX\", \"MASTERCARD\", \"VISA\"],\n              } satisfies google.payments.api.CardParameters,\n              tokenizationSpecification: {\n                type: \"PAYMENT_GATEWAY\",\n                parameters: {\n                  gateway: \"xendit\",\n                  gatewayMerchantId: \"exampleGatewayMerchantId\",\n                },\n              },\n            },\n          },\n        ],\n      },\n    },\n  };\n}\n"],"names":["makeTestBffData","mockNow","Date","toISOString","mockExpiry","now","session","payment_session_id","randomHexString","created","updated","status","reference_id","randomUUID","description","currency","amount","country","expires_at","session_type","mode","locale","business_id","customer_id","capture_method","allow_save_payment_method","items","type","name","net_unit_amount","quantity","category","business","country_of_operation","merchant_profile_picture_url","customer","id","email","mobile_number","phone_number","individual_detail","given_names","surname","business_detail","channels","brand_name","channel_code","brand_logo_url","ui_group","pm_type","allow_pay_without_save","allow_save","brand_color","min_amount","max_amount","requires_customer_details","_mock_action_type","card","brands","logo_url","form","group_label","label","placeholder","channel_property","required","span","join","min_length","max_length","regex_validators","regex","message","flags","require_billing_information","instructions","options","value","banner","image_url","alt_text","aspect_ratio","subtitle","icon_url","initial_value","display_if","channel_ui_groups","digital_wallets","google_pay","merchant_id","allowed_payment_methods","payment_request_id","payment_method_specification","parameters","billingAddressRequired","allowedAuthMethods","allowedCardNetworks","tokenizationSpecification","gateway","gatewayMerchantId"],"mappings":"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"}