@edx/frontend-plugin-advertisements 1.20.0 → 1.22.0
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/dist/data/__factories__/defaultUpgradeNotificationData.factory.js +18 -0
- package/dist/data/__factories__/defaultUpgradeNotificationData.factory.js.map +1 -0
- package/dist/data/__factories__/index.js +1 -0
- package/dist/data/__factories__/index.js.map +1 -1
- package/dist/data/index.js +6 -0
- package/dist/data/index.js.map +1 -1
- package/dist/data/optimizely.js +9 -1
- package/dist/data/optimizely.js.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/index.scss +4 -0
- package/dist/paywall/ExperimentalLockPaywall.js +2 -2
- package/dist/paywall/ExperimentalLockPaywall.js.map +1 -1
- package/dist/upgrade-modal/DefaultUpgradeModal.js +51 -0
- package/dist/upgrade-modal/DefaultUpgradeModal.js.map +1 -0
- package/dist/upgrade-modal/ExperimentalUpgradeModal.js +105 -0
- package/dist/upgrade-modal/ExperimentalUpgradeModal.js.map +1 -0
- package/dist/upgrade-modal/NextButton.js +68 -0
- package/dist/upgrade-modal/NextButton.js.map +1 -0
- package/dist/upgrade-modal/UpgradeModal.js +234 -0
- package/dist/upgrade-modal/UpgradeModal.js.map +1 -0
- package/dist/upgrade-modal/UpgradeModalWrapper.js +26 -0
- package/dist/upgrade-modal/UpgradeModalWrapper.js.map +1 -0
- package/dist/upgrade-modal/hooks.js +70 -0
- package/dist/upgrade-modal/hooks.js.map +1 -0
- package/dist/upgrade-modal/index.js +17 -0
- package/dist/upgrade-modal/index.js.map +1 -0
- package/dist/upgrade-notification/DefaultUpgradeNotification.js +463 -37
- package/dist/upgrade-notification/DefaultUpgradeNotification.js.map +1 -1
- package/dist/upgrade-notification/ExperimentalUpgradeNotification.js +7 -9
- package/dist/upgrade-notification/ExperimentalUpgradeNotification.js.map +1 -1
- package/dist/upgrade-notification/certificate-preview/CertificatePreview.js +3 -2
- package/dist/upgrade-notification/certificate-preview/CertificatePreview.js.map +1 -1
- package/dist/upsell-bullets/ExperimentalUpsellBullets.js +39 -0
- package/dist/upsell-bullets/ExperimentalUpsellBullets.js.map +1 -0
- package/dist/upsell-bullets/UpsellBullets.js +101 -16
- package/dist/upsell-bullets/UpsellBullets.js.map +1 -1
- package/dist/upsell-bullets/UpsellBullets.scss +11 -0
- package/dist/upsell-bullets/index.js +50 -0
- package/dist/upsell-bullets/index.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
var _reactSdk = require("@optimizely/react-sdk");
|
|
10
|
+
var _frontendPlatform = require("@edx/frontend-platform");
|
|
11
|
+
var _analytics = require("@edx/frontend-platform/analytics");
|
|
12
|
+
var _i18n = require("@edx/frontend-platform/i18n");
|
|
13
|
+
var _paragon = require("@openedx/paragon");
|
|
14
|
+
var _icons = require("@openedx/paragon/icons");
|
|
15
|
+
var _data = require("../data");
|
|
16
|
+
var _certificatePreview = _interopRequireDefault(require("../upgrade-notification/certificate-preview"));
|
|
17
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
20
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
21
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
22
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
23
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
24
|
+
const UpgradeModal = _ref => {
|
|
25
|
+
let {
|
|
26
|
+
isOpen,
|
|
27
|
+
close,
|
|
28
|
+
verifiedMode,
|
|
29
|
+
org,
|
|
30
|
+
courseId,
|
|
31
|
+
offer,
|
|
32
|
+
marketingUrl,
|
|
33
|
+
accessExpiration,
|
|
34
|
+
optimizely
|
|
35
|
+
} = _ref;
|
|
36
|
+
const [decision] = (0, _reactSdk.useDecision)(_data.OPTIMIZELY_VTR_MODAL_EXPERIMENT.KEY);
|
|
37
|
+
const {
|
|
38
|
+
variationKey
|
|
39
|
+
} = decision;
|
|
40
|
+
|
|
41
|
+
// Experiment specific properties or data should not be sent to the tracking logs, so break this
|
|
42
|
+
// object out to ensure it is only sent to Segment and not the tracking logs.
|
|
43
|
+
const experimentProperties = {
|
|
44
|
+
experiment_key: _data.OPTIMIZELY_VTR_MODAL_EXPERIMENT.KEY,
|
|
45
|
+
variation_key: variationKey
|
|
46
|
+
};
|
|
47
|
+
const upsellPageName = 'course_sequence_modal';
|
|
48
|
+
const eventProperties = {
|
|
49
|
+
org_key: org,
|
|
50
|
+
courserun_key: courseId
|
|
51
|
+
};
|
|
52
|
+
const promotionEventProperties = _objectSpread(_objectSpread({
|
|
53
|
+
creative: 'marketmodalupsell',
|
|
54
|
+
name: 'In-Course Verification Prompt',
|
|
55
|
+
position: 'marketing-modal-message',
|
|
56
|
+
promotion_id: 'courseware_verified_certificate_upsell'
|
|
57
|
+
}, eventProperties), experimentProperties);
|
|
58
|
+
(0, _react.useEffect)(() => {
|
|
59
|
+
(0, _analytics.sendTrackingLogEvent)('edx.bi.course.upgrade.marketmodalupsell.displayed', eventProperties);
|
|
60
|
+
(0, _analytics.sendTrackEvent)('Promotion Viewed', promotionEventProperties);
|
|
61
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
62
|
+
}, []);
|
|
63
|
+
const logClick = () => {
|
|
64
|
+
(0, _analytics.sendTrackingLogEvent)('edx.bi.course.upgrade.marketingmodal.clicked', eventProperties);
|
|
65
|
+
(0, _analytics.sendTrackingLogEvent)('edx.course.enrollment.upgrade.clicked', _objectSpread(_objectSpread({}, eventProperties), {}, {
|
|
66
|
+
location: 'marketing-modal-message'
|
|
67
|
+
}));
|
|
68
|
+
(0, _analytics.sendTrackEvent)('Promotion Clicked', promotionEventProperties);
|
|
69
|
+
(0, _analytics.sendTrackEvent)('edx.bi.ecommerce.upsell_links_clicked', _objectSpread(_objectSpread(_objectSpread({}, eventProperties), experimentProperties), {}, {
|
|
70
|
+
linkCategory: 'green_upgrade',
|
|
71
|
+
linkName: `${upsellPageName}_green`,
|
|
72
|
+
linkType: 'button',
|
|
73
|
+
pageName: upsellPageName
|
|
74
|
+
}));
|
|
75
|
+
optimizely.track(_data.OPTIMIZELY_VTR_MODAL_EXPERIMENT.ACTION);
|
|
76
|
+
};
|
|
77
|
+
const logClickPastExpiration = () => {
|
|
78
|
+
(0, _analytics.sendTrackEvent)('edx.bi.ecommerce.upgrade_modal.past_expiration.button_clicked', _objectSpread(_objectSpread(_objectSpread({}, eventProperties), experimentProperties), {}, {
|
|
79
|
+
linkCategory: 'upgrade_modal',
|
|
80
|
+
linkName: `${upsellPageName}_course_details`,
|
|
81
|
+
linkType: 'button',
|
|
82
|
+
pageName: upsellPageName
|
|
83
|
+
}));
|
|
84
|
+
};
|
|
85
|
+
const intl = (0, _i18n.useIntl)();
|
|
86
|
+
const dateNow = Date.now();
|
|
87
|
+
const {
|
|
88
|
+
currency,
|
|
89
|
+
currencySymbol,
|
|
90
|
+
price,
|
|
91
|
+
upgradeUrl
|
|
92
|
+
} = verifiedMode;
|
|
93
|
+
const upgradeDeadlineDate = accessExpiration ? new Date(accessExpiration.upgradeDeadline) : null;
|
|
94
|
+
const pastDeadline = accessExpiration ? new Date(dateNow) > upgradeDeadlineDate : false;
|
|
95
|
+
const modalTitle = intl.formatMessage({
|
|
96
|
+
id: 'learning.upgrade-modal.title',
|
|
97
|
+
defaultMessage: 'Pursue a verified certificate',
|
|
98
|
+
description: 'Upgrade modal title'
|
|
99
|
+
});
|
|
100
|
+
let callToActionButton = /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Button, {
|
|
101
|
+
className: "w-100",
|
|
102
|
+
onClick: logClick,
|
|
103
|
+
href: upgradeUrl,
|
|
104
|
+
children: intl.formatMessage({
|
|
105
|
+
id: 'learning.upgrade-modal.upgrade-button.label',
|
|
106
|
+
defaultMessage: 'Upgrade for {currencySymbol}{price} {currency}',
|
|
107
|
+
description: 'Label for upgrade button'
|
|
108
|
+
}, {
|
|
109
|
+
currency,
|
|
110
|
+
currencySymbol,
|
|
111
|
+
price
|
|
112
|
+
})
|
|
113
|
+
});
|
|
114
|
+
if (pastDeadline) {
|
|
115
|
+
callToActionButton = /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Button, {
|
|
116
|
+
className: "w-100",
|
|
117
|
+
onClick: logClickPastExpiration,
|
|
118
|
+
href: marketingUrl,
|
|
119
|
+
children: intl.formatMessage({
|
|
120
|
+
id: 'learning.upgrade-modal.upgrade-button.label',
|
|
121
|
+
defaultMessage: 'View course details',
|
|
122
|
+
description: 'Label for upgrade button'
|
|
123
|
+
})
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.MarketingModal, {
|
|
127
|
+
title: modalTitle,
|
|
128
|
+
isOpen: isOpen,
|
|
129
|
+
onClose: close,
|
|
130
|
+
isBlocking: true,
|
|
131
|
+
size: "md",
|
|
132
|
+
heroIsDark: true,
|
|
133
|
+
heroNode: /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.ModalDialog.Hero, {
|
|
134
|
+
style: {
|
|
135
|
+
background: 'linear-gradient(#001B1E, #0E3639)'
|
|
136
|
+
},
|
|
137
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.ModalDialog.Hero.Content, {
|
|
138
|
+
className: "m-0 text-primary-500",
|
|
139
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_certificatePreview.default, {
|
|
140
|
+
courseId,
|
|
141
|
+
bgColor: 'bg-light-100'
|
|
142
|
+
})
|
|
143
|
+
})
|
|
144
|
+
}),
|
|
145
|
+
footerNode: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.ActionRow, {
|
|
146
|
+
isStacked: true,
|
|
147
|
+
children: [callToActionButton, offer && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
148
|
+
className: "text-center discount-info",
|
|
149
|
+
children: intl.formatMessage({
|
|
150
|
+
id: 'learning.generic.upgradeNotification.code',
|
|
151
|
+
defaultMessage: 'Use code {code} at checkout',
|
|
152
|
+
values: {
|
|
153
|
+
code: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
154
|
+
className: "font-weight-bold",
|
|
155
|
+
children: offer.code
|
|
156
|
+
})
|
|
157
|
+
}
|
|
158
|
+
})
|
|
159
|
+
})]
|
|
160
|
+
}),
|
|
161
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("h2", {
|
|
162
|
+
className: "h3 mb-3",
|
|
163
|
+
children: modalTitle
|
|
164
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
165
|
+
role: "list",
|
|
166
|
+
className: "pl-2 text-primary-500",
|
|
167
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.Stack, {
|
|
168
|
+
gap: 3,
|
|
169
|
+
role: "listitem",
|
|
170
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.Stack, {
|
|
171
|
+
direction: "horizontal",
|
|
172
|
+
gap: 3,
|
|
173
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Icon, {
|
|
174
|
+
size: "md",
|
|
175
|
+
src: _icons.Check
|
|
176
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
177
|
+
children: intl.formatMessage({
|
|
178
|
+
id: 'learning.upgrade-modal.body-list.first-item',
|
|
179
|
+
defaultMessage: 'Earn a {linkedContent} of completion to show case your résumé',
|
|
180
|
+
description: 'Message for first list item'
|
|
181
|
+
}, {
|
|
182
|
+
linkedContent: /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Hyperlink, {
|
|
183
|
+
className: "font-weight-bold text-primary-500 inline-link-underline",
|
|
184
|
+
destination: `${(0, _frontendPlatform.getConfig)().MARKETING_SITE_BASE_URL}/verified-certificate`,
|
|
185
|
+
children: "verified certificate"
|
|
186
|
+
})
|
|
187
|
+
})
|
|
188
|
+
})]
|
|
189
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.Stack, {
|
|
190
|
+
direction: "horizontal",
|
|
191
|
+
gap: 3,
|
|
192
|
+
role: "listitem",
|
|
193
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Icon, {
|
|
194
|
+
size: "md",
|
|
195
|
+
src: _icons.Check
|
|
196
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
197
|
+
children: intl.formatMessage({
|
|
198
|
+
id: 'learning.upgrade-modal.body-list.second-item',
|
|
199
|
+
defaultMessage: 'Support our mission at edX.',
|
|
200
|
+
description: 'Message for second list item'
|
|
201
|
+
})
|
|
202
|
+
})]
|
|
203
|
+
})]
|
|
204
|
+
})
|
|
205
|
+
})]
|
|
206
|
+
});
|
|
207
|
+
};
|
|
208
|
+
UpgradeModal.defaultProps = {
|
|
209
|
+
verifiedMode: {},
|
|
210
|
+
offer: null,
|
|
211
|
+
accessExpiration: null
|
|
212
|
+
};
|
|
213
|
+
UpgradeModal.propTypes = {
|
|
214
|
+
verifiedMode: _propTypes.default.shape({
|
|
215
|
+
currency: _propTypes.default.string.isRequired,
|
|
216
|
+
price: _propTypes.default.number.isRequired,
|
|
217
|
+
currencySymbol: _propTypes.default.string.isRequired,
|
|
218
|
+
upgradeUrl: _propTypes.default.string.isRequired
|
|
219
|
+
}),
|
|
220
|
+
offer: _propTypes.default.shape({
|
|
221
|
+
code: _propTypes.default.string
|
|
222
|
+
}),
|
|
223
|
+
accessExpiration: _propTypes.default.shape({
|
|
224
|
+
upgradeDeadline: _propTypes.default.string
|
|
225
|
+
}),
|
|
226
|
+
marketingUrl: _propTypes.default.string.isRequired,
|
|
227
|
+
org: _propTypes.default.string.isRequired,
|
|
228
|
+
courseId: _propTypes.default.string.isRequired,
|
|
229
|
+
close: _propTypes.default.func.isRequired,
|
|
230
|
+
isOpen: _propTypes.default.bool.isRequired,
|
|
231
|
+
optimizely: _propTypes.default.node.isRequired
|
|
232
|
+
};
|
|
233
|
+
var _default = exports.default = (0, _reactSdk.withOptimizely)(UpgradeModal);
|
|
234
|
+
//# sourceMappingURL=UpgradeModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UpgradeModal.js","names":["_react","require","_propTypes","_interopRequireDefault","_reactSdk","_frontendPlatform","_analytics","_i18n","_paragon","_icons","_data","_certificatePreview","_jsxRuntime","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","UpgradeModal","_ref","isOpen","close","verifiedMode","org","courseId","offer","marketingUrl","accessExpiration","optimizely","decision","useDecision","OPTIMIZELY_VTR_MODAL_EXPERIMENT","KEY","variationKey","experimentProperties","experiment_key","variation_key","upsellPageName","eventProperties","org_key","courserun_key","promotionEventProperties","creative","name","position","promotion_id","useEffect","sendTrackingLogEvent","sendTrackEvent","logClick","location","linkCategory","linkName","linkType","pageName","track","ACTION","logClickPastExpiration","intl","useIntl","dateNow","Date","now","currency","currencySymbol","price","upgradeUrl","upgradeDeadlineDate","upgradeDeadline","pastDeadline","modalTitle","formatMessage","id","defaultMessage","description","callToActionButton","jsx","Button","className","onClick","href","children","jsxs","MarketingModal","title","onClose","isBlocking","size","heroIsDark","heroNode","ModalDialog","Hero","style","background","Content","bgColor","footerNode","ActionRow","isStacked","values","code","role","Stack","gap","direction","Icon","src","Check","linkedContent","Hyperlink","destination","getConfig","MARKETING_SITE_BASE_URL","defaultProps","propTypes","PropTypes","shape","string","isRequired","number","func","bool","node","_default","exports","withOptimizely"],"sources":["../../src/upgrade-modal/UpgradeModal.jsx"],"sourcesContent":["import { useEffect, React } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDecision, withOptimizely } from '@optimizely/react-sdk';\nimport { getConfig } from '@edx/frontend-platform';\nimport { sendTrackEvent, sendTrackingLogEvent } from '@edx/frontend-platform/analytics';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n ActionRow, Button, Hyperlink, Icon, MarketingModal, ModalDialog, Stack,\n} from '@openedx/paragon';\nimport { Check } from '@openedx/paragon/icons';\nimport { OPTIMIZELY_VTR_MODAL_EXPERIMENT } from '../data';\nimport CertificatePreview from '../upgrade-notification/certificate-preview';\n\nconst UpgradeModal = ({\n isOpen,\n close,\n verifiedMode,\n org,\n courseId,\n offer,\n marketingUrl,\n accessExpiration,\n optimizely,\n}) => {\n const [decision] = useDecision(OPTIMIZELY_VTR_MODAL_EXPERIMENT.KEY);\n const { variationKey } = decision;\n\n // Experiment specific properties or data should not be sent to the tracking logs, so break this\n // object out to ensure it is only sent to Segment and not the tracking logs.\n const experimentProperties = {\n experiment_key: OPTIMIZELY_VTR_MODAL_EXPERIMENT.KEY,\n variation_key: variationKey,\n };\n\n const upsellPageName = 'course_sequence_modal';\n const eventProperties = {\n org_key: org,\n courserun_key: courseId,\n };\n const promotionEventProperties = {\n creative: 'marketmodalupsell',\n name: 'In-Course Verification Prompt',\n position: 'marketing-modal-message',\n promotion_id: 'courseware_verified_certificate_upsell',\n ...eventProperties,\n ...experimentProperties,\n };\n\n useEffect(() => {\n sendTrackingLogEvent('edx.bi.course.upgrade.marketmodalupsell.displayed', eventProperties);\n sendTrackEvent('Promotion Viewed', promotionEventProperties);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const logClick = () => {\n sendTrackingLogEvent('edx.bi.course.upgrade.marketingmodal.clicked', eventProperties);\n sendTrackingLogEvent('edx.course.enrollment.upgrade.clicked', {\n ...eventProperties,\n location: 'marketing-modal-message',\n });\n sendTrackEvent('Promotion Clicked', promotionEventProperties);\n sendTrackEvent('edx.bi.ecommerce.upsell_links_clicked', {\n ...eventProperties,\n ...experimentProperties,\n linkCategory: 'green_upgrade',\n linkName: `${upsellPageName}_green`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n optimizely.track(OPTIMIZELY_VTR_MODAL_EXPERIMENT.ACTION);\n };\n const logClickPastExpiration = () => {\n sendTrackEvent('edx.bi.ecommerce.upgrade_modal.past_expiration.button_clicked', {\n ...eventProperties,\n ...experimentProperties,\n linkCategory: 'upgrade_modal',\n linkName: `${upsellPageName}_course_details`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n };\n\n const intl = useIntl();\n const dateNow = Date.now();\n const {\n currency, currencySymbol, price, upgradeUrl,\n } = verifiedMode;\n const upgradeDeadlineDate = accessExpiration ? new Date(accessExpiration.upgradeDeadline) : null;\n const pastDeadline = accessExpiration ? new Date(dateNow) > upgradeDeadlineDate : false;\n const modalTitle = intl.formatMessage({\n id: 'learning.upgrade-modal.title',\n defaultMessage: 'Pursue a verified certificate',\n description: 'Upgrade modal title',\n });\n let callToActionButton = (\n <Button\n className=\"w-100\"\n onClick={logClick}\n href={upgradeUrl}\n >\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.upgrade-button.label',\n defaultMessage: 'Upgrade for {currencySymbol}{price} {currency}',\n description: 'Label for upgrade button',\n },\n { currency, currencySymbol, price },\n )}\n </Button>\n );\n\n if (pastDeadline) {\n callToActionButton = (\n <Button\n className=\"w-100\"\n onClick={logClickPastExpiration}\n href={marketingUrl}\n >\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.upgrade-button.label',\n defaultMessage: 'View course details',\n description: 'Label for upgrade button',\n },\n )}\n </Button>\n );\n }\n\n return (\n <MarketingModal\n title={modalTitle}\n isOpen={isOpen}\n onClose={close}\n isBlocking\n size=\"md\"\n heroIsDark\n heroNode={(\n <ModalDialog.Hero style={{ background: 'linear-gradient(#001B1E, #0E3639)' }}>\n <ModalDialog.Hero.Content className=\"m-0 text-primary-500\">\n {/* TODO: replace with simplified */}\n <CertificatePreview {...{ courseId, bgColor: 'bg-light-100' }} />\n </ModalDialog.Hero.Content>\n </ModalDialog.Hero>\n )}\n footerNode={(\n <ActionRow isStacked>\n {callToActionButton}\n {offer && (\n <div className=\"text-center discount-info\">\n {intl.formatMessage({\n id: 'learning.generic.upgradeNotification.code',\n defaultMessage: 'Use code {code} at checkout',\n values: {\n code: (<span className=\"font-weight-bold\">{offer.code}</span>),\n },\n })}\n </div>\n )}\n </ActionRow>\n )}\n >\n <h2 className=\"h3 mb-3\">\n {modalTitle}\n </h2>\n <div role=\"list\" className=\"pl-2 text-primary-500\">\n <Stack gap={3} role=\"listitem\">\n <Stack direction=\"horizontal\" gap={3}>\n <Icon size=\"md\" src={Check} />\n <span>\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.body-list.first-item',\n defaultMessage: 'Earn a {linkedContent} of completion to show case your résumé',\n description: 'Message for first list item',\n },\n {\n linkedContent: (\n <Hyperlink\n className=\"font-weight-bold text-primary-500 inline-link-underline\"\n destination={`${getConfig().MARKETING_SITE_BASE_URL}/verified-certificate`}\n >\n verified certificate\n </Hyperlink>\n ),\n },\n )}\n </span>\n </Stack>\n <Stack direction=\"horizontal\" gap={3} role=\"listitem\">\n <Icon size=\"md\" src={Check} />\n <span>\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.body-list.second-item',\n defaultMessage: 'Support our mission at edX.',\n description: 'Message for second list item',\n },\n )}\n </span>\n </Stack>\n </Stack>\n </div>\n </MarketingModal>\n );\n};\n\nUpgradeModal.defaultProps = {\n verifiedMode: {},\n offer: null,\n accessExpiration: null,\n};\nUpgradeModal.propTypes = {\n verifiedMode: PropTypes.shape({\n currency: PropTypes.string.isRequired,\n price: PropTypes.number.isRequired,\n currencySymbol: PropTypes.string.isRequired,\n upgradeUrl: PropTypes.string.isRequired,\n }),\n offer: PropTypes.shape({\n code: PropTypes.string,\n }),\n accessExpiration: PropTypes.shape({\n upgradeDeadline: PropTypes.string,\n }),\n marketingUrl: PropTypes.string.isRequired,\n org: PropTypes.string.isRequired,\n courseId: PropTypes.string.isRequired,\n close: PropTypes.func.isRequired,\n isOpen: PropTypes.bool.isRequired,\n optimizely: PropTypes.node.isRequired,\n};\n\nexport default withOptimizely(UpgradeModal);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _DefaultUpgradeModal = _interopRequireDefault(require("./DefaultUpgradeModal"));
|
|
8
|
+
var _ExperimentalUpgradeModal = _interopRequireDefault(require("./ExperimentalUpgradeModal"));
|
|
9
|
+
var _optimizely = _interopRequireDefault(require("../optimizely"));
|
|
10
|
+
var _optimizely2 = require("../data/optimizely");
|
|
11
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
14
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
15
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
16
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
17
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } // This is not fully functional and is currently just a copy of the UpgradeNotification
|
|
18
|
+
// experiment with the imports updated
|
|
19
|
+
const UpgradeModalWrapper = props => /*#__PURE__*/(0, _jsxRuntime.jsx)(_optimizely.default, _objectSpread({
|
|
20
|
+
defaultComponent: _DefaultUpgradeModal.default,
|
|
21
|
+
experimentalComponent: _ExperimentalUpgradeModal.default,
|
|
22
|
+
defaultVariationKey: "off",
|
|
23
|
+
experimentKey: _optimizely2.OPTIMIZELY_VTR_MODAL_EXPERIMENT.KEY
|
|
24
|
+
}, props));
|
|
25
|
+
var _default = exports.default = UpgradeModalWrapper;
|
|
26
|
+
//# sourceMappingURL=UpgradeModalWrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UpgradeModalWrapper.js","names":["_DefaultUpgradeModal","_interopRequireDefault","require","_ExperimentalUpgradeModal","_optimizely","_optimizely2","_jsxRuntime","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","UpgradeModalWrapper","props","jsx","defaultComponent","DefaultUpgradeModal","experimentalComponent","ExperimentalUpgradeModal","defaultVariationKey","experimentKey","OPTIMIZELY_VTR_MODAL_EXPERIMENT","KEY","_default","exports"],"sources":["../../src/upgrade-modal/UpgradeModalWrapper.jsx"],"sourcesContent":["import DefaultUpgradeModal from './DefaultUpgradeModal';\nimport ExperimentalUpgradeModal from './ExperimentalUpgradeModal';\n\nimport OptimizelyExperiment from '../optimizely';\nimport { OPTIMIZELY_VTR_MODAL_EXPERIMENT } from '../data/optimizely';\n\n// This is not fully functional and is currently just a copy of the UpgradeNotification\n// experiment with the imports updated\nconst UpgradeModalWrapper = (props) => (\n <OptimizelyExperiment\n defaultComponent={DefaultUpgradeModal}\n experimentalComponent={ExperimentalUpgradeModal}\n defaultVariationKey=\"off\"\n experimentKey={OPTIMIZELY_VTR_MODAL_EXPERIMENT.KEY}\n {...props}\n />\n);\n\nexport default UpgradeModalWrapper;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
const CLICK_COUNT_KEY = 'VTR_IN_COURSE_MODAL_NEXT_CLICK_COUNT';
|
|
9
|
+
const SHOW_MODAL_CLICK_COUNT = 2;
|
|
10
|
+
function isLocalStorageAvailable() {
|
|
11
|
+
// A simple helper to check if localStorage is currently available
|
|
12
|
+
const testKey = 'testKey';
|
|
13
|
+
try {
|
|
14
|
+
localStorage.setItem(testKey, testKey);
|
|
15
|
+
localStorage.removeItem(testKey);
|
|
16
|
+
return true;
|
|
17
|
+
} catch (e) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function useClickCount() {
|
|
22
|
+
/**
|
|
23
|
+
* Hook that tracks the number of times that a user has clicked something
|
|
24
|
+
* and stores that number in localStorage (if available).
|
|
25
|
+
*
|
|
26
|
+
* Returns: [clickCount, setClickCount]
|
|
27
|
+
* - clickCount (int): The current count of clicks
|
|
28
|
+
* - setClickCount (func): Function to update the number of clicks
|
|
29
|
+
*/
|
|
30
|
+
const localStorageAvailable = isLocalStorageAvailable();
|
|
31
|
+
const [clickCount, setClickCount] = (0, _react.useState)(() => {
|
|
32
|
+
if (!localStorageAvailable) {
|
|
33
|
+
return 0;
|
|
34
|
+
}
|
|
35
|
+
const clickString = localStorage.getItem(CLICK_COUNT_KEY);
|
|
36
|
+
const clicks = JSON.parse(clickString);
|
|
37
|
+
return clicks || 0;
|
|
38
|
+
});
|
|
39
|
+
(0, _react.useEffect)(() => {
|
|
40
|
+
// When clickCount changes, this will update it in localStorage
|
|
41
|
+
if (clickCount === undefined) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (!localStorageAvailable) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
localStorage.setItem(CLICK_COUNT_KEY, JSON.stringify(clickCount));
|
|
48
|
+
}, [clickCount, localStorageAvailable]);
|
|
49
|
+
return [clickCount, setClickCount];
|
|
50
|
+
}
|
|
51
|
+
function useInCourseUpgradeModal(_ref) {
|
|
52
|
+
let {
|
|
53
|
+
verifiedMode,
|
|
54
|
+
isStaff,
|
|
55
|
+
enrollmentMode
|
|
56
|
+
} = _ref;
|
|
57
|
+
/**
|
|
58
|
+
* Hook that wraps around useClickCount to handle the "modal show" logic
|
|
59
|
+
*/
|
|
60
|
+
const qualifiesForModal = enrollmentMode === 'audit' && verifiedMode && !isStaff;
|
|
61
|
+
const [clickCount, setClickCount] = useClickCount();
|
|
62
|
+
const nextClick = clickCount + 1;
|
|
63
|
+
const countNextClick = () => {
|
|
64
|
+
setClickCount(nextClick);
|
|
65
|
+
};
|
|
66
|
+
const shouldShowModalOnClick = nextClick % SHOW_MODAL_CLICK_COUNT === 0;
|
|
67
|
+
return [qualifiesForModal, shouldShowModalOnClick, countNextClick];
|
|
68
|
+
}
|
|
69
|
+
var _default = exports.default = useInCourseUpgradeModal;
|
|
70
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","names":["_react","require","CLICK_COUNT_KEY","SHOW_MODAL_CLICK_COUNT","isLocalStorageAvailable","testKey","localStorage","setItem","removeItem","e","useClickCount","localStorageAvailable","clickCount","setClickCount","useState","clickString","getItem","clicks","JSON","parse","useEffect","undefined","stringify","useInCourseUpgradeModal","_ref","verifiedMode","isStaff","enrollmentMode","qualifiesForModal","nextClick","countNextClick","shouldShowModalOnClick","_default","exports","default"],"sources":["../../src/upgrade-modal/hooks.js"],"sourcesContent":["import { useState, useEffect } from 'react';\n\nconst CLICK_COUNT_KEY = 'VTR_IN_COURSE_MODAL_NEXT_CLICK_COUNT';\nconst SHOW_MODAL_CLICK_COUNT = 2;\n\nfunction isLocalStorageAvailable() {\n // A simple helper to check if localStorage is currently available\n const testKey = 'testKey';\n try {\n localStorage.setItem(testKey, testKey);\n localStorage.removeItem(testKey);\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction useClickCount() {\n /**\n * Hook that tracks the number of times that a user has clicked something\n * and stores that number in localStorage (if available).\n *\n * Returns: [clickCount, setClickCount]\n * - clickCount (int): The current count of clicks\n * - setClickCount (func): Function to update the number of clicks\n */\n const localStorageAvailable = isLocalStorageAvailable();\n const [clickCount, setClickCount] = useState(() => {\n if (!localStorageAvailable) { return 0; }\n const clickString = localStorage.getItem(CLICK_COUNT_KEY);\n const clicks = JSON.parse(clickString);\n return clicks || 0;\n });\n\n useEffect(() => {\n // When clickCount changes, this will update it in localStorage\n if (clickCount === undefined) { return; }\n if (!localStorageAvailable) { return; }\n localStorage.setItem(CLICK_COUNT_KEY, JSON.stringify(clickCount));\n }, [clickCount, localStorageAvailable]);\n\n return [clickCount, setClickCount];\n}\n\nfunction useInCourseUpgradeModal({ verifiedMode, isStaff, enrollmentMode }) {\n /**\n * Hook that wraps around useClickCount to handle the \"modal show\" logic\n */\n const qualifiesForModal = (enrollmentMode === 'audit' && verifiedMode && !isStaff);\n const [clickCount, setClickCount] = useClickCount();\n const nextClick = clickCount + 1;\n const countNextClick = () => { setClickCount(nextClick); };\n const shouldShowModalOnClick = nextClick % SHOW_MODAL_CLICK_COUNT === 0;\n return [qualifiesForModal, shouldShowModalOnClick, countNextClick];\n}\n\nexport default useInCourseUpgradeModal;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,MAAMC,eAAe,GAAG,sCAAsC;AAC9D,MAAMC,sBAAsB,GAAG,CAAC;AAEhC,SAASC,uBAAuBA,CAAA,EAAG;EACjC;EACA,MAAMC,OAAO,GAAG,SAAS;EACzB,IAAI;IACFC,YAAY,CAACC,OAAO,CAACF,OAAO,EAAEA,OAAO,CAAC;IACtCC,YAAY,CAACE,UAAU,CAACH,OAAO,CAAC;IAChC,OAAO,IAAI;EACb,CAAC,CAAC,OAAOI,CAAC,EAAE;IACV,OAAO,KAAK;EACd;AACF;AAEA,SAASC,aAAaA,CAAA,EAAG;EACvB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMC,qBAAqB,GAAGP,uBAAuB,CAAC,CAAC;EACvD,MAAM,CAACQ,UAAU,EAAEC,aAAa,CAAC,GAAG,IAAAC,eAAQ,EAAC,MAAM;IACjD,IAAI,CAACH,qBAAqB,EAAE;MAAE,OAAO,CAAC;IAAE;IACxC,MAAMI,WAAW,GAAGT,YAAY,CAACU,OAAO,CAACd,eAAe,CAAC;IACzD,MAAMe,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACJ,WAAW,CAAC;IACtC,OAAOE,MAAM,IAAI,CAAC;EACpB,CAAC,CAAC;EAEF,IAAAG,gBAAS,EAAC,MAAM;IACd;IACA,IAAIR,UAAU,KAAKS,SAAS,EAAE;MAAE;IAAQ;IACxC,IAAI,CAACV,qBAAqB,EAAE;MAAE;IAAQ;IACtCL,YAAY,CAACC,OAAO,CAACL,eAAe,EAAEgB,IAAI,CAACI,SAAS,CAACV,UAAU,CAAC,CAAC;EACnE,CAAC,EAAE,CAACA,UAAU,EAAED,qBAAqB,CAAC,CAAC;EAEvC,OAAO,CAACC,UAAU,EAAEC,aAAa,CAAC;AACpC;AAEA,SAASU,uBAAuBA,CAAAC,IAAA,EAA4C;EAAA,IAA3C;IAAEC,YAAY;IAAEC,OAAO;IAAEC;EAAe,CAAC,GAAAH,IAAA;EACxE;AACF;AACA;EACE,MAAMI,iBAAiB,GAAID,cAAc,KAAK,OAAO,IAAIF,YAAY,IAAI,CAACC,OAAQ;EAClF,MAAM,CAACd,UAAU,EAAEC,aAAa,CAAC,GAAGH,aAAa,CAAC,CAAC;EACnD,MAAMmB,SAAS,GAAGjB,UAAU,GAAG,CAAC;EAChC,MAAMkB,cAAc,GAAGA,CAAA,KAAM;IAAEjB,aAAa,CAACgB,SAAS,CAAC;EAAE,CAAC;EAC1D,MAAME,sBAAsB,GAAGF,SAAS,GAAG1B,sBAAsB,KAAK,CAAC;EACvE,OAAO,CAACyB,iBAAiB,EAAEG,sBAAsB,EAAED,cAAc,CAAC;AACpE;AAAC,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcX,uBAAuB","ignoreList":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "ExperimentalUpgradeModal", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _ExperimentalUpgradeModal.default;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
exports.default = void 0;
|
|
13
|
+
var _UpgradeModalWrapper = _interopRequireDefault(require("./UpgradeModalWrapper"));
|
|
14
|
+
var _ExperimentalUpgradeModal = _interopRequireDefault(require("./ExperimentalUpgradeModal"));
|
|
15
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
|
+
var _default = exports.default = _UpgradeModalWrapper.default;
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_UpgradeModalWrapper","_interopRequireDefault","require","_ExperimentalUpgradeModal","obj","__esModule","default","_default","exports","UpgradeModalWrapper"],"sources":["../../src/upgrade-modal/index.js"],"sourcesContent":["import UpgradeModalWrapper from './UpgradeModalWrapper';\nimport ExperimentalUpgradeModal from './ExperimentalUpgradeModal';\n\nexport default UpgradeModalWrapper;\n\nexport {\n ExperimentalUpgradeModal,\n};\n"],"mappings":";;;;;;;;;;;;AAAA,IAAAA,oBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,yBAAA,GAAAF,sBAAA,CAAAC,OAAA;AAAkE,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAEnDG,4BAAmB","ignoreList":[]}
|