{"version":3,"file":"component-base.js","sources":["requirejs/components/component-base.js"],"sourcesContent":["define([\"require\", \"exports\", \"Products/Tracking\", \"UI/Context\", \"UI/Viewport\", \"utility/knockout-utils\"], function (require, exports, Tracking_1, Context_1, Viewport_1, knockout_utils_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n class ComponentBase {\n constructor(props, componentContextData) {\n this.dispose = () => {\n for (let disposable of this._disposables) {\n disposable.dispose();\n }\n };\n this.SetComponentTracking = (tracking) => {\n this._componentContextData.tracking = tracking;\n };\n this.TrackEvent = (tracking) => {\n var trackingStack = [tracking];\n var context = this._componentContextData;\n while (context != null) {\n trackingStack.push(context.tracking);\n context = context.parentContext;\n }\n (0, Tracking_1.TrackEvent)(trackingStack.reverse());\n };\n this.OnToggleClick = (cb) => (model, event) => {\n let checked = event.target.checked;\n if (typeof checked !== 'undefined') {\n let value = (cb && cb(model)) || model;\n let checkedLabel = checked ? 'On' : 'Off';\n if (typeof value === 'string') {\n this.TrackEvent({ Label: value + \"|\" + checkedLabel });\n }\n else if (typeof value === 'object') {\n let useLabel = value.Label || \"\";\n if (useLabel) {\n useLabel += \"|\";\n }\n this.TrackEvent(Object.assign(Object.assign({}, value), { Label: useLabel + checkedLabel }));\n }\n }\n return true;\n };\n this.Viewport = ComponentBase.Viewport;\n this._componentContextData = componentContextData;\n this._disposables = [];\n this._el = componentContextData.componentInfo.koComponentInfo.element;\n this.InstanceId = componentContextData.componentInfo.instanceId;\n this.ParentInstanceId = componentContextData.parentContext && componentContextData.parentContext.componentInfo.instanceId || null;\n this.Props = ko.pureComputed(() => ko.unwrap(props));\n this.Context = Context_1.default;\n }\n AddDisposableListener(el, type, listener, options) {\n el.addEventListener(type, listener, options);\n this._disposables.push({\n dispose: () => {\n el.removeEventListener(type, listener);\n }\n });\n }\n GetTrackEventData(e, key) {\n // Handle user-initiated (DOM) events\n if (e && e.originalEvent) {\n // SELECT \"change\" event\n if (e.type == \"change\" && e.originalEvent.target[\"tagName\"] == \"SELECT\") {\n return { [key]: e.originalEvent.target[\"value\"] };\n }\n // INPUT \"change\" event\n if (e.type == \"change\" && e.originalEvent.target[\"tagName\"] == \"INPUT\") {\n return { [key]: e.originalEvent.target[\"value\"] };\n }\n return {};\n }\n // SELECT \"select2:select\" event\n if (e && e.type == \"select2:select\" && e.target[\"tagName\"] == \"SELECT\") {\n return { Label: e.target[\"value\"] };\n }\n return null;\n }\n TrackDOMEvent(data, e, ...args) {\n return this.WithDOMEventTracking()(data, e, ...args);\n }\n WithTrackingDataTransform(transformer, inContext = this) {\n const handleWithTracking = (data, e, ...args) => {\n const transformedData = transformer(data, e, ...args);\n transformedData && inContext.TrackEvent(transformedData);\n return true;\n };\n return (0, knockout_utils_1.HandleOrProxy)(handleWithTracking);\n }\n WithTracking(eventTrackingData, inContext = this) {\n const handleWithTracking = (data, e, ...args) => {\n eventTrackingData && inContext.TrackEvent(eventTrackingData);\n return true;\n };\n return (0, knockout_utils_1.HandleOrProxy)(handleWithTracking);\n }\n WithDOMEventTracking(key = \"Label\", trackingData, inContext = this) {\n return this.WithTrackingDataTransform((data, e) => {\n const trackingDataFromEvent = this.GetTrackEventData(e, key);\n return trackingDataFromEvent ? Object.assign(Object.assign({}, trackingData), trackingDataFromEvent) : null;\n }, inContext);\n }\n }\n exports.default = ComponentBase;\n ComponentBase.Viewport = new Viewport_1.Viewport();\n});\n//# sourceMappingURL=component-base.js.map"],"names":["define","require","exports","Tracking_1","Context_1","Viewport_1","knockout_utils_1","Object","defineProperty","value","ComponentBase","constructor","props","componentContextData","this","dispose","let","disposable","_disposables","SetComponentTracking","_componentContextData","tracking","TrackEvent","trackingStack","context","push","parentContext","reverse","OnToggleClick","model","event","checked","target","cb","checkedLabel","Label","useLabel","assign","Viewport","_el","componentInfo","koComponentInfo","element","InstanceId","instanceId","ParentInstanceId","Props","ko","pureComputed","unwrap","Context","default","AddDisposableListener","el","type","listener","options","addEventListener","removeEventListener","GetTrackEventData","e","key","originalEvent","TrackDOMEvent","data","args","WithDOMEventTracking","WithTrackingDataTransform","transformer","inContext","HandleOrProxy","transformedData","WithTracking","eventTrackingData","trackingData","trackingDataFromEvent"],"mappings":"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"}