@basis-theory/web-elements 3.0.0-beta.2 → 3.0.0-beta.4
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.
- package/README.md +237 -562
- package/dist/.vite/manifest.json +19 -8
- package/dist/api-client/src/api-client.d.ts.map +1 -1
- package/dist/api-client/src/bin-lookup-transform.d.ts +35 -0
- package/dist/api-client/src/bin-lookup-transform.d.ts.map +1 -0
- package/dist/api-client/src/http-client.d.ts.map +1 -1
- package/dist/api-client/src/index.d.ts +1 -1
- package/dist/api-client/src/index.d.ts.map +1 -1
- package/dist/api-client/src/types.d.ts +114 -6
- package/dist/api-client/src/types.d.ts.map +1 -1
- package/dist/basis-theory-sdk.es.js +1 -1
- package/dist/basis-theory-sdk.umd.js +1 -1
- package/dist/basis-theory-sdk.umd.js.map +1 -1
- package/dist/{create-card-BuOvimjH.js → create-card-B5zEHyRg.js} +49 -15
- package/dist/create-card-B5zEHyRg.js.map +1 -0
- package/dist/create-copy-button-DrAz8g0m.js +233 -0
- package/dist/create-copy-button-DrAz8g0m.js.map +1 -0
- package/dist/{index-oREjBjga.js → index-BOedIhUN.js} +406 -54
- package/dist/index-BOedIhUN.js.map +1 -0
- package/dist/loader/basis-theory.min.js +1 -1
- package/dist/postmessage/src/client.d.ts.map +1 -1
- package/dist/postmessage/src/event-map.d.ts +4 -0
- package/dist/postmessage/src/event-map.d.ts.map +1 -1
- package/dist/postmessage/src/server.d.ts.map +1 -1
- package/dist/postmessage/src/types.d.ts +7 -3
- package/dist/postmessage/src/types.d.ts.map +1 -1
- package/dist/shared/src/index.d.ts +1 -0
- package/dist/shared/src/index.d.ts.map +1 -1
- package/dist/shared/src/proxy-validation.d.ts +93 -0
- package/dist/shared/src/proxy-validation.d.ts.map +1 -0
- package/dist/sri.json +9 -9
- package/dist/stats.html +1 -1
- package/dist/web-elements/src/BasisTheory.d.ts +1 -1
- package/dist/web-elements/src/BasisTheory.d.ts.map +1 -1
- package/dist/web-elements/src/basis-theory.d.ts +23 -0
- package/dist/web-elements/src/basis-theory.d.ts.map +1 -1
- package/dist/web-elements/src/elements/create-card-number.d.ts +2 -1
- package/dist/web-elements/src/elements/create-card-number.d.ts.map +1 -1
- package/dist/web-elements/src/elements/create-card.d.ts +14 -1
- package/dist/web-elements/src/elements/create-card.d.ts.map +1 -1
- package/dist/web-elements/src/elements/create-copy-button.d.ts +19 -0
- package/dist/web-elements/src/elements/create-copy-button.d.ts.map +1 -0
- package/dist/web-elements/src/elements/create-cvv.d.ts +2 -1
- package/dist/web-elements/src/elements/create-cvv.d.ts.map +1 -1
- package/dist/web-elements/src/elements/create-expiry.d.ts +2 -1
- package/dist/web-elements/src/elements/create-expiry.d.ts.map +1 -1
- package/dist/web-elements/src/elements/create-text.d.ts +2 -1
- package/dist/web-elements/src/elements/create-text.d.ts.map +1 -1
- package/dist/web-elements/src/index.d.ts +1 -1
- package/dist/web-elements/src/index.d.ts.map +1 -1
- package/dist/web-elements/src/types/events.d.ts +30 -2
- package/dist/web-elements/src/types/events.d.ts.map +1 -1
- package/dist/web-elements/src/types.d.ts +135 -5
- package/dist/web-elements/src/types.d.ts.map +1 -1
- package/dist/web-elements/src/utils/create-event-dispatcher.d.ts.map +1 -1
- package/dist/web-elements/src/utils/validate-element-options.d.ts.map +1 -1
- package/package.json +5 -5
- package/dist/create-card-BuOvimjH.js.map +0 -1
- package/dist/index-oREjBjga.js.map +0 -1
|
@@ -131,7 +131,7 @@ export interface SDKConfig {
|
|
|
131
131
|
};
|
|
132
132
|
}
|
|
133
133
|
export type { ElementType } from './types/events';
|
|
134
|
-
export type EventType = 'change' | 'ready' | 'focus' | 'blur' | 'error';
|
|
134
|
+
export type EventType = 'change' | 'ready' | 'networkChanged' | 'focus' | 'blur' | 'error' | 'copy';
|
|
135
135
|
export interface ElementOptions {
|
|
136
136
|
/**
|
|
137
137
|
* Placeholder text displayed when input is empty.
|
|
@@ -253,6 +253,25 @@ export interface ElementOptions {
|
|
|
253
253
|
* Only applicable to card elements
|
|
254
254
|
*/
|
|
255
255
|
cardBrands?: string[];
|
|
256
|
+
/**
|
|
257
|
+
* Enable BIN enrichment (6-digit) for the card number field (standalone or unified card).
|
|
258
|
+
* When true, co-badge networks are detected and `selectedNetwork` is available when applicable.
|
|
259
|
+
* If omitted but `coBadge` is set, BIN enrichment is enabled automatically unless explicitly
|
|
260
|
+
* disabled here (`false` or `{ enabled: false }`).
|
|
261
|
+
*/
|
|
262
|
+
binLookup?: boolean | {
|
|
263
|
+
enabled?: boolean;
|
|
264
|
+
debounceMs?: number;
|
|
265
|
+
};
|
|
266
|
+
/**
|
|
267
|
+
* Co-badge: network priority and optional in-iframe network selector (manual mode).
|
|
268
|
+
* Implies BIN enrichment when set; you do not need to pass `binLookup` unless you want to
|
|
269
|
+
* tune `debounceMs` or opt out with `binLookup: false`.
|
|
270
|
+
*/
|
|
271
|
+
coBadge?: {
|
|
272
|
+
preferredNetworks?: string[];
|
|
273
|
+
mode?: 'auto' | 'manual';
|
|
274
|
+
};
|
|
256
275
|
}
|
|
257
276
|
export interface Element {
|
|
258
277
|
/**
|
|
@@ -299,13 +318,17 @@ export interface Element {
|
|
|
299
318
|
* @returns Unsubscribe function
|
|
300
319
|
*/
|
|
301
320
|
on(eventType: EventType, listener: EventListener): () => void;
|
|
321
|
+
/**
|
|
322
|
+
* Override selected payment network for co-badge cards (card number element only)
|
|
323
|
+
*/
|
|
324
|
+
setNetwork?(network: string): Promise<void>;
|
|
302
325
|
}
|
|
303
326
|
export type EventListener = (event: CustomEvent) => void;
|
|
304
327
|
/**
|
|
305
328
|
* Re-export unified event types from ./types/events
|
|
306
329
|
* All events now include BaseEventDetail (elementType, elementId, timestamp)
|
|
307
330
|
*/
|
|
308
|
-
export type { BaseEventDetail, BlurEventDetail, CardElementChangeEventDetail, CardNumberChangeEventDetail, ChangeEventDetail, ElementEventDetailMap, ElementEventListener, ElementEventType, ErrorCode, ErrorEventDetail, FocusEventDetail, ReadyEventDetail, ValidationError, } from './types/events';
|
|
331
|
+
export type { BaseEventDetail, BlurEventDetail, CardElementChangeEventDetail, CardNumberChangeEventDetail, ChangeEventDetail, CopyEventDetail, ElementEventDetailMap, ElementEventListener, ElementEventType, ErrorCode, ErrorEventDetail, FocusEventDetail, NetworkChangedEventDetail, ReadyEventDetail, ValidationError, } from './types/events';
|
|
309
332
|
/** Primitive or an Element reference — resolved to a value during tokenization */
|
|
310
333
|
export type ElementLeaf = string | number | boolean | null | undefined | Element;
|
|
311
334
|
/** Freeform object that may contain Element references at any depth */
|
|
@@ -372,6 +395,28 @@ export interface EncryptedToken {
|
|
|
372
395
|
encrypted: string;
|
|
373
396
|
type: string;
|
|
374
397
|
}
|
|
398
|
+
/**
|
|
399
|
+
* Options for {@link BasisTheorySDK.proxy} — HTTP verb is chosen by the method name.
|
|
400
|
+
*/
|
|
401
|
+
export interface ProxyRequestOptions {
|
|
402
|
+
/** Destination URL (ephemeral proxy). Mutually exclusive with `proxyKey`. */
|
|
403
|
+
url?: string;
|
|
404
|
+
/** Pre-configured proxy key. Mutually exclusive with `url`. */
|
|
405
|
+
proxyKey?: string;
|
|
406
|
+
/** Headers forwarded to the destination request */
|
|
407
|
+
headers?: Record<string, string>;
|
|
408
|
+
/** Request body; may contain Element references */
|
|
409
|
+
body?: ElementInputObject | unknown;
|
|
410
|
+
/** When true, the API may return response metadata alongside data */
|
|
411
|
+
includeResponseHeaders?: boolean;
|
|
412
|
+
}
|
|
413
|
+
/**
|
|
414
|
+
* Proxy result when `includeResponseHeaders` is true (matches common API envelope).
|
|
415
|
+
*/
|
|
416
|
+
export interface ProxyResponse {
|
|
417
|
+
data: unknown;
|
|
418
|
+
headers: Record<string, string>;
|
|
419
|
+
}
|
|
375
420
|
/**
|
|
376
421
|
* Sub-element reference for tokenization (used in CardElement)
|
|
377
422
|
*/
|
|
@@ -398,14 +443,69 @@ export interface CardElement extends Element {
|
|
|
398
443
|
};
|
|
399
444
|
}
|
|
400
445
|
export type { CardElementOptions } from './elements/create-card';
|
|
446
|
+
/**
|
|
447
|
+
* Options specific to the CopyButton element
|
|
448
|
+
*
|
|
449
|
+
* SECURITY NOTE: This element is opt-in only via allowClipboard: true.
|
|
450
|
+
* Clipboard access for raw card data may not be PCI compliant and must
|
|
451
|
+
* never be enabled inadvertently.
|
|
452
|
+
*/
|
|
453
|
+
export interface CopyButtonOptions {
|
|
454
|
+
/**
|
|
455
|
+
* REQUIRED: Explicitly opt-in to clipboard access
|
|
456
|
+
* Must be set to true - throws ConfigurationError if missing
|
|
457
|
+
*
|
|
458
|
+
* @security This flag exists because clipboard access for raw card data
|
|
459
|
+
* may not be PCI compliant and must never be enabled inadvertently.
|
|
460
|
+
*/
|
|
461
|
+
allowClipboard: true;
|
|
462
|
+
/**
|
|
463
|
+
* Static string value to copy when clicked
|
|
464
|
+
* Overridden by setValueRef() if called
|
|
465
|
+
*/
|
|
466
|
+
value?: string;
|
|
467
|
+
/**
|
|
468
|
+
* Label text displayed on the button
|
|
469
|
+
* @default 'Copy'
|
|
470
|
+
*/
|
|
471
|
+
text?: string;
|
|
472
|
+
/**
|
|
473
|
+
* Disable the button
|
|
474
|
+
* @default false
|
|
475
|
+
*/
|
|
476
|
+
disabled?: boolean;
|
|
477
|
+
}
|
|
478
|
+
/**
|
|
479
|
+
* CopyButton element with setValueRef method
|
|
480
|
+
*/
|
|
481
|
+
export interface CopyButtonElement extends Element {
|
|
482
|
+
/**
|
|
483
|
+
* Link this copy button to another element's value
|
|
484
|
+
* When clicked, copies the linked element's current value
|
|
485
|
+
*
|
|
486
|
+
* @param element - The element to link to (e.g., cardNumber, text)
|
|
487
|
+
*
|
|
488
|
+
* @example
|
|
489
|
+
* ```typescript
|
|
490
|
+
* const cardNumber = bt.createElement('cardNumber');
|
|
491
|
+
* const copyBtn = bt.createElement('copyButton', { allowClipboard: true });
|
|
492
|
+
*
|
|
493
|
+
* copyBtn.setValueRef(cardNumber);
|
|
494
|
+
*
|
|
495
|
+
* // Now clicking copyBtn will copy the card number value
|
|
496
|
+
* ```
|
|
497
|
+
*/
|
|
498
|
+
setValueRef(element: Element): Promise<void>;
|
|
499
|
+
}
|
|
401
500
|
export interface BasisTheorySDK {
|
|
402
501
|
/**
|
|
403
502
|
* Create a new element instance
|
|
404
503
|
* Returns Element instance immediately (synchronous)
|
|
405
504
|
*/
|
|
406
505
|
createElement(type: 'card', options?: ElementOptions): CardElement;
|
|
407
|
-
createElement(type:
|
|
408
|
-
createElement(type: ElementType, options?: ElementOptions): Element
|
|
506
|
+
createElement(type: 'copyButton', options: CopyButtonOptions): CopyButtonElement;
|
|
507
|
+
createElement(type: Exclude<ElementType, 'card' | 'copyButton'>, options?: ElementOptions): Element;
|
|
508
|
+
createElement(type: ElementType, options?: ElementOptions | CopyButtonOptions): Element | CardElement | CopyButtonElement;
|
|
409
509
|
/**
|
|
410
510
|
* Tokenize data (creates a token)
|
|
411
511
|
*/
|
|
@@ -501,6 +601,31 @@ export interface BasisTheorySDK {
|
|
|
501
601
|
sessions: {
|
|
502
602
|
create(): Promise<Session>;
|
|
503
603
|
};
|
|
604
|
+
/**
|
|
605
|
+
* Proxy HTTP requests through Basis Theory (Element references in `body` are resolved in the coordinator).
|
|
606
|
+
*/
|
|
607
|
+
proxy: {
|
|
608
|
+
get(options: ProxyRequestOptions & {
|
|
609
|
+
includeResponseHeaders: true;
|
|
610
|
+
}): Promise<ProxyResponse>;
|
|
611
|
+
get(options?: ProxyRequestOptions): Promise<unknown>;
|
|
612
|
+
post(options: ProxyRequestOptions & {
|
|
613
|
+
includeResponseHeaders: true;
|
|
614
|
+
}): Promise<ProxyResponse>;
|
|
615
|
+
post(options?: ProxyRequestOptions): Promise<unknown>;
|
|
616
|
+
put(options: ProxyRequestOptions & {
|
|
617
|
+
includeResponseHeaders: true;
|
|
618
|
+
}): Promise<ProxyResponse>;
|
|
619
|
+
put(options?: ProxyRequestOptions): Promise<unknown>;
|
|
620
|
+
patch(options: ProxyRequestOptions & {
|
|
621
|
+
includeResponseHeaders: true;
|
|
622
|
+
}): Promise<ProxyResponse>;
|
|
623
|
+
patch(options?: ProxyRequestOptions): Promise<unknown>;
|
|
624
|
+
delete(options: ProxyRequestOptions & {
|
|
625
|
+
includeResponseHeaders: true;
|
|
626
|
+
}): Promise<ProxyResponse>;
|
|
627
|
+
delete(options?: ProxyRequestOptions): Promise<unknown>;
|
|
628
|
+
};
|
|
504
629
|
/**
|
|
505
630
|
* Update the theme mode for all mounted elements
|
|
506
631
|
*
|
|
@@ -520,7 +645,7 @@ export interface BasisTheorySDK {
|
|
|
520
645
|
* mount() calls this function to trigger initialization when needed
|
|
521
646
|
*/
|
|
522
647
|
export interface ElementFactory {
|
|
523
|
-
(apiKey: string, config: SDKConfig, options: ElementOptions | undefined, elementId: string, ensureCoordinatorReady: () => Promise<void>): Element;
|
|
648
|
+
(apiKey: string, config: SDKConfig, options: ElementOptions | CopyButtonOptions | undefined, elementId: string, ensureCoordinatorReady: () => Promise<void>): Element;
|
|
524
649
|
}
|
|
525
650
|
export interface MountConfig {
|
|
526
651
|
timeoutMs: number;
|
|
@@ -533,5 +658,10 @@ export interface IframeConfig {
|
|
|
533
658
|
src: string;
|
|
534
659
|
sandbox: string;
|
|
535
660
|
title: string;
|
|
661
|
+
/**
|
|
662
|
+
* Feature policy/permissions for the iframe (e.g., 'clipboard-write', 'payment *')
|
|
663
|
+
* @default 'payment *'
|
|
664
|
+
*/
|
|
665
|
+
allow?: string;
|
|
536
666
|
}
|
|
537
667
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5D,YAAY,EAAE,WAAW,EAAE,CAAC;AAM5B;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAMzC,MAAM,WAAW,UAAU;IACzB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,WAAW,CAAC,EAAE;QACZ,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IAEF;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,WAAW,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,kBAAkB,EAAE,OAAO,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,WAAW,EAAE;QACX,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAMD,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-event-dispatcher.d.ts","sourceRoot":"","sources":["../../../../src/utils/create-event-dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAKV,SAAS,
|
|
1
|
+
{"version":3,"file":"create-event-dispatcher.d.ts","sourceRoot":"","sources":["../../../../src/utils/create-event-dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAKV,SAAS,EAEV,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,UAAU,qBAAqB;IAC7B,mBAAmB;IACnB,WAAW,EAAE,WAAW,CAAC;IAEzB,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAElB,0DAA0D;IAC1D,MAAM,EAAE,iBAAiB,CAAC;IAE1B,6CAA6C;IAC7C,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,qBAAqB,GAAI,QAAQ,qBAAqB;;0BA4IzD,SAAS,WACN,MAAM,UACP,KAAK,KACZ,IAAI;CAeR,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-element-options.d.ts","sourceRoot":"","sources":["../../../../src/utils/validate-element-options.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"validate-element-options.d.ts","sourceRoot":"","sources":["../../../../src/utils/validate-element-options.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAqB,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AA2C/E;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GACjC,MAAM,WAAW,EACjB,UAAS,cAAmB,KAC3B,IAkHF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@basis-theory/web-elements",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.4",
|
|
4
4
|
"description": "Secure, PCI-compliant elements for creating payment input forms",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/basis-theory-sdk.umd.js",
|
|
@@ -48,10 +48,10 @@
|
|
|
48
48
|
"directory": "packages/web-elements"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@basis-theory-elements/api-client": "3.0.0-beta.
|
|
52
|
-
"@basis-theory-elements/postmessage": "3.0.0-beta.
|
|
53
|
-
"@basis-theory-elements/shared": "3.0.0-beta.
|
|
54
|
-
"@basis-theory-elements/validation": "3.0.0-beta.
|
|
51
|
+
"@basis-theory-elements/api-client": "3.0.0-beta.4",
|
|
52
|
+
"@basis-theory-elements/postmessage": "3.0.0-beta.4",
|
|
53
|
+
"@basis-theory-elements/shared": "3.0.0-beta.4",
|
|
54
|
+
"@basis-theory-elements/validation": "3.0.0-beta.4"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
57
|
"@types/node": "^20.0.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-card-BuOvimjH.js","sources":["../src/elements/create-card.ts"],"sourcesContent":["/**\n * Card Element Factory (Unified)\n */\n\nimport type { PostMessageClient } from '@basis-theory-elements/postmessage';\nimport { createPostMessageClient } from '@basis-theory-elements/postmessage';\nimport { ElementError, log } from '@basis-theory-elements/shared';\nimport { createMounter } from '../mounter/create-mounter';\nimport type {\n CardElement,\n ElementMounter,\n ElementOptions,\n EventListener,\n EventType,\n SDKConfig,\n SubElementRef,\n} from '../types';\nimport { createIframe } from '../utils/create-iframe';\nimport { createEventDispatcher } from '../utils/create-event-dispatcher';\n\n/**\n * Default stack threshold in pixels for CardElement auto-layout\n * When container width is below this threshold, card inputs stack vertically\n */\nconst DEFAULT_CARD_STACK_THRESHOLD = 400;\n\n/**\n * Card element options\n */\nexport interface CardElementOptions {\n /** CSS styling */\n style?: Record<string, any>;\n\n /** Placeholder text for each sub-field */\n placeholder?: {\n cardNumber?: string;\n expiryDate?: string;\n cvc?: string;\n };\n\n /** Accessibility label */\n ariaLabel?: string;\n\n /** Disabled state (applies to all 3 sub-fields) */\n disabled?: boolean;\n\n /** Read-only state (applies to all 3 sub-fields) */\n readOnly?: boolean;\n\n /** Layout mode */\n layout?: 'row' | 'column' | 'auto';\n\n /** Stack threshold in pixels (only applies when layout: 'auto') */\n stackAt?: number;\n\n /** Icon position */\n iconPosition?: 'left' | 'right' | 'none';\n\n /** Restrict accepted card brands */\n cardBrands?: string[];\n}\n\n/**\n * Factory function to create a unified card element\n * No class, pure functional approach with closure-based state\n */\nexport const createCardElement = (\n apiKey: string,\n sdkConfig: SDKConfig,\n options: CardElementOptions = {},\n coordinatorElementId: string,\n ensureCoordinatorReady: () => Promise<void>\n): CardElement => {\n // Private state (closure)\n let iframe: HTMLIFrameElement | null = null;\n let client: PostMessageClient | null = null;\n let mounter: ElementMounter | null = null;\n let isMounted = false;\n let container: HTMLElement | null = null;\n let eventDispatcher: ReturnType<typeof createEventDispatcher> | null = null;\n\n // Event target for event emission\n const eventTarget = new EventTarget();\n\n // Use coordinator-generated ID for all references\n const id = coordinatorElementId;\n const type = 'card';\n\n // Setup event dispatcher\n const setupEventListeners = () => {\n if (!client) {\n return;\n }\n\n eventDispatcher = createEventDispatcher({\n elementType: type,\n elementId: id,\n client,\n eventTarget,\n });\n\n eventDispatcher.setupSubscriptions();\n };\n\n /**\n * Create sub-element reference for tokenization\n * These refs are used in bt.tokens.create() data payload\n */\n const createSubElementRef = (subId: string): SubElementRef => ({\n id: subId,\n type: 'card',\n get mounted() {\n return isMounted;\n },\n mount: () => {\n throw ElementError('Sub-field refs cannot be mounted independently');\n },\n unmount: () => {},\n update: () => Promise.resolve(),\n focus: () => {},\n blur: () => {},\n clear: () => {},\n on: () => () => {},\n });\n\n // Public API (Element interface with sub-field refs)\n const cardElement = {\n id,\n type,\n get mounted() {\n return isMounted;\n },\n\n // Sub-field references for tokenization\n fields: {\n number: createSubElementRef(`${id}__number`),\n expiryDate: createSubElementRef(`${id}__expiry`),\n cvc: createSubElementRef(`${id}__cvc`),\n },\n\n mount: async (selector: string | HTMLElement) => {\n if (isMounted) {\n throw ElementError('Element is already mounted');\n }\n\n // Resolve container\n container =\n typeof selector === 'string'\n ? document.querySelector(selector)\n : selector;\n\n if (!container) {\n throw ElementError(`Container not found: ${selector}`);\n }\n\n // Create iframe\n const parentOrigin = window.location.origin;\n const iframeUrl = new URL(`${sdkConfig.elementsBaseUrl}/card.html`);\n iframeUrl.searchParams.set('parentOrigin', parentOrigin);\n iframeUrl.searchParams.set('elementId', id);\n iframeUrl.searchParams.set(\n 'measurePerformance',\n String(sdkConfig.measurePerformance || false)\n );\n iframeUrl.searchParams.set('debug', String(sdkConfig.debug || false));\n\n iframe = createIframe({\n src: iframeUrl.toString(),\n sandbox: 'allow-scripts allow-same-origin',\n title: options.ariaLabel || 'Card Input',\n });\n\n // Add element ID and theme mode attributes\n iframe.setAttribute('data-bt-element-id', id);\n iframe.setAttribute('data-theme-mode', sdkConfig.themeMode || 'auto');\n\n // Create PostMessage client\n client = createPostMessageClient(iframe, {\n targetOrigin: sdkConfig.iframeOrigin,\n timeout: sdkConfig.timeoutMs,\n retries: sdkConfig.retryConfig.maxRetries,\n debug: sdkConfig.debug,\n });\n\n // Create mounter\n mounter = createMounter();\n\n // Set up event listeners\n setupEventListeners();\n\n // Subscribe to 'ready' event BEFORE mounting iframe\n const readyPromise = new Promise<void>((resolve, reject) => {\n const timeout = setTimeout(() => {\n reject(\n ElementError(\n `Iframe EVENT_READY not received within ${sdkConfig.timeoutMs}ms`,\n id,\n { elementType: type, timeoutMs: sdkConfig.timeoutMs }\n )\n );\n }, sdkConfig.timeoutMs);\n\n const handleReady = () => {\n clearTimeout(timeout);\n resolve();\n };\n\n eventTarget.addEventListener('ready', handleReady, { once: true });\n });\n\n // Mount iframe to DOM (synchronous)\n mounter.mount(container, iframe, {\n timeoutMs: sdkConfig.timeoutMs,\n });\n\n isMounted = true;\n\n // Wait for coordinator + configuration to complete\n try {\n // Wait for coordinator (loads Core SDK if needed)\n await ensureCoordinatorReady();\n\n // Wait for EVENT_READY\n await readyPromise;\n\n // Send initial configuration with card-specific options\n await client!.sendRequest('CMD_SET_CONFIG', {\n elementId: id,\n apiKey,\n apiTimeout: sdkConfig.timeoutMs,\n apiRetries: sdkConfig.retryConfig.maxRetries,\n theme: sdkConfig.theme,\n darkTheme: sdkConfig.darkTheme,\n themeMode: sdkConfig.themeMode,\n placeholder: options.placeholder,\n style: options.style,\n disabled: options.disabled,\n readOnly: options.readOnly,\n layout: options.layout || 'auto',\n stackAt: options.stackAt || DEFAULT_CARD_STACK_THRESHOLD,\n iconPosition: options.iconPosition || 'left',\n cardBrands: options.cardBrands,\n debug: sdkConfig.debug,\n });\n\n // Reveal iframe now that theme is fully applied\n if (iframe) iframe.style.opacity = '1';\n } catch (error) {\n // Dispatch error event before cleanup\n if (eventDispatcher) {\n eventDispatcher.dispatchError(\n 'MOUNT_ERROR',\n (error as Error).message,\n error as Error\n );\n }\n\n // Mount failed - clean up and mark as unmounted\n isMounted = false;\n\n if (client) {\n client.destroy();\n client = null;\n }\n\n if (mounter && iframe) {\n mounter.unmount(iframe);\n iframe = null;\n mounter = null;\n }\n\n eventDispatcher = null;\n container = null;\n\n throw error;\n }\n },\n\n unmount: () => {\n if (!isMounted) {\n throw ElementError('Element is not mounted');\n }\n\n // Tell iframe to notify coordinator to clear cached values (all 3 sub-fields)\n if (client) {\n client.sendRequest('CMD_CLEAR_CACHE', {}).catch((error) => {\n log('Failed to send clear cache command', {\n elementId: id,\n error: (error as Error).message,\n });\n });\n\n client.destroy();\n client = null;\n }\n\n if (mounter && iframe) {\n mounter.unmount(iframe);\n iframe = null;\n mounter = null;\n }\n\n eventDispatcher = null;\n container = null;\n isMounted = false;\n },\n\n update: async (newOptions: Partial<ElementOptions> & { themeMode?: string }) => {\n if (!isMounted || !client) {\n throw ElementError('Element must be mounted before updating');\n }\n\n // Cast to CardElementOptions to access card-specific properties\n const cardOptions = newOptions as Partial<CardElementOptions> & { themeMode?: string };\n\n // Build update payload\n const updatePayload: Record<string, any> = {\n placeholder: cardOptions.placeholder,\n style: cardOptions.style,\n disabled: cardOptions.disabled,\n readOnly: cardOptions.readOnly,\n layout: cardOptions.layout,\n stackAt: cardOptions.stackAt,\n iconPosition: cardOptions.iconPosition,\n cardBrands: cardOptions.cardBrands,\n };\n\n // Include theme mode update if provided\n if (newOptions.themeMode !== undefined) {\n updatePayload.themeMode = newOptions.themeMode;\n updatePayload.theme = sdkConfig.theme;\n updatePayload.darkTheme = sdkConfig.darkTheme;\n }\n\n await client.sendRequest('CMD_UPDATE_CONFIG', updatePayload);\n },\n\n focus: () => {\n if (!isMounted || !client) {\n throw ElementError('Element must be mounted before focusing');\n }\n\n client.sendRequest('CMD_FOCUS', {});\n },\n\n blur: () => {\n if (!isMounted || !client) {\n throw ElementError('Element must be mounted before blurring');\n }\n\n client.sendRequest('CMD_BLUR', {});\n },\n\n clear: () => {\n if (!isMounted || !client) {\n throw ElementError('Element must be mounted before clearing');\n }\n\n client.sendRequest('CMD_CLEAR', {});\n },\n\n on: (eventType: EventType, listener: EventListener) => {\n eventTarget.addEventListener(\n eventType,\n listener as EventListenerOrEventListenerObject\n );\n\n // Return unsubscribe function\n return () =>\n eventTarget.removeEventListener(\n eventType,\n listener as EventListenerOrEventListenerObject\n );\n },\n };\n\n return cardElement as CardElement;\n};\n"],"names":[],"mappings":"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"}
|