@justifi/webcomponents 0.0.8 → 0.0.10

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.
Files changed (41) hide show
  1. package/dist/cjs/{index-ee888432.js → index-68222998.js} +52 -0
  2. package/dist/cjs/index.cjs.js +10 -0
  3. package/dist/cjs/justifi-bank-account-form_4.cjs.entry.js +80 -0
  4. package/dist/cjs/loader.cjs.js +3 -3
  5. package/dist/cjs/{justifi-card-form_2.cjs.entry.js → payments-list-d2dfcef1.js} +49 -56
  6. package/dist/cjs/webcomponents.cjs.js +3 -3
  7. package/dist/collection/collection-manifest.json +5 -3
  8. package/dist/collection/components/bank-account-form/bank-account-form.js +172 -0
  9. package/dist/collection/components/card-form/card-form.css +1 -7
  10. package/dist/collection/components/card-form/card-form.js +16 -63
  11. package/dist/collection/components/payment-method-form/payment-method-form.css +8 -0
  12. package/dist/collection/components/payment-method-form/payment-method-form.js +190 -0
  13. package/dist/collection/index.js +3 -1
  14. package/dist/components/index.d.ts +2 -0
  15. package/dist/components/index.js +4 -2
  16. package/dist/components/justifi-bank-account-form.d.ts +11 -0
  17. package/dist/components/justifi-bank-account-form.js +65 -0
  18. package/dist/components/justifi-card-form.js +19 -55
  19. package/dist/components/justifi-payment-method-form.d.ts +11 -0
  20. package/dist/components/justifi-payment-method-form.js +6 -0
  21. package/dist/components/justifi-payments-list.js +1 -1
  22. package/dist/components/payment-method-form.js +89 -0
  23. package/dist/esm/{index-2324c14b.js → index-e279d85e.js} +52 -0
  24. package/dist/esm/index.js +2 -1
  25. package/dist/esm/justifi-bank-account-form_4.entry.js +73 -0
  26. package/dist/esm/loader.js +3 -3
  27. package/dist/esm/{justifi-card-form_2.entry.js → payments-list-91eba70b.js} +48 -54
  28. package/dist/esm/webcomponents.js +3 -3
  29. package/dist/types/components/bank-account-form/bank-account-form.d.ts +19 -0
  30. package/dist/types/components/card-form/card-form.d.ts +2 -6
  31. package/dist/types/components/payment-method-form/payment-method-form.d.ts +17 -0
  32. package/dist/types/components.d.ts +49 -1
  33. package/dist/types/index.d.ts +4 -1
  34. package/dist/webcomponents/index.esm.js +1 -0
  35. package/dist/webcomponents/p-146348d6.js +2 -0
  36. package/dist/webcomponents/p-a688f9d3.entry.js +1 -0
  37. package/dist/webcomponents/p-c94a0f7f.js +1 -0
  38. package/dist/webcomponents/webcomponents.esm.js +1 -1
  39. package/package.json +3 -2
  40. package/dist/webcomponents/p-5bf626ec.js +0 -2
  41. package/dist/webcomponents/p-a7effb1e.entry.js +0 -1
@@ -717,6 +717,15 @@ const dispatchHooks = (hostRef, isInitialLoad) => {
717
717
  const endSchedule = createTime('scheduleUpdate', hostRef.$cmpMeta$.$tagName$);
718
718
  const instance = hostRef.$lazyInstance$ ;
719
719
  let promise;
720
+ if (isInitialLoad) {
721
+ {
722
+ hostRef.$flags$ |= 256 /* HOST_FLAGS.isListenReady */;
723
+ if (hostRef.$queuedListeners$) {
724
+ hostRef.$queuedListeners$.map(([methodName, event]) => safeCall(instance, methodName, event));
725
+ hostRef.$queuedListeners$ = null;
726
+ }
727
+ }
728
+ }
720
729
  endSchedule();
721
730
  return then(promise, () => updateComponent(hostRef, instance, isInitialLoad));
722
731
  };
@@ -1123,6 +1132,10 @@ const connectedCallback = (elm) => {
1123
1132
  }
1124
1133
  }
1125
1134
  else {
1135
+ // not the first time this has connected
1136
+ // reattach any event listeners to the host
1137
+ // since they would have been removed when disconnected
1138
+ addHostEventListeners(elm, hostRef, cmpMeta.$listeners$);
1126
1139
  // fire off connectedCallback() on component instance
1127
1140
  fireConnectedCallback(hostRef.$lazyInstance$);
1128
1141
  }
@@ -1133,6 +1146,12 @@ const disconnectedCallback = (elm) => {
1133
1146
  if ((plt.$flags$ & 1 /* PLATFORM_FLAGS.isTmpDisconnected */) === 0) {
1134
1147
  const hostRef = getHostRef(elm);
1135
1148
  const instance = hostRef.$lazyInstance$ ;
1149
+ {
1150
+ if (hostRef.$rmListeners$) {
1151
+ hostRef.$rmListeners$.map((rmListener) => rmListener());
1152
+ hostRef.$rmListeners$ = undefined;
1153
+ }
1154
+ }
1136
1155
  {
1137
1156
  safeCall(instance, 'disconnectedCallback');
1138
1157
  }
@@ -1162,6 +1181,9 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
1162
1181
  {
1163
1182
  cmpMeta.$members$ = compactMeta[2];
1164
1183
  }
1184
+ {
1185
+ cmpMeta.$listeners$ = compactMeta[3];
1186
+ }
1165
1187
  {
1166
1188
  cmpMeta.$watchers$ = {};
1167
1189
  }
@@ -1230,6 +1252,35 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
1230
1252
  // Fallback appLoad event
1231
1253
  endBootstrap();
1232
1254
  };
1255
+ const addHostEventListeners = (elm, hostRef, listeners, attachParentListeners) => {
1256
+ if (listeners) {
1257
+ listeners.map(([flags, name, method]) => {
1258
+ const target = elm;
1259
+ const handler = hostListenerProxy(hostRef, method);
1260
+ const opts = hostListenerOpts(flags);
1261
+ plt.ael(target, name, handler, opts);
1262
+ (hostRef.$rmListeners$ = hostRef.$rmListeners$ || []).push(() => plt.rel(target, name, handler, opts));
1263
+ });
1264
+ }
1265
+ };
1266
+ const hostListenerProxy = (hostRef, methodName) => (ev) => {
1267
+ try {
1268
+ {
1269
+ if (hostRef.$flags$ & 256 /* HOST_FLAGS.isListenReady */) {
1270
+ // instance is ready, let's call it's member method for this event
1271
+ hostRef.$lazyInstance$[methodName](ev);
1272
+ }
1273
+ else {
1274
+ (hostRef.$queuedListeners$ = hostRef.$queuedListeners$ || []).push([methodName, ev]);
1275
+ }
1276
+ }
1277
+ }
1278
+ catch (e) {
1279
+ consoleError(e);
1280
+ }
1281
+ };
1282
+ // prettier-ignore
1283
+ const hostListenerOpts = (flags) => (flags & 2 /* LISTENER_FLAGS.Capture */) !== 0;
1233
1284
  const hostRefs = /*@__PURE__*/ new WeakMap();
1234
1285
  const getHostRef = (ref) => hostRefs.get(ref);
1235
1286
  const registerInstance = (lazyInstance, hostRef) => hostRefs.set((hostRef.$lazyInstance$ = lazyInstance), hostRef);
@@ -1248,6 +1299,7 @@ const registerHost = (elm, cmpMeta) => {
1248
1299
  elm['s-p'] = [];
1249
1300
  elm['s-rc'] = [];
1250
1301
  }
1302
+ addHostEventListeners(elm, hostRef, cmpMeta.$listeners$);
1251
1303
  return hostRefs.set(elm, hostRef);
1252
1304
  };
1253
1305
  const isMemberInElement = (elm, memberName) => memberName in elm;
@@ -1,2 +1,12 @@
1
1
  'use strict';
2
2
 
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const paymentsList = require('./payments-list-d2dfcef1.js');
6
+ require('./index-68222998.js');
7
+
8
+
9
+
10
+ exports.BankAccountForm = paymentsList.BankAccountForm;
11
+ exports.CardForm = paymentsList.CardForm;
12
+ exports.PaymentsList = paymentsList.PaymentsList;
@@ -0,0 +1,80 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const paymentsList = require('./payments-list-d2dfcef1.js');
6
+ const index = require('./index-68222998.js');
7
+
8
+ const paymentMethodFormCss = ":host{display:block}justifi-payment-method-form iframe{border:none;width:100%}";
9
+
10
+ var DispatchedEventTypes;
11
+ (function (DispatchedEventTypes) {
12
+ DispatchedEventTypes["blur"] = "blur";
13
+ DispatchedEventTypes["change"] = "change";
14
+ DispatchedEventTypes["ready"] = "ready";
15
+ DispatchedEventTypes["tokenize"] = "tokenize";
16
+ })(DispatchedEventTypes || (DispatchedEventTypes = {}));
17
+ const PaymentMethodForm = class {
18
+ constructor(hostRef) {
19
+ index.registerInstance(this, hostRef);
20
+ this.paymentMethodFormReady = index.createEvent(this, "paymentMethodFormReady", 7);
21
+ this.paymentMethodFormChange = index.createEvent(this, "paymentMethodFormChange", 7);
22
+ this.paymentMethodFormBlur = index.createEvent(this, "paymentMethodFormBlur", 7);
23
+ this.paymentMethodFormTokenize = index.createEvent(this, "paymentMethodFormTokenize", 7);
24
+ this.iframeOrigin = undefined;
25
+ }
26
+ connectedCallback() {
27
+ window.addEventListener('message', this.dispatchMessageEvent.bind(this));
28
+ }
29
+ disconnectedCallback() {
30
+ window.removeEventListener('message', this.dispatchMessageEvent.bind(this));
31
+ }
32
+ dispatchMessageEvent(messageEvent) {
33
+ const messagePayload = messageEvent.data;
34
+ const messageType = messagePayload.eventType;
35
+ const messageData = messagePayload.data;
36
+ switch (messageType) {
37
+ case DispatchedEventTypes.ready:
38
+ this.paymentMethodFormReady.emit(messageData);
39
+ break;
40
+ case DispatchedEventTypes.change:
41
+ this.paymentMethodFormChange.emit(messageData);
42
+ break;
43
+ case DispatchedEventTypes.blur:
44
+ this.paymentMethodFormBlur.emit(messageData);
45
+ break;
46
+ }
47
+ }
48
+ triggerTokenization(clientKey, paymentMethodMetadata, account) {
49
+ if (this.iframeElement && this.iframeElement.contentWindow) {
50
+ this.iframeElement.contentWindow.postMessage({
51
+ eventType: DispatchedEventTypes.tokenize,
52
+ clientKey: clientKey,
53
+ paymentMethodMetadata: paymentMethodMetadata,
54
+ account: account
55
+ }, '*');
56
+ }
57
+ }
58
+ async tokenize(clientKey, paymentMethodMetadata, account) {
59
+ return new Promise((resolve) => {
60
+ const tokenizeEventListener = (event) => {
61
+ if (event.data.eventType !== DispatchedEventTypes.tokenize)
62
+ return;
63
+ window.removeEventListener('message', tokenizeEventListener);
64
+ resolve(event.data.data);
65
+ };
66
+ window.addEventListener('message', tokenizeEventListener);
67
+ this.triggerTokenization(clientKey, paymentMethodMetadata, account);
68
+ });
69
+ }
70
+ ;
71
+ render() {
72
+ return (index.h(index.Host, null, index.h("iframe", { id: "justifi-payment-method-form", src: this.iframeOrigin, ref: (el) => this.iframeElement = el })));
73
+ }
74
+ };
75
+ PaymentMethodForm.style = paymentMethodFormCss;
76
+
77
+ exports.justifi_bank_account_form = paymentsList.BankAccountForm;
78
+ exports.justifi_card_form = paymentsList.CardForm;
79
+ exports.justifi_payments_list = paymentsList.PaymentsList;
80
+ exports.justifi_payment_method_form = PaymentMethodForm;
@@ -2,10 +2,10 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-ee888432.js');
5
+ const index = require('./index-68222998.js');
6
6
 
7
7
  /*
8
- Stencil Client Patch Esm v2.19.3 | MIT Licensed | https://stenciljs.com
8
+ Stencil Client Patch Esm v2.20.0 | MIT Licensed | https://stenciljs.com
9
9
  */
10
10
  const patchEsm = () => {
11
11
  return index.promiseResolve();
@@ -14,7 +14,7 @@ const patchEsm = () => {
14
14
  const defineCustomElements = (win, options) => {
15
15
  if (typeof window === 'undefined') return Promise.resolve();
16
16
  return patchEsm().then(() => {
17
- return index.bootstrapLazy([["justifi-card-form_2.cjs",[[0,"justifi-card-form",{"iframeOrigin":[1,"iframe-origin"],"tokenize":[64]}],[1,"justifi-payments-list",{"accountId":[1,"account-id"],"auth":[16],"payments":[32]}]]]], options);
17
+ return index.bootstrapLazy([["justifi-bank-account-form_4.cjs",[[0,"justifi-bank-account-form",{"iframeOrigin":[1,"iframe-origin"],"tokenize":[64]},[[0,"paymentMethodFormReady","readyHandler"],[0,"paymentMethodFormChange","changeHandler"],[0,"paymentMethodFormBlur","blurHandler"],[0,"paymentMethodFormTokenize","tokenizeHandler"]]],[0,"justifi-card-form",{"iframeOrigin":[1,"iframe-origin"],"tokenize":[64]}],[1,"justifi-payments-list",{"accountId":[1,"account-id"],"auth":[16],"payments":[32]}],[0,"justifi-payment-method-form",{"iframeOrigin":[1,"iframe-origin"],"tokenize":[64]}]]]], options);
18
18
  });
19
19
  };
20
20
 
@@ -1,18 +1,45 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
3
+ const index = require('./index-68222998.js');
4
4
 
5
- const index = require('./index-ee888432.js');
5
+ const BankAccountForm = class {
6
+ constructor(hostRef) {
7
+ index.registerInstance(this, hostRef);
8
+ this.bankAccountFormReady = index.createEvent(this, "bankAccountFormReady", 7);
9
+ this.bankAccountFormChange = index.createEvent(this, "bankAccountFormChange", 7);
10
+ this.bankAccountFormBlur = index.createEvent(this, "bankAccountFormBlur", 7);
11
+ this.bankAccountFormTokenize = index.createEvent(this, "bankAccountFormTokenize", 7);
12
+ this.iframeOrigin = undefined;
13
+ }
14
+ readyHandler(event) {
15
+ this.bankAccountFormReady.emit(event);
16
+ }
17
+ changeHandler(event) {
18
+ this.bankAccountFormChange.emit(event);
19
+ }
20
+ blurHandler(event) {
21
+ this.bankAccountFormBlur.emit(event);
22
+ }
23
+ tokenizeHandler(event) {
24
+ this.bankAccountFormTokenize.emit(event);
25
+ }
26
+ async tokenize(...args) {
27
+ if (!this.childRef) {
28
+ throw new Error('Cannot call tokenize');
29
+ }
30
+ return this.childRef.tokenize(...args);
31
+ }
32
+ render() {
33
+ return (index.h("justifi-payment-method-form", { ref: el => {
34
+ if (el) {
35
+ this.childRef = el;
36
+ }
37
+ }, "iframe-origin": this.iframeOrigin || 'https://js.justifi.ai/bank-account', "payment-method-form-ready": this.bankAccountFormReady, "payment-method-form-change": this.bankAccountFormChange, "payment-method-form-blur": this.bankAccountFormBlur, "payment-method-form-tokenize": this.bankAccountFormTokenize }));
38
+ }
39
+ };
6
40
 
7
- const cardFormCss = ":host{display:block}iframe{border:none;height:55px;width:100%}";
41
+ const cardFormCss = "justifi-card-form iframe{height:55px}";
8
42
 
9
- var DispatchedEventTypes;
10
- (function (DispatchedEventTypes) {
11
- DispatchedEventTypes["blur"] = "blur";
12
- DispatchedEventTypes["change"] = "change";
13
- DispatchedEventTypes["ready"] = "ready";
14
- DispatchedEventTypes["tokenize"] = "tokenize";
15
- })(DispatchedEventTypes || (DispatchedEventTypes = {}));
16
43
  const CardForm = class {
17
44
  constructor(hostRef) {
18
45
  index.registerInstance(this, hostRef);
@@ -22,53 +49,18 @@ const CardForm = class {
22
49
  this.cardFormTokenize = index.createEvent(this, "cardFormTokenize", 7);
23
50
  this.iframeOrigin = undefined;
24
51
  }
25
- connectedCallback() {
26
- window.addEventListener('message', this.dispatchMessageEvent.bind(this));
27
- }
28
- disconnectedCallback() {
29
- window.removeEventListener('message', this.dispatchMessageEvent.bind(this));
30
- }
31
- dispatchMessageEvent(messageEvent) {
32
- const messagePayload = messageEvent.data;
33
- const messageType = messagePayload.eventType;
34
- const messageData = messagePayload.data;
35
- switch (messageType) {
36
- case DispatchedEventTypes.ready:
37
- this.cardFormReady.emit(messageData);
38
- break;
39
- case DispatchedEventTypes.change:
40
- this.cardFormChange.emit(messageData);
41
- break;
42
- case DispatchedEventTypes.blur:
43
- this.cardFormBlur.emit(messageData);
44
- break;
45
- }
46
- }
47
- triggerTokenization(clientKey, paymentMethodMetadata, account) {
48
- if (this.iframeElement && this.iframeElement.contentWindow) {
49
- this.iframeElement.contentWindow.postMessage({
50
- eventType: DispatchedEventTypes.tokenize,
51
- clientKey: clientKey,
52
- paymentMethodMetadata: paymentMethodMetadata,
53
- account: account
54
- }, '*');
52
+ async tokenize(...args) {
53
+ if (!this.childRef) {
54
+ throw new Error('Cannot call tokenize');
55
55
  }
56
+ return this.childRef.tokenize(...args);
56
57
  }
57
- async tokenize(clientKey, paymentMethodMetadata, account) {
58
- return new Promise((resolve) => {
59
- const tokenizeEventListener = (event) => {
60
- if (event.data.eventType !== DispatchedEventTypes.tokenize)
61
- return;
62
- window.removeEventListener('message', tokenizeEventListener);
63
- resolve(event.data.data);
64
- };
65
- window.addEventListener('message', tokenizeEventListener);
66
- this.triggerTokenization(clientKey, paymentMethodMetadata, account);
67
- });
68
- }
69
- ;
70
58
  render() {
71
- return (index.h(index.Host, null, index.h("iframe", { id: "justifi-card-form", src: this.iframeOrigin || 'https://js.justifi.ai', ref: (el) => this.iframeElement = el })));
59
+ return (index.h("justifi-payment-method-form", { ref: el => {
60
+ if (el) {
61
+ this.childRef = el;
62
+ }
63
+ }, "iframe-origin": this.iframeOrigin || 'https://js.justifi.ai/card', "payment-method-form-ready": this.cardFormReady, "payment-method-form-change": this.cardFormChange, "payment-method-form-blur": this.cardFormBlur, "payment-method-form-tokenize": this.cardFormTokenize }));
72
64
  }
73
65
  };
74
66
  CardForm.style = cardFormCss;
@@ -4301,5 +4293,6 @@ const PaymentsList = class {
4301
4293
  };
4302
4294
  PaymentsList.style = paymentsListCss;
4303
4295
 
4304
- exports.justifi_card_form = CardForm;
4305
- exports.justifi_payments_list = PaymentsList;
4296
+ exports.BankAccountForm = BankAccountForm;
4297
+ exports.CardForm = CardForm;
4298
+ exports.PaymentsList = PaymentsList;
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- const index = require('./index-ee888432.js');
3
+ const index = require('./index-68222998.js');
4
4
 
5
5
  /*
6
- Stencil Client Patch Browser v2.19.3 | MIT Licensed | https://stenciljs.com
6
+ Stencil Client Patch Browser v2.20.0 | MIT Licensed | https://stenciljs.com
7
7
  */
8
8
  const patchBrowser = () => {
9
9
  const importMeta = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('webcomponents.cjs.js', document.baseURI).href));
@@ -15,5 +15,5 @@ const patchBrowser = () => {
15
15
  };
16
16
 
17
17
  patchBrowser().then(options => {
18
- return index.bootstrapLazy([["justifi-card-form_2.cjs",[[0,"justifi-card-form",{"iframeOrigin":[1,"iframe-origin"],"tokenize":[64]}],[1,"justifi-payments-list",{"accountId":[1,"account-id"],"auth":[16],"payments":[32]}]]]], options);
18
+ return index.bootstrapLazy([["justifi-bank-account-form_4.cjs",[[0,"justifi-bank-account-form",{"iframeOrigin":[1,"iframe-origin"],"tokenize":[64]},[[0,"paymentMethodFormReady","readyHandler"],[0,"paymentMethodFormChange","changeHandler"],[0,"paymentMethodFormBlur","blurHandler"],[0,"paymentMethodFormTokenize","tokenizeHandler"]]],[0,"justifi-card-form",{"iframeOrigin":[1,"iframe-origin"],"tokenize":[64]}],[1,"justifi-payments-list",{"accountId":[1,"account-id"],"auth":[16],"payments":[32]}],[0,"justifi-payment-method-form",{"iframeOrigin":[1,"iframe-origin"],"tokenize":[64]}]]]], options);
19
19
  });
@@ -1,12 +1,14 @@
1
1
  {
2
2
  "entries": [
3
+ "./components/bank-account-form/bank-account-form.js",
3
4
  "./components/card-form/card-form.js",
4
- "./components/payments-list/payments-list.js"
5
+ "./components/payments-list/payments-list.js",
6
+ "./components/payment-method-form/payment-method-form.js"
5
7
  ],
6
8
  "compiler": {
7
9
  "name": "@stencil/core",
8
- "version": "2.19.3",
9
- "typescriptVersion": "4.7.4"
10
+ "version": "2.20.0",
11
+ "typescriptVersion": "4.8.4"
10
12
  },
11
13
  "collections": [],
12
14
  "bundles": []
@@ -0,0 +1,172 @@
1
+ import { h } from '@stencil/core';
2
+ export class BankAccountForm {
3
+ constructor() {
4
+ this.iframeOrigin = undefined;
5
+ }
6
+ readyHandler(event) {
7
+ this.bankAccountFormReady.emit(event);
8
+ }
9
+ changeHandler(event) {
10
+ this.bankAccountFormChange.emit(event);
11
+ }
12
+ blurHandler(event) {
13
+ this.bankAccountFormBlur.emit(event);
14
+ }
15
+ tokenizeHandler(event) {
16
+ this.bankAccountFormTokenize.emit(event);
17
+ }
18
+ async tokenize(...args) {
19
+ if (!this.childRef) {
20
+ throw new Error('Cannot call tokenize');
21
+ }
22
+ return this.childRef.tokenize(...args);
23
+ }
24
+ render() {
25
+ return (h("justifi-payment-method-form", { ref: el => {
26
+ if (el) {
27
+ this.childRef = el;
28
+ }
29
+ }, "iframe-origin": this.iframeOrigin || 'https://js.justifi.ai/bank-account', "payment-method-form-ready": this.bankAccountFormReady, "payment-method-form-change": this.bankAccountFormChange, "payment-method-form-blur": this.bankAccountFormBlur, "payment-method-form-tokenize": this.bankAccountFormTokenize }));
30
+ }
31
+ static get is() { return "justifi-bank-account-form"; }
32
+ static get properties() {
33
+ return {
34
+ "iframeOrigin": {
35
+ "type": "string",
36
+ "mutable": false,
37
+ "complexType": {
38
+ "original": "string",
39
+ "resolved": "string",
40
+ "references": {}
41
+ },
42
+ "required": false,
43
+ "optional": false,
44
+ "docs": {
45
+ "tags": [],
46
+ "text": ""
47
+ },
48
+ "attribute": "iframe-origin",
49
+ "reflect": false
50
+ }
51
+ };
52
+ }
53
+ static get events() {
54
+ return [{
55
+ "method": "bankAccountFormReady",
56
+ "name": "bankAccountFormReady",
57
+ "bubbles": true,
58
+ "cancelable": true,
59
+ "composed": true,
60
+ "docs": {
61
+ "tags": [],
62
+ "text": ""
63
+ },
64
+ "complexType": {
65
+ "original": "any",
66
+ "resolved": "any",
67
+ "references": {}
68
+ }
69
+ }, {
70
+ "method": "bankAccountFormChange",
71
+ "name": "bankAccountFormChange",
72
+ "bubbles": true,
73
+ "cancelable": true,
74
+ "composed": true,
75
+ "docs": {
76
+ "tags": [],
77
+ "text": ""
78
+ },
79
+ "complexType": {
80
+ "original": "any",
81
+ "resolved": "any",
82
+ "references": {}
83
+ }
84
+ }, {
85
+ "method": "bankAccountFormBlur",
86
+ "name": "bankAccountFormBlur",
87
+ "bubbles": true,
88
+ "cancelable": true,
89
+ "composed": true,
90
+ "docs": {
91
+ "tags": [],
92
+ "text": ""
93
+ },
94
+ "complexType": {
95
+ "original": "any",
96
+ "resolved": "any",
97
+ "references": {}
98
+ }
99
+ }, {
100
+ "method": "bankAccountFormTokenize",
101
+ "name": "bankAccountFormTokenize",
102
+ "bubbles": true,
103
+ "cancelable": true,
104
+ "composed": true,
105
+ "docs": {
106
+ "tags": [],
107
+ "text": ""
108
+ },
109
+ "complexType": {
110
+ "original": "{ data: any }",
111
+ "resolved": "{ data: any; }",
112
+ "references": {}
113
+ }
114
+ }];
115
+ }
116
+ static get methods() {
117
+ return {
118
+ "tokenize": {
119
+ "complexType": {
120
+ "signature": "(clientKey: string, paymentMethodMetadata: any, account?: string) => Promise<any>",
121
+ "parameters": [{
122
+ "tags": [],
123
+ "text": ""
124
+ }],
125
+ "references": {
126
+ "Promise": {
127
+ "location": "global"
128
+ },
129
+ "Parameters": {
130
+ "location": "global"
131
+ },
132
+ "HTMLJustifiPaymentMethodFormElement": {
133
+ "location": "global"
134
+ }
135
+ },
136
+ "return": "Promise<any>"
137
+ },
138
+ "docs": {
139
+ "text": "",
140
+ "tags": []
141
+ }
142
+ }
143
+ };
144
+ }
145
+ static get listeners() {
146
+ return [{
147
+ "name": "paymentMethodFormReady",
148
+ "method": "readyHandler",
149
+ "target": undefined,
150
+ "capture": false,
151
+ "passive": false
152
+ }, {
153
+ "name": "paymentMethodFormChange",
154
+ "method": "changeHandler",
155
+ "target": undefined,
156
+ "capture": false,
157
+ "passive": false
158
+ }, {
159
+ "name": "paymentMethodFormBlur",
160
+ "method": "blurHandler",
161
+ "target": undefined,
162
+ "capture": false,
163
+ "passive": false
164
+ }, {
165
+ "name": "paymentMethodFormTokenize",
166
+ "method": "tokenizeHandler",
167
+ "target": undefined,
168
+ "capture": false,
169
+ "passive": false
170
+ }];
171
+ }
172
+ }
@@ -1,9 +1,3 @@
1
- :host {
2
- display: block;
3
- }
4
-
5
- iframe {
6
- border: none;
1
+ justifi-card-form iframe {
7
2
  height: 55px;
8
- width: 100%;
9
3
  }
@@ -1,64 +1,20 @@
1
- import { Host, h } from '@stencil/core';
2
- var DispatchedEventTypes;
3
- (function (DispatchedEventTypes) {
4
- DispatchedEventTypes["blur"] = "blur";
5
- DispatchedEventTypes["change"] = "change";
6
- DispatchedEventTypes["ready"] = "ready";
7
- DispatchedEventTypes["tokenize"] = "tokenize";
8
- })(DispatchedEventTypes || (DispatchedEventTypes = {}));
1
+ import { h } from '@stencil/core';
9
2
  export class CardForm {
10
3
  constructor() {
11
4
  this.iframeOrigin = undefined;
12
5
  }
13
- connectedCallback() {
14
- window.addEventListener('message', this.dispatchMessageEvent.bind(this));
15
- }
16
- disconnectedCallback() {
17
- window.removeEventListener('message', this.dispatchMessageEvent.bind(this));
18
- }
19
- dispatchMessageEvent(messageEvent) {
20
- const messagePayload = messageEvent.data;
21
- const messageType = messagePayload.eventType;
22
- const messageData = messagePayload.data;
23
- switch (messageType) {
24
- case DispatchedEventTypes.ready:
25
- this.cardFormReady.emit(messageData);
26
- break;
27
- case DispatchedEventTypes.change:
28
- this.cardFormChange.emit(messageData);
29
- break;
30
- case DispatchedEventTypes.blur:
31
- this.cardFormBlur.emit(messageData);
32
- break;
33
- default:
34
- break;
35
- }
36
- }
37
- triggerTokenization(clientKey, paymentMethodMetadata, account) {
38
- if (this.iframeElement && this.iframeElement.contentWindow) {
39
- this.iframeElement.contentWindow.postMessage({
40
- eventType: DispatchedEventTypes.tokenize,
41
- clientKey: clientKey,
42
- paymentMethodMetadata: paymentMethodMetadata,
43
- account: account
44
- }, '*');
6
+ async tokenize(...args) {
7
+ if (!this.childRef) {
8
+ throw new Error('Cannot call tokenize');
45
9
  }
10
+ return this.childRef.tokenize(...args);
46
11
  }
47
- async tokenize(clientKey, paymentMethodMetadata, account) {
48
- return new Promise((resolve) => {
49
- const tokenizeEventListener = (event) => {
50
- if (event.data.eventType !== DispatchedEventTypes.tokenize)
51
- return;
52
- window.removeEventListener('message', tokenizeEventListener);
53
- resolve(event.data.data);
54
- };
55
- window.addEventListener('message', tokenizeEventListener);
56
- this.triggerTokenization(clientKey, paymentMethodMetadata, account);
57
- });
58
- }
59
- ;
60
12
  render() {
61
- return (h(Host, null, h("iframe", { id: "justifi-card-form", src: this.iframeOrigin || 'https://js.justifi.ai', ref: (el) => this.iframeElement = el })));
13
+ return (h("justifi-payment-method-form", { ref: el => {
14
+ if (el) {
15
+ this.childRef = el;
16
+ }
17
+ }, "iframe-origin": this.iframeOrigin || 'https://js.justifi.ai/card', "payment-method-form-ready": this.cardFormReady, "payment-method-form-change": this.cardFormChange, "payment-method-form-blur": this.cardFormBlur, "payment-method-form-tokenize": this.cardFormTokenize }));
62
18
  }
63
19
  static get is() { return "justifi-card-form"; }
64
20
  static get originalStyleUrls() {
@@ -159,26 +115,23 @@ export class CardForm {
159
115
  return {
160
116
  "tokenize": {
161
117
  "complexType": {
162
- "signature": "(clientKey: string, paymentMethodMetadata: any, account?: string) => Promise<unknown>",
118
+ "signature": "(clientKey: string, paymentMethodMetadata: any, account?: string) => Promise<any>",
163
119
  "parameters": [{
164
120
  "tags": [],
165
121
  "text": ""
166
- }, {
167
- "tags": [],
168
- "text": ""
169
- }, {
170
- "tags": [],
171
- "text": ""
172
122
  }],
173
123
  "references": {
174
124
  "Promise": {
175
125
  "location": "global"
176
126
  },
177
- "MessageEvent": {
127
+ "Parameters": {
128
+ "location": "global"
129
+ },
130
+ "HTMLJustifiPaymentMethodFormElement": {
178
131
  "location": "global"
179
132
  }
180
133
  },
181
- "return": "Promise<unknown>"
134
+ "return": "Promise<any>"
182
135
  },
183
136
  "docs": {
184
137
  "text": "",
@@ -0,0 +1,8 @@
1
+ :host {
2
+ display: block;
3
+ }
4
+
5
+ justifi-payment-method-form iframe {
6
+ border: none;
7
+ width: 100%;
8
+ }