@ng-web-apis/payment-request
Version:
This is a library for declarative use of Payment Request API with Angular
1 lines • 12.8 kB
Source Map (JSON)
{"version":3,"file":"ng-web-apis-payment-request.mjs","sources":["../../../libs/payment-request/src/directives/payment-item/payment-item.directive.ts","../../../libs/payment-request/src/directives/payment/payment.directive.ts","../../../libs/payment-request/src/tokens/payment-methods.ts","../../../libs/payment-request/src/tokens/payment-options.ts","../../../libs/payment-request/src/tokens/payment-request-support.ts","../../../libs/payment-request/src/services/payment-request.service.ts","../../../libs/payment-request/src/utils/is-error.ts","../../../libs/payment-request/src/directives/payment-submit/payment-submit.directive.ts","../../../libs/payment-request/src/module.ts","../../../libs/payment-request/src/ng-web-apis-payment-request.ts"],"sourcesContent":["import {Directive, Input} from '@angular/core';\n\n@Directive({\n standalone: true,\n selector: '[waPaymentItem][paymentAmount][paymentLabel]',\n})\nexport class WaPaymentItem implements PaymentItem {\n @Input('paymentAmount')\n public amount!: PaymentCurrencyAmount;\n\n @Input('paymentLabel')\n public label!: string;\n\n @Input('paymentPending')\n public pending?: boolean;\n}\n\n/**\n * @deprecated: use {@link WaPaymentItem}\n */\nexport const PaymentItemDirective = WaPaymentItem;\n","import type {QueryList} from '@angular/core';\nimport {ContentChildren, Directive, Input} from '@angular/core';\n\nimport type {PaymentShippingOption} from '../../tokens/payment-options';\nimport {WaPaymentItem} from '../payment-item/payment-item.directive';\n\n@Directive({\n standalone: true,\n selector: '[waPayment][paymentTotal]',\n})\nexport class WaPayment implements PaymentDetailsInit {\n @Input('paymentTotal')\n public total!: PaymentItem;\n\n @Input('paymentId')\n public id?: string;\n\n @Input('paymentModifiers')\n public modifiers?: PaymentDetailsModifier[];\n\n @Input('paymentShippingOptions')\n public shippingOptions?: PaymentShippingOption[];\n\n public displayItems?: PaymentItem[];\n\n @ContentChildren(WaPaymentItem)\n protected set paymentItems(items: QueryList<PaymentItem>) {\n this.displayItems = items.toArray();\n }\n}\n\n/**\n * @deprecated use {@link WaPayment}\n */\nexport const PaymentDirective = WaPayment;\n","import {InjectionToken} from '@angular/core';\n\nexport const WA_PAYMENT_METHODS = new InjectionToken<PaymentMethodData[]>(\n '[WA_PAYMENT_METHODS]',\n {\n factory: () => [{supportedMethods: 'basic-card'}],\n },\n);\n\n/**\n * @deprecated: drop in v5.0, use {@link WA_PAYMENT_METHODS}\n */\nexport const PAYMENT_METHODS = WA_PAYMENT_METHODS;\n","import {InjectionToken} from '@angular/core';\n\nexport interface WaPaymentOptions {\n requestBillingAddress?: boolean;\n requestPayerEmail?: boolean;\n requestPayerName?: boolean;\n requestPayerPhone?: boolean;\n requestShipping?: boolean;\n shippingType?: 'delivery' | 'pickup' | 'shipping';\n}\n\n/**\n * @deprecated: drop in v5.0, use {@link WaPaymentOptions}\n */\nexport type PaymentOptions = WaPaymentOptions;\n\nexport interface WaPaymentShippingOption {\n amount: PaymentCurrencyAmount;\n id: string;\n label: string;\n selected?: boolean;\n}\n\n/**\n * @deprecated: drop in v5.0, use {@link WaPaymentShippingOption}\n */\nexport type PaymentShippingOption = WaPaymentShippingOption;\n\nexport const WA_PAYMENT_OPTIONS = new InjectionToken<WaPaymentOptions>(\n '[WA_PAYMENT_OPTIONS]',\n {\n factory: () => ({}),\n },\n);\n\n/**\n * @deprecated: drop in v5.0, use {@link WA_PAYMENT_OPTIONS}\n */\nexport const PAYMENT_OPTIONS = WA_PAYMENT_OPTIONS;\n","import {inject, InjectionToken} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\n\ndeclare global {\n interface Window {\n PaymentRequest: PaymentRequest;\n }\n}\n\nexport const WA_PAYMENT_REQUEST_SUPPORT = new InjectionToken<boolean>(\n '[WA_PAYMENT_REQUEST_SUPPORT]',\n {\n factory: () => !!inject(WA_WINDOW).PaymentRequest,\n },\n);\n\n/**\n * @deprecated: drop in v5.0, use {@link WA_PAYMENT_REQUEST_SUPPORT}\n */\nexport const PAYMENT_REQUEST_SUPPORT = WA_PAYMENT_REQUEST_SUPPORT;\n","import {inject, Injectable} from '@angular/core';\n\nimport {PAYMENT_METHODS} from '../tokens/payment-methods';\nimport type {PaymentOptions} from '../tokens/payment-options';\nimport {PAYMENT_OPTIONS} from '../tokens/payment-options';\nimport {PAYMENT_REQUEST_SUPPORT} from '../tokens/payment-request-support';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PaymentRequestService {\n private readonly supported = inject(PAYMENT_REQUEST_SUPPORT);\n private readonly paymentMethods = inject(PAYMENT_METHODS);\n private readonly paymentOptions = inject(PAYMENT_OPTIONS);\n\n public async request(\n details: PaymentDetailsInit,\n methods: PaymentMethodData[] = this.paymentMethods,\n options: PaymentOptions = this.paymentOptions,\n ): Promise<PaymentResponse> {\n if (!this.supported) {\n return Promise.reject(\n new Error('Payment Request is not supported in your browser'),\n );\n }\n\n const gateway = new PaymentRequest(\n methods,\n details,\n // @ts-ignore\n options,\n );\n\n return gateway\n .canMakePayment()\n .then(async (canPay) =>\n canPay\n ? gateway.show(details)\n : Promise.reject(\n new Error('Payment Request cannot make the payment'),\n ),\n );\n }\n}\n","export function isError(item: unknown): item is DOMException | Error {\n return item instanceof Error || item instanceof DOMException;\n}\n","import {Directive, ElementRef, inject, Output} from '@angular/core';\nimport type {Observable} from 'rxjs';\nimport {catchError, filter, from, fromEvent, of, share, switchMap} from 'rxjs';\n\nimport {PaymentRequestService} from '../../services/payment-request.service';\nimport {PAYMENT_METHODS} from '../../tokens/payment-methods';\nimport {PAYMENT_OPTIONS} from '../../tokens/payment-options';\nimport {isError} from '../../utils/is-error';\nimport {WaPayment} from '../payment/payment.directive';\n\n@Directive({\n standalone: true,\n selector: '[waPaymentSubmit]',\n})\nexport class WaPaymentSubmit {\n private readonly paymentHost = inject(WaPayment);\n private readonly paymentRequest = inject(PaymentRequestService);\n private readonly nativeElement: HTMLElement = inject(ElementRef).nativeElement;\n private readonly methods = inject(PAYMENT_METHODS);\n private readonly options = inject(PAYMENT_OPTIONS);\n\n @Output()\n public readonly waPaymentSubmit: Observable<PaymentResponse>;\n\n @Output()\n public readonly waPaymentError: Observable<DOMException | Error>;\n\n constructor() {\n const requests$ = fromEvent(this.nativeElement, 'click').pipe(\n switchMap(() =>\n from(\n this.paymentRequest.request(\n {...this.paymentHost},\n this.methods,\n this.options,\n ),\n ).pipe(catchError((error) => of(error))),\n ),\n share(),\n );\n\n this.waPaymentSubmit = requests$.pipe(filter((response) => !isError(response)));\n\n this.waPaymentError = requests$.pipe(filter(isError));\n }\n}\n\n/**\n * @deprecated: use {@link WaPaymentSubmit}\n */\nexport const PaymentSubmitDirective = WaPaymentSubmit;\n","import {WaPayment} from './directives/payment/payment.directive';\nimport {WaPaymentItem} from './directives/payment-item/payment-item.directive';\nimport {WaPaymentSubmit} from './directives/payment-submit/payment-submit.directive';\n\nexport const WaPaymentRequest = [WaPayment, WaPaymentItem, WaPaymentSubmit];\n\n/**\n * @deprecated: use {@link WaPaymentRequest}\n */\nexport const PaymentRequestModule = WaPaymentRequest;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}