@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.
Files changed (41) hide show
  1. package/dist/data/__factories__/defaultUpgradeNotificationData.factory.js +18 -0
  2. package/dist/data/__factories__/defaultUpgradeNotificationData.factory.js.map +1 -0
  3. package/dist/data/__factories__/index.js +1 -0
  4. package/dist/data/__factories__/index.js.map +1 -1
  5. package/dist/data/index.js +6 -0
  6. package/dist/data/index.js.map +1 -1
  7. package/dist/data/optimizely.js +9 -1
  8. package/dist/data/optimizely.js.map +1 -1
  9. package/dist/index.js +7 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/index.scss +4 -0
  12. package/dist/paywall/ExperimentalLockPaywall.js +2 -2
  13. package/dist/paywall/ExperimentalLockPaywall.js.map +1 -1
  14. package/dist/upgrade-modal/DefaultUpgradeModal.js +51 -0
  15. package/dist/upgrade-modal/DefaultUpgradeModal.js.map +1 -0
  16. package/dist/upgrade-modal/ExperimentalUpgradeModal.js +105 -0
  17. package/dist/upgrade-modal/ExperimentalUpgradeModal.js.map +1 -0
  18. package/dist/upgrade-modal/NextButton.js +68 -0
  19. package/dist/upgrade-modal/NextButton.js.map +1 -0
  20. package/dist/upgrade-modal/UpgradeModal.js +234 -0
  21. package/dist/upgrade-modal/UpgradeModal.js.map +1 -0
  22. package/dist/upgrade-modal/UpgradeModalWrapper.js +26 -0
  23. package/dist/upgrade-modal/UpgradeModalWrapper.js.map +1 -0
  24. package/dist/upgrade-modal/hooks.js +70 -0
  25. package/dist/upgrade-modal/hooks.js.map +1 -0
  26. package/dist/upgrade-modal/index.js +17 -0
  27. package/dist/upgrade-modal/index.js.map +1 -0
  28. package/dist/upgrade-notification/DefaultUpgradeNotification.js +463 -37
  29. package/dist/upgrade-notification/DefaultUpgradeNotification.js.map +1 -1
  30. package/dist/upgrade-notification/ExperimentalUpgradeNotification.js +7 -9
  31. package/dist/upgrade-notification/ExperimentalUpgradeNotification.js.map +1 -1
  32. package/dist/upgrade-notification/certificate-preview/CertificatePreview.js +3 -2
  33. package/dist/upgrade-notification/certificate-preview/CertificatePreview.js.map +1 -1
  34. package/dist/upsell-bullets/ExperimentalUpsellBullets.js +39 -0
  35. package/dist/upsell-bullets/ExperimentalUpsellBullets.js.map +1 -0
  36. package/dist/upsell-bullets/UpsellBullets.js +101 -16
  37. package/dist/upsell-bullets/UpsellBullets.js.map +1 -1
  38. package/dist/upsell-bullets/UpsellBullets.scss +11 -0
  39. package/dist/upsell-bullets/index.js +50 -0
  40. package/dist/upsell-bullets/index.js.map +1 -0
  41. 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":[]}