@amplitude/analytics-browser 1.13.7 → 1.13.9
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 +1 -1
- package/lib/cjs/plugins/form-interaction-tracking.d.ts.map +1 -1
- package/lib/cjs/plugins/form-interaction-tracking.js +23 -9
- package/lib/cjs/plugins/form-interaction-tracking.js.map +1 -1
- package/lib/cjs/version.d.ts +1 -1
- package/lib/cjs/version.js +1 -1
- package/lib/cjs/version.js.map +1 -1
- package/lib/esm/plugins/form-interaction-tracking.d.ts.map +1 -1
- package/lib/esm/plugins/form-interaction-tracking.js +23 -9
- package/lib/esm/plugins/form-interaction-tracking.js.map +1 -1
- package/lib/esm/version.d.ts +1 -1
- package/lib/esm/version.js +1 -1
- package/lib/esm/version.js.map +1 -1
- package/lib/scripts/amplitude-min.js +1 -1
- package/lib/scripts/amplitude-min.js.gz +0 -0
- package/lib/scripts/amplitude-min.umd.js +1 -1
- package/lib/scripts/amplitude-min.umd.js.gz +0 -0
- package/lib/scripts/amplitude-snippet-instructions.html +1 -1
- package/lib/scripts/amplitude-snippet-min.js +1 -1
- package/lib/scripts/plugins/form-interaction-tracking.d.ts.map +1 -1
- package/lib/scripts/version.d.ts +1 -1
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -40,7 +40,7 @@ Alternatively, the package is also distributed through a CDN. Copy and paste the
|
|
|
40
40
|
<!-- README_SNIPPET_BLOCK -->
|
|
41
41
|
```html
|
|
42
42
|
<script type="text/javascript">
|
|
43
|
-
!function(){"use strict";!function(e,t){var r=e.amplitude||{_q:[],_iq:{}};if(r.invoked)e.console&&console.error&&console.error("Amplitude snippet has been loaded.");else{var n=function(e,t){e.prototype[t]=function(){return this._q.push({name:t,args:Array.prototype.slice.call(arguments,0)}),this}},s=function(e,t,r){return function(n){e._q.push({name:t,args:Array.prototype.slice.call(r,0),resolve:n})}},o=function(e,t,r){e._q.push({name:t,args:Array.prototype.slice.call(r,0)})},i=function(e,t,r){e[t]=function(){if(r)return{promise:new Promise(s(e,t,Array.prototype.slice.call(arguments)))};o(e,t,Array.prototype.slice.call(arguments))}},a=function(e){for(var t=0;t<
|
|
43
|
+
!function(){"use strict";!function(e,t){var r=e.amplitude||{_q:[],_iq:{}};if(r.invoked)e.console&&console.error&&console.error("Amplitude snippet has been loaded.");else{var n=function(e,t){e.prototype[t]=function(){return this._q.push({name:t,args:Array.prototype.slice.call(arguments,0)}),this}},s=function(e,t,r){return function(n){e._q.push({name:t,args:Array.prototype.slice.call(r,0),resolve:n})}},o=function(e,t,r){e._q.push({name:t,args:Array.prototype.slice.call(r,0)})},i=function(e,t,r){e[t]=function(){if(r)return{promise:new Promise(s(e,t,Array.prototype.slice.call(arguments)))};o(e,t,Array.prototype.slice.call(arguments))}},a=function(e){for(var t=0;t<g.length;t++)i(e,g[t],!1);for(var r=0;r<m.length;r++)i(e,m[r],!0)};r.invoked=!0;var c=t.createElement("script");c.type="text/javascript",c.integrity="sha384-OvCeI45wmzzc5dSTnNAAV+Vi4on4Fi1dsezItbAEQbJ0eLUyhgO7SkBMIeaTpEW2",c.crossOrigin="anonymous",c.async=!0,c.src="https://cdn.amplitude.com/libs/analytics-browser-1.13.9-min.js.gz",c.onload=function(){e.amplitude.runQueuedFunctions||console.log("[Amplitude] Error: could not load SDK")};var u=t.getElementsByTagName("script")[0];u.parentNode.insertBefore(c,u);for(var l=function(){return this._q=[],this},p=["add","append","clearAll","prepend","set","setOnce","unset","preInsert","postInsert","remove","getUserProperties"],d=0;d<p.length;d++)n(l,p[d]);r.Identify=l;for(var f=function(){return this._q=[],this},v=["getEventProperties","setProductId","setQuantity","setPrice","setRevenue","setRevenueType","setEventProperties"],y=0;y<v.length;y++)n(f,v[y]);r.Revenue=f;var g=["getDeviceId","setDeviceId","getSessionId","setSessionId","getUserId","setUserId","setOptOut","setTransport","reset"],m=["init","add","remove","track","logEvent","identify","groupIdentify","setGroup","revenue","flush"];a(r),r.createInstance=function(e){return r._iq[e]={_q:[]},a(r._iq[e]),r._iq[e]},e.amplitude=r}}(window,document)}();
|
|
44
44
|
|
|
45
45
|
amplitude.init("YOUR_API_KEY_HERE");
|
|
46
46
|
</script>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-interaction-tracking.d.ts","sourceRoot":"","sources":["../../../src/plugins/form-interaction-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAgBhG,eAAO,MAAM,uBAAuB,QAAO,
|
|
1
|
+
{"version":3,"file":"form-interaction-tracking.d.ts","sourceRoot":"","sources":["../../../src/plugins/form-interaction-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAgBhG,eAAO,MAAM,uBAAuB,QAAO,gBAyH1C,CAAC"}
|
|
@@ -23,6 +23,18 @@ var formInteractionTracking = function () {
|
|
|
23
23
|
});
|
|
24
24
|
eventListeners = [];
|
|
25
25
|
};
|
|
26
|
+
// Extracts the form action attribute, and normalizes it to a valid URL to preserve the previous behavior of accessing the action property directly.
|
|
27
|
+
var extractFormAction = function (form) {
|
|
28
|
+
var formDestination = form.getAttribute('action');
|
|
29
|
+
try {
|
|
30
|
+
// eslint-disable-next-line no-restricted-globals
|
|
31
|
+
formDestination = new URL(encodeURI(formDestination !== null && formDestination !== void 0 ? formDestination : ''), window.location.href).href;
|
|
32
|
+
}
|
|
33
|
+
catch (_a) {
|
|
34
|
+
//
|
|
35
|
+
}
|
|
36
|
+
return formDestination;
|
|
37
|
+
};
|
|
26
38
|
var name = '@amplitude/plugin-form-interaction-tracking-browser';
|
|
27
39
|
var type = analytics_types_1.PluginType.ENRICHMENT;
|
|
28
40
|
var setup = function (config, amplitude) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
@@ -43,27 +55,29 @@ var formInteractionTracking = function () {
|
|
|
43
55
|
addEventListener(form, 'change', function () {
|
|
44
56
|
var _a;
|
|
45
57
|
if (!hasFormChanged) {
|
|
58
|
+
var formDestination = extractFormAction(form);
|
|
46
59
|
amplitude.track(constants_1.DEFAULT_FORM_START_EVENT, (_a = {},
|
|
47
|
-
_a[constants_1.FORM_ID] = form.id,
|
|
48
|
-
_a[constants_1.FORM_NAME] = form.name,
|
|
49
|
-
_a[constants_1.FORM_DESTINATION] =
|
|
60
|
+
_a[constants_1.FORM_ID] = form.getAttribute('id'),
|
|
61
|
+
_a[constants_1.FORM_NAME] = form.getAttribute('name'),
|
|
62
|
+
_a[constants_1.FORM_DESTINATION] = formDestination,
|
|
50
63
|
_a));
|
|
51
64
|
}
|
|
52
65
|
hasFormChanged = true;
|
|
53
66
|
});
|
|
54
67
|
addEventListener(form, 'submit', function () {
|
|
55
68
|
var _a, _b;
|
|
69
|
+
var formDestination = extractFormAction(form);
|
|
56
70
|
if (!hasFormChanged) {
|
|
57
71
|
amplitude.track(constants_1.DEFAULT_FORM_START_EVENT, (_a = {},
|
|
58
|
-
_a[constants_1.FORM_ID] = form.id,
|
|
59
|
-
_a[constants_1.FORM_NAME] = form.name,
|
|
60
|
-
_a[constants_1.FORM_DESTINATION] =
|
|
72
|
+
_a[constants_1.FORM_ID] = form.getAttribute('id'),
|
|
73
|
+
_a[constants_1.FORM_NAME] = form.getAttribute('name'),
|
|
74
|
+
_a[constants_1.FORM_DESTINATION] = formDestination,
|
|
61
75
|
_a));
|
|
62
76
|
}
|
|
63
77
|
amplitude.track(constants_1.DEFAULT_FORM_SUBMIT_EVENT, (_b = {},
|
|
64
|
-
_b[constants_1.FORM_ID] = form.id,
|
|
65
|
-
_b[constants_1.FORM_NAME] = form.name,
|
|
66
|
-
_b[constants_1.FORM_DESTINATION] =
|
|
78
|
+
_b[constants_1.FORM_ID] = form.getAttribute('id'),
|
|
79
|
+
_b[constants_1.FORM_NAME] = form.getAttribute('name'),
|
|
80
|
+
_b[constants_1.FORM_DESTINATION] = formDestination,
|
|
67
81
|
_b));
|
|
68
82
|
hasFormChanged = false;
|
|
69
83
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-interaction-tracking.js","sourceRoot":"","sources":["../../../src/plugins/form-interaction-tracking.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"form-interaction-tracking.js","sourceRoot":"","sources":["../../../src/plugins/form-interaction-tracking.ts"],"names":[],"mappings":"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","sourcesContent":["import { BrowserClient, PluginType, Event, EnrichmentPlugin } from '@amplitude/analytics-types';\nimport {\n DEFAULT_FORM_START_EVENT,\n DEFAULT_FORM_SUBMIT_EVENT,\n FORM_ID,\n FORM_NAME,\n FORM_DESTINATION,\n} from '../constants';\nimport { BrowserConfig } from '../config';\n\ninterface EventListener {\n element: Element;\n type: 'change' | 'submit';\n handler: () => void;\n}\n\nexport const formInteractionTracking = (): EnrichmentPlugin => {\n let observer: MutationObserver | undefined;\n let eventListeners: EventListener[] = [];\n const addEventListener = (element: Element, type: 'change' | 'submit', handler: () => void) => {\n element.addEventListener(type, handler);\n eventListeners.push({\n element,\n type,\n handler,\n });\n };\n const removeClickListeners = () => {\n eventListeners.forEach(({ element, type, handler }) => {\n /* istanbul ignore next */\n element?.removeEventListener(type, handler);\n });\n eventListeners = [];\n };\n\n // Extracts the form action attribute, and normalizes it to a valid URL to preserve the previous behavior of accessing the action property directly.\n const extractFormAction = (form: HTMLFormElement): string | null => {\n let formDestination = form.getAttribute('action');\n try {\n // eslint-disable-next-line no-restricted-globals\n formDestination = new URL(encodeURI(formDestination ?? ''), window.location.href).href;\n } catch {\n //\n }\n return formDestination;\n };\n\n const name = '@amplitude/plugin-form-interaction-tracking-browser';\n const type = PluginType.ENRICHMENT;\n const setup = async (config: BrowserConfig, amplitude?: BrowserClient) => {\n /* istanbul ignore if */\n if (!amplitude) {\n // TODO: Add required minimum version of @amplitude/analytics-browser\n config.loggerProvider.warn(\n 'Form interaction tracking requires a later version of @amplitude/analytics-browser. Form interaction events are not tracked.',\n );\n return;\n }\n\n /* istanbul ignore if */\n if (typeof document === 'undefined') {\n return;\n }\n\n const addFormInteractionListener = (form: HTMLFormElement) => {\n let hasFormChanged = false;\n\n addEventListener(form, 'change', () => {\n if (!hasFormChanged) {\n const formDestination = extractFormAction(form);\n amplitude.track(DEFAULT_FORM_START_EVENT, {\n [FORM_ID]: form.getAttribute('id'),\n [FORM_NAME]: form.getAttribute('name'),\n [FORM_DESTINATION]: formDestination,\n });\n }\n hasFormChanged = true;\n });\n\n addEventListener(form, 'submit', () => {\n const formDestination = extractFormAction(form);\n if (!hasFormChanged) {\n amplitude.track(DEFAULT_FORM_START_EVENT, {\n [FORM_ID]: form.getAttribute('id'),\n [FORM_NAME]: form.getAttribute('name'),\n [FORM_DESTINATION]: formDestination,\n });\n }\n\n amplitude.track(DEFAULT_FORM_SUBMIT_EVENT, {\n [FORM_ID]: form.getAttribute('id'),\n [FORM_NAME]: form.getAttribute('name'),\n [FORM_DESTINATION]: formDestination,\n });\n hasFormChanged = false;\n });\n };\n\n // Adds listener to existing anchor tags\n const forms = Array.from(document.getElementsByTagName('form'));\n forms.forEach(addFormInteractionListener);\n\n // Adds listener to anchor tags added after initial load\n /* istanbul ignore else */\n if (typeof MutationObserver !== 'undefined') {\n observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n mutation.addedNodes.forEach((node) => {\n if (node.nodeName === 'FORM') {\n addFormInteractionListener(node as HTMLFormElement);\n }\n if ('querySelectorAll' in node && typeof node.querySelectorAll === 'function') {\n Array.from(node.querySelectorAll('form') as HTMLFormElement[]).map(addFormInteractionListener);\n }\n });\n });\n });\n\n observer.observe(document.body, {\n subtree: true,\n childList: true,\n });\n }\n };\n const execute = async (event: Event) => event;\n const teardown = async () => {\n observer?.disconnect();\n removeClickListeners();\n };\n\n return {\n name,\n type,\n setup,\n execute,\n teardown,\n };\n};\n"]}
|
package/lib/cjs/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "1.13.
|
|
1
|
+
export declare const VERSION = "1.13.9";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/lib/cjs/version.js
CHANGED
package/lib/cjs/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;AAAa,QAAA,OAAO,GAAG,QAAQ,CAAC","sourcesContent":["export const VERSION = '1.13.
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;AAAa,QAAA,OAAO,GAAG,QAAQ,CAAC","sourcesContent":["export const VERSION = '1.13.9';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-interaction-tracking.d.ts","sourceRoot":"","sources":["../../../src/plugins/form-interaction-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAgBhG,eAAO,MAAM,uBAAuB,QAAO,
|
|
1
|
+
{"version":3,"file":"form-interaction-tracking.d.ts","sourceRoot":"","sources":["../../../src/plugins/form-interaction-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAgBhG,eAAO,MAAM,uBAAuB,QAAO,gBAyH1C,CAAC"}
|
|
@@ -20,6 +20,18 @@ export var formInteractionTracking = function () {
|
|
|
20
20
|
});
|
|
21
21
|
eventListeners = [];
|
|
22
22
|
};
|
|
23
|
+
// Extracts the form action attribute, and normalizes it to a valid URL to preserve the previous behavior of accessing the action property directly.
|
|
24
|
+
var extractFormAction = function (form) {
|
|
25
|
+
var formDestination = form.getAttribute('action');
|
|
26
|
+
try {
|
|
27
|
+
// eslint-disable-next-line no-restricted-globals
|
|
28
|
+
formDestination = new URL(encodeURI(formDestination !== null && formDestination !== void 0 ? formDestination : ''), window.location.href).href;
|
|
29
|
+
}
|
|
30
|
+
catch (_a) {
|
|
31
|
+
//
|
|
32
|
+
}
|
|
33
|
+
return formDestination;
|
|
34
|
+
};
|
|
23
35
|
var name = '@amplitude/plugin-form-interaction-tracking-browser';
|
|
24
36
|
var type = PluginType.ENRICHMENT;
|
|
25
37
|
var setup = function (config, amplitude) { return __awaiter(void 0, void 0, void 0, function () {
|
|
@@ -40,27 +52,29 @@ export var formInteractionTracking = function () {
|
|
|
40
52
|
addEventListener(form, 'change', function () {
|
|
41
53
|
var _a;
|
|
42
54
|
if (!hasFormChanged) {
|
|
55
|
+
var formDestination = extractFormAction(form);
|
|
43
56
|
amplitude.track(DEFAULT_FORM_START_EVENT, (_a = {},
|
|
44
|
-
_a[FORM_ID] = form.id,
|
|
45
|
-
_a[FORM_NAME] = form.name,
|
|
46
|
-
_a[FORM_DESTINATION] =
|
|
57
|
+
_a[FORM_ID] = form.getAttribute('id'),
|
|
58
|
+
_a[FORM_NAME] = form.getAttribute('name'),
|
|
59
|
+
_a[FORM_DESTINATION] = formDestination,
|
|
47
60
|
_a));
|
|
48
61
|
}
|
|
49
62
|
hasFormChanged = true;
|
|
50
63
|
});
|
|
51
64
|
addEventListener(form, 'submit', function () {
|
|
52
65
|
var _a, _b;
|
|
66
|
+
var formDestination = extractFormAction(form);
|
|
53
67
|
if (!hasFormChanged) {
|
|
54
68
|
amplitude.track(DEFAULT_FORM_START_EVENT, (_a = {},
|
|
55
|
-
_a[FORM_ID] = form.id,
|
|
56
|
-
_a[FORM_NAME] = form.name,
|
|
57
|
-
_a[FORM_DESTINATION] =
|
|
69
|
+
_a[FORM_ID] = form.getAttribute('id'),
|
|
70
|
+
_a[FORM_NAME] = form.getAttribute('name'),
|
|
71
|
+
_a[FORM_DESTINATION] = formDestination,
|
|
58
72
|
_a));
|
|
59
73
|
}
|
|
60
74
|
amplitude.track(DEFAULT_FORM_SUBMIT_EVENT, (_b = {},
|
|
61
|
-
_b[FORM_ID] = form.id,
|
|
62
|
-
_b[FORM_NAME] = form.name,
|
|
63
|
-
_b[FORM_DESTINATION] =
|
|
75
|
+
_b[FORM_ID] = form.getAttribute('id'),
|
|
76
|
+
_b[FORM_NAME] = form.getAttribute('name'),
|
|
77
|
+
_b[FORM_DESTINATION] = formDestination,
|
|
64
78
|
_b));
|
|
65
79
|
hasFormChanged = false;
|
|
66
80
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-interaction-tracking.js","sourceRoot":"","sources":["../../../src/plugins/form-interaction-tracking.ts"],"names":[],"mappings":";AAAA,OAAO,EAAiB,UAAU,EAA2B,MAAM,4BAA4B,CAAC;AAChG,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,OAAO,EACP,SAAS,EACT,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAStB,MAAM,CAAC,IAAM,uBAAuB,GAAG;IACrC,IAAI,QAAsC,CAAC;IAC3C,IAAI,cAAc,GAAoB,EAAE,CAAC;IACzC,IAAM,gBAAgB,GAAG,UAAC,OAAgB,EAAE,IAAyB,EAAE,OAAmB;QACxF,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxC,cAAc,CAAC,IAAI,CAAC;YAClB,OAAO,SAAA;YACP,IAAI,MAAA;YACJ,OAAO,SAAA;SACR,CAAC,CAAC;IACL,CAAC,CAAC;IACF,IAAM,oBAAoB,GAAG;QAC3B,cAAc,CAAC,OAAO,CAAC,UAAC,EAA0B;gBAAxB,OAAO,aAAA,EAAE,IAAI,UAAA,EAAE,OAAO,aAAA;YAC9C,0BAA0B;YAC1B,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,cAAc,GAAG,EAAE,CAAC;IACtB,CAAC,CAAC;IAEF,IAAM,IAAI,GAAG,qDAAqD,CAAC;IACnE,IAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC;IACnC,IAAM,KAAK,GAAG,UAAO,MAAqB,EAAE,SAAyB;;;YACnE,wBAAwB;YACxB,IAAI,CAAC,SAAS,EAAE;gBACd,qEAAqE;gBACrE,MAAM,CAAC,cAAc,CAAC,IAAI,CACxB,8HAA8H,CAC/H,CAAC;gBACF,sBAAO;aACR;YAED,wBAAwB;YACxB,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;gBACnC,sBAAO;aACR;YAEK,0BAA0B,GAAG,UAAC,IAAqB;gBACvD,IAAI,cAAc,GAAG,KAAK,CAAC;gBAE3B,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE;;oBAC/B,IAAI,CAAC,cAAc,EAAE;wBACnB,SAAS,CAAC,KAAK,CAAC,wBAAwB;4BACtC,GAAC,OAAO,IAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"form-interaction-tracking.js","sourceRoot":"","sources":["../../../src/plugins/form-interaction-tracking.ts"],"names":[],"mappings":"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","sourcesContent":["import { BrowserClient, PluginType, Event, EnrichmentPlugin } from '@amplitude/analytics-types';\nimport {\n DEFAULT_FORM_START_EVENT,\n DEFAULT_FORM_SUBMIT_EVENT,\n FORM_ID,\n FORM_NAME,\n FORM_DESTINATION,\n} from '../constants';\nimport { BrowserConfig } from '../config';\n\ninterface EventListener {\n element: Element;\n type: 'change' | 'submit';\n handler: () => void;\n}\n\nexport const formInteractionTracking = (): EnrichmentPlugin => {\n let observer: MutationObserver | undefined;\n let eventListeners: EventListener[] = [];\n const addEventListener = (element: Element, type: 'change' | 'submit', handler: () => void) => {\n element.addEventListener(type, handler);\n eventListeners.push({\n element,\n type,\n handler,\n });\n };\n const removeClickListeners = () => {\n eventListeners.forEach(({ element, type, handler }) => {\n /* istanbul ignore next */\n element?.removeEventListener(type, handler);\n });\n eventListeners = [];\n };\n\n // Extracts the form action attribute, and normalizes it to a valid URL to preserve the previous behavior of accessing the action property directly.\n const extractFormAction = (form: HTMLFormElement): string | null => {\n let formDestination = form.getAttribute('action');\n try {\n // eslint-disable-next-line no-restricted-globals\n formDestination = new URL(encodeURI(formDestination ?? ''), window.location.href).href;\n } catch {\n //\n }\n return formDestination;\n };\n\n const name = '@amplitude/plugin-form-interaction-tracking-browser';\n const type = PluginType.ENRICHMENT;\n const setup = async (config: BrowserConfig, amplitude?: BrowserClient) => {\n /* istanbul ignore if */\n if (!amplitude) {\n // TODO: Add required minimum version of @amplitude/analytics-browser\n config.loggerProvider.warn(\n 'Form interaction tracking requires a later version of @amplitude/analytics-browser. Form interaction events are not tracked.',\n );\n return;\n }\n\n /* istanbul ignore if */\n if (typeof document === 'undefined') {\n return;\n }\n\n const addFormInteractionListener = (form: HTMLFormElement) => {\n let hasFormChanged = false;\n\n addEventListener(form, 'change', () => {\n if (!hasFormChanged) {\n const formDestination = extractFormAction(form);\n amplitude.track(DEFAULT_FORM_START_EVENT, {\n [FORM_ID]: form.getAttribute('id'),\n [FORM_NAME]: form.getAttribute('name'),\n [FORM_DESTINATION]: formDestination,\n });\n }\n hasFormChanged = true;\n });\n\n addEventListener(form, 'submit', () => {\n const formDestination = extractFormAction(form);\n if (!hasFormChanged) {\n amplitude.track(DEFAULT_FORM_START_EVENT, {\n [FORM_ID]: form.getAttribute('id'),\n [FORM_NAME]: form.getAttribute('name'),\n [FORM_DESTINATION]: formDestination,\n });\n }\n\n amplitude.track(DEFAULT_FORM_SUBMIT_EVENT, {\n [FORM_ID]: form.getAttribute('id'),\n [FORM_NAME]: form.getAttribute('name'),\n [FORM_DESTINATION]: formDestination,\n });\n hasFormChanged = false;\n });\n };\n\n // Adds listener to existing anchor tags\n const forms = Array.from(document.getElementsByTagName('form'));\n forms.forEach(addFormInteractionListener);\n\n // Adds listener to anchor tags added after initial load\n /* istanbul ignore else */\n if (typeof MutationObserver !== 'undefined') {\n observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n mutation.addedNodes.forEach((node) => {\n if (node.nodeName === 'FORM') {\n addFormInteractionListener(node as HTMLFormElement);\n }\n if ('querySelectorAll' in node && typeof node.querySelectorAll === 'function') {\n Array.from(node.querySelectorAll('form') as HTMLFormElement[]).map(addFormInteractionListener);\n }\n });\n });\n });\n\n observer.observe(document.body, {\n subtree: true,\n childList: true,\n });\n }\n };\n const execute = async (event: Event) => event;\n const teardown = async () => {\n observer?.disconnect();\n removeClickListeners();\n };\n\n return {\n name,\n type,\n setup,\n execute,\n teardown,\n };\n};\n"]}
|
package/lib/esm/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "1.13.
|
|
1
|
+
export declare const VERSION = "1.13.9";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/lib/esm/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export var VERSION = '1.13.
|
|
1
|
+
export var VERSION = '1.13.9';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/lib/esm/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,OAAO,GAAG,QAAQ,CAAC","sourcesContent":["export const VERSION = '1.13.
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,OAAO,GAAG,QAAQ,CAAC","sourcesContent":["export const VERSION = '1.13.9';\n"]}
|