@edx/frontend-plugin-advertisements 1.26.8 → 1.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/data/index.js +6 -0
- package/dist/data/index.js.map +1 -1
- package/dist/data/optimizely.js +10 -1
- package/dist/data/optimizely.js.map +1 -1
- package/dist/upgrade-modal/UpgradeModal.js +1 -1
- package/dist/upgrade-modal/UpgradeModal.js.map +1 -1
- package/dist/upgrade-notification/DefaultUpgradeNotification.js +33 -288
- package/dist/upgrade-notification/DefaultUpgradeNotification.js.map +1 -1
- package/dist/upgrade-notification/ExperimentalUpgradeNotification.js +79 -302
- package/dist/upgrade-notification/ExperimentalUpgradeNotification.js.map +1 -1
- package/dist/upgrade-notification/UpgradeNotification.js +1 -1
- package/dist/upgrade-notification/UpgradeNotification.js.map +1 -1
- package/dist/upgrade-notification/generic/AccessExpirationDateBanner.js +57 -0
- package/dist/upgrade-notification/generic/AccessExpirationDateBanner.js.map +1 -0
- package/dist/upgrade-notification/generic/ExpirationCountdown.js +102 -0
- package/dist/upgrade-notification/generic/ExpirationCountdown.js.map +1 -0
- package/dist/upgrade-notification/generic/PastExpirationCardContent.js +25 -0
- package/dist/upgrade-notification/generic/PastExpirationCardContent.js.map +1 -0
- package/dist/upgrade-notification/generic/PastExpirationDateBanner.js +57 -0
- package/dist/upgrade-notification/generic/PastExpirationDateBanner.js.map +1 -0
- package/dist/upgrade-notification/generic/UpsellFBESoonCardContent.js +81 -0
- package/dist/upgrade-notification/generic/UpsellFBESoonCardContent.js.map +1 -0
- package/dist/upgrade-notification/generic/UpsellFarAwayCardContent.js +30 -0
- package/dist/upgrade-notification/generic/UpsellFarAwayCardContent.js.map +1 -0
- package/dist/upgrade-notification/generic/index.js +49 -0
- package/dist/upgrade-notification/generic/index.js.map +1 -0
- package/dist/upgrade-notification/messages.js +51 -0
- package/dist/upgrade-notification/messages.js.map +1 -0
- package/dist/upsell-bullets/ExperimentalUpsellBullets.js +75 -31
- package/dist/upsell-bullets/ExperimentalUpsellBullets.js.map +1 -1
- package/dist/upsell-bullets/ExperimentalUpsellTable.js +157 -0
- package/dist/upsell-bullets/ExperimentalUpsellTable.js.map +1 -0
- package/dist/upsell-bullets/ExperimentalUpsellTable.scss +61 -0
- package/dist/upsell-bullets/UpsellBullets.js +61 -52
- package/dist/upsell-bullets/UpsellBullets.js.map +1 -1
- package/dist/upsell-bullets/UpsellBullets.scss +0 -5
- package/dist/upsell-bullets/index.js +0 -19
- package/dist/upsell-bullets/index.js.map +1 -1
- package/dist/upsell-bullets/messages.js +66 -0
- package/dist/upsell-bullets/messages.js.map +1 -0
- package/package.json +1 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExperimentalUpgradeNotification.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_classnames","_i18n","_analytics","_paragon","_icons","_reactSdk","_localStorage","_upgradeButton","_messages","_modelStore","_data","_certificatePreview","_upsellBullets","_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","UpsellNoFBECardContent","jsxs","className","children","jsx","VerifiedCertBullet","SupportMissionBullet","ExperimentUpsellNoFBECardContent","LifetimeAccessBullet","AdditionalToolsBullet","UpsellFBEFarAwayCardContent","UnlockGradedBullet","FullAccessBullet","ExperimentUpsellFBEFarAwayCardContent","GradesAndFeedbackBullet","UpsellFBESoonCardContent","_ref","accessExpirationDate","timezoneFormatArgs","includingAnyProgress","FormattedMessage","id","defaultMessage","date","FormattedDate","day","month","Date","benefitsOfUpgrading","rel","target","href","values","propTypes","PropTypes","instanceOf","isRequired","shape","timeZone","string","defaultProps","PastExpirationCardContent","ExpirationCountdown","_ref2","courseId","hoursToExpiration","setupgradeNotificationCurrentState","type","expirationText","setLocalStorage","dayCount","Math","floor","hourCount","number","func","AccessExpirationDateBanner","_ref3","PastExpirationDateBanner","_ref4","ExperimentalUpgradeNotification","_ref5","setNotificationCurrentState","toggleSidebar","optimizely","pluginLocationId","org","userTimezone","verifiedMode","useModel","marketingUrl","accessExpiration","datesBannerInfo","offer","timeOffsetMillis","intl","useIntl","dateNow","now","correctedTime","expirationDate","pastExpirationDeadline","shouldDisplayBorder","upsellPageName","decision","useDecision","OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_KEY","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","callToActionButton","offerCode","contentTypeGatingEnabled","hoursToAccessExpiration","hoursToDiscountExpiration","percentage","OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS","CERTIFICATE_PREVIEW_WITH_COPY","Button","variant","onClick","block","UpgradeButton","code","classNames","IconButton","src","Close","size","iconAs","Icon","alt","formatMessage","messages","close","object","_default","exports","injectIntl","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 {\n useIntl, FormattedDate, FormattedMessage, injectIntl,\n} 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 { setLocalStorage } from '@src/data/localStorage';\nimport { UpgradeButton } from '@src/generic/upgrade-button';\nimport messages from '@src/generic/messages';\nimport { useModel } from '@src/generic/model-store';\n\nimport { OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS, OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_KEY } from '../data';\nimport CertificatePreview from './certificate-preview';\nimport {\n VerifiedCertBullet,\n UnlockGradedBullet,\n FullAccessBullet,\n SupportMissionBullet,\n LifetimeAccessBullet,\n GradesAndFeedbackBullet,\n AdditionalToolsBullet,\n} from '../upsell-bullets';\n\nconst UpsellNoFBECardContent = () => (\n <ul className=\"fa-ul upgrade-notification-ul pt-0\">\n <VerifiedCertBullet />\n <SupportMissionBullet />\n </ul>\n);\n\nconst ExperimentUpsellNoFBECardContent = () => (\n <ul className=\"fa-ul upgrade-notification-ul pt-0\">\n <VerifiedCertBullet />\n <LifetimeAccessBullet />\n <AdditionalToolsBullet />\n </ul>\n);\n\nconst UpsellFBEFarAwayCardContent = () => (\n <ul className=\"fa-ul upgrade-notification-ul\">\n <VerifiedCertBullet />\n <UnlockGradedBullet />\n <FullAccessBullet />\n <SupportMissionBullet />\n </ul>\n);\n\nconst ExperimentUpsellFBEFarAwayCardContent = () => (\n <ul className=\"fa-ul upgrade-notification-ul\">\n <VerifiedCertBullet />\n <LifetimeAccessBullet />\n <GradesAndFeedbackBullet />\n <AdditionalToolsBullet />\n </ul>\n);\n\nconst UpsellFBESoonCardContent = ({ accessExpirationDate, timezoneFormatArgs }) => {\n const includingAnyProgress = (\n <span className=\"font-weight-bold\">\n <FormattedMessage\n id=\"learning.generic.upgradeNotification.expirationAccessLoss.progress\"\n defaultMessage=\"including any progress\"\n />\n </span>\n );\n\n const date = (\n <FormattedDate\n key=\"accessDate\"\n day=\"numeric\"\n month=\"long\"\n value={new Date(accessExpirationDate)}\n {...timezoneFormatArgs}\n />\n );\n\n const benefitsOfUpgrading = (\n <a className=\"inline-link-underline font-weight-bold\" rel=\"noopener noreferrer\" target=\"_blank\" href=\"https://support.edx.org/hc/en-us/articles/360013426573-What-are-the-differences-between-audit-free-and-verified-paid-courses-\">\n <FormattedMessage\n id=\"learning.generic.upgradeNotification.expirationVerifiedCert.benefits\"\n defaultMessage=\"benefits of upgrading\"\n />\n </a>\n );\n\n return (\n <div className=\"upgrade-notification-text\">\n <p>\n <FormattedMessage\n id=\"learning.generic.upgradeNotification.expirationAccessLoss\"\n defaultMessage=\"You will lose all access to this course, {includingAnyProgress}, on {date}.\"\n values={{\n includingAnyProgress,\n date,\n }}\n />\n </p>\n <p>\n <FormattedMessage\n id=\"learning.generic.upgradeNotification.expirationVerifiedCert\"\n defaultMessage=\"Upgrading your course enables you to pursue a verified certificate and unlocks numerous features. Learn more about the {benefitsOfUpgrading}.\"\n values={{ benefitsOfUpgrading }}\n />\n </p>\n </div>\n );\n};\n\nUpsellFBESoonCardContent.propTypes = {\n accessExpirationDate: PropTypes.PropTypes.instanceOf(Date).isRequired,\n timezoneFormatArgs: PropTypes.shape({\n timeZone: PropTypes.string,\n }),\n};\n\nUpsellFBESoonCardContent.defaultProps = {\n timezoneFormatArgs: {},\n};\n\nconst PastExpirationCardContent = () => (\n <div className=\"upgrade-notification-text\">\n <p>\n <FormattedMessage\n id=\"learning.generic.upgradeNotification.pastExpiration.content\"\n defaultMessage=\"The upgrade deadline for this course passed. To upgrade, enroll in the next available session.\"\n />\n </p>\n </div>\n);\n\nconst ExpirationCountdown = ({\n courseId, hoursToExpiration, setupgradeNotificationCurrentState, type,\n}) => {\n let expirationText;\n if (hoursToExpiration >= 24) { // More than 1 day left\n // setupgradeNotificationCurrentState is available in NotificationTray (not course home)\n if (setupgradeNotificationCurrentState) {\n if (type === 'access') {\n setupgradeNotificationCurrentState('accessDaysLeft');\n setLocalStorage(`upgradeNotificationCurrentState.${courseId}`, 'accessDaysLeft');\n }\n if (type === 'offer') {\n setupgradeNotificationCurrentState('FPDdaysLeft');\n setLocalStorage(`upgradeNotificationCurrentState.${courseId}`, 'FPDdaysLeft');\n }\n }\n expirationText = (\n <FormattedMessage\n id=\"learning.generic.upgradeNotification.expirationDays\"\n defaultMessage={`{dayCount, number} {dayCount, plural,\n one {day}\n other {days}} left`}\n values={{\n dayCount: (Math.floor(hoursToExpiration / 24)),\n }}\n />\n );\n } else if (hoursToExpiration >= 1) { // More than 1 hour left\n // setupgradeNotificationCurrentState is available in NotificationTray (not course home)\n if (setupgradeNotificationCurrentState) {\n if (type === 'access') {\n setupgradeNotificationCurrentState('accessHoursLeft');\n setLocalStorage(`upgradeNotificationCurrentState.${courseId}`, 'accessHoursLeft');\n }\n if (type === 'offer') {\n setupgradeNotificationCurrentState('FPDHoursLeft');\n setLocalStorage(`upgradeNotificationCurrentState.${courseId}`, 'FPDHoursLeft');\n }\n }\n expirationText = (\n <FormattedMessage\n id=\"learning.generic.upgradeNotification.expirationHours\"\n defaultMessage={`{hourCount, number} {hourCount, plural,\n one {hour}\n other {hours}} left`}\n values={{\n hourCount: (hoursToExpiration),\n }}\n />\n );\n } else { // Less than 1 hour\n // setupgradeNotificationCurrentState is available in NotificationTray (not course home)\n if (setupgradeNotificationCurrentState) {\n if (type === 'access') {\n setupgradeNotificationCurrentState('accessLastHour');\n setLocalStorage(`upgradeNotificationCurrentState.${courseId}`, 'accessLastHour');\n }\n if (type === 'offer') {\n setupgradeNotificationCurrentState('FPDLastHour');\n setLocalStorage(`upgradeNotificationCurrentState.${courseId}`, 'FPDLastHour');\n }\n }\n expirationText = (\n <FormattedMessage\n id=\"learning.generic.upgradeNotification.expirationMinutes\"\n defaultMessage=\"Less than 1 hour left\"\n />\n );\n }\n return (<div className=\"upsell-warning\">{expirationText}</div>);\n};\n\nExpirationCountdown.propTypes = {\n courseId: PropTypes.string.isRequired,\n hoursToExpiration: PropTypes.number.isRequired,\n setupgradeNotificationCurrentState: PropTypes.func,\n type: PropTypes.string,\n};\nExpirationCountdown.defaultProps = {\n setupgradeNotificationCurrentState: null,\n type: null,\n};\n\nconst AccessExpirationDateBanner = ({\n courseId, accessExpirationDate, timezoneFormatArgs, setupgradeNotificationCurrentState,\n}) => {\n if (setupgradeNotificationCurrentState) {\n setupgradeNotificationCurrentState('accessDateView');\n setLocalStorage(`upgradeNotificationCurrentState.${courseId}`, 'accessDateView');\n }\n return (\n <div className=\"upsell-warning-light\">\n <FormattedMessage\n id=\"learning.generic.upgradeNotification.expiration\"\n defaultMessage=\"Course access will expire {date}\"\n values={{\n date: (\n <FormattedDate\n key=\"accessExpireDate\"\n day=\"numeric\"\n month=\"long\"\n value={accessExpirationDate}\n {...timezoneFormatArgs}\n />\n ),\n }}\n />\n </div>\n );\n};\n\nAccessExpirationDateBanner.propTypes = {\n courseId: PropTypes.string.isRequired,\n accessExpirationDate: PropTypes.PropTypes.instanceOf(Date).isRequired,\n timezoneFormatArgs: PropTypes.shape({\n timeZone: PropTypes.string,\n }),\n setupgradeNotificationCurrentState: PropTypes.func,\n};\n\nAccessExpirationDateBanner.defaultProps = {\n timezoneFormatArgs: {},\n setupgradeNotificationCurrentState: null,\n};\n\nconst PastExpirationDateBanner = ({\n courseId, accessExpirationDate, timezoneFormatArgs, setupgradeNotificationCurrentState,\n}) => {\n if (setupgradeNotificationCurrentState) {\n setupgradeNotificationCurrentState('PastExpirationDate');\n setLocalStorage(`upgradeNotificationCurrentState.${courseId}`, 'PastExpirationDate');\n }\n return (\n <div className=\"upsell-warning\">\n <FormattedMessage\n id=\"learning.generic.upgradeNotification.pastExpiration.banner\"\n defaultMessage=\"Upgrade deadline passed on {date}\"\n values={{\n date: (\n <FormattedDate\n key=\"accessExpireDate\"\n day=\"numeric\"\n month=\"long\"\n value={accessExpirationDate}\n {...timezoneFormatArgs}\n />\n ),\n }}\n />\n </div>\n );\n};\n\nPastExpirationDateBanner.propTypes = {\n courseId: PropTypes.string.isRequired,\n accessExpirationDate: PropTypes.PropTypes.instanceOf(Date).isRequired,\n timezoneFormatArgs: PropTypes.shape({\n timeZone: PropTypes.string,\n }),\n setupgradeNotificationCurrentState: PropTypes.func,\n};\n\nPastExpirationDateBanner.defaultProps = {\n timezoneFormatArgs: {},\n setupgradeNotificationCurrentState: null,\n};\n\nconst ExperimentalUpgradeNotification = ({\n id,\n courseId,\n setNotificationCurrentState,\n toggleSidebar,\n optimizely,\n}) => {\n const pluginLocationId = id;\n\n const {\n org,\n userTimezone,\n verifiedMode,\n } = useModel('courseHomeMeta', courseId);\n\n const {\n marketingUrl,\n } = useModel('coursewareMeta', courseId);\n\n const {\n accessExpiration,\n datesBannerInfo,\n offer,\n timeOffsetMillis,\n } = useModel('outline', courseId);\n\n const intl = useIntl();\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.expirationDate) : null;\n const pastExpirationDeadline = accessExpiration ? new Date(dateNow) > accessExpirationDate : false;\n const shouldDisplayBorder = pluginLocationId !== 'outline_tab_notifications';\n const upsellPageName = pluginLocationId === 'outline_tab_notifications' ? 'course_home' : 'in_course';\n const setupgradeNotificationCurrentState = setNotificationCurrentState;\n\n const [decision] = useDecision(OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_KEY);\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: OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_KEY,\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('upgrade_button_click');\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;\n let callToActionButton;\n let offerCode;\n\n if (!!accessExpiration && !!datesBannerInfo?.contentTypeGatingEnabled) {\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 = (\n <FormattedMessage\n id=\"learning.generic.upgradeNotification.firstTimeLearnerDiscount\"\n defaultMessage=\"{percentage}% First-Time Learner Discount\"\n values={{\n percentage: (offer.percentage),\n }}\n />\n );\n expirationBanner = (\n <ExpirationCountdown\n courseId={courseId}\n hoursToExpiration={hoursToDiscountExpiration}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n type=\"offer\"\n />\n );\n } else {\n upgradeNotificationHeaderText = (\n <FormattedMessage\n id=\"learning.generic.upgradeNotification.accessExpiration\"\n defaultMessage=\"Upgrade your course today\"\n />\n );\n expirationBanner = (\n <AccessExpirationDateBanner\n courseId={courseId}\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n />\n );\n }\n upsellMessage = (\n variationKey === OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS.CERTIFICATE_PREVIEW_WITH_COPY && enabled\n ? <ExperimentUpsellFBEFarAwayCardContent />\n : <UpsellFBEFarAwayCardContent />\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 = (\n <FormattedMessage\n id=\"learning.generic.upgradeNotification.accessExpirationUrgent\"\n defaultMessage=\"Course Access Expiration\"\n />\n );\n expirationBanner = (\n <ExpirationCountdown\n courseId={courseId}\n hoursToExpiration={hoursToAccessExpiration}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n type=\"access\"\n />\n );\n upsellMessage = (\n <UpsellFBESoonCardContent\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n />\n );\n } else { // access expiration deadline has passed\n upgradeNotificationHeaderText = (\n <FormattedMessage\n id=\"learning.generic.upgradeNotification.accessExpirationPast\"\n defaultMessage=\"Course Access Expiration\"\n />\n );\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 = (\n <FormattedMessage\n id=\"learning.generic.upgradeNotification.pursueAverifiedCertificate\"\n defaultMessage=\"Pursue a verified certificate\"\n />\n );\n upsellMessage = (\n variationKey === OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS.CERTIFICATE_PREVIEW_WITH_COPY && enabled\n ? <ExperimentUpsellNoFBECardContent />\n : <UpsellNoFBECardContent />\n );\n }\n\n if (pastExpirationDeadline) {\n callToActionButton = (\n <Button\n variant=\"primary\"\n onClick={logClickPastExpiration}\n href={marketingUrl}\n block\n >\n View Course Details\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 <FormattedMessage\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 }\n\n return (\n <section className={classNames('upgrade-notification small', { 'card mb-4': shouldDisplayBorder })}>\n <div id=\"courseHome-upgradeNotification\">\n <CertificatePreview courseId={courseId} />\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={intl.formatMessage(messages.close)}\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\nExperimentalUpgradeNotification.propTypes = {\n id: PropTypes.string.isRequired,\n courseId: PropTypes.string.isRequired,\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};\n\nexport default injectIntl(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","_data","_ExperimentalUpsellTable","_ExperimentalUpsellBullets","_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","getVariation","_ref","isFBE","variationKey","enabled","VARIATIONS","OPTIMIZELY_VTR_SIDEBAR_EXPERIMENT","TABLE","jsx","BULLETS","UpsellFarAwayCardContent","ExperimentalUpgradeNotification","_ref2","id","courseId","setNotificationCurrentState","toggleSidebar","optimizely","pluginLocationId","KEY","experimentKey","formatMessage","useIntl","org","userTimezone","verifiedMode","useModel","marketingUrl","accessExpiration","datesBannerInfo","offer","timeOffsetMillis","dateNow","Date","now","timezoneFormatArgs","timeZone","correctedTime","accessExpirationDate","expirationDate","pastExpirationDeadline","shouldDisplayBorder","includes","upsellPageName","setupgradeNotificationCurrentState","contentTypeGatingEnabled","decision","useDecision","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","callToActionButton","offerCode","hoursToAccessExpiration","Math","floor","hoursToDiscountExpiration","messages","firstTimeLearnerDiscountHeader","percentage","ExpirationCountdown","hoursToExpiration","type","accessExpirationHeader","AccessExpirationDateBanner","accessExpirationUrgentHeader","OFF","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 { OPTIMIZELY_VTR_SIDEBAR_EXPERIMENT } from '../data';\nimport ExperimentalUpsellTable from '../upsell-bullets/ExperimentalUpsellTable';\nimport ExperimentalUpsellBullets from '../upsell-bullets/ExperimentalUpsellBullets';\nimport CertificatePreview from './certificate-preview';\nimport {\n ExpirationCountdown,\n AccessExpirationDateBanner,\n PastExpirationDateBanner,\n PastExpirationCardContent,\n UpsellFarAwayCardContent,\n UpsellFBESoonCardContent,\n} from './generic';\nimport messages from './messages';\n\nconst getVariation = ({ isFBE, variationKey, enabled }) => {\n const { VARIATIONS } = OPTIMIZELY_VTR_SIDEBAR_EXPERIMENT;\n\n if (enabled) {\n switch (variationKey) {\n case VARIATIONS.TABLE:\n return <ExperimentalUpsellTable {...{ isFBE }} />;\n case VARIATIONS.BULLETS:\n return <ExperimentalUpsellBullets {...{ isFBE }} />;\n default:\n return <UpsellFarAwayCardContent {...{ isFBE }} />;\n }\n }\n\n return <UpsellFarAwayCardContent {...{ isFBE }} />;\n};\n\nconst ExperimentalUpgradeNotification = ({\n id,\n courseId,\n setNotificationCurrentState,\n toggleSidebar,\n optimizely,\n}) => {\n const pluginLocationId = id;\n const { KEY: experimentKey, VARIATIONS } = OPTIMIZELY_VTR_SIDEBAR_EXPERIMENT;\n const { formatMessage } = useIntl();\n\n const {\n org,\n userTimezone,\n verifiedMode,\n } = useModel('courseHomeMeta', courseId);\n\n const {\n marketingUrl,\n } = useModel('coursewareMeta', courseId);\n\n const {\n accessExpiration,\n datesBannerInfo,\n offer,\n timeOffsetMillis,\n } = useModel('outline', 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.expirationDate) : 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('upgrade_button_click');\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 = getVariation({ enabled, variationKey, isFBE });\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.OFF) {\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 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};\n\nexport default withOptimizely(ExperimentalUpgradeNotification);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -19,7 +19,7 @@ const UpgradeNotification = props => /*#__PURE__*/(0, _jsxRuntime.jsx)(_optimize
|
|
|
19
19
|
defaultComponent: _DefaultUpgradeNotification.default,
|
|
20
20
|
experimentalComponent: _ExperimentalUpgradeNotification.default,
|
|
21
21
|
defaultVariationKey: "off",
|
|
22
|
-
experimentKey: _optimizely2.
|
|
22
|
+
experimentKey: _optimizely2.OPTIMIZELY_VTR_SIDEBAR_EXPERIMENT.KEY
|
|
23
23
|
}, props));
|
|
24
24
|
var _default = exports.default = UpgradeNotification;
|
|
25
25
|
//# sourceMappingURL=UpgradeNotification.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpgradeNotification.js","names":["_DefaultUpgradeNotification","_interopRequireDefault","require","_ExperimentalUpgradeNotification","_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","UpgradeNotification","props","jsx","defaultComponent","DefaultUpgradeNotification","experimentalComponent","ExperimentalUpgradeNotification","defaultVariationKey","experimentKey","
|
|
1
|
+
{"version":3,"file":"UpgradeNotification.js","names":["_DefaultUpgradeNotification","_interopRequireDefault","require","_ExperimentalUpgradeNotification","_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","UpgradeNotification","props","jsx","defaultComponent","DefaultUpgradeNotification","experimentalComponent","ExperimentalUpgradeNotification","defaultVariationKey","experimentKey","OPTIMIZELY_VTR_SIDEBAR_EXPERIMENT","KEY","_default","exports"],"sources":["../../src/upgrade-notification/UpgradeNotification.jsx"],"sourcesContent":["import DefaultUpgradeNotification from './DefaultUpgradeNotification';\nimport ExperimentalUpgradeNotification from './ExperimentalUpgradeNotification';\n\nimport OptimizelyExperiment from '../optimizely';\nimport { OPTIMIZELY_VTR_SIDEBAR_EXPERIMENT } from '../data/optimizely';\n\nconst UpgradeNotification = (props) => (\n <OptimizelyExperiment\n defaultComponent={DefaultUpgradeNotification}\n experimentalComponent={ExperimentalUpgradeNotification}\n defaultVariationKey=\"off\"\n experimentKey={OPTIMIZELY_VTR_SIDEBAR_EXPERIMENT.KEY}\n {...props}\n />\n);\n\nexport default UpgradeNotification;\n"],"mappings":";;;;;;AAAA,IAAAA,2BAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,gCAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,WAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AAAuE,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAD,uBAAAM,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,OAAAG,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAL,CAAA,GAAAC,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAR,CAAA,EAAAC,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAZ,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAI,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,IAAAe,eAAA,CAAAhB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAAlB,CAAA,EAAAG,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAH,OAAA,CAAAI,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAnB,CAAA,EAAAC,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAAA,SAAAgB,gBAAApB,GAAA,EAAAwB,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAxB,GAAA,IAAAO,MAAA,CAAAgB,cAAA,CAAAvB,GAAA,EAAAwB,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAZ,UAAA,QAAAc,YAAA,QAAAC,QAAA,oBAAA5B,GAAA,CAAAwB,GAAA,IAAAC,KAAA,WAAAzB,GAAA;AAAA,SAAA0B,eAAApB,CAAA,QAAAuB,CAAA,GAAAC,YAAA,CAAAxB,CAAA,uCAAAuB,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAxB,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAF,CAAA,GAAAE,CAAA,CAAAyB,MAAA,CAAAC,WAAA,kBAAA5B,CAAA,QAAAyB,CAAA,GAAAzB,CAAA,CAAA6B,IAAA,CAAA3B,CAAA,EAAAD,CAAA,uCAAAwB,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAA7B,CAAA,GAAA8B,MAAA,GAAAC,MAAA,EAAA9B,CAAA;AAEvE,MAAM+B,mBAAmB,GAAIC,KAAK,iBAChC,IAAAvC,WAAA,CAAAwC,GAAA,EAAC1C,WAAA,CAAAK,OAAoB,EAAAc,aAAA;EACnBwB,gBAAgB,EAAEC,mCAA2B;EAC7CC,qBAAqB,EAAEC,wCAAgC;EACvDC,mBAAmB,EAAC,KAAK;EACzBC,aAAa,EAAEC,8CAAiC,CAACC;AAAI,GACjDT,KAAK,CACV,CACF;AAAC,IAAAU,QAAA,GAAAC,OAAA,CAAA/C,OAAA,GAEamC,mBAAmB","ignoreList":[]}
|
|
@@ -0,0 +1,57 @@
|
|
|
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 _i18n = require("@edx/frontend-platform/i18n");
|
|
9
|
+
var _localStorage = require("@src/data/localStorage");
|
|
10
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
+
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; }
|
|
13
|
+
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; }
|
|
14
|
+
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; }
|
|
15
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
16
|
+
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 */
|
|
17
|
+
const AccessExpirationDateBanner = _ref => {
|
|
18
|
+
let {
|
|
19
|
+
courseId,
|
|
20
|
+
accessExpirationDate,
|
|
21
|
+
timezoneFormatArgs,
|
|
22
|
+
setupgradeNotificationCurrentState
|
|
23
|
+
} = _ref;
|
|
24
|
+
const intl = (0, _i18n.useIntl)();
|
|
25
|
+
if (setupgradeNotificationCurrentState) {
|
|
26
|
+
setupgradeNotificationCurrentState('accessDateView');
|
|
27
|
+
(0, _localStorage.setLocalStorage)(`upgradeNotificationCurrentState.${courseId}`, 'accessDateView');
|
|
28
|
+
}
|
|
29
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
30
|
+
className: "upsell-warning-light",
|
|
31
|
+
children: intl.formatMessage({
|
|
32
|
+
id: 'advertisements.upgradeNotification.expiration',
|
|
33
|
+
defaultMessage: 'Course access will expire {date}',
|
|
34
|
+
description: 'Message notifying user when upgrade deadline will pass'
|
|
35
|
+
}, {
|
|
36
|
+
date: intl.formatDate(accessExpirationDate, _objectSpread({
|
|
37
|
+
key: 'accessExpireDate',
|
|
38
|
+
day: 'numeric',
|
|
39
|
+
month: 'long'
|
|
40
|
+
}, timezoneFormatArgs))
|
|
41
|
+
})
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
AccessExpirationDateBanner.propTypes = {
|
|
45
|
+
courseId: _propTypes.default.string.isRequired,
|
|
46
|
+
accessExpirationDate: _propTypes.default.PropTypes.instanceOf(Date).isRequired,
|
|
47
|
+
timezoneFormatArgs: _propTypes.default.shape({
|
|
48
|
+
timeZone: _propTypes.default.string
|
|
49
|
+
}),
|
|
50
|
+
setupgradeNotificationCurrentState: _propTypes.default.func
|
|
51
|
+
};
|
|
52
|
+
AccessExpirationDateBanner.defaultProps = {
|
|
53
|
+
timezoneFormatArgs: {},
|
|
54
|
+
setupgradeNotificationCurrentState: null
|
|
55
|
+
};
|
|
56
|
+
var _default = exports.default = AccessExpirationDateBanner;
|
|
57
|
+
//# sourceMappingURL=AccessExpirationDateBanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccessExpirationDateBanner.js","names":["_propTypes","_interopRequireDefault","require","_i18n","_localStorage","_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","AccessExpirationDateBanner","_ref","courseId","accessExpirationDate","timezoneFormatArgs","setupgradeNotificationCurrentState","intl","useIntl","setLocalStorage","jsx","className","children","formatMessage","id","defaultMessage","description","date","formatDate","day","month","propTypes","PropTypes","string","isRequired","instanceOf","Date","shape","timeZone","func","defaultProps","_default","exports"],"sources":["../../../src/upgrade-notification/generic/AccessExpirationDateBanner.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport PropTypes from 'prop-types';\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport { setLocalStorage } from '@src/data/localStorage';\n\nconst AccessExpirationDateBanner = ({\n courseId, accessExpirationDate, timezoneFormatArgs, setupgradeNotificationCurrentState,\n}) => {\n const intl = useIntl();\n if (setupgradeNotificationCurrentState) {\n setupgradeNotificationCurrentState('accessDateView');\n setLocalStorage(`upgradeNotificationCurrentState.${courseId}`, 'accessDateView');\n }\n return (\n <div className=\"upsell-warning-light\">\n {intl.formatMessage(\n {\n id: 'advertisements.upgradeNotification.expiration',\n defaultMessage: 'Course access will expire {date}',\n description: 'Message notifying user when upgrade deadline will pass',\n },\n {\n date: intl.formatDate(accessExpirationDate, {\n key: 'accessExpireDate',\n day: 'numeric',\n month: 'long',\n ...timezoneFormatArgs,\n }),\n },\n )}\n </div>\n );\n};\n\nAccessExpirationDateBanner.propTypes = {\n courseId: PropTypes.string.isRequired,\n accessExpirationDate: PropTypes.PropTypes.instanceOf(Date).isRequired,\n timezoneFormatArgs: PropTypes.shape({\n timeZone: PropTypes.string,\n }),\n setupgradeNotificationCurrentState: PropTypes.func,\n};\n\nAccessExpirationDateBanner.defaultProps = {\n timezoneFormatArgs: {},\n setupgradeNotificationCurrentState: null,\n};\n\nexport default AccessExpirationDateBanner;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,102 @@
|
|
|
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 _i18n = require("@edx/frontend-platform/i18n");
|
|
9
|
+
var _localStorage = require("@src/data/localStorage");
|
|
10
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
+
/* eslint import/no-unresolved: 0 */
|
|
13
|
+
|
|
14
|
+
const ExpirationCountdown = _ref => {
|
|
15
|
+
let {
|
|
16
|
+
courseId,
|
|
17
|
+
hoursToExpiration,
|
|
18
|
+
setupgradeNotificationCurrentState,
|
|
19
|
+
type
|
|
20
|
+
} = _ref;
|
|
21
|
+
const intl = (0, _i18n.useIntl)();
|
|
22
|
+
let expirationText;
|
|
23
|
+
if (hoursToExpiration >= 24) {
|
|
24
|
+
// More than 1 day left
|
|
25
|
+
// setupgradeNotificationCurrentState is available in NotificationTray (not course home)
|
|
26
|
+
if (setupgradeNotificationCurrentState) {
|
|
27
|
+
if (type === 'access') {
|
|
28
|
+
setupgradeNotificationCurrentState('accessDaysLeft');
|
|
29
|
+
(0, _localStorage.setLocalStorage)(`upgradeNotificationCurrentState.${courseId}`, 'accessDaysLeft');
|
|
30
|
+
}
|
|
31
|
+
if (type === 'offer') {
|
|
32
|
+
setupgradeNotificationCurrentState('FPDdaysLeft');
|
|
33
|
+
(0, _localStorage.setLocalStorage)(`upgradeNotificationCurrentState.${courseId}`, 'FPDdaysLeft');
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
expirationText = intl.formatMessage({
|
|
37
|
+
id: 'advertisements.upgradeNotification.expirationDays',
|
|
38
|
+
defaultMessage: `{dayCount, number} {dayCount, plural,
|
|
39
|
+
one {day}
|
|
40
|
+
other {days}} left`,
|
|
41
|
+
description: 'Text notifying users how many days are left till upgrade expiration'
|
|
42
|
+
}, {
|
|
43
|
+
dayCount: Math.floor(hoursToExpiration / 24)
|
|
44
|
+
});
|
|
45
|
+
} else if (hoursToExpiration >= 1) {
|
|
46
|
+
// More than 1 hour left
|
|
47
|
+
// setupgradeNotificationCurrentState is available in NotificationTray (not course home)
|
|
48
|
+
if (setupgradeNotificationCurrentState) {
|
|
49
|
+
if (type === 'access') {
|
|
50
|
+
setupgradeNotificationCurrentState('accessHoursLeft');
|
|
51
|
+
(0, _localStorage.setLocalStorage)(`upgradeNotificationCurrentState.${courseId}`, 'accessHoursLeft');
|
|
52
|
+
}
|
|
53
|
+
if (type === 'offer') {
|
|
54
|
+
setupgradeNotificationCurrentState('FPDHoursLeft');
|
|
55
|
+
(0, _localStorage.setLocalStorage)(`upgradeNotificationCurrentState.${courseId}`, 'FPDHoursLeft');
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
expirationText = intl.formatMessage({
|
|
59
|
+
id: 'advertisements.upgradeNotification.expirationHours',
|
|
60
|
+
defaultMessage: `{hourCount, number} {hourCount, plural,
|
|
61
|
+
one {hour}
|
|
62
|
+
other {hours}} left`,
|
|
63
|
+
description: 'Text notifying users how many hours are left till upgrade expiration'
|
|
64
|
+
}, {
|
|
65
|
+
hourCount: hoursToExpiration
|
|
66
|
+
});
|
|
67
|
+
} else {
|
|
68
|
+
// Less than 1 hour
|
|
69
|
+
// setupgradeNotificationCurrentState is available in NotificationTray (not course home)
|
|
70
|
+
if (setupgradeNotificationCurrentState) {
|
|
71
|
+
if (type === 'access') {
|
|
72
|
+
setupgradeNotificationCurrentState('accessLastHour');
|
|
73
|
+
(0, _localStorage.setLocalStorage)(`upgradeNotificationCurrentState.${courseId}`, 'accessLastHour');
|
|
74
|
+
}
|
|
75
|
+
if (type === 'offer') {
|
|
76
|
+
setupgradeNotificationCurrentState('FPDLastHour');
|
|
77
|
+
(0, _localStorage.setLocalStorage)(`upgradeNotificationCurrentState.${courseId}`, 'FPDLastHour');
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
expirationText = intl.formatMessage({
|
|
81
|
+
id: 'advertisements.upgradeNotification.expirationMinutes',
|
|
82
|
+
defaultMessage: 'Less than 1 hour left',
|
|
83
|
+
description: 'Text notifying user that how much time is left to upgrade'
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
87
|
+
className: "upsell-warning",
|
|
88
|
+
children: expirationText
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
ExpirationCountdown.propTypes = {
|
|
92
|
+
courseId: _propTypes.default.string.isRequired,
|
|
93
|
+
hoursToExpiration: _propTypes.default.number.isRequired,
|
|
94
|
+
setupgradeNotificationCurrentState: _propTypes.default.func,
|
|
95
|
+
type: _propTypes.default.string
|
|
96
|
+
};
|
|
97
|
+
ExpirationCountdown.defaultProps = {
|
|
98
|
+
setupgradeNotificationCurrentState: null,
|
|
99
|
+
type: null
|
|
100
|
+
};
|
|
101
|
+
var _default = exports.default = ExpirationCountdown;
|
|
102
|
+
//# sourceMappingURL=ExpirationCountdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExpirationCountdown.js","names":["_propTypes","_interopRequireDefault","require","_i18n","_localStorage","_jsxRuntime","obj","__esModule","default","ExpirationCountdown","_ref","courseId","hoursToExpiration","setupgradeNotificationCurrentState","type","intl","useIntl","expirationText","setLocalStorage","formatMessage","id","defaultMessage","description","dayCount","Math","floor","hourCount","jsx","className","children","propTypes","PropTypes","string","isRequired","number","func","defaultProps","_default","exports"],"sources":["../../../src/upgrade-notification/generic/ExpirationCountdown.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport PropTypes from 'prop-types';\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport { setLocalStorage } from '@src/data/localStorage';\n\nconst ExpirationCountdown = ({\n courseId, hoursToExpiration, setupgradeNotificationCurrentState, type,\n}) => {\n const intl = useIntl();\n let expirationText;\n if (hoursToExpiration >= 24) { // More than 1 day left\n // setupgradeNotificationCurrentState is available in NotificationTray (not course home)\n if (setupgradeNotificationCurrentState) {\n if (type === 'access') {\n setupgradeNotificationCurrentState('accessDaysLeft');\n setLocalStorage(`upgradeNotificationCurrentState.${courseId}`, 'accessDaysLeft');\n }\n if (type === 'offer') {\n setupgradeNotificationCurrentState('FPDdaysLeft');\n setLocalStorage(`upgradeNotificationCurrentState.${courseId}`, 'FPDdaysLeft');\n }\n }\n expirationText = intl.formatMessage(\n {\n id: 'advertisements.upgradeNotification.expirationDays',\n defaultMessage: `{dayCount, number} {dayCount, plural,\n one {day}\n other {days}} left`,\n description: 'Text notifying users how many days are left till upgrade expiration',\n },\n {\n dayCount: (Math.floor(hoursToExpiration / 24)),\n },\n );\n } else if (hoursToExpiration >= 1) { // More than 1 hour left\n // setupgradeNotificationCurrentState is available in NotificationTray (not course home)\n if (setupgradeNotificationCurrentState) {\n if (type === 'access') {\n setupgradeNotificationCurrentState('accessHoursLeft');\n setLocalStorage(`upgradeNotificationCurrentState.${courseId}`, 'accessHoursLeft');\n }\n if (type === 'offer') {\n setupgradeNotificationCurrentState('FPDHoursLeft');\n setLocalStorage(`upgradeNotificationCurrentState.${courseId}`, 'FPDHoursLeft');\n }\n }\n expirationText = intl.formatMessage(\n {\n id: 'advertisements.upgradeNotification.expirationHours',\n defaultMessage: `{hourCount, number} {hourCount, plural,\n one {hour}\n other {hours}} left`,\n description: 'Text notifying users how many hours are left till upgrade expiration',\n },\n {\n hourCount: (hoursToExpiration),\n },\n );\n } else { // Less than 1 hour\n // setupgradeNotificationCurrentState is available in NotificationTray (not course home)\n if (setupgradeNotificationCurrentState) {\n if (type === 'access') {\n setupgradeNotificationCurrentState('accessLastHour');\n setLocalStorage(`upgradeNotificationCurrentState.${courseId}`, 'accessLastHour');\n }\n if (type === 'offer') {\n setupgradeNotificationCurrentState('FPDLastHour');\n setLocalStorage(`upgradeNotificationCurrentState.${courseId}`, 'FPDLastHour');\n }\n }\n expirationText = intl.formatMessage({\n id: 'advertisements.upgradeNotification.expirationMinutes',\n defaultMessage: 'Less than 1 hour left',\n description: 'Text notifying user that how much time is left to upgrade',\n });\n }\n return (<div className=\"upsell-warning\">{expirationText}</div>);\n};\n\nExpirationCountdown.propTypes = {\n courseId: PropTypes.string.isRequired,\n hoursToExpiration: PropTypes.number.isRequired,\n setupgradeNotificationCurrentState: PropTypes.func,\n type: PropTypes.string,\n};\n\nExpirationCountdown.defaultProps = {\n setupgradeNotificationCurrentState: null,\n type: null,\n};\n\nexport default ExpirationCountdown;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _i18n = require("@edx/frontend-platform/i18n");
|
|
8
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
9
|
+
const PastExpirationCardContent = () => {
|
|
10
|
+
const {
|
|
11
|
+
formatMessage
|
|
12
|
+
} = (0, _i18n.useIntl)();
|
|
13
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
14
|
+
className: "upgrade-notification-text",
|
|
15
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
|
|
16
|
+
children: formatMessage({
|
|
17
|
+
id: 'advertisements.upgradeNotification.pastExpiration.content',
|
|
18
|
+
defaultMessage: 'The upgrade deadline for this course passed. To upgrade, enroll in the next available session.',
|
|
19
|
+
description: 'Content text notifying the user that the deadline passed and how to access course content.'
|
|
20
|
+
})
|
|
21
|
+
})
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
var _default = exports.default = PastExpirationCardContent;
|
|
25
|
+
//# sourceMappingURL=PastExpirationCardContent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PastExpirationCardContent.js","names":["_i18n","require","_jsxRuntime","PastExpirationCardContent","formatMessage","useIntl","jsx","className","children","id","defaultMessage","description","_default","exports","default"],"sources":["../../../src/upgrade-notification/generic/PastExpirationCardContent.jsx"],"sourcesContent":["import { useIntl } from '@edx/frontend-platform/i18n';\n\nconst PastExpirationCardContent = () => {\n const { formatMessage } = useIntl();\n return (\n <div className=\"upgrade-notification-text\">\n <p>\n {formatMessage({\n id: 'advertisements.upgradeNotification.pastExpiration.content',\n defaultMessage: 'The upgrade deadline for this course passed. To upgrade, enroll in the next available session.',\n description: 'Content text notifying the user that the deadline passed and how to access course content.',\n })}\n </p>\n </div>\n );\n};\n\nexport default PastExpirationCardContent;\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAAsD,IAAAC,WAAA,GAAAD,OAAA;AAEtD,MAAME,yBAAyB,GAAGA,CAAA,KAAM;EACtC,MAAM;IAAEC;EAAc,CAAC,GAAG,IAAAC,aAAO,EAAC,CAAC;EACnC,oBACE,IAAAH,WAAA,CAAAI,GAAA;IAAKC,SAAS,EAAC,2BAA2B;IAAAC,QAAA,eACxC,IAAAN,WAAA,CAAAI,GAAA;MAAAE,QAAA,EACGJ,aAAa,CAAC;QACbK,EAAE,EAAE,2DAA2D;QAC/DC,cAAc,EAAE,gGAAgG;QAChHC,WAAW,EAAE;MACf,CAAC;IAAC,CACD;EAAC,CACD,CAAC;AAEV,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaX,yBAAyB","ignoreList":[]}
|
|
@@ -0,0 +1,57 @@
|
|
|
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 _i18n = require("@edx/frontend-platform/i18n");
|
|
9
|
+
var _localStorage = require("@src/data/localStorage");
|
|
10
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
+
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; }
|
|
13
|
+
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; }
|
|
14
|
+
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; }
|
|
15
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
16
|
+
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 */
|
|
17
|
+
const PastExpirationDateBanner = _ref => {
|
|
18
|
+
let {
|
|
19
|
+
courseId,
|
|
20
|
+
accessExpirationDate,
|
|
21
|
+
timezoneFormatArgs,
|
|
22
|
+
setupgradeNotificationCurrentState
|
|
23
|
+
} = _ref;
|
|
24
|
+
const intl = (0, _i18n.useIntl)();
|
|
25
|
+
if (setupgradeNotificationCurrentState) {
|
|
26
|
+
setupgradeNotificationCurrentState('PastExpirationDate');
|
|
27
|
+
(0, _localStorage.setLocalStorage)(`upgradeNotificationCurrentState.${courseId}`, 'PastExpirationDate');
|
|
28
|
+
}
|
|
29
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
30
|
+
className: "upsell-warning",
|
|
31
|
+
children: intl.formatMessage({
|
|
32
|
+
id: 'advertisements.upgradeNotification.pastExpiration.banner',
|
|
33
|
+
defaultMessage: 'Upgrade deadline passed on {date}',
|
|
34
|
+
description: 'Message notifying user when upgrade deadline passed'
|
|
35
|
+
}, {
|
|
36
|
+
date: intl.formatDate(accessExpirationDate, _objectSpread({
|
|
37
|
+
key: 'accessExpireDate',
|
|
38
|
+
day: 'numeric',
|
|
39
|
+
month: 'long'
|
|
40
|
+
}, timezoneFormatArgs))
|
|
41
|
+
})
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
PastExpirationDateBanner.propTypes = {
|
|
45
|
+
courseId: _propTypes.default.string.isRequired,
|
|
46
|
+
accessExpirationDate: _propTypes.default.PropTypes.instanceOf(Date).isRequired,
|
|
47
|
+
timezoneFormatArgs: _propTypes.default.shape({
|
|
48
|
+
timeZone: _propTypes.default.string
|
|
49
|
+
}),
|
|
50
|
+
setupgradeNotificationCurrentState: _propTypes.default.func
|
|
51
|
+
};
|
|
52
|
+
PastExpirationDateBanner.defaultProps = {
|
|
53
|
+
timezoneFormatArgs: {},
|
|
54
|
+
setupgradeNotificationCurrentState: null
|
|
55
|
+
};
|
|
56
|
+
var _default = exports.default = PastExpirationDateBanner;
|
|
57
|
+
//# sourceMappingURL=PastExpirationDateBanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PastExpirationDateBanner.js","names":["_propTypes","_interopRequireDefault","require","_i18n","_localStorage","_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","PastExpirationDateBanner","_ref","courseId","accessExpirationDate","timezoneFormatArgs","setupgradeNotificationCurrentState","intl","useIntl","setLocalStorage","jsx","className","children","formatMessage","id","defaultMessage","description","date","formatDate","day","month","propTypes","PropTypes","string","isRequired","instanceOf","Date","shape","timeZone","func","defaultProps","_default","exports"],"sources":["../../../src/upgrade-notification/generic/PastExpirationDateBanner.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport PropTypes from 'prop-types';\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport { setLocalStorage } from '@src/data/localStorage';\n\nconst PastExpirationDateBanner = ({\n courseId, accessExpirationDate, timezoneFormatArgs, setupgradeNotificationCurrentState,\n}) => {\n const intl = useIntl();\n if (setupgradeNotificationCurrentState) {\n setupgradeNotificationCurrentState('PastExpirationDate');\n setLocalStorage(`upgradeNotificationCurrentState.${courseId}`, 'PastExpirationDate');\n }\n return (\n <div className=\"upsell-warning\">\n {intl.formatMessage(\n {\n id: 'advertisements.upgradeNotification.pastExpiration.banner',\n defaultMessage: 'Upgrade deadline passed on {date}',\n description: 'Message notifying user when upgrade deadline passed',\n },\n {\n date: intl.formatDate(accessExpirationDate, {\n key: 'accessExpireDate',\n day: 'numeric',\n month: 'long',\n ...timezoneFormatArgs,\n }),\n },\n )}\n </div>\n );\n};\n\nPastExpirationDateBanner.propTypes = {\n courseId: PropTypes.string.isRequired,\n accessExpirationDate: PropTypes.PropTypes.instanceOf(Date).isRequired,\n timezoneFormatArgs: PropTypes.shape({\n timeZone: PropTypes.string,\n }),\n setupgradeNotificationCurrentState: PropTypes.func,\n};\n\nPastExpirationDateBanner.defaultProps = {\n timezoneFormatArgs: {},\n setupgradeNotificationCurrentState: null,\n};\n\nexport default PastExpirationDateBanner;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,81 @@
|
|
|
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 _i18n = require("@edx/frontend-platform/i18n");
|
|
9
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
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; }
|
|
12
|
+
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; }
|
|
13
|
+
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; }
|
|
14
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
15
|
+
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); }
|
|
16
|
+
const UpsellFBESoonCardContent = _ref => {
|
|
17
|
+
let {
|
|
18
|
+
accessExpirationDate,
|
|
19
|
+
timezoneFormatArgs
|
|
20
|
+
} = _ref;
|
|
21
|
+
const {
|
|
22
|
+
formatMessage,
|
|
23
|
+
formatDate
|
|
24
|
+
} = (0, _i18n.useIntl)();
|
|
25
|
+
const includingAnyProgress = /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
26
|
+
className: "font-weight-bold",
|
|
27
|
+
children: formatMessage({
|
|
28
|
+
id: 'advertisements.upgradeNotification.expirationAccessLoss.progress',
|
|
29
|
+
defaultMessage: 'including any progress',
|
|
30
|
+
description: 'Bolded text inside of the access loss bullet point'
|
|
31
|
+
})
|
|
32
|
+
});
|
|
33
|
+
const date = formatDate(new Date(accessExpirationDate), _objectSpread({
|
|
34
|
+
key: 'accessDate',
|
|
35
|
+
day: 'numeric',
|
|
36
|
+
month: 'long'
|
|
37
|
+
}, timezoneFormatArgs));
|
|
38
|
+
const benefitsOfUpgrading = /*#__PURE__*/(0, _jsxRuntime.jsx)("a", {
|
|
39
|
+
className: "inline-link-underline font-weight-bold",
|
|
40
|
+
rel: "noopener noreferrer",
|
|
41
|
+
target: "_blank",
|
|
42
|
+
href: "https://support.edx.org/hc/en-us/articles/360013426573-What-are-the-differences-between-audit-free-and-verified-paid-courses-",
|
|
43
|
+
children: formatMessage({
|
|
44
|
+
id: 'advertisements.upgradeNotification.expirationVerifiedCert.benefits',
|
|
45
|
+
defaultMessage: 'benefits of upgrading',
|
|
46
|
+
description: 'Text for link to edX support website'
|
|
47
|
+
})
|
|
48
|
+
});
|
|
49
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
50
|
+
className: "upgrade-notification-text",
|
|
51
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
|
|
52
|
+
children: formatMessage({
|
|
53
|
+
id: 'advertisements.upgradeNotification.expirationAccessLoss',
|
|
54
|
+
defaultMessage: 'You will lose all access to this course, {includingAnyProgress}, on {date}.',
|
|
55
|
+
description: 'Text for access loss bullet point'
|
|
56
|
+
}, {
|
|
57
|
+
includingAnyProgress,
|
|
58
|
+
date
|
|
59
|
+
})
|
|
60
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
|
|
61
|
+
children: formatMessage({
|
|
62
|
+
id: 'advertisements.upgradeNotification.expirationVerifiedCert',
|
|
63
|
+
defaultMessage: 'Upgrading your course enables you to pursue a verified certificate and unlocks numerous features. Learn more about the {benefitsOfUpgrading}.',
|
|
64
|
+
description: 'Text for verified certificate bullet point'
|
|
65
|
+
}, {
|
|
66
|
+
benefitsOfUpgrading
|
|
67
|
+
})
|
|
68
|
+
})]
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
UpsellFBESoonCardContent.propTypes = {
|
|
72
|
+
accessExpirationDate: _propTypes.default.PropTypes.instanceOf(Date).isRequired,
|
|
73
|
+
timezoneFormatArgs: _propTypes.default.shape({
|
|
74
|
+
timeZone: _propTypes.default.string
|
|
75
|
+
})
|
|
76
|
+
};
|
|
77
|
+
UpsellFBESoonCardContent.defaultProps = {
|
|
78
|
+
timezoneFormatArgs: {}
|
|
79
|
+
};
|
|
80
|
+
var _default = exports.default = UpsellFBESoonCardContent;
|
|
81
|
+
//# sourceMappingURL=UpsellFBESoonCardContent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UpsellFBESoonCardContent.js","names":["_propTypes","_interopRequireDefault","require","_i18n","_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","UpsellFBESoonCardContent","_ref","accessExpirationDate","timezoneFormatArgs","formatMessage","formatDate","useIntl","includingAnyProgress","jsx","className","children","id","defaultMessage","description","date","Date","day","month","benefitsOfUpgrading","rel","target","href","jsxs","propTypes","PropTypes","instanceOf","isRequired","shape","timeZone","string","defaultProps","_default","exports"],"sources":["../../../src/upgrade-notification/generic/UpsellFBESoonCardContent.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nconst UpsellFBESoonCardContent = ({ accessExpirationDate, timezoneFormatArgs }) => {\n const { formatMessage, formatDate } = useIntl();\n const includingAnyProgress = (\n <span className=\"font-weight-bold\">\n {formatMessage({\n id: 'advertisements.upgradeNotification.expirationAccessLoss.progress',\n defaultMessage: 'including any progress',\n description: 'Bolded text inside of the access loss bullet point',\n })}\n </span>\n );\n\n const date = formatDate(\n new Date(accessExpirationDate),\n {\n key: 'accessDate',\n day: 'numeric',\n month: 'long',\n ...timezoneFormatArgs,\n },\n );\n\n const benefitsOfUpgrading = (\n <a className=\"inline-link-underline font-weight-bold\" rel=\"noopener noreferrer\" target=\"_blank\" href=\"https://support.edx.org/hc/en-us/articles/360013426573-What-are-the-differences-between-audit-free-and-verified-paid-courses-\">\n {formatMessage({\n id: 'advertisements.upgradeNotification.expirationVerifiedCert.benefits',\n defaultMessage: 'benefits of upgrading',\n description: 'Text for link to edX support website',\n })}\n </a>\n );\n\n return (\n <div className=\"upgrade-notification-text\">\n <p>\n {formatMessage(\n {\n id: 'advertisements.upgradeNotification.expirationAccessLoss',\n defaultMessage: 'You will lose all access to this course, {includingAnyProgress}, on {date}.',\n description: 'Text for access loss bullet point',\n },\n { includingAnyProgress, date },\n )}\n </p>\n <p>\n {formatMessage(\n {\n id: 'advertisements.upgradeNotification.expirationVerifiedCert',\n defaultMessage: 'Upgrading your course enables you to pursue a verified certificate and unlocks numerous features. Learn more about the {benefitsOfUpgrading}.',\n description: 'Text for verified certificate bullet point',\n },\n { benefitsOfUpgrading },\n )}\n </p>\n </div>\n );\n};\n\nUpsellFBESoonCardContent.propTypes = {\n accessExpirationDate: PropTypes.PropTypes.instanceOf(Date).isRequired,\n timezoneFormatArgs: PropTypes.shape({\n timeZone: PropTypes.string,\n }),\n};\n\nUpsellFBESoonCardContent.defaultProps = {\n timezoneFormatArgs: {},\n};\n\nexport default UpsellFBESoonCardContent;\n"],"mappings":"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","ignoreList":[]}
|