@edx/frontend-plugin-advertisements 1.33.3 → 1.35.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 (38) hide show
  1. package/dist/data/index.js +8 -0
  2. package/dist/data/index.js.map +1 -1
  3. package/dist/generic/index.js +8 -15
  4. package/dist/generic/index.js.map +1 -1
  5. package/dist/generic/upsell-bullets/PaywallUpsellBullets.js +133 -0
  6. package/dist/generic/upsell-bullets/PaywallUpsellBullets.js.map +1 -0
  7. package/dist/generic/upsell-bullets/UpsellBullets.js +69 -116
  8. package/dist/generic/upsell-bullets/UpsellBullets.js.map +1 -1
  9. package/dist/generic/upsell-bullets/{ExperimentalUpsellTable.js → UpsellTable.js} +7 -7
  10. package/dist/generic/upsell-bullets/UpsellTable.js.map +1 -0
  11. package/dist/generic/upsell-bullets/index.js +14 -14
  12. package/dist/generic/upsell-bullets/index.js.map +1 -1
  13. package/dist/index.js +2 -8
  14. package/dist/index.js.map +1 -1
  15. package/dist/optimizely/utils.js +19 -3
  16. package/dist/optimizely/utils.js.map +1 -1
  17. package/dist/upgrade-modal/BaseModal.js +4 -10
  18. package/dist/upgrade-modal/BaseModal.js.map +1 -1
  19. package/dist/upgrade-modal/DefaultUpgradeModal.js +7 -5
  20. package/dist/upgrade-modal/DefaultUpgradeModal.js.map +1 -1
  21. package/dist/upgrade-modal/ExperimentalUpgradeModal.js +24 -11
  22. package/dist/upgrade-modal/ExperimentalUpgradeModal.js.map +1 -1
  23. package/dist/upgrade-modal/NextUnitButton.js +13 -25
  24. package/dist/upgrade-modal/NextUnitButton.js.map +1 -1
  25. package/dist/upgrade-notification/DefaultUpgradeNotification.js +16 -24
  26. package/dist/upgrade-notification/DefaultUpgradeNotification.js.map +1 -1
  27. package/dist/upgrade-notification/ExperimentalUpgradeNotification.js +34 -13
  28. package/dist/upgrade-notification/ExperimentalUpgradeNotification.js.map +1 -1
  29. package/dist/upgrade-notification/utils.js +2 -21
  30. package/dist/upgrade-notification/utils.js.map +1 -1
  31. package/package.json +1 -1
  32. package/dist/generic/UpsellFarAwayCardContent.js +0 -30
  33. package/dist/generic/UpsellFarAwayCardContent.js.map +0 -1
  34. package/dist/generic/upsell-bullets/ExperimentalUpsellBullets.js +0 -86
  35. package/dist/generic/upsell-bullets/ExperimentalUpsellBullets.js.map +0 -1
  36. package/dist/generic/upsell-bullets/ExperimentalUpsellTable.js.map +0 -1
  37. /package/dist/generic/upsell-bullets/{UpsellBullets.scss → PaywallUpsellBullets.scss} +0 -0
  38. /package/dist/generic/upsell-bullets/{ExperimentalUpsellTable.scss → UpsellTable.scss} +0 -0
@@ -16,8 +16,8 @@ var _modelStore = require("@src/generic/model-store");
16
16
  var _certificatePreview = _interopRequireDefault(require("./certificate-preview"));
17
17
  var _generic = require("../generic");
18
18
  var _messages = _interopRequireDefault(require("./messages"));
19
- var _utils = require("./utils");
20
- var _constants = _interopRequireDefault(require("../data/constants"));
19
+ var _utils = _interopRequireDefault(require("./utils"));
20
+ var _data = require("../data");
21
21
  var _jsxRuntime = require("react/jsx-runtime");
22
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
23
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
@@ -45,20 +45,14 @@ const DefaultUpgradeNotification = _ref => {
45
45
  verifiedMode
46
46
  } = (0, _modelStore.useModel)('courseHomeMeta', courseId);
47
47
  const {
48
- marketingUrl
48
+ marketingUrl,
49
+ learningAssistantEnabled
49
50
  } = (0, _modelStore.useModel)('coursewareMeta', courseId);
50
-
51
- /**
52
- * model prop is use to select relevant model to get offer which is passed from the frontend-app-learning app.
53
- * for OutlineTab component use outline model and
54
- * for NotificationTray component use coursewareMeta model to show offer code.
55
- */
56
51
  const {
57
52
  accessExpiration,
58
53
  datesBannerInfo,
59
54
  offer,
60
- timeOffsetMillis,
61
- learningAssistantEnabled
55
+ timeOffsetMillis
62
56
  } = (0, _modelStore.useModel)(model, courseId);
63
57
  const dateNow = Date.now();
64
58
  const timezoneFormatArgs = userTimezone ? {
@@ -68,7 +62,7 @@ const DefaultUpgradeNotification = _ref => {
68
62
  const accessExpirationDate = accessExpiration ? new Date(accessExpiration.upgradeDeadline) : null;
69
63
  const pastExpirationDeadline = accessExpiration ? new Date(dateNow) > accessExpirationDate : false;
70
64
  const shouldDisplayBorder = pluginLocationId.includes('outline');
71
- const upsellPageName = (0, _utils.getUpsellPageName)({
65
+ const upsellPageName = (0, _utils.default)({
72
66
  id: pluginLocationId
73
67
  });
74
68
  const setupgradeNotificationCurrentState = setNotificationCurrentState;
@@ -123,9 +117,8 @@ const DefaultUpgradeNotification = _ref => {
123
117
  */
124
118
  let upgradeNotificationHeaderText;
125
119
  let expirationBanner;
126
- let upsellMessage = (0, _utils.getUpsellBullets)({
120
+ let upsellMessage = /*#__PURE__*/(0, _jsxRuntime.jsx)(_generic.UpsellBullets, {
127
121
  isFBE,
128
- upsellPageName,
129
122
  learningAssistantEnabled
130
123
  });
131
124
  let callToActionButton;
@@ -163,7 +156,7 @@ const DefaultUpgradeNotification = _ref => {
163
156
  setupgradeNotificationCurrentState: setupgradeNotificationCurrentState,
164
157
  type: "access"
165
158
  });
166
- if (upsellPageName !== _constants.default.PROGRESS) {
159
+ if (upsellPageName !== _data.PAGE_NAMES.PROGRESS) {
167
160
  upsellMessage = /*#__PURE__*/(0, _jsxRuntime.jsx)(_generic.UpsellFBESoonCardContent, {
168
161
  accessExpirationDate: accessExpirationDate,
169
162
  timezoneFormatArgs: timezoneFormatArgs
@@ -180,9 +173,6 @@ const DefaultUpgradeNotification = _ref => {
180
173
  });
181
174
  upsellMessage = /*#__PURE__*/(0, _jsxRuntime.jsx)(_generic.PastExpirationCardContent, {});
182
175
  }
183
- } else {
184
- // FBE is turned off
185
- upgradeNotificationHeaderText = formatMessage(_messages.default.pursueCertificateMessage);
186
176
  }
187
177
  if (pastExpirationDeadline) {
188
178
  callToActionButton = /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Button, {
@@ -218,15 +208,12 @@ const DefaultUpgradeNotification = _ref => {
218
208
  }),
219
209
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
220
210
  id: "courseHome-upgradeNotification",
221
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_certificatePreview.default, {
222
- courseId: courseId,
223
- bgColor: upsellPageName === _constants.default.PROGRESS ? 'bg-light-100' : ''
224
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("h2", {
225
- className: (0, _classnames.default)('h5 upgrade-notification-header', {
211
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("h2", {
212
+ className: (0, _classnames.default)('upgrade-notification-header', {
226
213
  'd-flex align-items-center mr-2 ml-4 my-1.5 font-size-18': !!toggleSidebar
227
214
  }),
228
215
  id: "outline-sidebar-upgrade-header",
229
- children: [upgradeNotificationHeaderText, !!toggleSidebar && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
216
+ children: [formatMessage(_messages.default.pursueCertificateMessage), !!toggleSidebar && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
230
217
  className: "d-inline-flex ml-auto",
231
218
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.IconButton, {
232
219
  src: _icons.Close,
@@ -237,6 +224,11 @@ const DefaultUpgradeNotification = _ref => {
237
224
  alt: formatMessage(_messages.default.closeAlt)
238
225
  })
239
226
  })]
227
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_certificatePreview.default, {
228
+ courseId: courseId
229
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("h3", {
230
+ className: "ml-4",
231
+ children: upgradeNotificationHeaderText
240
232
  }), expirationBanner, /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
241
233
  className: "upgrade-notification-message",
242
234
  children: upsellMessage
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultUpgradeNotification.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_classnames","_i18n","_analytics","_paragon","_icons","_upgradeButton","_modelStore","_certificatePreview","_generic","_messages","_utils","_constants","_jsxRuntime","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ownKeys","keys","getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","key","value","_toPropertyKey","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","DefaultUpgradeNotification","_ref","id","courseId","model","setNotificationCurrentState","toggleSidebar","pluginLocationId","formatMessage","useIntl","org","userTimezone","verifiedMode","useModel","marketingUrl","accessExpiration","datesBannerInfo","offer","timeOffsetMillis","learningAssistantEnabled","dateNow","Date","now","timezoneFormatArgs","timeZone","correctedTime","accessExpirationDate","upgradeDeadline","pastExpirationDeadline","shouldDisplayBorder","includes","upsellPageName","getUpsellPageName","setupgradeNotificationCurrentState","isFBE","contentTypeGatingEnabled","eventProperties","org_key","courserun_key","promotionEventProperties","creative","name","position","promotion_id","useEffect","sendTrackingLogEvent","sendTrackEvent","logClick","location","linkCategory","linkName","linkType","pageName","logClickPastExpiration","upgradeNotificationHeaderText","expirationBanner","upsellMessage","getUpsellBullets","callToActionButton","offerCode","hoursToAccessExpiration","Math","floor","hoursToDiscountExpiration","expirationDate","messages","firstTimeLearnerDiscountHeader","percentage","jsx","ExpirationCountdown","hoursToExpiration","type","accessExpirationHeader","AccessExpirationDateBanner","accessExpirationUrgentHeader","PAGE_NAMES","PROGRESS","UpsellFBESoonCardContent","accessExpirationPastHeader","PastExpirationDateBanner","PastExpirationCardContent","pursueCertificateMessage","Button","variant","onClick","href","block","children","pastExpirationCallToActionLabel","UpgradeButton","className","discountCodeMessage","code","classNames","jsxs","bgColor","IconButton","src","Close","size","iconAs","Icon","alt","closeAlt","propTypes","PropTypes","string","isRequired","func","defaultProps","_default","exports"],"sources":["../../src/upgrade-notification/DefaultUpgradeNotification.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { sendTrackEvent, sendTrackingLogEvent } from '@edx/frontend-platform/analytics';\nimport { Button, Icon, IconButton } from '@openedx/paragon';\nimport { Close } from '@openedx/paragon/icons';\nimport { UpgradeButton } from '@src/generic/upgrade-button';\nimport { useModel } from '@src/generic/model-store';\n\nimport CertificatePreview from './certificate-preview';\nimport {\n ExpirationCountdown,\n AccessExpirationDateBanner,\n PastExpirationCardContent,\n PastExpirationDateBanner,\n UpsellFBESoonCardContent,\n} from '../generic';\nimport messages from './messages';\nimport { getUpsellBullets, getUpsellPageName } from './utils';\nimport PAGE_NAMES from '../data/constants';\n\nconst DefaultUpgradeNotification = ({\n id,\n courseId,\n model,\n setNotificationCurrentState,\n toggleSidebar,\n}) => {\n const pluginLocationId = id;\n const { formatMessage } = useIntl();\n const {\n org,\n userTimezone,\n verifiedMode,\n } = useModel('courseHomeMeta', courseId);\n\n const {\n marketingUrl,\n } = useModel('coursewareMeta', courseId);\n\n /**\n * model prop is use to select relevant model to get offer which is passed from the frontend-app-learning app.\n * for OutlineTab component use outline model and\n * for NotificationTray component use coursewareMeta model to show offer code.\n */\n const {\n accessExpiration,\n datesBannerInfo,\n offer,\n timeOffsetMillis,\n learningAssistantEnabled,\n } = useModel(model, courseId);\n\n const dateNow = Date.now();\n const timezoneFormatArgs = userTimezone ? { timeZone: userTimezone } : {};\n const correctedTime = new Date(dateNow + timeOffsetMillis);\n const accessExpirationDate = accessExpiration ? new Date(accessExpiration.upgradeDeadline) : null;\n const pastExpirationDeadline = accessExpiration ? new Date(dateNow) > accessExpirationDate : false;\n const shouldDisplayBorder = pluginLocationId.includes('outline');\n const upsellPageName = getUpsellPageName({ id: pluginLocationId });\n const setupgradeNotificationCurrentState = setNotificationCurrentState;\n const isFBE = !!accessExpiration && !!datesBannerInfo?.contentTypeGatingEnabled;\n\n const eventProperties = {\n org_key: org,\n courserun_key: courseId,\n };\n\n const promotionEventProperties = {\n creative: 'sidebarupsell',\n name: 'In-Course Verification Prompt',\n position: 'sidebar-message',\n promotion_id: 'courseware_verified_certificate_upsell',\n ...eventProperties,\n };\n\n useEffect(() => {\n sendTrackingLogEvent('edx.bi.course.upgrade.sidebarupsell.displayed', eventProperties);\n sendTrackEvent('Promotion Viewed', promotionEventProperties);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n if (!verifiedMode) {\n return null;\n }\n\n const logClick = () => {\n sendTrackingLogEvent('edx.bi.course.upgrade.sidebarupsell.clicked', eventProperties);\n sendTrackingLogEvent('edx.course.enrollment.upgrade.clicked', {\n ...eventProperties,\n location: 'sidebar-message',\n });\n sendTrackEvent('Promotion Clicked', promotionEventProperties);\n sendTrackEvent('edx.bi.ecommerce.upsell_links_clicked', {\n ...eventProperties,\n linkCategory: 'green_upgrade',\n linkName: `${upsellPageName}_green`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n };\n\n const logClickPastExpiration = () => {\n sendTrackEvent('edx.bi.ecommerce.upgrade_notification.past_expiration.button_clicked', {\n ...eventProperties,\n linkCategory: 'upgrade_notification',\n linkName: `${upsellPageName}_course_details`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n };\n\n /*\n There are 5 parts that change in the upgrade card:\n upgradeNotificationHeaderText\n expirationBanner\n upsellMessage\n callToActionButton\n offerCode\n */\n let upgradeNotificationHeaderText;\n let expirationBanner;\n let upsellMessage = getUpsellBullets({ isFBE, upsellPageName, learningAssistantEnabled });\n let callToActionButton;\n let offerCode;\n\n if (isFBE) {\n const hoursToAccessExpiration = Math.floor((accessExpirationDate - correctedTime) / 1000 / 60 / 60);\n\n if (hoursToAccessExpiration >= (7 * 24)) {\n if (offer) { // countdown to the first purchase discount if there is one\n const hoursToDiscountExpiration = Math.floor((new Date(offer.expirationDate) - correctedTime) / 1000 / 60 / 60);\n upgradeNotificationHeaderText = formatMessage(\n messages.firstTimeLearnerDiscountHeader,\n { percentage: (offer.percentage) },\n );\n expirationBanner = (\n <ExpirationCountdown\n courseId={courseId}\n hoursToExpiration={hoursToDiscountExpiration}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n type=\"offer\"\n />\n );\n } else {\n upgradeNotificationHeaderText = formatMessage(messages.accessExpirationHeader);\n expirationBanner = (\n <AccessExpirationDateBanner\n courseId={courseId}\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n />\n );\n }\n } else if (hoursToAccessExpiration < (7 * 24) && hoursToAccessExpiration >= 0) {\n // more urgent messaging if there's less than 7 days left to access expiration\n upgradeNotificationHeaderText = formatMessage(messages.accessExpirationUrgentHeader);\n expirationBanner = (\n <ExpirationCountdown\n courseId={courseId}\n hoursToExpiration={hoursToAccessExpiration}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n type=\"access\"\n />\n );\n if (upsellPageName !== PAGE_NAMES.PROGRESS) {\n upsellMessage = (\n <UpsellFBESoonCardContent\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n />\n );\n }\n } else { // access expiration deadline has passed\n upgradeNotificationHeaderText = formatMessage(messages.accessExpirationPastHeader);\n expirationBanner = (\n <PastExpirationDateBanner\n courseId={courseId}\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n />\n );\n upsellMessage = (\n <PastExpirationCardContent />\n );\n }\n } else { // FBE is turned off\n upgradeNotificationHeaderText = formatMessage(messages.pursueCertificateMessage);\n }\n\n if (pastExpirationDeadline) {\n callToActionButton = (\n <Button\n variant=\"primary\"\n onClick={logClickPastExpiration}\n href={marketingUrl}\n block\n >\n {formatMessage(messages.pastExpirationCallToActionLabel)}\n </Button>\n );\n } else {\n callToActionButton = (\n <UpgradeButton\n offer={offer}\n onClick={logClick}\n verifiedMode={verifiedMode}\n block\n />\n );\n }\n\n if (offer) { // if there's a first purchase discount, message the code at the bottom\n offerCode = (\n <div className=\"text-center discount-info\">\n {formatMessage(\n messages.discountCodeMessage,\n {\n code: (<span className=\"font-weight-bold\">{offer.code}</span>),\n },\n )}\n </div>\n );\n }\n\n return (\n <section className={classNames('upgrade-notification small', { 'pgn__card pgn__card-light card mb-4 rounded': shouldDisplayBorder })}>\n <div id=\"courseHome-upgradeNotification\">\n <CertificatePreview\n courseId={courseId}\n bgColor={upsellPageName === PAGE_NAMES.PROGRESS ? 'bg-light-100' : ''}\n />\n <h2\n className={classNames('h5 upgrade-notification-header', {\n 'd-flex align-items-center mr-2 ml-4 my-1.5 font-size-18': !!toggleSidebar,\n })}\n id=\"outline-sidebar-upgrade-header\"\n >\n {upgradeNotificationHeaderText}\n {!!toggleSidebar && (\n <div className=\"d-inline-flex ml-auto\">\n <IconButton\n src={Close}\n size=\"sm\"\n iconAs={Icon}\n onClick={toggleSidebar}\n className=\"icon-hover\"\n alt={formatMessage(messages.closeAlt)}\n />\n </div>\n )}\n </h2>\n {expirationBanner}\n <div className=\"upgrade-notification-message\">\n {upsellMessage}\n </div>\n <div className=\"upgrade-notification-button\">\n {callToActionButton}\n </div>\n {offerCode}\n </div>\n </section>\n );\n};\n\nDefaultUpgradeNotification.propTypes = {\n id: PropTypes.string.isRequired,\n courseId: PropTypes.string.isRequired,\n model: PropTypes.string,\n setNotificationCurrentState: PropTypes.func,\n toggleSidebar: PropTypes.func,\n};\n\nDefaultUpgradeNotification.defaultProps = {\n setNotificationCurrentState: null,\n toggleSidebar: null,\n model: 'outline',\n};\n\nexport default DefaultUpgradeNotification;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"DefaultUpgradeNotification.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_classnames","_i18n","_analytics","_paragon","_icons","_upgradeButton","_modelStore","_certificatePreview","_generic","_messages","_utils","_data","_jsxRuntime","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ownKeys","keys","getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","key","value","_toPropertyKey","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","DefaultUpgradeNotification","_ref","id","courseId","model","setNotificationCurrentState","toggleSidebar","pluginLocationId","formatMessage","useIntl","org","userTimezone","verifiedMode","useModel","marketingUrl","learningAssistantEnabled","accessExpiration","datesBannerInfo","offer","timeOffsetMillis","dateNow","Date","now","timezoneFormatArgs","timeZone","correctedTime","accessExpirationDate","upgradeDeadline","pastExpirationDeadline","shouldDisplayBorder","includes","upsellPageName","getUpsellPageName","setupgradeNotificationCurrentState","isFBE","contentTypeGatingEnabled","eventProperties","org_key","courserun_key","promotionEventProperties","creative","name","position","promotion_id","useEffect","sendTrackingLogEvent","sendTrackEvent","logClick","location","linkCategory","linkName","linkType","pageName","logClickPastExpiration","upgradeNotificationHeaderText","expirationBanner","upsellMessage","jsx","UpsellBullets","callToActionButton","offerCode","hoursToAccessExpiration","Math","floor","hoursToDiscountExpiration","expirationDate","messages","firstTimeLearnerDiscountHeader","percentage","ExpirationCountdown","hoursToExpiration","type","accessExpirationHeader","AccessExpirationDateBanner","accessExpirationUrgentHeader","PAGE_NAMES","PROGRESS","UpsellFBESoonCardContent","accessExpirationPastHeader","PastExpirationDateBanner","PastExpirationCardContent","Button","variant","onClick","href","block","children","pastExpirationCallToActionLabel","UpgradeButton","className","discountCodeMessage","code","classNames","jsxs","pursueCertificateMessage","IconButton","src","Close","size","iconAs","Icon","alt","closeAlt","propTypes","PropTypes","string","isRequired","func","defaultProps","_default","exports"],"sources":["../../src/upgrade-notification/DefaultUpgradeNotification.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { sendTrackEvent, sendTrackingLogEvent } from '@edx/frontend-platform/analytics';\nimport { Button, Icon, IconButton } from '@openedx/paragon';\nimport { Close } from '@openedx/paragon/icons';\n\nimport { UpgradeButton } from '@src/generic/upgrade-button';\nimport { useModel } from '@src/generic/model-store';\n\nimport CertificatePreview from './certificate-preview';\nimport {\n ExpirationCountdown,\n AccessExpirationDateBanner,\n PastExpirationCardContent,\n PastExpirationDateBanner,\n UpsellFBESoonCardContent,\n UpsellBullets,\n} from '../generic';\nimport messages from './messages';\nimport getUpsellPageName from './utils';\nimport { PAGE_NAMES } from '../data';\n\nconst DefaultUpgradeNotification = ({\n id,\n courseId,\n model,\n setNotificationCurrentState,\n toggleSidebar,\n}) => {\n const pluginLocationId = id;\n const { formatMessage } = useIntl();\n const {\n org,\n userTimezone,\n verifiedMode,\n } = useModel('courseHomeMeta', courseId);\n\n const {\n marketingUrl,\n learningAssistantEnabled,\n } = useModel('coursewareMeta', courseId);\n\n const {\n accessExpiration,\n datesBannerInfo,\n offer,\n timeOffsetMillis,\n } = useModel(model, courseId);\n\n const dateNow = Date.now();\n const timezoneFormatArgs = userTimezone ? { timeZone: userTimezone } : {};\n const correctedTime = new Date(dateNow + timeOffsetMillis);\n const accessExpirationDate = accessExpiration ? new Date(accessExpiration.upgradeDeadline) : null;\n const pastExpirationDeadline = accessExpiration ? new Date(dateNow) > accessExpirationDate : false;\n const shouldDisplayBorder = pluginLocationId.includes('outline');\n const upsellPageName = getUpsellPageName({ id: pluginLocationId });\n const setupgradeNotificationCurrentState = setNotificationCurrentState;\n const isFBE = !!accessExpiration && !!datesBannerInfo?.contentTypeGatingEnabled;\n\n const eventProperties = {\n org_key: org,\n courserun_key: courseId,\n };\n\n const promotionEventProperties = {\n creative: 'sidebarupsell',\n name: 'In-Course Verification Prompt',\n position: 'sidebar-message',\n promotion_id: 'courseware_verified_certificate_upsell',\n ...eventProperties,\n };\n\n useEffect(() => {\n sendTrackingLogEvent('edx.bi.course.upgrade.sidebarupsell.displayed', eventProperties);\n sendTrackEvent('Promotion Viewed', promotionEventProperties);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n if (!verifiedMode) {\n return null;\n }\n\n const logClick = () => {\n sendTrackingLogEvent('edx.bi.course.upgrade.sidebarupsell.clicked', eventProperties);\n sendTrackingLogEvent('edx.course.enrollment.upgrade.clicked', {\n ...eventProperties,\n location: 'sidebar-message',\n });\n sendTrackEvent('Promotion Clicked', promotionEventProperties);\n sendTrackEvent('edx.bi.ecommerce.upsell_links_clicked', {\n ...eventProperties,\n linkCategory: 'green_upgrade',\n linkName: `${upsellPageName}_green`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n };\n\n const logClickPastExpiration = () => {\n sendTrackEvent('edx.bi.ecommerce.upgrade_notification.past_expiration.button_clicked', {\n ...eventProperties,\n linkCategory: 'upgrade_notification',\n linkName: `${upsellPageName}_course_details`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n };\n\n /*\n There are 5 parts that change in the upgrade card:\n upgradeNotificationHeaderText\n expirationBanner\n upsellMessage\n callToActionButton\n offerCode\n */\n let upgradeNotificationHeaderText;\n let expirationBanner;\n let upsellMessage = <UpsellBullets {...{ isFBE, learningAssistantEnabled }} />;\n let callToActionButton;\n let offerCode;\n\n if (isFBE) {\n const hoursToAccessExpiration = Math.floor((accessExpirationDate - correctedTime) / 1000 / 60 / 60);\n\n if (hoursToAccessExpiration >= (7 * 24)) {\n if (offer) { // countdown to the first purchase discount if there is one\n const hoursToDiscountExpiration = Math.floor((new Date(offer.expirationDate) - correctedTime) / 1000 / 60 / 60);\n upgradeNotificationHeaderText = formatMessage(\n messages.firstTimeLearnerDiscountHeader,\n { percentage: (offer.percentage) },\n );\n expirationBanner = (\n <ExpirationCountdown\n courseId={courseId}\n hoursToExpiration={hoursToDiscountExpiration}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n type=\"offer\"\n />\n );\n } else {\n upgradeNotificationHeaderText = formatMessage(messages.accessExpirationHeader);\n expirationBanner = (\n <AccessExpirationDateBanner\n courseId={courseId}\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n />\n );\n }\n } else if (hoursToAccessExpiration < (7 * 24) && hoursToAccessExpiration >= 0) {\n // more urgent messaging if there's less than 7 days left to access expiration\n upgradeNotificationHeaderText = formatMessage(messages.accessExpirationUrgentHeader);\n expirationBanner = (\n <ExpirationCountdown\n courseId={courseId}\n hoursToExpiration={hoursToAccessExpiration}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n type=\"access\"\n />\n );\n if (upsellPageName !== PAGE_NAMES.PROGRESS) {\n upsellMessage = (\n <UpsellFBESoonCardContent\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n />\n );\n }\n } else { // access expiration deadline has passed\n upgradeNotificationHeaderText = formatMessage(messages.accessExpirationPastHeader);\n expirationBanner = (\n <PastExpirationDateBanner\n courseId={courseId}\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n />\n );\n upsellMessage = (\n <PastExpirationCardContent />\n );\n }\n }\n\n if (pastExpirationDeadline) {\n callToActionButton = (\n <Button\n variant=\"primary\"\n onClick={logClickPastExpiration}\n href={marketingUrl}\n block\n >\n {formatMessage(messages.pastExpirationCallToActionLabel)}\n </Button>\n );\n } else {\n callToActionButton = (\n <UpgradeButton\n offer={offer}\n onClick={logClick}\n verifiedMode={verifiedMode}\n block\n />\n );\n }\n\n if (offer) { // if there's a first purchase discount, message the code at the bottom\n offerCode = (\n <div className=\"text-center discount-info\">\n {formatMessage(\n messages.discountCodeMessage,\n {\n code: (<span className=\"font-weight-bold\">{offer.code}</span>),\n },\n )}\n </div>\n );\n }\n\n return (\n <section className={classNames('upgrade-notification small', { 'pgn__card pgn__card-light card mb-4 rounded': shouldDisplayBorder })}>\n <div id=\"courseHome-upgradeNotification\">\n <h2\n className={classNames('upgrade-notification-header', {\n 'd-flex align-items-center mr-2 ml-4 my-1.5 font-size-18': !!toggleSidebar,\n })}\n id=\"outline-sidebar-upgrade-header\"\n >\n {formatMessage(messages.pursueCertificateMessage)}\n {!!toggleSidebar && (\n <div className=\"d-inline-flex ml-auto\">\n <IconButton\n src={Close}\n size=\"sm\"\n iconAs={Icon}\n onClick={toggleSidebar}\n className=\"icon-hover\"\n alt={formatMessage(messages.closeAlt)}\n />\n </div>\n )}\n </h2>\n <CertificatePreview courseId={courseId} />\n <h3 className=\"ml-4\">\n {upgradeNotificationHeaderText}\n </h3>\n {expirationBanner}\n <div className=\"upgrade-notification-message\">\n {upsellMessage}\n </div>\n <div className=\"upgrade-notification-button\">\n {callToActionButton}\n </div>\n {offerCode}\n </div>\n </section>\n );\n};\n\nDefaultUpgradeNotification.propTypes = {\n id: PropTypes.string.isRequired,\n courseId: PropTypes.string.isRequired,\n model: PropTypes.string,\n setNotificationCurrentState: PropTypes.func,\n toggleSidebar: PropTypes.func,\n};\n\nDefaultUpgradeNotification.defaultProps = {\n setNotificationCurrentState: null,\n toggleSidebar: null,\n model: 'outline',\n};\n\nexport default DefaultUpgradeNotification;\n"],"mappings":"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","ignoreList":[]}
@@ -18,6 +18,7 @@ var _utils = _interopRequireDefault(require("../optimizely/utils"));
18
18
  var _data = require("../data");
19
19
  var _certificatePreview = _interopRequireDefault(require("./certificate-preview"));
20
20
  var _generic = require("../generic");
21
+ var _utils2 = _interopRequireDefault(require("./utils"));
21
22
  var _messages = _interopRequireDefault(require("./messages"));
22
23
  var _jsxRuntime = require("react/jsx-runtime");
23
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -27,7 +28,13 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
27
28
  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; }
28
29
  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; }
29
30
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
30
- 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); } /* eslint import/no-unresolved: 0 */
31
+ 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); } /* All of this code includes the necessary functions to run and track an A/B experiment
32
+ using Optimizely. Please fully read through the code to know where changes
33
+ need to be made specifically for a new test.
34
+
35
+ As of 2025-01-08, this code is functionally the same as the
36
+ DefaultUpgradeNotification.
37
+ */ /* eslint import/no-unresolved: 0 */
31
38
  const ExperimentalUpgradeNotification = _ref => {
32
39
  let {
33
40
  id,
@@ -38,15 +45,19 @@ const ExperimentalUpgradeNotification = _ref => {
38
45
  optimizely
39
46
  } = _ref;
40
47
  const pluginLocationId = id;
41
- const {
42
- KEY: experimentKey,
43
- VARIATIONS,
44
- ANY_CLICK_ACTION,
45
- SIDEBAR_CLICK_ACTION
46
- } = _data.OPTIMIZELY_VTR_BULLET_EXPERIMENT;
47
48
  const {
48
49
  formatMessage
49
50
  } = (0, _i18n.useIntl)();
51
+
52
+ /*
53
+ Update the following line with the new experiment constants.
54
+ KEY and ANY_CLICK_ACTION are required and used in the later in the code.
55
+ To update the variables, make changes in ../optimizely/utils
56
+ */
57
+ const {
58
+ KEY: experimentKey,
59
+ ANY_CLICK_ACTION
60
+ } = _data.OPTIMIZELY_VTR_BULLET_EXPERIMENT;
50
61
  const {
51
62
  org,
52
63
  userTimezone,
@@ -70,7 +81,9 @@ const ExperimentalUpgradeNotification = _ref => {
70
81
  const accessExpirationDate = accessExpiration ? new Date(accessExpiration.upgradeDeadline) : null;
71
82
  const pastExpirationDeadline = accessExpiration ? new Date(dateNow) > accessExpirationDate : false;
72
83
  const shouldDisplayBorder = pluginLocationId.includes('outline');
73
- const upsellPageName = pluginLocationId === 'outline_tab_notifications' ? 'course_home' : 'in_course';
84
+ const upsellPageName = (0, _utils2.default)({
85
+ id: pluginLocationId
86
+ });
74
87
  const setupgradeNotificationCurrentState = setNotificationCurrentState;
75
88
  const isFBE = !!accessExpiration && !!datesBannerInfo?.contentTypeGatingEnabled;
76
89
  const [decision] = (0, _reactSdk.useDecision)(experimentKey);
@@ -115,8 +128,12 @@ const ExperimentalUpgradeNotification = _ref => {
115
128
  linkType: 'button',
116
129
  pageName: upsellPageName
117
130
  }));
131
+
132
+ /*
133
+ Confirm that the ANY_CLICK_ACTION matches the event key in Optimizely.
134
+ Add any additional tracking for Optimizely here.
135
+ */
118
136
  optimizely.track(ANY_CLICK_ACTION);
119
- optimizely.track(SIDEBAR_CLICK_ACTION);
120
137
  };
121
138
  const logClickPastExpiration = () => {
122
139
  (0, _analytics.sendTrackEvent)('edx.bi.ecommerce.upgrade_notification.past_expiration.button_clicked', _objectSpread(_objectSpread(_objectSpread({}, eventProperties), experimentProperties), {}, {
@@ -137,17 +154,21 @@ const ExperimentalUpgradeNotification = _ref => {
137
154
  */
138
155
  let upgradeNotificationHeaderText;
139
156
  let expirationBanner;
157
+ let callToActionButton;
158
+ let offerCode;
159
+
160
+ /*
161
+ Update the enabled variation according to your experiment
162
+ */
140
163
  let upsellMessage = (0, _utils.default)({
141
164
  enabled,
142
165
  variationKey,
143
166
  isFBE,
144
- enabledVariation: /*#__PURE__*/(0, _jsxRuntime.jsx)(_generic.ExperimentalUpsellBullets, {
167
+ enabledVariation: /*#__PURE__*/(0, _jsxRuntime.jsx)(_generic.UpsellBullets, {
145
168
  isFBE,
146
169
  learningAssistantEnabled
147
170
  })
148
171
  });
149
- let callToActionButton;
150
- let offerCode;
151
172
  if (isFBE) {
152
173
  const hoursToAccessExpiration = Math.floor((accessExpirationDate - correctedTime) / 1000 / 60 / 60);
153
174
  if (hoursToAccessExpiration >= 7 * 24) {
@@ -181,7 +202,7 @@ const ExperimentalUpgradeNotification = _ref => {
181
202
  setupgradeNotificationCurrentState: setupgradeNotificationCurrentState,
182
203
  type: "access"
183
204
  });
184
- if (variationKey === VARIATIONS.CONTROL) {
205
+ if (upsellPageName !== _data.PAGE_NAMES.PROGRESS) {
185
206
  upsellMessage = /*#__PURE__*/(0, _jsxRuntime.jsx)(_generic.UpsellFBESoonCardContent, {
186
207
  accessExpirationDate: accessExpirationDate,
187
208
  timezoneFormatArgs: timezoneFormatArgs
@@ -1 +1 @@
1
- {"version":3,"file":"ExperimentalUpgradeNotification.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_classnames","_i18n","_analytics","_paragon","_icons","_reactSdk","_upgradeButton","_modelStore","_utils","_data","_certificatePreview","_generic","_messages","_jsxRuntime","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ownKeys","keys","getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","key","value","_toPropertyKey","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","ExperimentalUpgradeNotification","_ref","id","courseId","model","setNotificationCurrentState","toggleSidebar","optimizely","pluginLocationId","KEY","experimentKey","VARIATIONS","ANY_CLICK_ACTION","SIDEBAR_CLICK_ACTION","OPTIMIZELY_VTR_BULLET_EXPERIMENT","formatMessage","useIntl","org","userTimezone","verifiedMode","useModel","marketingUrl","learningAssistantEnabled","accessExpiration","datesBannerInfo","offer","timeOffsetMillis","dateNow","Date","now","timezoneFormatArgs","timeZone","correctedTime","accessExpirationDate","upgradeDeadline","pastExpirationDeadline","shouldDisplayBorder","includes","upsellPageName","setupgradeNotificationCurrentState","isFBE","contentTypeGatingEnabled","decision","useDecision","enabled","variationKey","experimentProperties","experiment_key","variation_key","eventProperties","org_key","courserun_key","promotionEventProperties","creative","name","position","promotion_id","useEffect","sendTrackingLogEvent","sendTrackEvent","logClick","location","linkCategory","linkName","linkType","pageName","track","logClickPastExpiration","upgradeNotificationHeaderText","expirationBanner","upsellMessage","getBulletVariation","enabledVariation","jsx","ExperimentalUpsellBullets","callToActionButton","offerCode","hoursToAccessExpiration","Math","floor","hoursToDiscountExpiration","expirationDate","messages","firstTimeLearnerDiscountHeader","percentage","ExpirationCountdown","hoursToExpiration","type","accessExpirationHeader","AccessExpirationDateBanner","accessExpirationUrgentHeader","CONTROL","UpsellFBESoonCardContent","accessExpirationPastHeader","PastExpirationDateBanner","PastExpirationCardContent","Button","variant","onClick","href","block","children","pastExpirationCallToActionLabel","UpgradeButton","className","discountCodeMessage","code","classNames","jsxs","pursueCertificateMessage","IconButton","src","Close","size","iconAs","Icon","alt","closeAlt","propTypes","PropTypes","string","isRequired","func","object","defaultProps","_default","exports","withOptimizely"],"sources":["../../src/upgrade-notification/ExperimentalUpgradeNotification.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { sendTrackEvent, sendTrackingLogEvent } from '@edx/frontend-platform/analytics';\nimport { Button, Icon, IconButton } from '@openedx/paragon';\nimport { Close } from '@openedx/paragon/icons';\nimport { useDecision, withOptimizely } from '@optimizely/react-sdk';\n\nimport { UpgradeButton } from '@src/generic/upgrade-button';\nimport { useModel } from '@src/generic/model-store';\n\nimport getBulletVariation from '../optimizely/utils';\nimport { OPTIMIZELY_VTR_BULLET_EXPERIMENT } from '../data';\nimport CertificatePreview from './certificate-preview';\nimport {\n ExpirationCountdown,\n AccessExpirationDateBanner,\n PastExpirationDateBanner,\n PastExpirationCardContent,\n UpsellFBESoonCardContent,\n ExperimentalUpsellBullets,\n} from '../generic';\nimport messages from './messages';\n\nconst ExperimentalUpgradeNotification = ({\n id,\n courseId,\n model,\n setNotificationCurrentState,\n toggleSidebar,\n optimizely,\n}) => {\n const pluginLocationId = id;\n const {\n KEY: experimentKey,\n VARIATIONS,\n ANY_CLICK_ACTION,\n SIDEBAR_CLICK_ACTION,\n } = OPTIMIZELY_VTR_BULLET_EXPERIMENT;\n const { formatMessage } = useIntl();\n\n const {\n org,\n userTimezone,\n verifiedMode,\n } = useModel('courseHomeMeta', courseId);\n\n const {\n marketingUrl,\n learningAssistantEnabled,\n } = useModel('coursewareMeta', courseId);\n\n const {\n accessExpiration,\n datesBannerInfo,\n offer,\n timeOffsetMillis,\n } = useModel(model, courseId);\n\n const dateNow = Date.now();\n const timezoneFormatArgs = userTimezone ? { timeZone: userTimezone } : {};\n const correctedTime = new Date(dateNow + timeOffsetMillis);\n const accessExpirationDate = accessExpiration ? new Date(accessExpiration.upgradeDeadline) : null;\n const pastExpirationDeadline = accessExpiration ? new Date(dateNow) > accessExpirationDate : false;\n const shouldDisplayBorder = pluginLocationId.includes('outline');\n const upsellPageName = pluginLocationId === 'outline_tab_notifications' ? 'course_home' : 'in_course';\n const setupgradeNotificationCurrentState = setNotificationCurrentState;\n const isFBE = !!accessExpiration && !!datesBannerInfo?.contentTypeGatingEnabled;\n\n const [decision] = useDecision(experimentKey);\n const { enabled, 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: experimentKey,\n variation_key: variationKey,\n };\n\n const eventProperties = {\n org_key: org,\n courserun_key: courseId,\n };\n\n const promotionEventProperties = {\n creative: 'sidebarupsell',\n name: 'In-Course Verification Prompt',\n position: 'sidebar-message',\n promotion_id: 'courseware_verified_certificate_upsell',\n ...eventProperties,\n ...experimentProperties,\n };\n\n useEffect(() => {\n sendTrackingLogEvent('edx.bi.course.upgrade.sidebarupsell.displayed', eventProperties);\n sendTrackEvent('Promotion Viewed', promotionEventProperties);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n if (!verifiedMode) {\n return null;\n }\n\n const logClick = () => {\n sendTrackingLogEvent('edx.bi.course.upgrade.sidebarupsell.clicked', eventProperties);\n sendTrackingLogEvent('edx.course.enrollment.upgrade.clicked', {\n ...eventProperties,\n location: 'sidebar-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(ANY_CLICK_ACTION);\n optimizely.track(SIDEBAR_CLICK_ACTION);\n };\n\n const logClickPastExpiration = () => {\n sendTrackEvent('edx.bi.ecommerce.upgrade_notification.past_expiration.button_clicked', {\n ...eventProperties,\n ...experimentProperties,\n linkCategory: 'upgrade_notification',\n linkName: `${upsellPageName}_course_details`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n };\n\n /*\n There are 5 parts that change in the upgrade card:\n upgradeNotificationHeaderText\n expirationBanner\n upsellMessage\n callToActionButton\n offerCode\n */\n let upgradeNotificationHeaderText;\n let expirationBanner;\n let upsellMessage = getBulletVariation({\n enabled,\n variationKey,\n isFBE,\n enabledVariation: (\n <ExperimentalUpsellBullets {...{ isFBE, learningAssistantEnabled }} />\n ),\n });\n let callToActionButton;\n let offerCode;\n\n if (isFBE) {\n const hoursToAccessExpiration = Math.floor((accessExpirationDate - correctedTime) / 1000 / 60 / 60);\n\n if (hoursToAccessExpiration >= (7 * 24)) {\n if (offer) { // countdown to the first purchase discount if there is one\n const hoursToDiscountExpiration = Math.floor((new Date(offer.expirationDate) - correctedTime) / 1000 / 60 / 60);\n upgradeNotificationHeaderText = formatMessage(\n messages.firstTimeLearnerDiscountHeader,\n { percentage: (offer.percentage) },\n );\n expirationBanner = (\n <ExpirationCountdown\n courseId={courseId}\n hoursToExpiration={hoursToDiscountExpiration}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n type=\"offer\"\n />\n );\n } else {\n upgradeNotificationHeaderText = formatMessage(messages.accessExpirationHeader);\n expirationBanner = (\n <AccessExpirationDateBanner\n courseId={courseId}\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n />\n );\n }\n } else if (hoursToAccessExpiration < (7 * 24) && hoursToAccessExpiration >= 0) {\n // more urgent messaging if there's less than 7 days left to access expiration\n upgradeNotificationHeaderText = formatMessage(messages.accessExpirationUrgentHeader);\n expirationBanner = (\n <ExpirationCountdown\n courseId={courseId}\n hoursToExpiration={hoursToAccessExpiration}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n type=\"access\"\n />\n );\n if (variationKey === VARIATIONS.CONTROL) {\n upsellMessage = (\n <UpsellFBESoonCardContent\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n />\n );\n }\n } else { // access expiration deadline has passed\n upgradeNotificationHeaderText = formatMessage(messages.accessExpirationPastHeader);\n expirationBanner = (\n <PastExpirationDateBanner\n courseId={courseId}\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n />\n );\n upsellMessage = (\n <PastExpirationCardContent />\n );\n }\n }\n\n if (pastExpirationDeadline) {\n callToActionButton = (\n <Button\n variant=\"primary\"\n onClick={logClickPastExpiration}\n href={marketingUrl}\n block\n >\n {formatMessage(messages.pastExpirationCallToActionLabel)}\n </Button>\n );\n } else {\n callToActionButton = (\n <UpgradeButton\n offer={offer}\n onClick={logClick}\n verifiedMode={verifiedMode}\n block\n />\n );\n }\n\n if (offer) { // if there's a first purchase discount, message the code at the bottom\n offerCode = (\n <div className=\"text-center discount-info\">\n {formatMessage(\n messages.discountCodeMessage,\n {\n code: (<span className=\"font-weight-bold\">{offer.code}</span>),\n },\n )}\n </div>\n );\n }\n\n return (\n <section className={classNames('upgrade-notification small', { 'pgn__card pgn__card-light card mb-4 rounded': shouldDisplayBorder })}>\n <div id=\"courseHome-upgradeNotification\">\n <h2\n className={classNames('upgrade-notification-header', {\n 'd-flex align-items-center mr-2 ml-4 my-1.5 font-size-18': !!toggleSidebar,\n })}\n id=\"outline-sidebar-upgrade-header\"\n >\n {formatMessage(messages.pursueCertificateMessage)}\n {!!toggleSidebar && (\n <div className=\"d-inline-flex ml-auto\">\n <IconButton\n src={Close}\n size=\"sm\"\n iconAs={Icon}\n onClick={toggleSidebar}\n className=\"icon-hover\"\n alt={formatMessage(messages.closeAlt)}\n />\n </div>\n )}\n </h2>\n <CertificatePreview courseId={courseId} />\n <h3 className=\"ml-4\">\n {upgradeNotificationHeaderText}\n </h3>\n {expirationBanner}\n <div className=\"upgrade-notification-message\">\n {upsellMessage}\n </div>\n <div className=\"upgrade-notification-button\">\n {callToActionButton}\n </div>\n {offerCode}\n </div>\n </section>\n );\n};\n\nExperimentalUpgradeNotification.propTypes = {\n id: PropTypes.string.isRequired,\n courseId: PropTypes.string.isRequired,\n model: PropTypes.string,\n setNotificationCurrentState: PropTypes.func,\n toggleSidebar: PropTypes.func,\n /* eslint-disable-next-line react/forbid-prop-types */\n optimizely: PropTypes.object.isRequired,\n};\n\nExperimentalUpgradeNotification.defaultProps = {\n setNotificationCurrentState: null,\n toggleSidebar: null,\n model: 'outline',\n};\n\nexport default withOptimizely(ExperimentalUpgradeNotification);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ExperimentalUpgradeNotification.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_classnames","_i18n","_analytics","_paragon","_icons","_reactSdk","_upgradeButton","_modelStore","_utils","_data","_certificatePreview","_generic","_utils2","_messages","_jsxRuntime","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ownKeys","keys","getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","key","value","_toPropertyKey","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","ExperimentalUpgradeNotification","_ref","id","courseId","model","setNotificationCurrentState","toggleSidebar","optimizely","pluginLocationId","formatMessage","useIntl","KEY","experimentKey","ANY_CLICK_ACTION","OPTIMIZELY_VTR_BULLET_EXPERIMENT","org","userTimezone","verifiedMode","useModel","marketingUrl","learningAssistantEnabled","accessExpiration","datesBannerInfo","offer","timeOffsetMillis","dateNow","Date","now","timezoneFormatArgs","timeZone","correctedTime","accessExpirationDate","upgradeDeadline","pastExpirationDeadline","shouldDisplayBorder","includes","upsellPageName","getUpsellPageName","setupgradeNotificationCurrentState","isFBE","contentTypeGatingEnabled","decision","useDecision","enabled","variationKey","experimentProperties","experiment_key","variation_key","eventProperties","org_key","courserun_key","promotionEventProperties","creative","name","position","promotion_id","useEffect","sendTrackingLogEvent","sendTrackEvent","logClick","location","linkCategory","linkName","linkType","pageName","track","logClickPastExpiration","upgradeNotificationHeaderText","expirationBanner","callToActionButton","offerCode","upsellMessage","getBulletVariation","enabledVariation","jsx","UpsellBullets","hoursToAccessExpiration","Math","floor","hoursToDiscountExpiration","expirationDate","messages","firstTimeLearnerDiscountHeader","percentage","ExpirationCountdown","hoursToExpiration","type","accessExpirationHeader","AccessExpirationDateBanner","accessExpirationUrgentHeader","PAGE_NAMES","PROGRESS","UpsellFBESoonCardContent","accessExpirationPastHeader","PastExpirationDateBanner","PastExpirationCardContent","Button","variant","onClick","href","block","children","pastExpirationCallToActionLabel","UpgradeButton","className","discountCodeMessage","code","classNames","jsxs","pursueCertificateMessage","IconButton","src","Close","size","iconAs","Icon","alt","closeAlt","propTypes","PropTypes","string","isRequired","func","object","defaultProps","_default","exports","withOptimizely"],"sources":["../../src/upgrade-notification/ExperimentalUpgradeNotification.jsx"],"sourcesContent":["/* All of this code includes the necessary functions to run and track an A/B experiment\n using Optimizely. Please fully read through the code to know where changes\n need to be made specifically for a new test.\n\n As of 2025-01-08, this code is functionally the same as the\n DefaultUpgradeNotification.\n*/\n\n/* eslint import/no-unresolved: 0 */\nimport React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { sendTrackEvent, sendTrackingLogEvent } from '@edx/frontend-platform/analytics';\nimport { Button, Icon, IconButton } from '@openedx/paragon';\nimport { Close } from '@openedx/paragon/icons';\nimport { useDecision, withOptimizely } from '@optimizely/react-sdk';\n\nimport { UpgradeButton } from '@src/generic/upgrade-button';\nimport { useModel } from '@src/generic/model-store';\n\nimport getBulletVariation from '../optimizely/utils';\nimport { OPTIMIZELY_VTR_BULLET_EXPERIMENT, PAGE_NAMES } from '../data';\nimport CertificatePreview from './certificate-preview';\nimport {\n ExpirationCountdown,\n AccessExpirationDateBanner,\n PastExpirationDateBanner,\n PastExpirationCardContent,\n UpsellFBESoonCardContent,\n UpsellBullets,\n} from '../generic';\nimport getUpsellPageName from './utils';\nimport messages from './messages';\n\nconst ExperimentalUpgradeNotification = ({\n id,\n courseId,\n model,\n setNotificationCurrentState,\n toggleSidebar,\n optimizely,\n}) => {\n const pluginLocationId = id;\n const { formatMessage } = useIntl();\n\n /*\n Update the following line with the new experiment constants.\n KEY and ANY_CLICK_ACTION are required and used in the later in the code.\n To update the variables, make changes in ../optimizely/utils\n */\n const { KEY: experimentKey, ANY_CLICK_ACTION } = OPTIMIZELY_VTR_BULLET_EXPERIMENT;\n\n const {\n org,\n userTimezone,\n verifiedMode,\n } = useModel('courseHomeMeta', courseId);\n\n const {\n marketingUrl,\n learningAssistantEnabled,\n } = useModel('coursewareMeta', courseId);\n\n const {\n accessExpiration,\n datesBannerInfo,\n offer,\n timeOffsetMillis,\n } = useModel(model, courseId);\n\n const dateNow = Date.now();\n const timezoneFormatArgs = userTimezone ? { timeZone: userTimezone } : {};\n const correctedTime = new Date(dateNow + timeOffsetMillis);\n const accessExpirationDate = accessExpiration ? new Date(accessExpiration.upgradeDeadline) : null;\n const pastExpirationDeadline = accessExpiration ? new Date(dateNow) > accessExpirationDate : false;\n const shouldDisplayBorder = pluginLocationId.includes('outline');\n const upsellPageName = getUpsellPageName({ id: pluginLocationId });\n const setupgradeNotificationCurrentState = setNotificationCurrentState;\n const isFBE = !!accessExpiration && !!datesBannerInfo?.contentTypeGatingEnabled;\n\n const [decision] = useDecision(experimentKey);\n const { enabled, 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: experimentKey,\n variation_key: variationKey,\n };\n\n const eventProperties = {\n org_key: org,\n courserun_key: courseId,\n };\n\n const promotionEventProperties = {\n creative: 'sidebarupsell',\n name: 'In-Course Verification Prompt',\n position: 'sidebar-message',\n promotion_id: 'courseware_verified_certificate_upsell',\n ...eventProperties,\n ...experimentProperties,\n };\n\n useEffect(() => {\n sendTrackingLogEvent('edx.bi.course.upgrade.sidebarupsell.displayed', eventProperties);\n sendTrackEvent('Promotion Viewed', promotionEventProperties);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n if (!verifiedMode) {\n return null;\n }\n\n const logClick = () => {\n sendTrackingLogEvent('edx.bi.course.upgrade.sidebarupsell.clicked', eventProperties);\n sendTrackingLogEvent('edx.course.enrollment.upgrade.clicked', {\n ...eventProperties,\n location: 'sidebar-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\n /*\n Confirm that the ANY_CLICK_ACTION matches the event key in Optimizely.\n Add any additional tracking for Optimizely here.\n */\n optimizely.track(ANY_CLICK_ACTION);\n };\n\n const logClickPastExpiration = () => {\n sendTrackEvent('edx.bi.ecommerce.upgrade_notification.past_expiration.button_clicked', {\n ...eventProperties,\n ...experimentProperties,\n linkCategory: 'upgrade_notification',\n linkName: `${upsellPageName}_course_details`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n };\n\n /*\n There are 5 parts that change in the upgrade card:\n upgradeNotificationHeaderText\n expirationBanner\n upsellMessage\n callToActionButton\n offerCode\n */\n let upgradeNotificationHeaderText;\n let expirationBanner;\n let callToActionButton;\n let offerCode;\n\n /*\n Update the enabled variation according to your experiment\n */\n let upsellMessage = getBulletVariation({\n enabled,\n variationKey,\n isFBE,\n enabledVariation: (\n <UpsellBullets {...{ isFBE, learningAssistantEnabled }} />\n ),\n });\n\n if (isFBE) {\n const hoursToAccessExpiration = Math.floor((accessExpirationDate - correctedTime) / 1000 / 60 / 60);\n\n if (hoursToAccessExpiration >= (7 * 24)) {\n if (offer) { // countdown to the first purchase discount if there is one\n const hoursToDiscountExpiration = Math.floor((new Date(offer.expirationDate) - correctedTime) / 1000 / 60 / 60);\n upgradeNotificationHeaderText = formatMessage(\n messages.firstTimeLearnerDiscountHeader,\n { percentage: (offer.percentage) },\n );\n expirationBanner = (\n <ExpirationCountdown\n courseId={courseId}\n hoursToExpiration={hoursToDiscountExpiration}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n type=\"offer\"\n />\n );\n } else {\n upgradeNotificationHeaderText = formatMessage(messages.accessExpirationHeader);\n expirationBanner = (\n <AccessExpirationDateBanner\n courseId={courseId}\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n />\n );\n }\n } else if (hoursToAccessExpiration < (7 * 24) && hoursToAccessExpiration >= 0) {\n // more urgent messaging if there's less than 7 days left to access expiration\n upgradeNotificationHeaderText = formatMessage(messages.accessExpirationUrgentHeader);\n expirationBanner = (\n <ExpirationCountdown\n courseId={courseId}\n hoursToExpiration={hoursToAccessExpiration}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n type=\"access\"\n />\n );\n if (upsellPageName !== PAGE_NAMES.PROGRESS) {\n upsellMessage = (\n <UpsellFBESoonCardContent\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n />\n );\n }\n } else { // access expiration deadline has passed\n upgradeNotificationHeaderText = formatMessage(messages.accessExpirationPastHeader);\n expirationBanner = (\n <PastExpirationDateBanner\n courseId={courseId}\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n />\n );\n upsellMessage = (\n <PastExpirationCardContent />\n );\n }\n }\n\n if (pastExpirationDeadline) {\n callToActionButton = (\n <Button\n variant=\"primary\"\n onClick={logClickPastExpiration}\n href={marketingUrl}\n block\n >\n {formatMessage(messages.pastExpirationCallToActionLabel)}\n </Button>\n );\n } else {\n callToActionButton = (\n <UpgradeButton\n offer={offer}\n onClick={logClick}\n verifiedMode={verifiedMode}\n block\n />\n );\n }\n\n if (offer) { // if there's a first purchase discount, message the code at the bottom\n offerCode = (\n <div className=\"text-center discount-info\">\n {formatMessage(\n messages.discountCodeMessage,\n {\n code: (<span className=\"font-weight-bold\">{offer.code}</span>),\n },\n )}\n </div>\n );\n }\n\n return (\n <section className={classNames('upgrade-notification small', { 'pgn__card pgn__card-light card mb-4 rounded': shouldDisplayBorder })}>\n <div id=\"courseHome-upgradeNotification\">\n <h2\n className={classNames('upgrade-notification-header', {\n 'd-flex align-items-center mr-2 ml-4 my-1.5 font-size-18': !!toggleSidebar,\n })}\n id=\"outline-sidebar-upgrade-header\"\n >\n {formatMessage(messages.pursueCertificateMessage)}\n {!!toggleSidebar && (\n <div className=\"d-inline-flex ml-auto\">\n <IconButton\n src={Close}\n size=\"sm\"\n iconAs={Icon}\n onClick={toggleSidebar}\n className=\"icon-hover\"\n alt={formatMessage(messages.closeAlt)}\n />\n </div>\n )}\n </h2>\n <CertificatePreview courseId={courseId} />\n <h3 className=\"ml-4\">\n {upgradeNotificationHeaderText}\n </h3>\n {expirationBanner}\n <div className=\"upgrade-notification-message\">\n {upsellMessage}\n </div>\n <div className=\"upgrade-notification-button\">\n {callToActionButton}\n </div>\n {offerCode}\n </div>\n </section>\n );\n};\n\nExperimentalUpgradeNotification.propTypes = {\n id: PropTypes.string.isRequired,\n courseId: PropTypes.string.isRequired,\n model: PropTypes.string,\n setNotificationCurrentState: PropTypes.func,\n toggleSidebar: PropTypes.func,\n /* eslint-disable-next-line react/forbid-prop-types */\n optimizely: PropTypes.object.isRequired,\n};\n\nExperimentalUpgradeNotification.defaultProps = {\n setNotificationCurrentState: null,\n toggleSidebar: null,\n model: 'outline',\n};\n\nexport default withOptimizely(ExperimentalUpgradeNotification);\n"],"mappings":"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","ignoreList":[]}
@@ -3,10 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getUpsellPageName = exports.getUpsellBullets = void 0;
6
+ exports.default = void 0;
7
7
  var _constants = _interopRequireDefault(require("../data/constants"));
8
- var _generic = require("../generic");
9
- var _jsxRuntime = require("react/jsx-runtime");
10
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
9
  const getUpsellPageName = _ref => {
12
10
  let {
@@ -20,22 +18,5 @@ const getUpsellPageName = _ref => {
20
18
  }
21
19
  return _constants.default.IN_COURSE;
22
20
  };
23
- exports.getUpsellPageName = getUpsellPageName;
24
- const getUpsellBullets = _ref2 => {
25
- let {
26
- upsellPageName,
27
- isFBE,
28
- learningAssistantEnabled
29
- } = _ref2;
30
- if (upsellPageName === _constants.default.PROGRESS) {
31
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_generic.ExperimentalUpsellBullets, {
32
- isFBE,
33
- learningAssistantEnabled
34
- });
35
- }
36
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_generic.UpsellFarAwayCardContent, {
37
- isFBE
38
- });
39
- };
40
- exports.getUpsellBullets = getUpsellBullets;
21
+ var _default = exports.default = getUpsellPageName;
41
22
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["_constants","_interopRequireDefault","require","_generic","_jsxRuntime","obj","__esModule","default","getUpsellPageName","_ref","id","includes","PAGE_NAMES","HOME","PROGRESS","IN_COURSE","exports","getUpsellBullets","_ref2","upsellPageName","isFBE","learningAssistantEnabled","jsx","ExperimentalUpsellBullets","UpsellFarAwayCardContent"],"sources":["../../src/upgrade-notification/utils.jsx"],"sourcesContent":["import PAGE_NAMES from '../data/constants';\nimport { ExperimentalUpsellBullets, UpsellFarAwayCardContent } from '../generic';\n\nexport const getUpsellPageName = ({ id }) => {\n if (id.includes('outline')) {\n return PAGE_NAMES.HOME;\n }\n\n if (id.includes('progress')) {\n return PAGE_NAMES.PROGRESS;\n }\n\n return PAGE_NAMES.IN_COURSE;\n};\n\nexport const getUpsellBullets = ({ upsellPageName, isFBE, learningAssistantEnabled }) => {\n if (upsellPageName === PAGE_NAMES.PROGRESS) {\n return <ExperimentalUpsellBullets {...{ isFBE, learningAssistantEnabled }} />;\n }\n\n return <UpsellFarAwayCardContent {...{ isFBE }} />;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAAiF,IAAAE,WAAA,GAAAF,OAAA;AAAA,SAAAD,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE1E,MAAMG,iBAAiB,GAAGC,IAAA,IAAY;EAAA,IAAX;IAAEC;EAAG,CAAC,GAAAD,IAAA;EACtC,IAAIC,EAAE,CAACC,QAAQ,CAAC,SAAS,CAAC,EAAE;IAC1B,OAAOC,kBAAU,CAACC,IAAI;EACxB;EAEA,IAAIH,EAAE,CAACC,QAAQ,CAAC,UAAU,CAAC,EAAE;IAC3B,OAAOC,kBAAU,CAACE,QAAQ;EAC5B;EAEA,OAAOF,kBAAU,CAACG,SAAS;AAC7B,CAAC;AAACC,OAAA,CAAAR,iBAAA,GAAAA,iBAAA;AAEK,MAAMS,gBAAgB,GAAGC,KAAA,IAAyD;EAAA,IAAxD;IAAEC,cAAc;IAAEC,KAAK;IAAEC;EAAyB,CAAC,GAAAH,KAAA;EAClF,IAAIC,cAAc,KAAKP,kBAAU,CAACE,QAAQ,EAAE;IAC1C,oBAAO,IAAAV,WAAA,CAAAkB,GAAA,EAACnB,QAAA,CAAAoB,yBAAyB;MAAOH,KAAK;MAAEC;IAAwB,CAAK,CAAC;EAC/E;EAEA,oBAAO,IAAAjB,WAAA,CAAAkB,GAAA,EAACnB,QAAA,CAAAqB,wBAAwB;IAAOJ;EAAK,CAAK,CAAC;AACpD,CAAC;AAACJ,OAAA,CAAAC,gBAAA,GAAAA,gBAAA","ignoreList":[]}
1
+ {"version":3,"file":"utils.js","names":["_constants","_interopRequireDefault","require","obj","__esModule","default","getUpsellPageName","_ref","id","includes","PAGE_NAMES","HOME","PROGRESS","IN_COURSE","_default","exports"],"sources":["../../src/upgrade-notification/utils.jsx"],"sourcesContent":["import PAGE_NAMES from '../data/constants';\n\nconst getUpsellPageName = ({ id }) => {\n if (id.includes('outline')) {\n return PAGE_NAMES.HOME;\n }\n\n if (id.includes('progress')) {\n return PAGE_NAMES.PROGRESS;\n }\n\n return PAGE_NAMES.IN_COURSE;\n};\n\nexport default getUpsellPageName;\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA2C,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE3C,MAAMG,iBAAiB,GAAGC,IAAA,IAAY;EAAA,IAAX;IAAEC;EAAG,CAAC,GAAAD,IAAA;EAC/B,IAAIC,EAAE,CAACC,QAAQ,CAAC,SAAS,CAAC,EAAE;IAC1B,OAAOC,kBAAU,CAACC,IAAI;EACxB;EAEA,IAAIH,EAAE,CAACC,QAAQ,CAAC,UAAU,CAAC,EAAE;IAC3B,OAAOC,kBAAU,CAACE,QAAQ;EAC5B;EAEA,OAAOF,kBAAU,CAACG,SAAS;AAC7B,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAV,OAAA,GAEaC,iBAAiB","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edx/frontend-plugin-advertisements",
3
- "version": "1.33.3",
3
+ "version": "1.35.0",
4
4
  "description": "Frontend plugin for edX in course advertisements",
5
5
  "main": "dist/index.js",
6
6
  "repository": {
@@ -1,30 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _propTypes = _interopRequireDefault(require("prop-types"));
8
- var _upsellBullets = require("./upsell-bullets");
9
- var _jsxRuntime = require("react/jsx-runtime");
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
- const UpsellFarAwayCardContent = _ref => {
12
- let {
13
- isFBE
14
- } = _ref;
15
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
16
- role: "list",
17
- className: "pl-4 text-gray-700 pt-0 mb-4",
18
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_upsellBullets.VerifiedCertBullet, {}), isFBE && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
19
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_upsellBullets.UnlockGradedBullet, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_upsellBullets.FullAccessBullet, {})]
20
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_upsellBullets.SupportMissionBullet, {})]
21
- });
22
- };
23
- UpsellFarAwayCardContent.defaultProps = {
24
- isFBE: false
25
- };
26
- UpsellFarAwayCardContent.propTypes = {
27
- isFBE: _propTypes.default.bool
28
- };
29
- var _default = exports.default = UpsellFarAwayCardContent;
30
- //# sourceMappingURL=UpsellFarAwayCardContent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"UpsellFarAwayCardContent.js","names":["_propTypes","_interopRequireDefault","require","_upsellBullets","_jsxRuntime","obj","__esModule","default","UpsellFarAwayCardContent","_ref","isFBE","jsxs","role","className","children","jsx","VerifiedCertBullet","Fragment","UnlockGradedBullet","FullAccessBullet","SupportMissionBullet","defaultProps","propTypes","PropTypes","bool","_default","exports"],"sources":["../../src/generic/UpsellFarAwayCardContent.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport {\n VerifiedCertBullet,\n UnlockGradedBullet,\n FullAccessBullet,\n SupportMissionBullet,\n} from './upsell-bullets';\n\nconst UpsellFarAwayCardContent = ({ isFBE }) => (\n <div role=\"list\" className=\"pl-4 text-gray-700 pt-0 mb-4\">\n <VerifiedCertBullet />\n {isFBE && (\n <>\n <UnlockGradedBullet />\n <FullAccessBullet />\n </>\n )}\n <SupportMissionBullet />\n </div>\n);\n\nUpsellFarAwayCardContent.defaultProps = {\n isFBE: false,\n};\n\nUpsellFarAwayCardContent.propTypes = {\n isFBE: PropTypes.bool,\n};\n\nexport default UpsellFarAwayCardContent;\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AAK0B,IAAAE,WAAA,GAAAF,OAAA;AAAA,SAAAD,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE1B,MAAMG,wBAAwB,GAAGC,IAAA;EAAA,IAAC;IAAEC;EAAM,CAAC,GAAAD,IAAA;EAAA,oBACzC,IAAAL,WAAA,CAAAO,IAAA;IAAKC,IAAI,EAAC,MAAM;IAACC,SAAS,EAAC,8BAA8B;IAAAC,QAAA,gBACvD,IAAAV,WAAA,CAAAW,GAAA,EAACZ,cAAA,CAAAa,kBAAkB,IAAE,CAAC,EACrBN,KAAK,iBACJ,IAAAN,WAAA,CAAAO,IAAA,EAAAP,WAAA,CAAAa,QAAA;MAAAH,QAAA,gBACE,IAAAV,WAAA,CAAAW,GAAA,EAACZ,cAAA,CAAAe,kBAAkB,IAAE,CAAC,eACtB,IAAAd,WAAA,CAAAW,GAAA,EAACZ,cAAA,CAAAgB,gBAAgB,IAAE,CAAC;IAAA,CACpB,CACH,eACD,IAAAf,WAAA,CAAAW,GAAA,EAACZ,cAAA,CAAAiB,oBAAoB,IAAE,CAAC;EAAA,CACrB,CAAC;AAAA,CACP;AAEDZ,wBAAwB,CAACa,YAAY,GAAG;EACtCX,KAAK,EAAE;AACT,CAAC;AAEDF,wBAAwB,CAACc,SAAS,GAAG;EACnCZ,KAAK,EAAEa,kBAAS,CAACC;AACnB,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAnB,OAAA,GAEaC,wBAAwB","ignoreList":[]}